Used for solving multicriteria optimization (MCO) problems by implementing the epsilon constraint method.
Given a MCO problem with a certain number of objectives, there is always one unlimited/unrestricted objective to be optimized. All other objectives are constraint to specific Epsilons so that the solver does not accept any solutions violating the constraints.
This solver always finds one best solution which is Pareto optimal considering all objectives without violating the constraints. If there are no solutions which satisfy the constraints, the solver still picks the solution which is closest to the constraints.
The IProblem<T>.IsObjectiveMinimized(int) flag is considered in order to handle problems to be minimized as well as problems to be maximized.
T | Type of the objective values defining the objective space. |
T | : | IComparable | |
T | : | IComparable<T> |
Public Fields | |
int | Unlimited |
The index of the unrestricted objective. More... | |
List< T > | Epsilons = new List<T>() |
Specifies the epsilon-constraints for each corresponding objective of an IProblem<T>. More... | |
Public Methods | |
ConstraintSolver () | |
Constructs a ConstraintSolver<T> instance. More... | |
ReadOnlyCollection< int > | Solve (IProblem< T > problem) |
Solves a defined IProblem<T> and returns a Pareto optimal solution which does not violate the set Epsilons (constraints). More... | |