Class LinearSolver.Builder
- java.lang.Object
-
- org.ojalgo.optimisation.GenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
- org.ojalgo.optimisation.linear.LinearSolver.Builder
-
- All Implemented Interfaces:
Optimisation
,Optimisation.ProblemStructure
- Enclosing class:
- LinearSolver
public static final class LinearSolver.Builder extends GenericSolver.Builder<LinearSolver.Builder,LinearSolver>
Compared to
LinearSolver.StandardBuilder
this builder:
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 Constructor Description Builder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected LinearSolver
doBuild(Optimisation.Options options)
LinearSolver.Builder
equalities(Access2D<?> mtrxAE, Access1D<?> mtrxBE)
LinearSolver.Builder
equality(double rhs, double... factors)
protected double[]
getLowerBounds()
LinearFunction<java.lang.Double>
getObjective()
protected double[]
getUpperBounds()
LinearSolver.Builder
inequalities(Access2D<?> mtrxAI, Access1D<?> mtrxBI)
LinearSolver.Builder
inequality(double rhs, double... factors)
LinearSolver.Builder
lower(double bound)
LinearSolver.Builder
lower(double... bounds)
(package private) SimplexStore
newSimplexStore(java.util.function.Function<LinearStructure,SimplexStore> storeFactory, int... basis)
(package private) SimplexTableau
newSimplexTableau(java.util.function.Function<LinearStructure,SimplexTableau> tableauFactory)
LinearSolver.Builder
objective(double... factors)
LinearSolver.Builder
objective(int index, double value)
LinearSolver.Builder
objective(MatrixStore<java.lang.Double> mtrxC)
LinearSolver.Builder
toStandardForm()
Convert inequalities to equalities (adding slack variables) and make sure all RHS are non-negative.LinearSolver.Builder
upper(double bound)
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
-
-
-
-
Method Detail
-
equalities
public LinearSolver.Builder equalities(Access2D<?> mtrxAE, Access1D<?> mtrxBE)
- Overrides:
equalities
in classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
equality
public LinearSolver.Builder equality(double rhs, double... factors)
- Overrides:
equality
in classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
getObjective
public final LinearFunction<java.lang.Double> getObjective()
- Overrides:
getObjective
in classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
inequalities
public LinearSolver.Builder inequalities(Access2D<?> mtrxAI, Access1D<?> mtrxBI)
- Overrides:
inequalities
in classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
inequality
public LinearSolver.Builder inequality(double rhs, double... factors)
- Overrides:
inequality
in classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
lower
public final LinearSolver.Builder lower(double... bounds)
-
lower
public final LinearSolver.Builder lower(double bound)
-
objective
public final LinearSolver.Builder objective(double... factors)
-
objective
public final LinearSolver.Builder objective(int index, double value)
-
objective
public final LinearSolver.Builder objective(MatrixStore<java.lang.Double> mtrxC)
-
toStandardForm
public LinearSolver.Builder 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 <= [X]
and 0 <= [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
public final LinearSolver.Builder upper(double... bounds)
-
upper
public final LinearSolver.Builder upper(double bound)
-
doBuild
protected LinearSolver doBuild(Optimisation.Options options)
- Specified by:
doBuild
in classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
getLowerBounds
protected final double[] getLowerBounds()
-
getUpperBounds
protected final double[] getUpperBounds()
-
newSimplexStore
SimplexStore newSimplexStore(java.util.function.Function<LinearStructure,SimplexStore> storeFactory, int... basis)
-
newSimplexTableau
SimplexTableau newSimplexTableau(java.util.function.Function<LinearStructure,SimplexTableau> tableauFactory)
-
-