Popularity
40 Stars
Updated Last
1 Year Ago
Started In
December 2019

# MultiObjectiveAlgorithms.jl

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

`MultiObjectiveAlgorithms.jl` is licensed under the MPL 2.0 License.

## Installation

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.

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

### Required Packages

View all packages