Class LinearSolver.Builder
- All Implemented Interfaces:
Optimisation, Optimisation.ProblemStructure
- Enclosing class:
LinearSolver
Compared to
invalid reference
LinearSolver.StandardBuilder
1) Accepts inequality constraints
2) Has relaxed the requiremnt on the RHS to be non-negative (both equalities and inequalities)
Compared to ConvexSolver.Builder this builder:
1) Requires the objective function to be linear (or only the linear factors will be concidered)
2) Assumes (requires) variables to be non-negative
-
Nested Class Summary
Nested classes/interfaces inherited from interface Optimisation
Optimisation.Constraint, Optimisation.ConstraintType, Optimisation.Integration<M,S>, Optimisation.Model, Optimisation.Objective, Optimisation.Options, Optimisation.ProblemStructure, Optimisation.Result, Optimisation.Sense, Optimisation.Solver, Optimisation.State -
Field Summary
Fields inherited from interface Optimisation.ProblemStructure
DEBUG -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected LinearSolverdoBuild(Optimisation.Options options) equalities(Access2D<?> mtrxAE, Access1D<?> mtrxBE) equality(double rhs, double... factors) protected double[]protected double[]inequalities(Access2D<?> mtrxAI, Access1D<?> mtrxBI) inequality(double rhs, double... factors) lower(double bound) final LinearSolver.Builderlower(double... bounds) (package private) <S extends SimplexStore>
SnewSimplexStore(Function<LinearStructure, S> storeFactory, int... basis) (package private) SimplexTableaunewSimplexTableau(Function<LinearStructure, SimplexTableau> tableauFactory) final LinearSolver.Builderobjective(double... factors) objective(int index, double value) objective(MatrixStore<Double> mtrxC) Convert inequalities to equalities (adding slack variables) and make sure all RHS are non-negative.upper(double bound) final LinearSolver.Builderupper(double... bounds) Methods inherited from class GenericSolver.Builder
append, append, build, build, countAdditionalConstraints, countEqualityConstraints, countInequalityConstraints, countVariables, doCountVariables, getAE, getAE, getAE, getAI, getAI, getAI, getBE, getBE, getBI, getBI, getC, getFactory, getLowerBounds, getObjective, getRowsAE, getRowsAI, getUpperBounds, reset, setNumberOfVariables, setObjective, solve, toStringMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Optimisation.ProblemStructure
countConstraints
-
Constructor Details
-
Builder
Builder()
-
-
Method Details
-
equalities
- Overrides:
equalitiesin classGenericSolver.Builder<LinearSolver.Builder, LinearSolver>
-
equality
- Overrides:
equalityin classGenericSolver.Builder<LinearSolver.Builder, LinearSolver>
-
getObjective
- Overrides:
getObjectivein classGenericSolver.Builder<LinearSolver.Builder, LinearSolver>
-
inequalities
- Overrides:
inequalitiesin classGenericSolver.Builder<LinearSolver.Builder, LinearSolver>
-
inequality
- Overrides:
inequalityin classGenericSolver.Builder<LinearSolver.Builder, LinearSolver>
-
lower
-
lower
-
objective
-
objective
-
objective
-
toStandardForm
Convert inequalities to equalities (adding slack variables) and make sure all RHS are non-negative.Defines optimisation problems on the LP standard form:
min [C]T[X]
when [AE][X] == [BE]
and 0 invalid input: '<'= [X]
and 0 invalid input: '<'= [BE]
A Linear Program is in Standard Form if:
- All constraints are equality constraints.
- All variables have a nonnegativity sign restriction.
Further it is required that the constraint right hand sides are nonnegative (nonnegative elements in [BE]). Don't think that's an actual LP standard form requirement, but it is commonly required, and also here.
The LP standard form does not dictate if expressed on minimisation or maximisation form. Here it should be a minimisation.
-
upper
-
upper
-
doBuild
- Specified by:
doBuildin classGenericSolver.Builder<LinearSolver.Builder, LinearSolver>
-
getLowerBounds
protected double[] getLowerBounds() -
getUpperBounds
protected double[] getUpperBounds() -
newSimplexStore
-
newSimplexTableau
-