From da18b9345ba00f85809b00e7f8c86c2bc73ec3fa Mon Sep 17 00:00:00 2001 From: odow Date: Tue, 7 Feb 2023 13:10:40 +1300 Subject: [PATCH] s/ParetoSolution/SolutionPoint --- src/MOO.jl | 6 +++--- src/algorithms/EpsilonConstraint.jl | 4 ++-- src/algorithms/Hierarchical.jl | 2 +- src/algorithms/Lexicographic.jl | 2 +- src/algorithms/NISE.jl | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/MOO.jl b/src/MOO.jl index c5932ab..d93c613 100644 --- a/src/MOO.jl +++ b/src/MOO.jl @@ -9,12 +9,12 @@ import MathOptInterface const MOI = MathOptInterface -struct ParetoSolution +struct SolutionPoint x::Dict{MOI.VariableIndex,Float64} y::Vector{Float64} end -function Base.isapprox(a::ParetoSolution, b::ParetoSolution; kwargs...) +function Base.isapprox(a::SolutionPoint, b::SolutionPoint; kwargs...) return isapprox(a.y, b.y; kwargs...) end @@ -46,7 +46,7 @@ mutable struct Optimizer <: MOI.AbstractOptimizer inner::MOI.AbstractOptimizer algorithm::Union{Nothing,AbstractAlgorithm} f::Union{Nothing,MOI.AbstractVectorFunction} - solutions::Union{Nothing,Vector{ParetoSolution}} + solutions::Union{Nothing,Vector{SolutionPoint}} termination_status::MOI.TerminationStatusCode function Optimizer(optimizer_factory) diff --git a/src/algorithms/EpsilonConstraint.jl b/src/algorithms/EpsilonConstraint.jl index 502ef6b..5c53428 100644 --- a/src/algorithms/EpsilonConstraint.jl +++ b/src/algorithms/EpsilonConstraint.jl @@ -57,7 +57,7 @@ function optimize_multiobjective!( # Compute the epsilon that we will be incrementing by each iteration n_points = MOI.get(algorithm, SolutionLimit()) ε = abs(right - left) / (n_points - 1) - solutions = ParetoSolution[] + solutions = SolutionPoint[] f1, f2 = MOI.Utilities.eachscalar(model.f) MOI.set(model.inner, MOI.ObjectiveFunction{typeof(f2)}(), f2) # Add epsilon constraint @@ -81,7 +81,7 @@ function optimize_multiobjective!( ) Y = MOI.Utilities.eval_variables(x -> X[x], model.f) if isempty(solutions) || !(Y ≈ solutions[end].y) - push!(solutions, ParetoSolution(X, Y)) + push!(solutions, SolutionPoint(X, Y)) end end MOI.delete(model, ci) diff --git a/src/algorithms/Hierarchical.jl b/src/algorithms/Hierarchical.jl index 0754d84..f7b5cc3 100644 --- a/src/algorithms/Hierarchical.jl +++ b/src/algorithms/Hierarchical.jl @@ -131,5 +131,5 @@ function optimize_multiobjective!(algorithm::Hierarchical, model::Optimizer) for c in constraints MOI.delete(model, c) end - return MOI.OPTIMAL, [ParetoSolution(X, Y)] + return MOI.OPTIMAL, [SolutionPoint(X, Y)] end diff --git a/src/algorithms/Lexicographic.jl b/src/algorithms/Lexicographic.jl index 493dcc1..8912874 100644 --- a/src/algorithms/Lexicographic.jl +++ b/src/algorithms/Lexicographic.jl @@ -65,5 +65,5 @@ function optimize_multiobjective!(algorithm::Lexicographic, model::Optimizer) for c in constraints MOI.delete(model, c) end - return MOI.OPTIMAL, [ParetoSolution(X, Y)] + return MOI.OPTIMAL, [SolutionPoint(X, Y)] end diff --git a/src/algorithms/NISE.jl b/src/algorithms/NISE.jl index 7ef5670..5e6c1ef 100644 --- a/src/algorithms/NISE.jl +++ b/src/algorithms/NISE.jl @@ -47,7 +47,7 @@ function _solve_weighted_sum(model::Optimizer, ::NISE, weights::Vector{Float64}) x in MOI.get(model.inner, MOI.ListOfVariableIndices()) ) Y = MOI.Utilities.eval_variables(x -> X[x], model.f) - return status, ParetoSolution(X, Y) + return status, SolutionPoint(X, Y) end function optimize_multiobjective!(algorithm::NISE, model::Optimizer) @@ -58,7 +58,7 @@ function optimize_multiobjective!(algorithm::NISE, model::Optimizer) status, solution = _solve_weighted_sum(model, algorithm, [1.0]) return status, [solution] end - solutions = Dict{Float64,ParetoSolution}() + solutions = Dict{Float64,SolutionPoint}() for w in (0.0, 1.0) status, solution = _solve_weighted_sum(model, algorithm, w) if status != MOI.OPTIMAL