@@ -96,9 +96,10 @@ function apply_interval_arithmetic(ref)
96
96
interval_map = Dict ()
97
97
vars = all_variables (ref. model) # get all variable names
98
98
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
102
103
end
103
104
ref_func_expr = replace_vars! (ref_func_expr, interval_map)
104
105
# get bounds on the entire expression
@@ -161,17 +162,16 @@ function CHR!(m, constr, bin_var, i, k, eps)
161
162
bin_var_ref = variable_by_name (ref. model, " $bin_var [$i ]" )
162
163
for var in m[:original_model_variables ]
163
164
# 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)
167
168
LB = has_lower_bound (var) ? lower_bound (var) : 0 # set lower bound for disaggregated variable to 0 if binary or no lower bound given
168
169
# create disaggregated variable
169
170
var_i = Symbol (" $(var) _$i " )
170
171
if ! (var_i in keys (object_dictionary (m)))
171
172
eval (:(@variable ($ m, $ LB <= $ var_i <= $ UB)))
172
173
eval (:(@constraint ($ m, $ LB * $ bin_var_ref <= $ var_i)))
173
174
eval (:(@constraint ($ m, $ var_i <= $ UB * $ bin_var_ref)))
174
- is_binary (var) && set_binary (m[var_i])
175
175
end
176
176
end
177
177
# create convex hull constraint
0 commit comments