@@ -142,22 +142,9 @@ function _update!(
142142 return
143143end
144144
145- function optimize_multiobjective! (algorithm:: DominguezRios , model:: Optimizer )
145+ function minimize_multiobjective! (algorithm:: DominguezRios , model:: Optimizer )
146+ @assert MOI. get (model. inner, MOI. ObjectiveSense ()) == MOI. MIN_SENSE
146147 start_time = time ()
147- sense = MOI. get (model. inner, MOI. ObjectiveSense ())
148- if sense == MOI. MAX_SENSE
149- old_obj, neg_obj = copy (model. f), - model. f
150- MOI. set (model, MOI. ObjectiveFunction {typeof(neg_obj)} (), neg_obj)
151- MOI. set (model, MOI. ObjectiveSense (), MOI. MIN_SENSE)
152- status, solutions = optimize_multiobjective! (algorithm, model)
153- MOI. set (model, MOI. ObjectiveFunction {typeof(old_obj)} (), old_obj)
154- MOI. set (model, MOI. ObjectiveSense (), MOI. MAX_SENSE)
155- if solutions != = nothing
156- solutions = [SolutionPoint (s. x, - s. y) for s in solutions]
157- end
158- model. ideal_point .*= - 1
159- return status, solutions
160- end
161148 n = MOI. output_dimension (model. f)
162149 L = [_DominguezRiosBox[] for i in 1 : n]
163150 scalars = MOI. Utilities. scalarize (model. f)
@@ -166,7 +153,7 @@ function optimize_multiobjective!(algorithm::DominguezRios, model::Optimizer)
166153 # Ideal and Nadir point estimation
167154 for (i, f_i) in enumerate (scalars)
168155 MOI. set (model. inner, MOI. ObjectiveFunction {typeof(f_i)} (), f_i)
169- MOI. set (model. inner, MOI. ObjectiveSense (), sense )
156+ MOI. set (model. inner, MOI. ObjectiveSense (), MOI . MIN_SENSE )
170157 MOI. optimize! (model. inner)
171158 status = MOI. get (model. inner, MOI. TerminationStatus ())
172159 if ! _is_scalar_status_optimal (status)
@@ -175,18 +162,17 @@ function optimize_multiobjective!(algorithm::DominguezRios, model::Optimizer)
175162 _, Y = _compute_point (model, variables, f_i)
176163 yI[i] = Y
177164 model. ideal_point[i] = Y
178- rev_sense = sense == MOI. MIN_SENSE ? MOI. MAX_SENSE : MOI. MIN_SENSE
179- MOI. set (model. inner, MOI. ObjectiveSense (), rev_sense)
165+ MOI. set (model. inner, MOI. ObjectiveSense (), MOI. MAX_SENSE)
180166 MOI. optimize! (model. inner)
181167 status = MOI. get (model. inner, MOI. TerminationStatus ())
182168 if ! _is_scalar_status_optimal (status)
183- _warn_on_nonfinite_anti_ideal (algorithm, sense , i)
169+ _warn_on_nonfinite_anti_ideal (algorithm, MOI . MIN_SENSE , i)
184170 return status, nothing
185171 end
186172 _, Y = _compute_point (model, variables, f_i)
187173 yN[i] = Y + 1
188174 end
189- MOI. set (model. inner, MOI. ObjectiveSense (), sense )
175+ MOI. set (model. inner, MOI. ObjectiveSense (), MOI . MIN_SENSE )
190176 ϵ = 1 / (2 * n * (maximum (yN - yI) - 1 ))
191177 # If ϵ is small, then the scalar objectives can contain terms that fall
192178 # below the tolerance level of the solver. To fix this, we rescale the
0 commit comments