40 Stars
Updated Last
1 Year Ago
Started In
December 2019

An image of the Moa bird. Licensed into the Public Domain by https://freesvg.org/moa


Build Status codecov

MultiObjectiveAlgorithms.jl (MOA) is a collection of algorithms for multi-objective optimization.


MultiObjectiveAlgorithms.jl is licensed under the MPL 2.0 License.


Install MOA using Pkg.add:

import Pkg

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.


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()

Used By Packages