Skip to content

Commit

Permalink
store information about groups of constraints
Browse files Browse the repository at this point in the history
  • Loading branch information
joehuchette committed Nov 26, 2014
1 parent 1cfb52c commit b70503c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
5 changes: 3 additions & 2 deletions src/JuMP.jl
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ type Model
heurcallback

# List of JuMPContainer{Variables} associated with model
dictList::Vector
varDicts::Vector
conDicts::Vector

# storage vector for merging duplicate terms
indexedVector::IndexedVector{Float64}
Expand All @@ -98,7 +99,7 @@ function Model(;solver=UnsetSolver())
Model(QuadExpr(),:Min,LinearConstraint[], QuadConstraint[],SOSConstraint[],
0,String[],String[],Float64[],Float64[],Symbol[],
0,Float64[],Float64[],Float64[],nothing,solver,
false,nothing,nothing,nothing,JuMPContainer[],
false,nothing,nothing,nothing,JuMPContainer[],JuMPContainer[],
IndexedVector(Float64,0),nothing,Dict{Symbol,Any}())
end

Expand Down
14 changes: 12 additions & 2 deletions src/macros.jl
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,17 @@ macro addConstraint(m, x, extra...)
" expr1 == expr2\n" * " lb <= expr <= ub")
end

return assert_validmodel(m, getloopedcode(c, code, :(), idxvars, idxsets, idxpairs, :ConstraintRef))
looped = getloopedcode(c, code, :(), idxvars, idxsets, idxpairs, :ConstraintRef)
conname = esc(getname(c))
if length(idxvars) == 0 # we will not return a JuMPContainer of ConstraintRef
return assert_validmodel(m, looped)
else
return assert_validmodel(m, quote
$looped
push!($(m).conDicts, $conname)
$conname
end)
end
end

macro addConstraints(m, x)
Expand Down Expand Up @@ -398,7 +408,7 @@ macro defVar(args...)
varname = esc(getname(var))
return assert_validmodel(m, quote
$looped
push!($(m).dictList, $varname)
push!($(m).varDicts, $varname)
$varname
end)
end
Expand Down
4 changes: 2 additions & 2 deletions src/print.jl
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ function model_str(mode, m::Model, leq, geq, in_set,

# Display indexed variables
in_dictlist = falses(m.numCols)
for d in m.dictList
for d in m.varDicts
str *= sep * cont_str(mode,d,mathmode=true) * eol
for it in d # Mark variables in JuMPContainer as printed
in_dictlist[it[end].col] = true
Expand Down Expand Up @@ -218,7 +218,7 @@ Base.writemime(io::IO, ::MIME"text/latex", v::Variable) =
function var_str(mode, m::Model, col::Int, ind_open, ind_close)
colNames = mode == REPLMode ? m.colNames : m.colNamesIJulia
if colNames[col] == ""
for cont in m.dictList
for cont in m.varDicts
fill_var_names(mode, colNames, cont)
end
end
Expand Down

0 comments on commit b70503c

Please sign in to comment.