Skip to content

Commit

Permalink
allow anonymous variables in @variable
Browse files Browse the repository at this point in the history
  • Loading branch information
joehuchette committed May 27, 2016
1 parent ba7fccd commit c722cd0
Show file tree
Hide file tree
Showing 4 changed files with 184 additions and 82 deletions.
5 changes: 5 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
JuMP release notes
==================

Unversioned
-----------

* Support for "anonymous" variables, constraints, expressions, and parameters.

Version 0.13.2 (May 16, 2016)
-----------------------------

Expand Down
20 changes: 13 additions & 7 deletions src/JuMPContainer.jl
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,22 @@ Base.isempty(d::JuMPContainer) = isempty(_innercontainer(d))
# the following types of index sets are allowed:
# 0:K -- range with compile-time starting index
# S -- general iterable set
macro gendict(instancename,T,idxsets...)
function gendict(instancename,T,idxsets...)
N = length(idxsets)
truearray = all(s -> (isexpr(s,:(:)) && length(s.args) == 2), idxsets) &&
all(s -> s.args[1] == 1, idxsets)
sizes = Expr(:tuple, [:(length($(esc(rng)))) for rng in idxsets]...)
truearray = true
for idxset in idxsets
s = isexpr(idxset,:escape) ? idxset.args[1] : idxset
if !(isexpr(s,:(:)) && length(s.args) == 2 && s.args[1] == 1)
truearray = false
break
end
end
sizes = Expr(:tuple, [:(length($rng)) for rng in idxsets]...)
if truearray
:($(esc(instancename)) = Array($T, $sizes))
:($instancename = Array($T, $sizes))
else
indexsets = Expr(:tuple, [:($(esc(idxset))) for idxset in idxsets]...)
:($(esc(instancename)) = JuMPArray(Array($T, $sizes), $indexsets))
indexsets = Expr(:tuple, idxsets...)
:($instancename = JuMPArray(Array($T, $sizes), $indexsets))
end
end

Expand Down
Loading

0 comments on commit c722cd0

Please sign in to comment.