Skip to content

Commit d261d77

Browse files
committed
2 parents df940fc + daefad6 commit d261d77

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/reformulate.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,10 @@ function apply_interval_arithmetic(ref)
9696
interval_map = Dict()
9797
vars = all_variables(ref.model) #get all variable names
9898
for var in vars
99-
ub = has_upper_bound(var) ? upper_bound(var) : (is_binary(var) ? 1 : Inf)
100-
lb = has_lower_bound(var) ? lower_bound(var) : (is_binary(var) ? 0 : Inf)
101-
interval_map[string(var)] = lb..ub
99+
@assert !is_binary(var) && !is_integer(var) "GDP does not allow mixed-integer or integer constraints inside the disjuncts."
100+
UB = has_upper_bound(var) ? upper_bound(var) : Inf
101+
LB = has_lower_bound(var) ? lower_bound(var) : -Inf
102+
interval_map[string(var)] = LB..UB
102103
end
103104
ref_func_expr = replace_vars!(ref_func_expr, interval_map)
104105
#get bounds on the entire expression
@@ -161,17 +162,16 @@ function CHR!(m, constr, bin_var, i, k, eps)
161162
bin_var_ref = variable_by_name(ref.model, "$bin_var[$i]")
162163
for var in m[:original_model_variables]
163164
#get bounds for disaggregated variable
164-
@assert has_upper_bound(var) || is_binary(var) "Variable $var does not have an upper bound."
165-
# @assert has_lower_bound(var) || is_binary(var) "Variable $var does not have a lower bound."
166-
UB = is_binary(var) ? 1 : upper_bound(var)
165+
@assert !is_binary(var) && !is_integer(var) "GDP does not allow mixed-integer or integer constraints inside the disjuncts."
166+
@assert has_upper_bound(var) "Variable $var does not have an upper bound."
167+
UB = upper_bound(var)
167168
LB = has_lower_bound(var) ? lower_bound(var) : 0 #set lower bound for disaggregated variable to 0 if binary or no lower bound given
168169
#create disaggregated variable
169170
var_i = Symbol("$(var)_$i")
170171
if !(var_i in keys(object_dictionary(m)))
171172
eval(:(@variable($m, $LB <= $var_i <= $UB)))
172173
eval(:(@constraint($m, $LB * $bin_var_ref <= $var_i)))
173174
eval(:(@constraint($m, $var_i <= $UB * $bin_var_ref)))
174-
is_binary(var) && set_binary(m[var_i])
175175
end
176176
end
177177
#create convex hull constraint

0 commit comments

Comments
 (0)