
MultiObjectiveAlgorithms.jl
MultiObjectiveAlgorithms.jl (MOA) is a collection of algorithms for multi-objective optimization.
License
MultiObjectiveAlgorithms.jl
is licensed under the MPL 2.0 License.
Getting help
If you need help, please ask a question on the JuMP community forum.
If you have a reproducible example of a bug, please open a GitHub issue.
Installation
Install MOA using Pkg.add
:
import Pkg
Pkg.add("MultiObjectiveAlgorithms")
Use with JuMP
Use MultiObjectiveAlgorithms
with JuMP as follows:
using JuMP
import HiGHS
import MultiObjectiveAlgorithms as MOA
model = JuMP.Model(() -> MOA.Optimizer(HiGHS.Optimizer))
set_attribute(model, MOA.Algorithm(), MOA.Dichotomy())
set_attribute(model, MOA.SolutionLimit(), 4)
Replace HiGHS.Optimizer
with an optimizer capable of solving a single-objective instance of your optimization problem.
You may set additional optimizer attributes, the supported attributes depend on the choice of solution algorithm.
Algorithm
Set the algorithm using the MOA.Algorithm()
attribute.
The value must be one of the algorithms supported by MOA:
MOA.Chalmet()
MOA.Dichotomy()
MOA.DominguezRios()
MOA.EpsilonConstraint()
MOA.Hierarchical()
MOA.KirlikSayin()
MOA.Lexicographic()
[default]MOA.TambyVanderpooten()
Consult their docstrings for details.
Other optimizer attributes
There are a number of optimizer attributes supported by the algorithms in MOA.
Each algorithm supports only a subset of the attributes. Consult the algorithm's docstring for details on which attributes it supports, and how it uses them in the solution process.
MOA.EpsilonConstraintStep()
MOA.LexicographicAllPermutations()
MOA.ObjectiveAbsoluteTolerance(index::Int)
MOA.ObjectivePriority(index::Int)
MOA.ObjectiveRelativeTolerance(index::Int)
MOA.ObjectiveWeight(index::Int)
MOA.SolutionLimit()
MOI.TimeLimitSec()
Ideal point
By default, MOA will compute the ideal point, which can be queried using the MOI.ObjectiveBound
attribute.
Computing the ideal point requires as many solves as the dimension of the objective function. Thus, if you do not need the ideal point information, you can improve the performance of MOA by setting the MOA.ComputeIdealPoint()
attribute to false
.