160
160
161
161
function name_disaggregated_variable (var_ref, bin_var, i)
162
162
var_name = name (var_ref)
163
- var_name_i = " $(var_name) _$(bin_var)$i "
163
+ var_name_i = " $(var_name) _$(bin_var) [ $i ] "
164
164
165
165
return var_name_i
166
166
end
@@ -213,7 +213,8 @@ is_constraint(constr::Nothing) = false
213
213
"""
214
214
update_constraint_list!(disj, list::Vector)
215
215
216
- Update constraint list (for disjunction constraints stored in .ext Dict)
216
+ Update constraint list (for disjunction constraints stored in .ext Dict) for big-M reformulations.
217
+ NOTE: for big-M reformulations, nonlinear constraints are added separately to the .ext Dict with `add_reformulated_constraint`.
217
218
"""
218
219
function update_constraint_list! (disj, list:: Vector )
219
220
disj_constraints = filter (! isnothing, disj) # remove any empty disjuncts
@@ -226,4 +227,27 @@ function update_constraint_list!(item::AbstractArray{<:ConstraintRef}, list::Vec
226
227
update_constraint_list! (item[idx], list)
227
228
end
228
229
end
229
- update_constraint_list! (item:: ConstraintRef , list:: Vector ) = push! (list, item)
230
+ update_constraint_list! (item:: ConstraintRef , list:: Vector ) = push! (list, item)
231
+ update_constraint_list! (item:: NonlinearConstraintRef , list:: Vector ) = nothing
232
+
233
+ """
234
+ update_constraint_list2!(disj, list::Vector)
235
+
236
+ Update constraint list (for disjunction constraints stored in .ext Dict) for hull reformulations.
237
+ NOTE: for big-M reformulations, nonlinear/quadratic constraints are added separately to the .ext Dict with `add_reformulated_constraint`.
238
+ """
239
+ function update_constraint_list2! (disj, list:: Vector )
240
+ disj_constraints = filter (! isnothing, disj) # remove any empty disjuncts
241
+ for item in disj_constraints
242
+ update_constraint_list2! (item, list)
243
+ end
244
+ end
245
+ function update_constraint_list2! (item:: AbstractArray{<:ConstraintRef} , list:: Vector )
246
+ for idx in eachindex (item)
247
+ update_constraint_list2! (item[idx], list)
248
+ end
249
+ end
250
+ function update_constraint_list2! (item:: ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}} , list:: Vector ) where {T,V}
251
+ push! (list, item)
252
+ end
253
+ update_constraint_list2! (item:: ConstraintRef , list:: Vector ) = nothing
0 commit comments