diff --git a/README.md b/README.md index 20c08b3..e23f0d2 100644 --- a/README.md +++ b/README.md @@ -51,22 +51,24 @@ 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.RandomWeighting()` - * `MOA.Sandwiching()` - * `MOA.TambyVanderpooten()` - -Consult their docstrings for details. +Set the algorithm using the `MOA.Algorithm()` attribute. The value must be one +of the algorithms supported by MOA. Consult their docstrings for details. + +Some algorithms are restricted to certain problem classes. The solution set +depends on the algorithm and the problem class. + +| `MOA.Algorithm` | Applicable problem class | +| :------------------------ | ------------------------ | +| `MOA.Chalmet()` | Exactly two objectives | +| `MOA.Dichotomy()` | Exactly two objectives | +| `MOA.DominguezRios()` | Discrete variables only | +| `MOA.EpsilonConstraint()` | Exactly two objectives | +| `MOA.Hierarchical()` | Any | +| `MOA.KirlikSayin()` | Discrete variables only | +| `MOA.Lexicographic()` [default] | Any | +| `MOA.RandomWeighting()` | Any | +| `MOA.Sandwiching()` | Any | +| `MOA.TambyVanderpooten()` | Discrete variables only | ## Other optimizer attributes diff --git a/src/algorithms/Chalmet.jl b/src/algorithms/Chalmet.jl index 084592d..4b8a662 100644 --- a/src/algorithms/Chalmet.jl +++ b/src/algorithms/Chalmet.jl @@ -12,6 +12,12 @@ Chalmet, L.G., and Lemonidis, L., and Elzinga, D.J. (1986). An algorithm for the bi-criterion integer programming problem. European Journal of Operational Research. 25(2), 292-300 +## Supported problem classes + +This algorithm is restricted to problems with: + + * exactly two objectives + ## Supported optimizer attributes * `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the diff --git a/src/algorithms/Dichotomy.jl b/src/algorithms/Dichotomy.jl index ec07b41..7133fda 100644 --- a/src/algorithms/Dichotomy.jl +++ b/src/algorithms/Dichotomy.jl @@ -11,6 +11,12 @@ A solver that implements the algorithm of: Y. P. Aneja, K. P. K. Nair, (1979) Bicriteria Transportation Problem. Management Science 25(1), 73-78. +## Supported problem classes + +This algorithm is restricted to problems with: + + * exactly two objectives + ## Supported optimizer attributes * `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the diff --git a/src/algorithms/DominguezRios.jl b/src/algorithms/DominguezRios.jl index 8ca05d9..1e0d0d7 100644 --- a/src/algorithms/DominguezRios.jl +++ b/src/algorithms/DominguezRios.jl @@ -12,6 +12,13 @@ Dominguez-Rios, M.A. & Chicano, F., & Alba, E. (2021). Effective anytime algorithm for multiobjective combinatorial optimization problems. Information Sciences, 565(7), 210-228. +## Supported problem classes + +This algorithm is restricted to problems with: + + * discrete variables only. It will fail to converge if the problem is purely + continuous. + ## Supported optimizer attributes * `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the diff --git a/src/algorithms/EpsilonConstraint.jl b/src/algorithms/EpsilonConstraint.jl index 74dc5b0..36d9af7 100644 --- a/src/algorithms/EpsilonConstraint.jl +++ b/src/algorithms/EpsilonConstraint.jl @@ -9,6 +9,12 @@ `EpsilonConstraint` implements the epsilon-constraint algorithm for bi-objective programs. +## Supported problem classes + +This algorithm is restricted to problems with: + + * exactly two objectives + ## Supported optimizer attributes * `MOA.EpsilonConstraintStep()`: `EpsilonConstraint` uses this value diff --git a/src/algorithms/Hierarchical.jl b/src/algorithms/Hierarchical.jl index 6e87824..583937d 100644 --- a/src/algorithms/Hierarchical.jl +++ b/src/algorithms/Hierarchical.jl @@ -19,6 +19,10 @@ future solves. Finally, it steps to the next set of prioritized objectives. The solution is a single point that trades off the various objectives. It does not record the partial solutions that were found along the way. +## Supported problem classes + +This algorithm supports all problem classes. + ## Supported optimizer attributes * `MOA.ObjectivePriority` diff --git a/src/algorithms/KirlikSayin.jl b/src/algorithms/KirlikSayin.jl index 369d0a8..05e080f 100644 --- a/src/algorithms/KirlikSayin.jl +++ b/src/algorithms/KirlikSayin.jl @@ -17,6 +17,13 @@ discrete optimization problems. The algorithm maintains `(p-1)`-dimensional rectangle regions in the solution space, and a two-stage optimization problem is solved for each rectangle. +## Supported problem classes + +This algorithm is restricted to problems with: + + * discrete variables only. It will fail to converge if the problem is purely + continuous. + ## Supported optimizer attributes * `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the diff --git a/src/algorithms/Lexicographic.jl b/src/algorithms/Lexicographic.jl index 049c8b6..7057e3d 100644 --- a/src/algorithms/Lexicographic.jl +++ b/src/algorithms/Lexicographic.jl @@ -9,6 +9,10 @@ `Lexicographic()` implements a lexigographic algorithm that returns a single point on the frontier, corresponding to solving each objective in order. +## Supported problem classes + +This algorithm supports all problem classes. + ## Supported optimizer attributes * `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the diff --git a/src/algorithms/RandomWeighting.jl b/src/algorithms/RandomWeighting.jl index 6563b0a..c29bc1f 100644 --- a/src/algorithms/RandomWeighting.jl +++ b/src/algorithms/RandomWeighting.jl @@ -9,6 +9,10 @@ A heuristic solver that works by repeatedly solving a weighted sum problem with random weights. +## Supported problem classes + +This algorithm supports all problem classes. + ## Supported optimizer attributes * `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the diff --git a/src/algorithms/Sandwiching.jl b/src/algorithms/Sandwiching.jl index 3bc79dd..0008e71 100644 --- a/src/algorithms/Sandwiching.jl +++ b/src/algorithms/Sandwiching.jl @@ -11,6 +11,10 @@ Fleuren, H. A. (2023). A Renewed Take on Weighted Sum in Sandwich Algorithms: Modification of the Criterion Space. (Center Discussion Paper; Vol. 2023-012). CentER, Center for Economic Research. +## Supported problem classes + +This algorithm supports all problem classes. + ## Compat To use this algorithm you MUST first load the Polyhedra.jl Julia package: diff --git a/src/algorithms/TambyVanderpooten.jl b/src/algorithms/TambyVanderpooten.jl index ffc29a3..ef89e03 100644 --- a/src/algorithms/TambyVanderpooten.jl +++ b/src/algorithms/TambyVanderpooten.jl @@ -18,6 +18,13 @@ minimization problems) and their associated defining points. At each iteration, one of the objectives and an upper bound is picked and the single objective reformulation is solved using one of the defining points as a starting solution. +## Supported problem classes + +This algorithm is restricted to problems with: + + * discrete variables only. It will fail to converge if the problem is purely + continuous. + ## Supported optimizer attributes * `MOI.TimeLimitSec()`: terminate if the time limit is exceeded and return the