org.ojalgo.optimisation
Class ExpressionsBasedModel<M extends ExpressionsBasedModel<M>>

java.lang.Object
  extended by org.ojalgo.optimisation.ExpressionsBasedModel<M>
All Implemented Interfaces:
OptimisationModel
Direct Known Subclasses:
LinearExpressionsModel, QuadraticExpressionsModel

public abstract class ExpressionsBasedModel<M extends ExpressionsBasedModel<M>>
extends Object

Lets you construct optimisation problems by collecting mathematical expressions (in terms of the variables). Each expression can be a constraint and/or contribute to the objective function.

Basic instructions:
  1. Define (create) a set of variables. Each variable may have a lower as well as an upper limit and a cost associated with it.
  2. Create a model using that set of variables.
  3. Add expressions to the model. The model is the expression factory/builder. Each expression can act as both a constraint and as a part of the objective.
  4. Instanciate a solver using the model.
  5. Solve!

Author:
apete

Field Summary
static boolean DEBUG
           
 
Method Summary
 Expression addCompoundExpression(String aName, Access2D<?> someQuadraticParams, Access1D<?> someLinearParams)
           
 Expression addCorrelationExpression(String aName, BasicMatrix aCorrelationsMatrix)
          Deprecated. v30 Use addQuadraticExpression(String,Access2D) instead
 Expression addEmptyCompoundExpression(String aName)
           
 Expression addEmptyLinearExpression(String aName)
           
 Expression addEmptyQuadraticExpression(String aName)
           
 Expression addLinearExpression(String aName, Access1D<?> someLinearParams)
           
 Expression addOffsetExpression(String aName, List<BigDecimal> aPoint)
          Generates an expression that measures (the square of) the distance from a specified point.
 Expression addOffsetExpressionWithException(String aName, List<BigDecimal> aPoint, int anExceptionIndex)
           
 Expression addOffsetGroupExpression(String aName, BigDecimal aGroupTarget, int... groupIDs)
           
 Expression addQuadraticExpression(String aName, Access2D<?> someQuadraticParams)
           
 Expression addSimpleWeightExpression(String aName)
           
 Expression addWeightExpression(String aName, BigDecimal[] someLinearWeights)
          Deprecated. v29 Use addWeightExpression(String, List)
 Expression addWeightExpression(String aName, List<BigDecimal> someLinearWeights)
           
 Expression addWeightGroupExpression(String aName, int... groupIDs)
           
abstract  M copy()
           
 int countExpressions()
           
 int countVariables()
           
abstract  OptimisationSolver getDefaultSolver()
          No need to implement an OptimisationModel if there is not at least one matching OptimisationSolver.
 Expression getExpression(String aName)
           
 Expression[] getExpressions()
           
 boolean[] getIntegers()
           
 Expression getObjectiveExpression()
           
 BigDecimal getValue()
           
 Variable getVariable(int anIndex)
           
 Variable[] getVariables()
           
 BigDecimal[] getVariableValues()
           
 int indexOfVariable(String aName)
           
 boolean isAnyExpressionQuadratic()
           
 boolean isAnyVariableInteger()
           
 boolean isMaximisation()
           
 boolean isMinimisation()
           
 BigDecimal maximise()
           
 BigDecimal minimise()
           
 M relax()
           
 void resetObjectiveExpression()
           
 Expression[] selectEqualityConstraintExpressions()
           
 Variable[] selectEqualityConstraintVariables()
           
 Expression[] selectLowerConstraintExpressions()
           
 Variable[] selectLowerConstraintVariables()
           
 Expression[] selectNegativeEqualityConstraintExpressions()
           
 Expression[] selectNegativeLowerConstraintExpressions()
           
 Expression[] selectNegativeUpperConstraintExpressions()
           
 Variable[] selectNonZeroLowerConstraintVariables()
           
 Expression[] selectPositiveEqualityConstraintExpressions()
           
 Expression[] selectPositiveLowerConstraintExpressions()
           
 Expression[] selectPositiveUpperConstraintExpressions()
           
 Expression[] selectUpperConstraintExpressions()
           
 Variable[] selectUpperConstraintVariables()
           
 void setLowerLimitOnVariable(int aVariableIndex, BigDecimal aLimit)
           
 void setMaximisation(boolean aFlag)
           
 void setMinimisation(boolean aFlag)
           
 void setUpperLimitOnVariable(int aVariableIndex, BigDecimal aLimit)
           
 String toString()
           
 boolean validateComposition()
          OptimisationModel is meant to be implemented in parallel with OptimisationSolver.
 boolean validateSolution(BasicMatrix aSolution, NumberContext aContext)
           
 boolean validateSolution(NumberContext aContext)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEBUG

public static boolean DEBUG
Method Detail

addCorrelationExpression

@Deprecated
public Expression addCorrelationExpression(String aName,
                                                      BasicMatrix aCorrelationsMatrix)
Deprecated. v30 Use addQuadraticExpression(String,Access2D) instead


addEmptyCompoundExpression

public Expression addEmptyCompoundExpression(String aName)

addCompoundExpression

