Skip to content

Commit cb3656f

Browse files
authored
Simplify Optimizer Model Docs (#267)
* simplify optimizer model docs * Bug fix
1 parent 21a0f97 commit cb3656f

File tree

1 file changed

+28
-25
lines changed

1 file changed

+28
-25
lines changed

docs/src/develop/extensions.md

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -913,15 +913,20 @@ function InfiniteOpt.build_optimizer_model!(
913913
914914
# add variables
915915
for vref in all_variables(model)
916-
dvref = dispatch_variable_ref(vref)
917-
if dvref isa InfiniteVariableRef # have to handle the infinite variable functional start value
918-
inf_var = InfiniteOpt._core_variable_object(dvref)
919-
info = InfiniteOpt.TranscriptionOpt._format_infinite_info(inf_var, zeros(length(raw_parameter_refs(dvref))))
916+
if index(vref) isa InfiniteVariableIndex
917+
start = NaN # easy hack
920918
else
921-
info = InfiniteOpt._variable_info(dvref)
919+
start = start_value(vref)
920+
start = isnothing(start) ? NaN : start
922921
end
923-
new_vref = add_variable(determ_model, ScalarVariable(info),
924-
name(dvref)) # TODO update infinite variable names
922+
lb = has_lower_bound(vref) ? lower_bound(vref) : NaN
923+
ub = has_upper_bound(vref) ? upper_bound(vref) : NaN
924+
if is_fixed(vref)
925+
lb = fix_value(vref)
926+
end
927+
info = VariableInfo(!isnan(lb), lb, !isnan(ub), ub, is_fixed(vref), lb,
928+
!isnan(start), start, is_binary(vref), is_integer(vref))
929+
new_vref = add_variable(determ_model, ScalarVariable(info), name(vref))
925930
deterministic_data(determ_model).infvar_to_detvar[vref] = new_vref
926931
end
927932
@@ -934,25 +939,23 @@ function InfiniteOpt.build_optimizer_model!(
934939
end
935940
936941
# add the constraints
937-
for cref in all_constraints(model)
938-
if !InfiniteOpt._is_info_constraint(cref)
939-
constr = constraint_object(cref)
940-
new_func = _make_expression(determ_model, constr.func)
941-
if new_func isa NonlinearExpression
942-
if constr.set isa MOI.LessThan
943-
ex = :($new_func <= $(constr.set.upper))
944-
elseif constr.set isa MOI.GreaterThan
945-
ex = :($new_func >= $(constr.set.lower))
946-
else # assume it is MOI.EqualTo
947-
ex = :($new_func == $(constr.set.value))
948-
end
949-
new_cref = add_nonlinear_constraint(determ_model, ex)
950-
else
951-
new_constr = build_constraint(error, new_func, constr.set)
952-
new_cref = add_constraint(determ_model, new_constr, name(cref))
942+
for cref in all_constraints(model, Union{GenericAffExpr, GenericQuadExpr, NLPExpr})
943+
constr = constraint_object(cref)
944+
new_func = _make_expression(determ_model, constr.func)
945+
if new_func isa NonlinearExpression
946+
if constr.set isa MOI.LessThan
947+
ex = :($new_func <= $(constr.set.upper))
948+
elseif constr.set isa MOI.GreaterThan
949+
ex = :($new_func >= $(constr.set.lower))
950+
else # assume it is MOI.EqualTo
951+
ex = :($new_func == $(constr.set.value))
953952
end
954-
deterministic_data(determ_model).infconstr_to_detconstr[cref] = new_cref
953+
new_cref = add_nonlinear_constraint(determ_model, ex)
954+
else
955+
new_constr = build_constraint(error, new_func, constr.set)
956+
new_cref = add_constraint(determ_model, new_constr, name(cref))
955957
end
958+
deterministic_data(determ_model).infconstr_to_detconstr[cref] = new_cref
956959
end
957960
958961
# update the status
@@ -1008,7 +1011,7 @@ function InfiniteOpt.optimizer_model_expression(
10081011
expr::JuMP.AbstractJuMPScalar,
10091012
key::Val{DetermKey}
10101013
)
1011-
model = optimizer_model(JuMP.owner_model(vref))
1014+
model = optimizer_model(InfiniteOpt._model_from_expr(expr))
10121015
return _make_expression(model, expr)
10131016
end
10141017

0 commit comments

Comments
 (0)