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 org.ojalgo.optimisation.Optimisation
Optimisation.Constraint, Optimisation.ConstraintType, Optimisation.Integration<M extends Optimisation.Model,
S extends Optimisation.Solver>, Optimisation.Model, Optimisation.Objective, Optimisation.Options, Optimisation.ProblemStructure, Optimisation.Result, Optimisation.Sense, Optimisation.Solver, Optimisation.State -
Field Summary
Fields inherited from interface org.ojalgo.optimisation.Optimisation.ProblemStructure
DEBUG
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected LinearSolver
doBuild
(Optimisation.Options options) equalities
(Access2D<?> mtrxAE, Access1D<?> mtrxBE) equality
(double rhs, double... factors) protected final double[]
final LinearFunction
<Double> protected final double[]
inequalities
(Access2D<?> mtrxAI, Access1D<?> mtrxBI) inequality
(double rhs, double... factors) final LinearSolver.Builder
lower
(double bound) final LinearSolver.Builder
lower
(double... bounds) (package private) SimplexStore
newSimplexStore
(Function<LinearStructure, SimplexStore> storeFactory, int... basis) (package private) SimplexTableau
newSimplexTableau
(Function<LinearStructure, SimplexTableau> tableauFactory) final LinearSolver.Builder
objective
(double... factors) final LinearSolver.Builder
objective
(int index, double value) final LinearSolver.Builder
objective
(MatrixStore<Double> mtrxC) Convert inequalities to equalities (adding slack variables) and make sure all RHS are non-negative.final LinearSolver.Builder
upper
(double bound) final LinearSolver.Builder
upper
(double... bounds) Methods inherited from class org.ojalgo.optimisation.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, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.ojalgo.optimisation.Optimisation.ProblemStructure
countConstraints
-
Constructor Details
-
Builder
Builder()
-
-
Method Details
-
equalities
- Overrides:
equalities
in classGenericSolver.Builder<LinearSolver.Builder,
LinearSolver>
-
equality
- Overrides:
equality
in classGenericSolver.Builder<LinearSolver.Builder,
LinearSolver>
-
getObjective
- Overrides:
getObjective
in classGenericSolver.Builder<LinearSolver.Builder,
LinearSolver>
-
inequalities
- Overrides:
inequalities
in classGenericSolver.Builder<LinearSolver.Builder,
LinearSolver>
-
inequality
- Overrides:
inequality
in 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:
doBuild
in classGenericSolver.Builder<LinearSolver.Builder,
LinearSolver>
-
getLowerBounds
protected final double[] getLowerBounds() -
getUpperBounds
protected final double[] getUpperBounds() -
newSimplexStore
-
newSimplexTableau
-