public Expression addCompoundExpression(String aName,
                                        Access2D<?> someQuadraticParams,
                                        Access1D<?> someLinearParams)

addEmptyLinearExpression

public Expression addEmptyLinearExpression(String aName)

addEmptyQuadraticExpression

public Expression addEmptyQuadraticExpression(String aName)

addLinearExpression

public Expression addLinearExpression(String aName,
                                      Access1D<?> someLinearParams)

addOffsetExpression

public Expression addOffsetExpression(String aName,
                                      List<BigDecimal> aPoint)
Generates an expression that measures (the square of) the distance from a specified point.

Parameters:
aName - An expression name
aPoint - The "specified point"
Returns:
Expression of the square of the distance from the origin

addOffsetExpressionWithException

public Expression addOffsetExpressionWithException(String aName,
                                                   List<BigDecimal> aPoint,
                                                   int anExceptionIndex)

addOffsetGroupExpression

public Expression addOffsetGroupExpression(String aName,
                                           BigDecimal aGroupTarget,
                                           int... groupIDs)

addQuadraticExpression

public Expression addQuadraticExpression(String aName,
                                         Access2D<?> someQuadraticParams)

addSimpleWeightExpression

public Expression addSimpleWeightExpression(String aName)

addWeightExpression

@Deprecated
public Expression addWeightExpression(String aName,
                                                 BigDecimal[] someLinearWeights)
Deprecated. v29 Use addWeightExpression(String, List)


addWeightExpression

public Expression addWeightExpression(String aName,
                                      List<BigDecimal> someLinearWeights)

addWeightGroupExpression

public Expression addWeightGroupExpression(String aName,
                                           int... groupIDs)

copy

public abstract M copy()

countExpressions

public int countExpressions()

countVariables

public int countVariables()

getDefaultSolver

public abstract OptimisationSolver getDefaultSolver()
Description copied from interface: OptimisationModel
No need to implement an OptimisationModel if there is not at least one matching OptimisationSolver.


getExpression

public Expression getExpression(String aName)

getExpressions

public Expression[] getExpressions()

getIntegers

public boolean[] getIntegers()

getObjectiveExpression

public final Expression getObjectiveExpression()

getValue

public final BigDecimal getValue()

getVariable

public Variable getVariable(int anIndex)

getVariables

public Variable[] getVariables()

getVariableValues

public final BigDecimal[] getVariableValues()

indexOfVariable

public int indexOfVariable(String aName)

isAnyExpressionQuadratic

public final boolean isAnyExpressionQuadratic()

isAnyVariableInteger

public final boolean isAnyVariableInteger()

maximise

public final BigDecimal maximise()

minimise

public final BigDecimal minimise()

relax

public final M relax()

resetObjectiveExpression

public final void resetObjectiveExpression()

selectEqualityConstraintExpressions

public final Expression[] selectEqualityConstraintExpressions()

selectEqualityConstraintVariables

public final Variable[] selectEqualityConstraintVariables()

selectLowerConstraintExpressions

public final Expression[] selectLowerConstraintExpressions()

selectLowerConstraintVariables

public final Variable[] selectLowerConstraintVariables()

selectNegativeEqualityConstraintExpressions

public final Expression[] selectNegativeEqualityConstraintExpressions()

selectNegativeLowerConstraintExpressions

public final Expression[] selectNegativeLowerConstraintExpressions()

selectNegativeUpperConstraintExpressions

public final Expression[] selectNegativeUpperConstraintExpressions()

selectNonZeroLowerConstraintVariables

public final Variable[] selectNonZeroLowerConstraintVariables()

selectPositiveEqualityConstraintExpressions

public final Expression[] selectPositiveEqualityConstraintExpressions()

selectPositiveLowerConstraintExpressions

public final Expression[] selectPositiveLowerConstraintExpressions()

selectPositiveUpperConstraintExpressions

public final Expression[] selectPositiveUpperConstraintExpressions()

selectUpperConstraintExpressions

public final Expression[] selectUpperConstraintExpressions()

selectUpperConstraintVariables

public final Variable[] selectUpperConstraintVariables()

setLowerLimitOnVariable

public void setLowerLimitOnVariable(int aVariableIndex,
                                    BigDecimal aLimit)

setUpperLimitOnVariable

public void setUpperLimitOnVariable(int aVariableIndex,
                                    BigDecimal aLimit)

toString

public final String toString()
Overrides:
toString in class Object

validateComposition

public boolean validateComposition()
                            throws ModelValidationException
Description copied from interface: OptimisationModel
OptimisationModel is meant to be implemented in parallel with OptimisationSolver. This method indicates if the model is built in a way the solver can handle or not.

Throws:
ModelValidationException

validateSolution

public boolean validateSolution(BasicMatrix aSolution,
                                NumberContext aContext)

validateSolution

public boolean validateSolution(NumberContext aContext)

isMaximisation

public final boolean isMaximisation()

isMinimisation

public final boolean isMinimisation()

setMaximisation

public final void setMaximisation(boolean aFlag)

setMinimisation

public final void setMinimisation(boolean aFlag)