Skip to content

Commit 3f936a9

Browse files
committed
Clarify that some algorithms are specialized to particular problem classes
1 parent fae9a7b commit 3f936a9

File tree

11 files changed

+73
-16
lines changed

11 files changed

+73
-16
lines changed

README.md

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,24 @@ the choice of solution algorithm.
5151

5252
## Algorithm
5353

54-
Set the algorithm using the `MOA.Algorithm()` attribute.
55-
56-
The value must be one of the algorithms supported by MOA:
57-
58-
* `MOA.Chalmet()`
59-
* `MOA.Dichotomy()`
60-
* `MOA.DominguezRios()`
61-
* `MOA.EpsilonConstraint()`
62-
* `MOA.Hierarchical()`
63-
* `MOA.KirlikSayin()`
64-
* `MOA.Lexicographic()` [default]
65-
* `MOA.RandomWeighting()`
66-
* `MOA.Sandwiching()`
67-
* `MOA.TambyVanderpooten()`
68-
69-
Consult their docstrings for details.
54+
Set the algorithm using the `MOA.Algorithm()` attribute. The value must be one
55+
of the algorithms supported by MOA. Consult their docstrings for details.
56+
57+
Some algorithms are restricted to certain problem classes. The solution set
58+
depends on the algorithm and the problem class.
59+
60+
| `MOA.Algorithm` | Applicable problem class |
61+
| :------------------------ | ------------------------ |
62+
| `MOA.Chalmet()` | Exactly two objectives |
63+
| `MOA.Dichotomy()` | Exactly two objectives |
64+
| `MOA.DominguezRios()` | Discrete variables only |
65+
| `MOA.EpsilonConstraint()` | Exactly two objectives |
66+
| `MOA.Hierarchical()` | Any |
67+
| `MOA.KirlikSayin()` | Discrete variables only |
68+
| `MOA.Lexicographic()` [default] | Any |
69+
| `MOA.RandomWeighting()` | Any |
70+
| `MOA.Sandwiching()` | Any |
71+
| `MOA.TambyVanderpooten()` | Discrete variables only |
7072

7173
## Other optimizer attributes
7274

src/algorithms/Chalmet.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ Chalmet, L.G., and Lemonidis, L., and Elzinga, D.J. (1986). An algorithm for the
1212
bi-criterion integer programming problem. European Journal of Operational
1313
Research. 25(2), 292-300
1414
15+
## Supported problem classes
16+
17+
This algorithm is restricted to problems with:
18+
19+
* exactly two objectives
20+
1521
## Supported optimizer attributes
1622
1723
* `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the

src/algorithms/Dichotomy.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ A solver that implements the algorithm of:
1111
Y. P. Aneja, K. P. K. Nair, (1979) Bicriteria Transportation Problem. Management
1212
Science 25(1), 73-78.
1313
14+
## Supported problem classes
15+
16+
This algorithm is restricted to problems with:
17+
18+
* exactly two objectives
19+
1420
## Supported optimizer attributes
1521
1622
* `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the

src/algorithms/DominguezRios.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ Dominguez-Rios, M.A. & Chicano, F., & Alba, E. (2021). Effective anytime
1212
algorithm for multiobjective combinatorial optimization problems. Information
1313
Sciences, 565(7), 210-228.
1414
15+
## Supported problem classes
16+
17+
This algorithm is restricted to problems with:
18+
19+
* discrete variables only. It will fail to converge if the problem is purely
20+
continuous.
21+
1522
## Supported optimizer attributes
1623
1724
* `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the

src/algorithms/EpsilonConstraint.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
`EpsilonConstraint` implements the epsilon-constraint algorithm for
1010
bi-objective programs.
1111
12+
## Supported problem classes
13+
14+
This algorithm is restricted to problems with:
15+
16+
* exactly two objectives
17+
1218
## Supported optimizer attributes
1319
1420
* `MOA.EpsilonConstraintStep()`: `EpsilonConstraint` uses this value

src/algorithms/Hierarchical.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ future solves. Finally, it steps to the next set of prioritized objectives.
1919
The solution is a single point that trades off the various objectives. It does
2020
not record the partial solutions that were found along the way.
2121
22+
## Supported problem classes
23+
24+
This algorithm supports all problem classes.
25+
2226
## Supported optimizer attributes
2327
2428
* `MOA.ObjectivePriority`

src/algorithms/KirlikSayin.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ discrete optimization problems. The algorithm maintains `(p-1)`-dimensional
1717
rectangle regions in the solution space, and a two-stage optimization problem
1818
is solved for each rectangle.
1919
20+
## Supported problem classes
21+
22+
This algorithm is restricted to problems with:
23+
24+
* discrete variables only. It will fail to converge if the problem is purely
25+
continuous.
26+
2027
## Supported optimizer attributes
2128
2229
* `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the

src/algorithms/Lexicographic.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
`Lexicographic()` implements a lexigographic algorithm that returns a single
1010
point on the frontier, corresponding to solving each objective in order.
1111
12+
## Supported problem classes
13+
14+
This algorithm supports all problem classes.
15+
1216
## Supported optimizer attributes
1317
1418
* `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the

src/algorithms/RandomWeighting.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
A heuristic solver that works by repeatedly solving a weighted sum problem with
1010
random weights.
1111
12+
## Supported problem classes
13+
14+
This algorithm supports all problem classes.
15+
1216
## Supported optimizer attributes
1317
1418
* `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the

src/algorithms/Sandwiching.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ Fleuren, H. A. (2023). A Renewed Take on Weighted Sum in Sandwich Algorithms:
1111
Modification of the Criterion Space. (Center Discussion Paper; Vol. 2023-012).
1212
CentER, Center for Economic Research.
1313
14+
## Supported problem classes
15+
16+
This algorithm supports all problem classes.
17+
1418
## Compat
1519
1620
To use this algorithm you MUST first load the Polyhedra.jl Julia package:

0 commit comments

Comments
 (0)