@@ -15,10 +15,11 @@ function Base.write(io::IO, model::Model)
1515 variables, constraints = NamedTuple[], NamedTuple[]
1616 name_map = _write_variables (variables, model)
1717 objective = _write_nlpblock (constraints, model, name_map)
18+ has_scalar_nonlinear = false
1819 if objective === nothing
19- objective = _write_objective (model, name_map)
20+ objective, has_scalar_nonlinear = _write_objective (model, name_map)
2021 end
21- _write_constraints (constraints, model, name_map)
22+ has_scalar_nonlinear |= _write_constraints (constraints, model, name_map)
2223 object = (;
2324 name = " MathOptFormat Model" ,
2425 version = (
@@ -29,6 +30,9 @@ function Base.write(io::IO, model::Model)
2930 objective = objective,
3031 constraints = constraints,
3132 )
33+ if has_scalar_nonlinear
34+ object = (; has_scalar_nonlinear = true , object... )
35+ end
3236 JSON3. write (io, object)
3337 return
3438end
@@ -122,27 +126,30 @@ function _write_objective(
122126)
123127 sense = MOI. get (model, MOI. ObjectiveSense ())
124128 if sense == MOI. FEASIBILITY_SENSE
125- return (; :sense => moi_to_object (sense))
129+ return (; :sense => moi_to_object (sense)), false
126130 end
127131 F = MOI. get (model, MOI. ObjectiveFunctionType ())
128132 objective_function = MOI. get (model, MOI. ObjectiveFunction {F} ())
129- return (;
133+ object = (;
130134 :sense => moi_to_object (sense),
131135 :function => moi_to_object (objective_function, name_map),
132136 )
137+ return object, (F == MOI. ScalarNonlinearFunction)
133138end
134139
135140function _write_constraints (
136141 constraints:: Vector{NamedTuple} ,
137142 model:: Model ,
138143 name_map:: Dict{MOI.VariableIndex,String} ,
139144)
145+ has_scalar_nonlinear = false
140146 for (F, S) in MOI. get (model, MOI. ListOfConstraintTypesPresent ())
147+ has_scalar_nonlinear |= (F == MOI. ScalarNonlinearFunction)
141148 for index in MOI. get (model, MOI. ListOfConstraintIndices {F,S} ())
142149 push! (constraints, moi_to_object (index, model, name_map))
143150 end
144151 end
145- return
152+ return has_scalar_nonlinear
146153end
147154
148155"""
0 commit comments