- 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.StandardBuilderthis builder:
1) Accepts inequality constraints
2) Has relaxed the requiremnt on the RHS to be non-negative (both equalities and inequalities)
Compared to
ConvexSolver.Builderthis 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 LinearSolverdoBuild(Optimisation.Options options)LinearSolver.Builderequalities(Access2D<?> mtrxAE, Access1D<?> mtrxBE)LinearSolver.Builderequality(double rhs, double... factors)protected double[]getLowerBounds()LinearFunction<java.lang.Double>getObjective()protected double[]getUpperBounds()LinearSolver.Builderinequalities(Access2D<?> mtrxAI, Access1D<?> mtrxBI)LinearSolver.Builderinequality(double rhs, double... factors)LinearSolver.Builderlower(double bound)LinearSolver.Builderlower(double... bounds)(package private) <S extends SimplexStore>
SnewSimplexStore(java.util.function.Function<LinearStructure,S> storeFactory, int... basis)(package private) SimplexTableaunewSimplexTableau(java.util.function.Function<LinearStructure,SimplexTableau> tableauFactory)LinearSolver.Builderobjective(double... factors)LinearSolver.Builderobjective(int index, double value)LinearSolver.Builderobjective(MatrixStore<java.lang.Double> mtrxC)LinearSolver.BuildertoStandardForm()Convert inequalities to equalities (adding slack variables) and make sure all RHS are non-negative.LinearSolver.Builderupper(double bound)LinearSolver.Builderupper(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:
equalitiesin classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
equality
public LinearSolver.Builder equality(double rhs, double... factors)
- Overrides:
equalityin classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
getObjective
public LinearFunction<java.lang.Double> getObjective()
- Overrides:
getObjectivein classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
inequalities
public LinearSolver.Builder inequalities(Access2D<?> mtrxAI, Access1D<?> mtrxBI)
- Overrides:
inequalitiesin classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
inequality
public LinearSolver.Builder inequality(double rhs, double... factors)
- Overrides:
inequalityin classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
lower
public final LinearSolver.Builder lower(double... bounds)
-
lower
public LinearSolver.Builder lower(double bound)
-
objective
public final LinearSolver.Builder objective(double... factors)
-
objective
public LinearSolver.Builder objective(int index, double value)
-
objective
public 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 LinearSolver.Builder upper(double bound)
-
doBuild
protected LinearSolver doBuild(Optimisation.Options options)
- Specified by:
doBuildin classGenericSolver.Builder<LinearSolver.Builder,LinearSolver>
-
getLowerBounds
protected double[] getLowerBounds()
-
getUpperBounds
protected double[] getUpperBounds()
-
newSimplexStore
<S extends SimplexStore> S newSimplexStore(java.util.function.Function<LinearStructure,S> storeFactory, int... basis)
-
newSimplexTableau
SimplexTableau newSimplexTableau(java.util.function.Function<LinearStructure,SimplexTableau> tableauFactory)
-
-