32#include "OSParameters.h"
515 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
592 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
649 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
707 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
773 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
846 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
937 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1029 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1109 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1167 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1228 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1310 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1386 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1452 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1517 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1564 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
1918 bool setRandom(
double density,
bool conformant,
int iMin,
int iMax);
3947 bool addVariable(
int index, std::string name,
double lowerBound,
double upperBound,
char type);
3969 double* upperBounds,
char* types);
3997 bool addObjective(
int index, std::string name, std::string maxOrMin,
double constant,
double weight,
SparseVector* objectiveCoefficients);
4014 bool setObjectives(
int number, std::string *names, std::string *maxOrMins,
double *constants,
double *weights,
SparseVector **objectitiveCoefficients);
4037 bool addConstraint(
int index, std::string name,
double lowerBound,
double upperBound,
double constant);
4052 bool setConstraints(
int number, std::string* names,
double* lowerBounds,
double* upperBounds,
double* constants);
4073 double* values,
int valuesBegin,
int valuesEnd,
4074 int* indexes,
int indexesBegin,
int indexesEnd,
4075 int* starts,
int startsBegin,
int startsEnd);
4096 double* values,
int valuesBegin,
int valuesEnd,
4097 int* indexes,
int indexesBegin,
int indexesEnd,
4098 int* starts,
int startsBegin,
int startsEnd);
4127 int* rowIndexes,
int* varOneIndexes,
int* varTwoIndexes,
4128 double* coefficients,
int begin,
int end);
4145 int* rowIndexes,
int* varOneIndexes,
int* varTwoIndexes,
double* coefficients);
4188 bool addMatrix(
int index, std::string name,
int numberOfRows,
int numberOfColumns,
4190 unsigned int inumberOfChildren,
MatrixNode **m_mChildren);
4228 std::string name,
int numberOfOtherIndexes = 0,
int* otherIndexes = NULL);
4257 std::string name,
int numberOfComponents,
int* components,
4258 int numberOfOtherIndexes = 0,
int* otherIndexes = NULL);
4287 std::string name,
int referenceIdx,
int numberOfOtherIndexes = 0,
int* otherIndexes = NULL);
4315 std::string name, std::string semidefiniteness,
int numberOfOtherIndexes = 0,
int* otherIndexes = NULL);
4344 std::string name,
int distortionMatrixIdx,
double normFactor,
int axisDirection,
4345 int numberOfOtherIndexes = 0,
int* otherIndexes = NULL);
4375 std::string name,
int distortionMatrixIdx,
double normFactor,
int firstAxisDirection,
4376 int secondAxisDirection,
int numberOfOtherIndexes = 0,
int* otherIndexes = NULL);
4405 std::string name,
int distortionMatrixIdx,
double normFactor,
int axisDirection,
double pNorm,
4406 int numberOfOtherIndexes = 0,
int* otherIndexes = NULL);
4439 std::string name,
int maxDegree,
int numberOfUB,
double* ub,
int numberOfLB,
double* lb,
4440 int numberOfOtherIndexes = 0,
int* otherIndexes = NULL);
4502 bool new_x,
int highestOrder);
4535 bool new_x,
int highestOrder);
4568 double *conLambda,
bool new_x,
int highestOrder);
4587 int idx,
bool new_x,
int highestOrder);
4619 bool new_x,
int highestOrder);
4637 int objIdx,
bool new_x,
int highestOrder);
4672 bool new_x,
int highestOrder);
4752 CppAD::ADFun<double> *Fad;
4777 std::vector<double>
forwardAD(
int p, std::vector<double> vdX);
4789 std::vector<double>
reverseAD(
int p, std::vector<double> vdlambda);
4825 bool new_x,
int highestOrder);
This file defines the OSnLNode class along with its derived classes.
The CompletelyPositiveMatricesCone Class.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
virtual std::string getConeInXML()
Write a CompletelyPositiveMatricesCone object in XML format.
~CompletelyPositiveMatricesCone()
default destructor.
CompletelyPositiveMatricesCone()
default constructor.
bool deepCopyFrom(CompletelyPositiveMatricesCone *that)
A function to make a deep copy of an instance of this class.
bool IsEqual(CompletelyPositiveMatricesCone *that)
A function to check for the equality of two objects.
virtual std::string getConeName()
The in-memory representation of a generic cone Specific cone types are derived from this generic clas...
int numberOfOtherIndexes
Cones can also be formed by Multidimensional tensors.
std::string name
The cone can have a name for easier identification.
virtual ~Cone()
The Cone class destructor.
virtual std::string getConeName()
int idx
cones are referenced by an (automatically created) index
bool IsEqual(Cone *that)
A function to check for the equality of two objects.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
ENUM_CONE_TYPE coneType
The type of the cone.
virtual std::string getConeInXML()=0
Write a Cone object in XML format.
bool deepCopyFrom(Cone *that)
A function to make a deep copy of an instance of this class.
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
Cone()
The Cone class constructor.
The in-memory representation of the <cones> element.
~Cones()
The Cones class destructor.
Cone ** cone
cone is pointer to an array of Cone object pointers
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
bool IsEqual(Cones *that)
A function to check for the equality of two objects.
Cones()
The Cones class constructor.
bool deepCopyFrom(Cones *that)
A function to make a deep copy of an instance of this class.
int numberOfCones
numberOfCones is the number of <nl> elements in the <cones> element.
The in-memory representation of the <con> element.
double constant
constant is a value that is added to the constraint
double ub
ub is the upper bound on the constraint
bool IsEqual(Constraint *that)
A function to check for the equality of two objects.
double lb
lb is the lower bound on the constraint
Constraint()
The Constraint class constructor.
~Constraint()
The Constraint class destructor.
std::string name
name is the name of the constraint
The in-memory representation of the <constraints> element.
int numberOfConstraints
numberOfConstraints is the number of constraints in the instance
Constraint ** con
con is pointer to an array of Constraint object pointers
~Constraints()
The Constraints class destructor.
Constraints()
The Constraints class constructor.
bool IsEqual(Constraints *that)
A function to check for the equality of two objects.
The CopositiveMatricesCone Class.
virtual std::string getConeInXML()
Write a CopositiveMatricesCone object in XML format.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
CopositiveMatricesCone()
default constructor.
bool deepCopyFrom(CopositiveMatricesCone *that)
A function to make a deep copy of an instance of this class.
bool IsEqual(CopositiveMatricesCone *that)
A function to check for the equality of two objects.
~CopositiveMatricesCone()
default destructor.
virtual std::string getConeName()
a double vector data structure
The in-memory representation of a dual cone.
int coneType
The type of the cone (one of the values in ENUM_CONE_TYPE)
int numberOfOtherIndexes
Multidimensional tensors can also form cones (the Kronecker product, for instance,...
int referenceConeIdx
Dual cones use a reference to another, previously defined cone.
virtual std::string getConeName()
~DualCone()
The DualCone class destructor.
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
int idx
cones are referenced by an (automatically created) index
bool IsEqual(DualCone *that)
A function to check for the equality of two objects.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
bool deepCopyFrom(DualCone *that)
A function to make a deep copy of an instance of this class.
DualCone()
The DualCone class constructor.
a sparse matrix data structure for matrices that can hold nonconstant values and have block structure...
a sparse matrix data structure for matrices that can hold nonconstant values
The in-memory representation of the <instanceData> element.
Variables * variables
variables is a pointer to a Variables object
QuadraticCoefficients * quadraticCoefficients
quadraticCoefficients is a pointer to a QuadraticCoefficients object
Constraints * constraints
constraints is a pointer to a Constraints object
Cones * cones
cones is a pointer to a Cones object
NonlinearExpressions * nonlinearExpressions
nonlinearExpressions is a pointer to a NonlinearExpressions object
MatrixProgramming * matrixProgramming
matrixProgramming is a pointer to a MatrixProgramming object
TimeDomain * timeDomain
timeDomain is a pointer to a TimeDomain object
bool IsEqual(InstanceData *that)
A function to check for the equality of two objects.
InstanceData()
The InstanceData class constructor.
Matrices * matrices
matrices is a pointer to a Matrices object
~InstanceData()
The InstanceData class destructor.
Objectives * objectives
objectives is a pointer to a Objectives object
LinearConstraintCoefficients * linearConstraintCoefficients
linearConstraintCoefficients is a pointer to a LinearConstraintCoefficients object
an integer Vector data structure
The in-memory representation of an intersection cone.
~IntersectionCone()
The IntersectionCone class destructor.
bool deepCopyFrom(IntersectionCone *that)
A function to make a deep copy of an instance of this class.
virtual std::string getConeInXML()
Write an IntersectionCone object in XML format.
int coneType
The type of the cone (one of the values in ENUM_CONE_TYPE)
IntersectionCone()
The IntersectionCone class constructor.
bool IsEqual(IntersectionCone *that)
A function to check for the equality of two objects.
int numberOfOtherIndexes
Multidimensional tensors can also form cones (the Kronecker product, for instance,...
int idx
cones are referenced by an (automatically created) index
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
virtual std::string getConeName()
IntVector * components
the list of components contributing to the intersection each component contains a reference to a prev...
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
The in-memory representation of the <linearConstraintCoefficients> element.
DoubleVector * value
a pointer to the array of nonzero values being stored
int iNumberOfStartElements
iNumberOfStartElements counts the number of elements in the <start> section of <linearConstraintCoeff...
int numberOfValues
numberOfValues is the number of nonzero elements stored in the <linearConstraintCoefficients> element
IntVector * start
a pointer to the start of each row or column stored in sparse format
~LinearConstraintCoefficients()
The LinearConstraintCoefficients class destructor.
bool IsEqual(LinearConstraintCoefficients *that)
A function to check for the equality of two objects.
IntVector * rowIdx
a pointer of row indices if the problem is stored by column
LinearConstraintCoefficients()
The LinearConstraintCoefficients class constructor.
IntVector * colIdx
a pointer of column indices if the problem is stored by row
The in-memory representation of the <matrices> element.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
bool IsEqual(Matrices *that)
A function to check for the equality of two objects.
~Matrices()
The Matrices class destructor.
int numberOfMatrices
numberOfMatrices is the number of <nl> elements in the <matrices> element.
OSMatrix ** matrix
matrix is a pointer to an array of OSMatrix object pointers
Matrices()
The Matrices class constructor.
bool deepCopyFrom(Matrices *that)
A function to make a deep copy of an instance of this class.
The in-memory representation of the <matrixCon> element.
MatrixCon()
The MatrixCon class constructor.
int numberOfColumns
numberOfColumns gives the number of columns of this matrix
~MatrixCon()
The MatrixCon class destructor.
std::string name
an optional name to this MatrixCon
int lbConeIdx
lbConeIdx gives a cone that must contain matrixCon - lbMatrix
int ubConeIdx
ubConeIdx gives a cone that must contain ubMatrix - matrixCon
int lbMatrixIdx
lbMatrixIdx gives a lower bound for this matrixCon
int numberOfRows
numberOfRows gives the number of rows of this matrix
int templateMatrixIdx
templateMatrixIdx refers to a matrix that describes the locations in this matrixVar that are allowed ...
bool IsEqual(MatrixCon *that)
A function to check for the equality of two objects.
int conReferenceMatrixIdx
conReferenceMatrixIdx allows some or all of the components of this matrixCon to be copied from constr...
int ubMatrixIdx
ubMatrixIdx gives an upper bound for this matrixCon
The in-memory representation of the <matrixConstraints> element.
~MatrixConstraints()
The MatrixConstraints class destructor.
int numberOfMatrixCon
numberOfMatrixCon gives the number of <matrixCon> children
bool IsEqual(MatrixConstraints *that)
A function to check for the equality of two objects.
MatrixConstraints()
The MatrixConstraints class constructor.
MatrixCon ** matrixCon
matrixCon is an array of pointers to the <matrixCon> children
The in-memory representation of the <expr> element, which is like a nonlinear expression,...
int idx
idx holds the row index of the nonlinear expression
bool IsEqual(MatrixExpression *that)
A function to check for the equality of two objects.
MatrixExpressionTree * matrixExpressionTree
matrixExpressionTree contains the root of the MatrixExpressionTree
~MatrixExpression()
The MatrixExpression class destructor.
bool m_bDeleteExpressionTree
if m_bDeleteExpressionTree is true during garbage collection, we should delete the osExpression tree ...
MatrixExpression()
The MatrixExpression class constructor.
ENUM_NL_EXPR_SHAPE shape
shape holds the shape of the nonlinear expression (linear/quadratic/convex/general) (see further up i...
Used to hold the instance in memory.
The in-memory representation of the <matrixExpressions> element.
int numberOfExpr
numberOfExpr gives the number of expressions
bool IsEqual(MatrixExpressions *that)
A function to check for the equality of two objects.
MatrixExpressions()
The MatrixExpressions class constructor.
MatrixExpression ** expr
a pointer to an array of linear and nonlinear expressions that evaluate to matrices
~MatrixExpressions()
The MatrixExpressions class destructor.
a generic class from which we derive matrix constructors (BaseMatrix, MatrixElements,...
The in-memory representation of the <matrixObj> element.
int numberOfColumns
numberOfColumns gives the number of columns of this matrix
int numberOfRows
numberOfRows gives the number of rows of this matrix
bool IsEqual(MatrixObj *that)
A function to check for the equality of two objects.
int orderConeIdx
orderConeIdx gives a cone that expresses preferences during the optimization x is (weakly) preferred ...
MatrixObj()
The MatrixVar class constructor.
int constantMatrixIdx
constantMatrixIdx gives a constant added to the matrixObj
~MatrixObj()
The MatrixVar class destructor.
int templateMatrixIdx
templateMatrixIdx refers to a matrix that describes the locations in this matrixObj that are allowed ...
std::string name
an optional name to this matrixObj
int objReferenceMatrixIdx
objReferenceMatrixIdx allows some or all of the components of this matrixObj to be copied from object...
The in-memory representation of the <matrixObjectives> element.
~MatrixObjectives()
The MatrixObjectives class destructor.
bool IsEqual(MatrixObjectives *that)
A function to check for the equality of two objects.
MatrixObjectives()
The MatrixObjectives class constructor.
int numberOfMatrixObj
numberOfMatrixObj gives the number of <matrixObj> children
MatrixObj ** matrixObj
matrixObj is an array of pointers to the <matrixObj> children
The in-memory representation of the <matrixProgramming> element.
MatrixObjectives * matrixObjectives
a pointer to the matrixObjectives object
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
~MatrixProgramming()
The MatrixProgramming class destructor.
bool deepCopyFrom(MatrixProgramming *that)
A function to make a deep copy of an instance of this class.
MatrixProgramming()
The MatrixProgramming class constructor.
MatrixConstraints * matrixConstraints
a pointer to the matrixConstraints object
bool IsEqual(MatrixProgramming *that)
A function to check for the equality of two objects.
MatrixExpressions * matrixExpressions
a pointer to the matrixExpressions object
MatrixVariables * matrixVariables
a pointer to the matrixVariables object
The in-memory representation of the <matrixVar> element.
int ubConeIdx
ubConeIdx gives a cone that must contain ubMatrix - matrixVar
bool IsEqual(MatrixVar *that)
A function to check for the equality of two objects.
char varType
an optional variable type (C, B, I, D, J, S).
int lbMatrixIdx
lbMatrixIdx gives a lower bound for this matrixVar
~MatrixVar()
The MatrixVar class destructor.
std::string name
an optional name to this matrixVar
int lbConeIdx
lbConeIdx gives a cone that must contain matrixVar - lbMatrix
int numberOfRows
numberOfRows gives the number of rows of this matrix
int varReferenceMatrixIdx
varReferenceMatrixIdx allows some or all of the components of this matrix variable to be copied from ...
int numberOfColumns
numberOfColumns gives the number of columns of this matrix
MatrixVar()
The MatrixVar class constructor.
int ubMatrixIdx
ubMatrixIdx gives an upper bound for this matrixVar
int templateMatrixIdx
templateMatrixIdx refers to a matrix that describes the locations in this matrixVar that are allowed ...
The in-memory representation of the <matrixVariables> element.
MatrixVariables()
The MatrixVariables class constructor.
MatrixVar ** matrixVar
matrixVar is an array of pointers to the <matrixVar> children
bool IsEqual(MatrixVariables *that)
A function to check for the equality of two objects.
~MatrixVariables()
The MatrixVariables class destructor.
int numberOfMatrixVar
numberOfMatrixVar gives the number of <matrixVar> children
The in-memory representation of the <nl> element.
int idx
idx holds the row index of the nonlinear expression
ScalarExpressionTree * osExpressionTree
osExpressionTree contains the root of the ScalarExpressionTree
ENUM_NL_EXPR_SHAPE shape
shape holds the shape of the nonlinear expression (linear/quadratic/convex/general) (see further up i...
bool IsEqual(Nl *that)
A function to check for the equality of two objects.
bool m_bDeleteExpressionTree
m_bDeleteExpressionTree is true, if in garbage collection, we should delete the osExpression tree obj...
The in-memory representation of the <nonlinearExpressions> element.
~NonlinearExpressions()
The NonlinearExpressions class destructor.
int numberOfNonlinearExpressions
numberOfNonlinearExpressions is the number of <nl> elements in the <nonlinearExpressions> element.
Nl ** nl
nl is pointer to an array of Nl object pointers
NonlinearExpressions()
The NonlinearExpressions class constructor.
bool IsEqual(NonlinearExpressions *that)
A function to check for the equality of two objects.
The NonnegativeCone Class.
virtual std::string getConeInXML()
Write a NonnegativeCone object in XML format.
virtual std::string getConeName()
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
bool deepCopyFrom(NonnegativeCone *that)
A function to make a deep copy of an instance of this class.
bool IsEqual(NonnegativeCone *that)
A function to check for the equality of two objects.
NonnegativeCone()
default constructor.
~NonnegativeCone()
default destructor.
The NonpositiveCone Class.
virtual std::string getConeInXML()
Write a NonpositiveCone object in XML format.
bool IsEqual(NonpositiveCone *that)
A function to check for the equality of two objects.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
bool deepCopyFrom(NonpositiveCone *that)
A function to make a deep copy of an instance of this class.
virtual std::string getConeName()
~NonpositiveCone()
default destructor.
NonpositiveCone()
default constructor.
The in-memory representation of an OSiL instance..
bool m_bProcessLinearConstraintCoefficients
----— data items for linear constraint coefficients ----—
bool m_bAllNonlinearVariablesIndex
m_bAllNonlinearVariablesIndexMap is true if the map of the variables in the Lagrangian function has b...
SparseJacobianMatrix * calculateAllConstraintFunctionGradients(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate the gradient of all constraint functions.
std::vector< ExprNode * > getMatrixExpressionTreeInPostfix(int rowIdx)
Get the postfix tokens for a given row index.
int * m_miQuadRowIndexes
m_miQuadRowIndexes is an integer pointer to the distinct row indexes with a quadratic term.
bool getIterateResults(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
end revised AD code
bool m_bSparseJacobianCalculated
m_bSparseJacobianCalculated is true if getJacobianSparsityPattern() has been called.
std::string m_sInstanceCreator
m_sInstanceSource holds the instance source.
int getNumberOfColumnsForMatrix(int n)
Get the number of blocks in the matrix.
int * m_miMatrixNumberOfColumns
m_miMatrixNumberOfColumns holds the number of columns for each matrix.
bool m_bQTermsAdded
m_bQTermsAdded is true if we added the quadratic terms to the expression tree
double * getObjectiveWeights()
Get objective weights.
ScalarExpressionTree * getLagrangianExpTree()
bool m_bProcessExpressionTrees
m_bProcessExpressionTrees is true if the expression trees have been processed.
std::vector< double > m_vdYjacval
m_vdYval is a vector equal to a column or row of the Jacobian
bool setTimeDomain(std::string format)
This sets the format of the time domain ("stages"/"interval"/"none")
int m_iNumberOfBinaryVariables
m_iNumberOfBinaryVariables holds the number of binary variables.
bool m_bProcessExpressionTreesMod
m_bProcessExpressionTreesMod is true if the modified expression trees have been processed.
std::string getTimeDomainFormat()
Get the format of the time domain ("stages"/"interval")
int ** getTimeDomainStageVarList()
Get the list of variables in each stage.
SparseVector ** m_mObjectiveCoefficients
m_mObjectiveCoefficients holds an array of objective coefficients, one set of objective coefficients ...
std::vector< double > m_vdYval
m_vdYval is a vector of function values
bool m_bProcessObjectives
----— data items for Objectives ----—
bool m_bProcessMatrices
----— data items for matrices ----—
bool m_bProcessNonlinearExpressions
m_bProcessNonlinearExpressions holds whether the nonlinear expressions are processed.
bool processMatrices()
process matrices.
double * getConstraintLowerBounds()
Get constraint lower bounds.
int getNumberOfQuadraticTerms()
Get the number of specified (usually nonzero) qTerms in the quadratic coefficients.
int m_iNumberOfSemiContinuousVariables
m_iNumberOfSemiContinuousVariables holds the number of semi-continuous variables.
bool setInstanceLicence(std::string licence)
set the instance licence.
bool m_bFiniteTimeStages
m_bFiniteTimeStages holds whether the time domain has the form of finite (discrete) stages.
ENUM_MATRIX_SYMMETRY * m_miMatrixSymmetry
m_miMatrixSymmetry holds the symmetry property of each matrix.
bool m_bProcessTimeInterval
m_bProcessTimeInterval holds whether a time interval has been processed.
MatrixExpression ** getMatrixExpressions()
Get the pointers to the roots of all matrix expression trees.
bool copyLinearConstraintCoefficients(int numberOfValues, bool isColumnMajor, double *values, int valuesBegin, int valuesEnd, int *indexes, int indexesBegin, int indexesEnd, int *starts, int startsBegin, int startsEnd)
copy linear constraint coefficients: perform a deep copy of the sparse matrix
std::string m_sInstanceLicence
m_sInstanceDescription holds the instance fileCreator info.
double * getVariableUpperBounds()
Get variable upper bounds.
bool setConstraintNumber(int number)
set the number of constraints.
int ** m_mmiTimeDomainStageObjList
m_mmiTimeDomainStageObjList holds the list of objectives in each stage.
double * m_mdObjectiveConstants
m_mdObjectiveConstants holds an array of objective constants (default = 0.0).
bool setTimeDomainStages(int number, std::string *names)
This sets the number (and optionally names) of the time stages.
std::vector< double > m_vdDomainUnitVec
m_vdDomainUnitVec is a unit vector in the domain space
bool matrixHasBase(int n)
Several tools to parse the constructor list of a matrix.
std::string m_sTimeDomainFormat
m_sTimeDomainFormat holds the format ("stages"/"interval") of the time domain.
bool bVariablesModified
bVariablesModified is true if the variables data has been modified.
int m_iVariableNumber
m_iVariableNumber holds the variable number.
int m_iHighestTaylorCoeffOrder
m_iHighestTaylorCoeffOrder is the order of highest calculated Taylor coefficient
std::vector< bool > m_vbLagHessNonz
m_vbLagHessNonz is a boolean vector holding the nonzero pattern of the Lagrangian of the Hessian
std::map< int, std::vector< OSnLNode * > > m_mapExpressionTreesInPostfix
m_mapExpressionTreesInPostfix holds a hash map of expression trees in postfix format,...
bool setInstanceCreator(std::string fileCreator)
set the instance creator.
int * m_miNonlinearExpressionTreeIndexes
m_miNonlinearExpressionTreeIndexes is an integer pointer to the distinct rows indexes in the nonlinea...
SparseJacobianMatrix * getJacobianSparsityPattern()
std::vector< double > forwardAD(int p, std::vector< double > vdX)
Perform an AD forward sweep.
bool matrixHasTransformations(int n)
double * m_mdObjectiveWeights
m_mdObjectiveWeights holds an array of objective weights (default = 1.0).
int getNumberOfBlocksConstructors(int n)
double * m_mdConstraintFunctionValues
m_mdConstraintFunctionValues holds a double array of constraint function values – the size of the arr...
bool bObjectivesModified
bObjectivesModified is true if the objective function data has been modified.
int m_iConstraintNumberNonlinear
m_iConstraintNumberNonlinear is the number of constraints that have a nonlinear term.
int * m_miJacStart
m_miJacStart holds a int array of starts for the Jacobian matrix in sparse form (row major).
GeneralSparseMatrix * getMatrixBlockInColumnMajorForm(int n, int columnIdx, int rowIdx)
Get the (nonzero) elements of the matrix in symmetric block form.
int getADSparsityHessian()
end revised AD code
unsigned int m_iNumberOfNonlinearVariables
m_iNumberOfNonlinearVariables is the number of variables that appear in a nonlinear expression.
std::vector< double > m_vdRangeUnitVec
m_vdRangeUnitVec is a unit vector in the range space
bool addQTermsToExressionTree()
bool m_bNonlinearExpressionTreeIndexesProcessed
m_bNonlinearExpressionTreeIndexesProcessed is true if getNonlinearExpressionTreeIndexes() has been ca...
bool addVariable(int index, std::string name, double lowerBound, double upperBound, char type)
add a variable.
bool bAMatrixModified
bAMatrixModified is true if the A matrix data has been modified.
bool setTimeDomainStageConstraintsUnordered(int numberOfStages, int *numberOfConstraints, int **conIndex)
This sets the constraints associated with each time domain stage in srbitrary order.
int m_iMatrixVarNumber
----— data items for matrix programming ----—
std::string printModel()
Print the infix representation of the problem.
int getNumberOfNonlinearExpressionTreeIndexes()
Get the number of unique nonlinear expression tree indexes.
int m_iQuadraticTermNumber
m_iQuadraticTermNumber holds the number of specified (usually nonzero) qTerms in the quadratic coeffi...
int ** m_mmiTimeDomainStageConList
m_mmiTimeDomainStageConList holds the list of constraints in each stage.
std::vector< double > m_vdw
m_vdYval is a vector of derivatives – output from a reverse sweep
int getNumberOfNonlinearExpressionTreeModIndexes()
Get the number of unique nonlinear expression tree indexes after modifying the expression tree to con...
bool getZeroOrderResults(double *x, double *objLambda, double *conLambda)
Calculate function values.
int m_iMatrixNumber
m_iMatrixNumber holds the number of matrices
bool m_bProcessQuadraticTerms
m_bProcessQuadraticTerms holds whether the quadratic terms are processed.
std::string * m_msVariableNames
m_msVariableNames holds an array of variable names.
int getTimeDomainStageNumber()
Get the number of stages that make up the time domain.
int getNumberOfIntegerVariables()
getNumberOfIntegerVariables
bool getSparseJacobianFromColumnMajor()
bool processConstraints()
process constraints.
OSMatrix ** m_mMatrix
m_mMatrix holds the list of constructors for each matrix.
bool bUseExpTreeForFunEval
bUseExpTreeForFunEval is set to true if you wish to use the OS Expression Tree for function evaluatio...
bool setNumberOfQuadraticTerms(int nq)
set the number of quadratic terms
int * m_miTimeDomainStageVariableNumber
m_miTimeDomainStageVariableNumber holds the number of variables in each stage.
bool m_bNonlinearExpressionTreeModIndexesProcessed
m_bNonlinearExpressionTreeModIndexesProcessed is true if getNonlinearExpressionTreeModIndexes has bee...
int * getTimeDomainStageNumberOfObjectives()
Get the number of objectives contained in each time stage.
bool setConeNumber(int number)
set the number of cones
bool m_bQuadraticRowIndexesProcessed
m_bQuadraticRowIndexesProcessed is true if getQuadraticRowIndexes() has been called.
bool getFirstOrderResults(double *x, double *objLambda, double *conLambda)
Calculate first derivatives.
bool addConstraint(int index, std::string name, double lowerBound, double upperBound, double constant)
add a constraint.
double getTimeDomainIntervalHorizon()
Get the horizon for the time domain interval.
int getNumberOfBinaryVariables()
getNumberOfBinaryVariables
int * m_miNonlinearExpressionTreeModIndexes
m_miNonlinearExpressionTreeModIndexes is an integer pointer to the distinct rows indexes in the modif...
int getNumberOfNonlinearObjectives()
bool setQuadraticTermsInNonlinearExpressions(int number, int *rowIndexes, int *varOneIndexes, int *varTwoIndexes, double *coefficients)
set quadratic terms in nonlinearExpressions
bool setNonlinearExpressions(int nexpr, Nl **root)
set nonlinear expressions
bool matrixHasElements(int n)
int * m_miTimeDomainStageObjectiveNumber
m_miTimeDomainStageObjectiveNumber holds the number of objectives in each stage.
bool getLinearConstraintCoefficientMajor()
Get whether the constraint coefficients is in column major (true) or row major (false).
int m_iObjectiveNumberNonlinear
m_iObjectiveNumber is the number of objective functions with a nonlinear term.
int m_iNumberOfTimeStages
m_iNumberOfTimeStages holds the number of discrete stages
std::string getInstanceDescription()
Get instance description.
std::string getInstanceSource()
Get instance source.
std::vector< ExprNode * > getNonlinearExpressionTreeInPrefix(int rowIdx)
Get the prefix tokens for a given row index.
int * m_miNumberOfObjCoef
m_miNumberOfObjCoef holds an integer array of number of objective coefficients (default = 0).
bool addCone(int index, int numberOfRows, int numberOfColumns, ENUM_CONE_TYPE coneType, std::string name, int numberOfOtherIndexes=0, int *otherIndexes=NULL)
add a cone.
ENUM_MATRIX_TYPE getMatrixType(int n)
Get the matrix type.
std::map< int, ScalarExpressionTree * > getAllNonlinearExpressionTrees()
std::vector< ExprNode * > getNonlinearExpressionTreeModInPostfix(int rowIdx)
Get the postfix tokens for a given row index for the modified Expression Tree (quadratic terms added)...
bool m_bNonLinearStructuresInitialized
m_bNonLinearStructuresInitialized is true if initializeNonLinearStructures() has been called.
ScalarExpressionTree * getNonlinearExpressionTreeMod(int rowIdx)
Get the expression tree for a given row index for the modified expression trees (quadratic terms adde...
bool m_bLagrangianExpTreeCreated
m_bLagrangianHessionCreated is true if a Lagrangian function for the Hessian has been created
bool initObjGradients()
This should be called by initForAlgDiff()
double * m_mdObjectiveFunctionValues
m_mdObjectiveFunctionValues holds a double array of objective function values – the size of the array...
double * m_mdConstraintUpperBounds
m_mdConstraintUpperBounds holds an array of constraint upper bounds (default = INF).
std::string * m_msObjectiveNames
m_msObjectiveNames holds an array of objective names.
int * m_miJacNumConTerms
m_miJacNumConTerms holds a int array of the number of constant terms (gradient does not change) for t...
int getNumberOfMatrixVariables()
Get the number of matrix variables.
int m_iNonlinearExpressionNumber
m_iNonlinearExpressionNumber holds the number of nonlinear expressions.
int getConstraintNumber()
Get number of constraints.
int m_iLinearConstraintCoefficientNumber
m_iLinearConstraintCoefficientNumber holds the number of specified (usually nonzero) linear constrain...
GeneralSparseMatrix * getMatrixCoefficientsInColumnMajor(int n)
Get the (nonzero) elements of the matrix in column major form.
bool setQuadraticCoefficients(int number, int *rowIndexes, int *varOneIndexes, int *varTwoIndexes, double *coefficients, int begin, int end)
set quadratic coefficients into the QuadraticCoefficients->qTerm data structure
int getNumberOfMatrixExpressionTreeIndexes()
Get the number of unique matrix expression tree indexes.
int * getObjectiveCoefficientNumbers()
Get objective coefficient number.
std::map< int, ScalarExpressionTree * > m_mapExpressionTrees
m_mapExpressionTrees holds a hash map of scalar-valued expression tree pointers.
int m_iMatrixExpressionNumber
m_iMatrixExpressionNumber holds the number of matrix expressions
double * getConstraintConstants()
Get constraint constants.
double * calculateAllConstraintFunctionValues(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate all of the constraint function values.
int * getTimeDomainStageNumberOfVariables()
Get the number of variables contained in each time stage.
std::string * m_msMaxOrMins
m_msMaxOrMins holds a std::string array of objective maxOrMins ("max" or "min").
int getNumberOfStringVariables()
getNumberOfStringVariables
char * m_mcConstraintTypes
m_mcConstraintTypes holds a char array of constraint types (R for range; L for <=; G for >=; E for =;...
double * m_mdVariableUpperBounds
m_mdVariableUpperBounds holds a double array of variable upper bounds (default = INF).
int m_iNumberOfQuadraticRowIndexes
----— data items for quadratic coefficients ----—
std::map< int, int > m_mapOSADFunRangeIndex
m_mapOSADFunRangeIndex is an inverse of the previous map.
bool bConstraintsModified
bConstraintsModified is true if the constraints data has been modified.
std::map< int, MatrixExpressionTree * > getAllMatrixExpressionTrees()
int getLinearConstraintCoefficientNumber()
Get number of specified (usually nonzero) linear constraint coefficient values.
int getNumberOfSemiIntegerVariables()
getNumberOfSemiIntegerVariables
double * m_mdVariableLowerBounds
m_mdVariableLowerBounds holds a double array of variable lower bounds (default = 0....
int ** getTimeDomainStageObjList()
Get the list of objectives in each stage.
double * m_mdConstraintLowerBounds
m_mdConstraintLowerBounds holds an array of constraint lower bounds (default = -INF).
int ** m_mmiTimeDomainStageVarList
m_mmiTimeDomainStageVarList holds the list of variables in each stage.
bool addMatrix(int index, std::string name, int numberOfRows, int numberOfColumns, ENUM_MATRIX_SYMMETRY symmetry, ENUM_MATRIX_TYPE matrixType, unsigned int inumberOfChildren, MatrixNode **m_mChildren)
add a matrix.
SparseMatrix * getLinearConstraintCoefficientsInRowMajor()
Get linear constraint coefficients in row major.
std::string * m_msMatrixNames
m_msMatrixNames holds the names of the matrices
int getNumberOfMatrixConstraints()
Get the number of matrix constraints.
double calculateFunctionValue(int idx, double *x, bool new_x)
Calculate the function value for function (constraint or objective) indexed by idx.
double ** m_mmdDenseObjectiveCoefficients
m_mmdDenseObjectiveCoefficients holds an array of pointers, each pointer points to a vector of dense ...
int * getTimeDomainStageNumberOfConstraints()
Get the number of constraints contained in each time stage.
double getTimeDomainIntervalStart()
Get the start for the time domain interval.
SparseMatrix * m_linearConstraintCoefficientsInColumnMajor
m_linearConstraintCoefficientsInColumnMajor holds the standard three-array data structure for linear ...
int * m_miNonLinearVarsReverseMap
m_miNonLinearVarsReverseMap maps the nonlinear variable number back into the original variable space
int * getNonlinearExpressionTreeIndexes()
Get all the nonlinear expression tree indexes, i.e., indexes of rows (objectives or constraints) that...
std::string * getTimeDomainStageNames()
Get the names of the stages (NULL or empty string ("") if a stage has not been given a name.
bool m_bProcessTimeDomain
----— data items for time domain ----—
char * getVariableTypes()
Get variable initial values.
int getNumberOfValuesForMatrix(int n)
Get the number of (nonzero) values in the matrix.
std::string m_sInstanceName
----— data items for InstanceHeader ----—
char * m_mcVariableTypes
m_mcVariableTypes holds a char array of variable types (default = 'C').
bool matrixHasBlocks(int n)
int getNumberOfQuadraticRowIndexes()
Get the number of rows which have a quadratic term.
double * calculateAllObjectiveFunctionValues(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate all of the objective function values.
ENUM_MATRIX_SYMMETRY getMatrixSymmetry(int n)
Get the matrix symmetry.
double * m_mdJacValue
m_mdJacValue holds a double array of partial derivatives for the Jacobian matrix in sparse form (row ...
SparseVector * calculateConstraintFunctionGradient(double *x, double *objLambda, double *conLambda, int idx, bool new_x, int highestOrder)
Calculate the gradient of the constraint function indexed by idx.
bool getSparseJacobianFromRowMajor()
SparseMatrix * getLinearConstraintCoefficientsInColumnMajor()
Get linear constraint coefficients in column major.
int * getQuadraticRowIndexes()
Get the indexes of rows which have a quadratic term.
int m_iMatrixObjNumber
m_iMatrixObjNumber holds the number of matrix objectives
bool processObjectives()
process objectives.
int m_iMatrixConNumber
m_iMatrixConNumber holds the number of matrix constraints
int getNumberOfSemiContinuousVariables()
getNumberOfSemiContinuousVariables
int * m_miTimeDomainStageConstraintNumber
m_miTimeDomainStageConstraintNumber holds the number of constraints in each stage.
double * calculateObjectiveFunctionGradient(double *x, double *objLambda, double *conLambda, int objIdx, bool new_x, int highestOrder)
Calculate the gradient of the objective function indexed by objIdx.
bool m_bProcessTimeStages
m_bProcessTimeStages holds whether the time stages have been processed.
int getMatrixNumber()
Get the number of matrices.
int * getNonlinearExpressionTreeModIndexes()
Get all the nonlinear expression tree indexes, i.e., indexes of rows (objectives or constraints) that...
bool m_bDuplicateExpressionTreesMap
m_bDuplicateExpressionTreeMap is true if m_mapExpressionTrees was duplicated.
bool setTimeDomainStageConstraintsOrdered(int numberOfStages, int *numberOfConstraints, int *startIdx)
This sets the constraints associated with each time domain stage in temporal order.
bool setVariables(int number, std::string *names, double *lowerBounds, double *upperBounds, char *types)
set all the variable related elements.
bool createOSADFun(std::vector< double > vdX)
Create the a CppAD Function object: this is a function where the domain is the set of variables for t...
std::string getInstanceCreator()
Get instance fileCreator.
int m_iNumberOfSemiIntegerVariables
m_iNumberOfSemiIntegerVariables holds the number of semi-integer variables.
bool setTimeDomainStageVariablesOrdered(int numberOfStages, int *numberOfVariables, int *startIdx)
This sets the variables associated with each time domain stage in temporal order.
bool setInstanceSource(std::string source)
set the instance source.
bool m_bColumnMajor
m_bColumnMajor holds whether the linear constraint coefficients are stored in column major (if m_bCol...
std::string getInstanceLicence()
Get instance licence.
QuadraticTerms * m_quadraticTerms
m_quadraticTerms holds the data structure for all the quadratic terms in the instance.
double ** getDenseObjectiveCoefficients()
getDenseObjectiveCoefficients.
bool setTimeDomainStageVariablesUnordered(int numberOfStages, int *numberOfVariables, int **varIndex)
This sets the variables associated with each time domain stage in srbitrary order.
bool initForAlgDiff()
This should be called by nonlinear solvers using callback functions.
int * getMatrixExpressionTreeIndexes()
Get all the matrix expression tree indexes, i.e.
GeneralFileHeader * instanceHeader
the instanceHeader is implemented as a general file header object to allow sharing of classes between...
OSMatrix * getMatrix(int n)
Get the list of constructors of the matrix.
std::map< int, ScalarExpressionTree * > m_mapExpressionTreesMod
m_mapExpressionTreesMod holds a map of expression trees, with the key being the row index and value b...
std::string * m_msConstraintNames
m_msConstraintNames holds an array of constraint names.
int m_iObjectiveNumber
m_iObjectiveNumber is the number of objective functions.
bool m_bCppADMustReTape
is true if a CppAD Expresion Tree has an expression that can change depending on the value of the inp...
Nl ** getNonlinearExpressions()
Get the pointers to the roots of all expression trees.
bool setLinearConstraintCoefficients(int numberOfValues, bool isColumnMajor, double *values, int valuesBegin, int valuesEnd, int *indexes, int indexesBegin, int indexesEnd, int *starts, int startsBegin, int startsEnd)
set linear constraint coefficients
int getNumberOfElementConstructors(int n)
InstanceData * instanceData
A pointer to an InstanceData object.
int m_iHighestOrderEvaluated
m_iHighestOrderEvaluated is the highest order derivative of the current iterate
OSInstance()
The OSInstance class constructor.
std::map< int, int > m_mapAllNonlinearVariablesIndex
m_mapAllNonlinearVariablesIndexMap is a map of the variables in the Lagrangian function
std::string getMatrixExpressionTreeInInfix(int rowIdx)
Get the infix representation for a given row (or objective function) index.
int getNumberOfNonlinearExpressions()
Get number of nonlinear expressions.
SparseHessianMatrix * getLagrangianHessianSparsityPattern()
SparseVector ** getObjectiveCoefficients()
Get objective coefficients.
int m_iNumberOfIntegerVariables
m_iNumberOfIntegerVariables holds the number of integer variables.
std::map< int, int > getAllNonlinearVariablesIndexMap()
SparseHessianMatrix * calculateHessian(double *x, int idx, bool new_x)
Calculate the Hessian of a constraint or objective function.
QuadraticTerms * getQuadraticTerms()
Get all the quadratic terms in the instance.
int ** getTimeDomainStageConList()
Get the list of constraints in each stage.
std::vector< double > reverseAD(int p, std::vector< double > vdlambda)
Perform an AD reverse sweep.
SparseMatrix * m_linearConstraintCoefficientsInRowMajor
m_linearConstraintCoefficientsInRowMajor holds the standard three-array data structure for linear con...
std::vector< ExprNode * > getNonlinearExpressionTreeInPostfix(int rowIdx)
Get the postfix tokens for a given row index.
double * getObjectiveConstants()
Get objective constants.
std::string * getObjectiveNames()
Get objective names.
bool processLinearConstraintCoefficients()
process linear constraint coefficients.
int getNumberOfMatrixObjectives()
Get the number of matrix objectives.
double * getVariableLowerBounds()
Get variable lower bounds.
int m_iConstraintNumber
m_iConstraintNumber is the number of constraints.
bool m_bLagrangianSparseHessianCreated
m_bLagrangianSparseHessianCreated is true if the sparse Hessian Matrix for the Lagrangian was created
int getVariableNumber()
Get number of variables.
bool m_bGetDenseObjectives
m_bGetDenseObjectives holds whether the dense objective functions are processed.
std::map< int, MatrixExpressionTree * > getAllMatrixExpressionTreesMod()
bool m_bOSADFunIsCreated
m_bOSADFunIsCreated is true if we have created the OSInstanc OSAD Function
std::string * m_msTimeDomainStageNames
m_msTimeDomainStageNames holds the names of the time stages.
bool m_bCppADTapesBuilt
is true if a CppAD Expresion Tree has been built for each row and objective with a nonlinear expressi...
bool m_binitForAlgDiff
----— data items for automatic differentiation ----—
std::map< int, MatrixExpressionTree * > m_mapMatrixExpressionTrees
m_mapMatrixExpressionTrees holds a hash map of matrix-valued expression tree pointers.
~OSInstance()
The OSInstance class destructor.
bool setTimeDomainStageObjectivesOrdered(int numberOfStages, int *numberOfObjectives, int *startIdx)
This sets the objectives associated with each time domain stage in temporal order.
int m_iNumberOfStringVariables
m_iNumberOfStringVariables holds the number of string-valued variables.
MatrixExpressionTree * getMatrixExpressionTree(int rowIdx)
Get the matrix expression tree for a given row index.
bool setInstanceDescription(std::string description)
set the instance description.
bool setTimeDomainInterval(double start, double horizon)
This sets the start and end of the time interval.
std::string * getVariableNames()
Get variable names.
ENUM_MATRIX_TYPE * m_miMatrixType
m_miMatrixType holds the type of each matrix.
std::vector< ExprNode * > getNonlinearExpressionTreeModInPrefix(int rowIdx)
Get the prefix tokens for a given row index for the modified Expression Tree (quadratic terms added).
bool m_bProcessVariables
----— data items for Variables ----—
bool setObjectives(int number, std::string *names, std::string *maxOrMins, double *constants, double *weights, SparseVector **objectitiveCoefficients)
set all the objectives related elements.
std::string getInstanceName()
Get instance name.
int getNumberOfRowsForMatrix(int n)
Get the number of rows in the matrix.
ScalarExpressionTree * getNonlinearExpressionTree(int rowIdx)
Get the expression tree for a given row index.
bool setTimeDomainStageObjectivesUnordered(int numberOfStages, int *numberOfObjectives, int **varIndex)
This sets the objectives associated with each time domain stage in arbitrary order.
int * m_miMatrixNumberOfRows
m_miMatrixNumberOfRows holds the number of rows for each matrix.
int getNumberOfTransformationConstructors(int n)
std::string m_sInstanceSource
m_sInstanceSource holds the instance source.
int getNumberOfMatrixExpressions()
Get the number of matrix-valued expressions.
char * getConstraintTypes()
Get constraint types.
GeneralSparseMatrix * getMatrixCoefficientsInRowMajor(int n)
Get the (nonzero) elements of the matrix in row major form.
bool processVariables()
process variables.
bool addQTermsToExpressionTree()
This method adds quadratic terms into the array of expression trees.
bool setInstanceName(std::string name)
set the instance name.
SparseHessianMatrix * m_LagrangianSparseHessian
m_LagrangianSparseHessian is the Hessian Matrix of the Lagrangian function in sparse format
int m_iNumberOfNonlinearExpressionTreeModIndexes
m_iNumberOfNonlinearExpressionTreeModIndexes holds the number of distinct rows and objectives with no...
bool addObjective(int index, std::string name, std::string maxOrMin, double constant, double weight, SparseVector *objectiveCoefficients)
add an objective.
bool m_bProcessConstraints
----— data items for Constraints ----—
SparseHessianMatrix * calculateLagrangianHessian(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate the Hessian of the Lagrangian Expression Tree This method will build the CppAD expression t...
bool setConstraints(int number, std::string *names, double *lowerBounds, double *upperBounds, double *constants)
set all the constraint related elements.
std::string * getConstraintNames()
Get constraint names.
std::vector< double > m_vdLambda
m_vdYval is a vector of Lagrange multipliers
bool setObjectiveNumber(int number)
set the number of objectives.
std::vector< double > m_vdX
----— data vectors for nonlinear optimization ----—
double ** m_mmdObjGradient
m_mdObjGradient holds an array of pointers, each pointer points to gradient of one objective function...
ScalarExpressionTree * m_LagrangianExpTree
m_LagrangianExpTree is an ScalarExpressionTree object that is the expression tree for the Lagrangian ...
int * m_miNonlinearExpressionIndexes
m_miNonlinearExpressionIndexes holds an integer array of nonlinear expression indexes,...
std::vector< ExprNode * > getMatrixExpressionTreeModInPostfix(int rowIdx)
Get the postfix tokens for a given row index for the modified Expression Tree (quadratic terms added)...
std::string getNonlinearExpressionTreeInInfix(int rowIdx)
Get the infix representation for a given row (or objective function) index.
bool setMatrixNumber(int number)
set the number of matrices
int * m_miJacIndex
m_miJacIndex holds a int array of variable indices for the Jacobian matrix in sparse form (row major)...
bool setVariableNumber(int number)
set the number of variables.
std::string * getObjectiveMaxOrMins()
Get objective maxOrMins.
std::string m_sInstanceDescription
m_sInstanceDescription holds the instance description.
bool initializeNonLinearStructures()
Initialize the data structures for the nonlinear API.
double ** calculateAllObjectiveFunctionGradients(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate the gradient of all objective functions.
double * getConstraintUpperBounds()
Get constraint upper bounds.
int getObjectiveNumber()
Get number of objectives.
SparseJacobianMatrix * m_sparseJacMatrix
m_sparseJacMatrix is the Jacobian matrix stored in sparse matrix format
std::map< int, ScalarExpressionTree * > getAllNonlinearExpressionTreesMod()
int m_iNumberOfNonlinearExpressionTreeIndexes
----— data items for nonlinear expressions ----—
bool getSecondOrderResults(double *x, double *objLambda, double *conLambda)
Calculate second derivatives.
int m_iJacValueSize
m_iJacValueSize is the number of nonzero partial derivates in the Jacobian.
std::vector< ExprNode * > getMatrixExpressionTreeInPrefix(int rowIdx)
Get the prefix tokens for a given row index.
bool IsEqual(OSInstance *that)
A function to check for the equality of two objects.
std::string getMatrixName(int n)
Get the name of the matrix.
int getNumberOfNonlinearConstraints()
double * m_mdConstraintConstants
m_mdConstraintConstants holds an array of constraint constants (default = 0.0).
void duplicateExpressionTreesMap()
duplicate the map of expression trees.
a data structure to represent a matrix object (derived from MatrixType)
The OSnLMNode Class for nonlinear expressions involving matrices.
The in-memory representation of the objective function <coef> element.
bool IsEqual(ObjCoef *that)
A function to check for the equality of two objects.
double value
value is the value of the objective function coefficient corresponding to the variable with index idx
ObjCoef()
The ObjCoef class constructor.
int idx
idx is the index of the variable corresponding to the coefficient
~ObjCoef()
The ObjCoef class destructor.
The in-memory representation of the <obj> element.
ObjCoef ** coef
coef is pointer to an array of ObjCoef object pointers
double constant
constant is the constant term added to the objective function, 0 by default
double weight
weight is the weight applied to the given objective function, 1.0 by default
bool IsEqual(Objective *that)
A function to check for the equality of two objects.
int numberOfObjCoef
numberOfObjCoef is the number of variables with a nonzero objective function coefficient
~Objective()
The Objective class destructor.
Objective()
The Objective class constructor.
std::string name
the name of the objective function
std::string maxOrMin
declare the objective function to be a max or a min
The in-memory representation of the <objectives> element.
bool IsEqual(Objectives *that)
A function to check for the equality of two objects.
int numberOfObjectives
numberOfObjectives is the number of objective functions in the instance
Objective ** obj
coef is pointer to an array of ObjCoef object pointers
Objectives()
The Objectives class constructor.
~Objectives()
The Objectives class destructor.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
OrthantCone()
default constructor.
virtual std::string getConeInXML()
Write an OrthantCone object in XML format.
~OrthantCone()
default destructor.
virtual std::string getConeName()
bool IsEqual(OrthantCone *that)
A function to check for the equality of two objects.
bool deepCopyFrom(OrthantCone *that)
A function to make a deep copy of an instance of this class.
double * ub
For each dimension of the cone, give the upper and lower bounds The upper bound can be only zero or +...
The in-memory representation of a polar cone.
int numberOfOtherIndexes
Multidimensional tensors can also form cones (the Kronecker product, for instance,...
bool IsEqual(PolarCone *that)
A function to check for the equality of two objects.
int referenceConeIdx
Polar cones use a reference to another, previously defined cone.
PolarCone()
The PolarCone class constructor.
int idx
cones are referenced by an (automatically created) index
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
virtual std::string getConeName()
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
~PolarCone()
The PolarCone class destructor.
int coneType
The type of the cone (one of the values in ENUM_CONE_TYPE)
bool deepCopyFrom(PolarCone *that)
A function to make a deep copy of an instance of this class.
The in-memory representation of a polyhedral cone.
bool deepCopyFrom(PolyhedralCone *that)
A function to make a deep copy of an instance of this class.
int idx
cones are referenced by an (automatically created) index
~PolyhedralCone()
The PolyhedralCone class destructor.
int numberOfOtherIndexes
Multidimensional tensors can also form cones (the Kronecker product, for instance,...
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
int coneType
The type of the cone (one of the values in ENUM_CONE_TYPE)
bool IsEqual(PolyhedralCone *that)
A function to check for the equality of two objects.
virtual std::string getConeInXML()
Write a PolyhedralCone object in XML format.
PolyhedralCone()
The PolyhedralCone class constructor.
int referenceMatrixIdx
Polyhedral cones use a reference to a previously defined matrix for the extreme rays.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
virtual std::string getConeName()
The in-memory representation of a product cone.
virtual std::string getConeInXML()
Write a ProductCone object in XML format.
~ProductCone()
The ProductCone class destructor.
IntVector * factors
the list of "factors" contributing to the product each factor contains a reference to a previously de...
int coneType
The type of the cone (one of the values in ENUM_CONE_TYPE)
ProductCone()
The ProductCone class constructor.
virtual std::string getConeName()
bool deepCopyFrom(ProductCone *that)
A function to make a deep copy of an instance of this class.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
int numberOfOtherIndexes
Multidimensional tensors can also form cones (the Kronecker product, for instance,...
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
bool IsEqual(ProductCone *that)
A function to check for the equality of two objects.
int idx
cones are referenced by an (automatically created) index
The in-memory representation of the <quadraticCoefficients> element.
QuadraticTerm ** qTerm
qTerm is a pointer to an array of QuadraticTerm object pointers
bool IsEqual(QuadraticCoefficients *that)
A function to check for the equality of two objects.
QuadraticCoefficients()
The QuadraticCoefficients class constructor.
int numberOfQuadraticTerms
numberOfQuadraticTerms is the number of quadratic terms in the <quadraticCoefficients> element.
~QuadraticCoefficients()
The QuadraticCoefficients class destructor.
The in-memory representation of a quadratic cone.
virtual std::string getConeName()
bool deepCopyFrom(QuadraticCone *that)
A function to make a deep copy of an instance of this class.
int numberOfOtherIndexes
Multidimensional tensors can also form cones (the Kronecker product, for instance,...
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
virtual std::string getConeInXML()
Write a QuadraticCone object in XML format.
~QuadraticCone()
The QuadraticCone class destructor.
int axisDirection
The index of the first component can be changed Since there are possibly many dimensions,...
int coneType
The type of the cone (one of the values in ENUM_CONE_TYPE)
bool IsEqual(QuadraticCone *that)
A function to check for the equality of two objects.
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
int idx
cones are referenced by an (automatically created) index
QuadraticCone()
The QuadraticCone class constructor.
double normScaleFactor
quadratic cones normally are of the form x0 >= x1^2 + x2^2 + ... However, the appearance can be modif...
The in-memory representation of the <qTerm> element.
double coef
coef is the coefficient of the quadratic term
int idxOne
idxOne is the index of the first variable in the quadratic term
~QuadraticTerm()
The QuadraticTerm class destructor.
QuadraticTerm()
The QuadraticTerm class constructor.
bool IsEqual(QuadraticTerm *that)
A function to check for the equality of two objects.
int idx
idx is the index of the row in which the quadratic term appears
int idxTwo
idxTwo is the index of the second variable in the quadratic term
a data structure for holding quadratic terms
The in-memory representation of a rotated quadratic cone.
int numberOfOtherIndexes
Multidimensional tensors can also form cones (the Kronecker product, for instance,...
bool IsEqual(RotatedQuadraticCone *that)
A function to check for the equality of two objects.
virtual std::string getConeName()
~RotatedQuadraticCone()
The RotatedQuadraticCone class destructor.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
double normScaleFactor
rotated quadratic cones normally are of the form x0x1 >= x2^2 + x3^2 + ... However,...
int coneType
The type of the cone (one of the values in ENUM_CONE_TYPE)
int idx
cones are referenced by an (automatically created) index
bool deepCopyFrom(RotatedQuadraticCone *that)
A function to make a deep copy of an instance of this class.
RotatedQuadraticCone()
The RotatedQuadraticCone class constructor.
int firstAxisDirection
The indices of the first two component can be changed Since there are possibly many dimensions,...
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
virtual std::string getConeInXML()
Write a RotatedQuadraticCone object in XML format.
Used to hold part of the instance in memory.
The in-memory representation of a cone of semidefinite matrices.
~SemidefiniteCone()
The SemidefiniteCone class destructor.
bool isPositiveSemiDefinite
information about semidefiniteness is also tracked in a boolean variable
int coneType
The type of the cone (one of the values in ENUM_CONE_TYPE)
SemidefiniteCone()
The SemidefiniteCone class constructor.
bool setRandom(double density, bool conformant, int iMin, int iMax)
A function to make a random instance of this class.
int numberOfOtherIndexes
Multidimensional tensors can also form cones (the Kronecker product, for instance,...
virtual std::string getConeName()
int idx
cones are referenced by an (automatically created) index
virtual std::string getConeInXML()
Write a SemidefiniteCone object in XML format.
bool deepCopyFrom(SemidefiniteCone *that)
A function to make a deep copy of an instance of this class.
std::string semidefiniteness
we need to distinguish positive and negative semidefiniteness
int numberOfRows
Every cone has (at least) two dimensions; no distinction is made between vector cones and matrix cone...
bool IsEqual(SemidefiniteCone *that)
A function to check for the equality of two objects.
The in-memory representation of a SparseHessianMatrix..
a sparse Jacobian matrix data structure
a sparse matrix data structure
a sparse vector data structure
The in-memory representation of the <timeDomain> element.
TimeDomainStages * stages
stages is a pointer to a Stages object
TimeDomain()
The TimeDomain class constructor.
TimeDomainInterval * interval
interval is a pointer to an Interval object
~TimeDomain()
The TimeDomain class destructor.
~TimeDomainInterval()
The Interval class destructor.
double start
start is the start of the planning period in the <interval> element.
double horizon
horizon is the end of the planning period in the <interval> element.
TimeDomainInterval()
The Interval class constructor.
The in-memory representation of the <con> element.
int idx
idx gives the index of this constraint
~TimeDomainStageCon()
The TimeDomainStageCon class destructor.
TimeDomainStageCon()
The TimeDomainStageCon class constructor.
The in-memory representation of the <constraints> child of the <stage> element.
int numberOfConstraints
numberOfConstraints gives the number of constraints contained in this stage
~TimeDomainStageConstraints()
The TimeDomainStageConstraints class destructor.
TimeDomainStageConstraints()
The TimeDomainStageConstraints class constructor.
TimeDomainStageCon ** con
con is a pointer to an array of TimeDomainStageCon object pointers
int startIdx
startdIdx gives the number of the first constraint contained in this stage
The in-memory representation of the <stage> element.
TimeDomainStageVariables * variables
variables is a pointer to a TimeDomainVariables object
std::string name
name corresponds to the optional attribute that holds the name of the stage; the default value is emp...
~TimeDomainStage()
The TimeDomainStage class destructor.
TimeDomainStageObjectives * objectives
objectives is a pointer to a TimeDomainObjectives object
TimeDomainStageConstraints * constraints
constraints is a pointer to a TimeDomainConstraints object
TimeDomainStage()
The TimeDomainStage class constructor.
The in-memory representation of the <obj> element.
int idx
idx gives the index of this variable
~TimeDomainStageObj()
The TimeDomainStageObj class destructor.
TimeDomainStageObj()
The TimeDomainStageObj class constructor.
The in-memory representation of the <objectives> child of the <stage> element.
TimeDomainStageObj ** obj
obj is a pointer to an array of TimeDomainStageObj object pointers
int startIdx
startdIdx gives the number of the first objective contained in this stage
TimeDomainStageObjectives()
The TimeDomainStageObjectives class constructor.
int numberOfObjectives
numberOfObjectives gives the number of objectives contained in this stage
~TimeDomainStageObjectives()
The TimeDomainStageObjectives class destructor.
The in-memory representation of the element.
TimeDomainStageVar()
The TimeDomainStageVar class constructor.
int idx
idx gives the index of this variable
~TimeDomainStageVar()
The TimeDomainStageVar class destructor.
The in-memory representation of the <variables> child of the <stage> element.
TimeDomainStageVar ** var
var is a pointer to an array of TimeDomainStageVar object pointers
TimeDomainStageVariables()
The TimeDomainStageVariables class constructor.
int numberOfVariables
numberOfVariables gives the number of variables contained in this stage
int startIdx
startdIdx gives the number of the first variable contained in this stage
~TimeDomainStageVariables()
The TimeDomainStageVariables class destructor.
The in-memory representation of the <stages> element.
TimeDomainStage ** stage
stage is pointer to an array of stage object pointers
TimeDomainStages()
The Stages class constructor.
int numberOfStages
numberOfStages is the number of stages in the <stages> element.
~TimeDomainStages()
The Stages class destructor.
The in-memory representation of the variable element.
bool IsEqual(Variable *that)
A function to check for the equality of two objects.
Variable()
The Variable class constructor.
double ub
ub corresponds to the optional attribute that holds the variable upper bound.
std::string name
name corresponds to the optional attribute that holds the variable name, the default value is empty
~Variable()
The Variable class destructor.
double lb
lb corresponds to the optional attribute that holds the variable lower bound.
char type
type corresponds to the attribute that holds the variable type: C (Continuous), B (binary),...
The in-memory representation of the variables element.
bool IsEqual(Variables *that)
A function to check for the equality of two objects.
Variables()
The Variables class constructor.
~Variables()
The Variables class destructor.
int numberOfVariables
numberOfVariables is the number of variables in the instance
Variable ** var
Here we define a pointer to an array of var pointers.
ENUM_MATRIX_TYPE
An enum to track the many different types of values that a matrix can contain Note that these types a...