1220 std::vector<double>
m_vdX;
1245 std::vector<double>
m_vdw;
1898 bool addVariable(
int index, std::string name,
double lowerBound,
double upperBound,
char type);
1918 bool setVariables(
int number, std::string* names,
double* lowerBounds,
1919 double* upperBounds,
char* types);
1946 bool addObjective(
int index, std::string name, std::string maxOrMin,
double constant,
double weight,
SparseVector* objectiveCoefficients);
1963 bool setObjectives(
int number, std::string *names, std::string *maxOrMins,
double *constants,
double *weights,
SparseVector **objectitiveCoefficients);
1986 bool addConstraint(
int index, std::string name,
double lowerBound,
double upperBound,
double constant);
1999 bool setConstraints(
int number, std::string* names,
double* lowerBounds,
double* upperBounds,
double* constants);
2020 double*
values,
int valuesBegin,
int valuesEnd,
2021 int* indexes,
int indexesBegin,
int indexesEnd,
2022 int* starts,
int startsBegin,
int startsEnd);
2040 int* rowIndexes,
int* varOneIndexes,
int* varTwoIndexes,
double* coefficients,
2041 int begin,
int end);
2057 int* rowIndexes,
int* varOneIndexes,
int* varTwoIndexes,
double* coefficients);
2101 bool new_x,
int highestOrder);
2134 bool new_x,
int highestOrder);
2167 double *conLambda,
bool new_x,
int highestOrder);
2186 int idx,
bool new_x,
int highestOrder);
2218 bool new_x,
int highestOrder);
2236 int objIdx,
bool new_x,
int highestOrder);
2270 bool new_x,
int highestOrder);
2335 #ifdef COIN_HAS_CPPAD
2340 CppAD::ADFun<double> *Fad;
2365 std::vector<double>
forwardAD(
int p, std::vector<double> vdX);
2377 std::vector<double>
reverseAD(
int p, std::vector<double> vdlambda);
2413 bool new_x,
int highestOrder);
a data structure for holding quadratic terms
double * getConstraintLowerBounds()
Get constraint lower bounds.
bool setTimeDomainStageVariablesOrdered(int numberOfStages, int *numberOfVariables, int *startIdx)
This sets the variables associated with each time domain stage in temporal order. ...
TimeDomain()
The TimeDomain class constructor.
~TimeDomainStageCon()
The TimeDomainStageCon class destructor.
double * getVariableLowerBounds()
Get variable lower bounds.
double * getConstraintUpperBounds()
Get constraint upper bounds.
ScalarExpressionTree * getNonlinearExpressionTreeMod(int rowIdx)
Get the expression tree for a given row index for the modified expression trees (quadratic terms adde...
~TimeDomainStageVariables()
The TimeDomainStageVariables class destructor.
~TimeDomainStageObjectives()
The TimeDomainStageObjectives class destructor.
int * getTimeDomainStageNumberOfConstraints()
Get the number of constraints contained in each time stage.
bool setQuadraticTerms(int number, int *rowIndexes, int *varOneIndexes, int *varTwoIndexes, double *coefficients, int begin, int end)
set quadratic terms
bool m_bCppADMustReTape
is true if a CppAD Expresion Tree has an expression that can change depending on the value of the inp...
std::string name
name corresponds to the optional attribute that holds the variable name, the default value is empty ...
Constraints * constraints
constraints is a pointer to a Constraints object
int getNumberOfIntegerVariables()
getNumberOfIntegerVariables
~TimeDomainStageConstraints()
The TimeDomainStageConstraints class destructor.
bool m_bProcessLinearConstraintCoefficients
-—— data items for linear constraint coefficients -——
bool processConstraints()
process constraints.
bool getSparseJacobianFromColumnMajor()
char * getVariableTypes()
Get variable initial values.
std::string name
the name of the objective function
bool m_bDuplicateExpressionTreesMap
m_bDuplicateExpressionTreeMap is true if m_mapExpressionTrees was duplicated.
This file defines the OSnLNode class along with its derived classes.
ScalarExpressionTree * getNonlinearExpressionTree(int rowIdx)
Get the expression tree for a given row index.
bool addVariable(int index, std::string name, double lowerBound, double upperBound, char type)
add a variable.
std::string name
name corresponds to the optional attribute that holds the name of the stage; the default value is emp...
InstanceData()
The InstanceData class constructor.
~Constraints()
The Constraints class destructor.
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...
The in-memory representation of the <obj> element.
int idx
idx gives the index of this variable
~Variables()
The Variables class destructor.
OSExpressionTree * m_LagrangianExpTree
m_LagrangianExpTree is an OSExpressionTree object that is the expression tree for the Lagrangian func...
bool getIterateResults(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
end revised AD code
int * getTimeDomainStageNumberOfVariables()
Get the number of variables contained in each time stage.
LinearConstraintCoefficients()
The LinearConstraintCoefficients class constructor.
IntVector * rowIdx
a pointer of row indices if the problem is stored by column
double calculateFunctionValue(int idx, double *x, bool new_x)
Calculate the function value for function (constraint or objective) indexed by idx.
int m_iConstraintNumber
m_iConstraintNumber is the number of constraints.
int m_iJacValueSize
m_iJacValueSize is the number of nonzero partial derivates in the Jacobian.
std::string * m_msVariableNames
m_msVariableNames holds an array of variable names.
bool bUseExpTreeForFunEval
bUseExpTreeForFunEval is set to true if you wish to use the OS Expression Tree for function evaluatio...
NonlinearExpressions * nonlinearExpressions
nonlinearExpressions is a pointer to a NonlinearExpressions object
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
bool setTimeDomainStageObjectivesOrdered(int numberOfStages, int *numberOfObjectives, int *startIdx)
This sets the objectives associated with each time domain stage in temporal order.
Variable()
The Variable class constructor.
int getVariableNumber()
Get number of variables.
std::vector< double > m_vdw
m_vdYval is a vector of derivatives – output from a reverse sweep
double * m_mdObjectiveConstants
m_mdObjectiveConstants holds an array of objective constants (default = 0.0).
bool m_bLagrangianSparseHessianCreated
m_bLagrangianSparseHessianCreated is true if the sparse Hessian Matrix for the Lagrangian was created...
bool setTimeDomainStageVariablesUnordered(int numberOfStages, int *numberOfVariables, int **varIndex)
This sets the variables associated with each time domain stage in srbitrary order.
SparseHessianMatrix * m_LagrangianSparseHessian
m_LagrangianSparseHessian is the Hessian Matrix of the Lagrangian function in sparse format ...
TimeDomain * timeDomain
timeDomain is a pointer to a TimeDomain object
int idx
idx gives the index of this variable
int ** m_mmiTimeDomainStageVarList
m_mmiTimeDomainStageVarList holds the list of variables in each stage.
std::string m_sInstanceDescription
m_sInstanceDescription holds the instance description.
bool setObjectives(int number, std::string *names, std::string *maxOrMins, double *constants, double *weights, SparseVector **objectitiveCoefficients)
set all the objectives related elements.
SparseHessianMatrix * calculateHessian(double *x, int idx, bool new_x)
Calculate the Hessian of a constraint or objective function.
bool m_bProcessQuadraticTerms
m_bProcessQuadraticTerms holds whether the quadratic terms are processed.
TimeDomainStageObj ** obj
obj is a pointer to an array of TimeDomainStageObj object pointers
int getLinearConstraintCoefficientNumber()
Get number of specified (usually nonzero) linear constraint coefficient values.
int * getNonlinearExpressionTreeModIndexes()
Get all the nonlinear expression tree indexes, i.e., indexes of rows (objectives or constraints) that...
IntVector * colIdx
a pointer of column indices if the problem is stored by row
std::string maxOrMin
declare the objective function to be a max or a min
~TimeDomainInterval()
The Interval class destructor.
QuadraticCoefficients()
The QuadraticCoefficients class constructor.
The in-memory representation of the <linearConstraintCoefficients> element.
SparseVector ** getObjectiveCoefficients()
Get objective coefficients.
TimeDomainStageConstraints()
The TimeDomainStageConstraints class constructor.
bool getFirstOrderResults(double *x, double *objLambda, double *conLambda)
Calculate first derivatives.
ObjCoef ** coef
coef is pointer to an array of ObjCoef object pointers
bool setQuadraticTermsInNonlinearExpressions(int number, int *rowIndexes, int *varOneIndexes, int *varTwoIndexes, double *coefficients)
set quadratic terms in nonlinearExpressions
bool m_bSparseJacobianCalculated
m_bSparseJacobianCalculated is true if getJacobianSparsityPattern() has been called.
bool m_bProcessObjectives
-—— data items for Objectives -——
The in-memory representation of the objective function <coef> element.
std::map< int, std::vector< OSnLNode * > > m_mapExpressionTreesInPostfix
m_mapExpressionTreesInPostfix holds a hash map of expression trees in postfix format, with the key being the row index and value being the expression tree representing the nonlinear expression of that row.
int idxTwo
idxTwo is the index of the second variable in the quadratic term
QuadraticTerm ** qTerm
qTerm is a pointer to an array of QuadraticTerm object pointers
Constraint ** con
con is pointer to an array of Constraint object pointers
bool m_bProcessExpressionTrees
m_bProcessExpressionTrees is true if the expression trees have been processed.
int * getNonlinearExpressionTreeIndexes()
Get all the nonlinear expression tree indexes, i.e., indexes of rows (objectives or constraints) that...
SparseJacobianMatrix * calculateAllConstraintFunctionGradients(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate the gradient of all constraint functions.
double * m_mdConstraintConstants
m_mdConstraintConstants holds an array of constraint constants (default = 0.0).
TimeDomainStageVariables * variables
variables is a pointer to a TimeDomainVariables object
std::string m_sInstanceSource
m_sInstanceSource holds the instance source.
TimeDomainInterval()
The Interval class constructor.
int numberOfConstraints
numberOfConstraints gives the number of constraints contained in this stage
TimeDomainStageCon ** con
con is a pointer to an array of TimeDomainStageCon object pointers
InstanceHeader * instanceHeader
A pointer to an InstanceHeader object.
ObjCoef()
The ObjCoef class constructor.
std::vector< ExprNode * > getNonlinearExpressionTreeModInPrefix(int rowIdx)
Get the prefix tokens for a given row index for the modified Expression Tree (quadratic terms added)...
TimeDomainStageObjectives()
The TimeDomainStageObjectives class constructor.
double * m_mdConstraintUpperBounds
m_mdConstraintUpperBounds holds an array of constraint upper bounds (default = INF).
std::vector< double > m_vdDomainUnitVec
m_vdDomainUnitVec is a unit vector in the domain space
void duplicateExpressionTreesMap()
duplicate the map of expression trees.
int getNumberOfNonlinearExpressionTreeModIndexes()
Get the number of unique nonlinear expression tree indexes after modifying the expression tree to con...
Variables()
The Variables class constructor.
~ObjCoef()
The ObjCoef class destructor.
std::string * m_msMaxOrMins
m_msMaxOrMins holds a std::string array of objective maxOrMins ("max" or "min").
The in-memory representation of the element.
int getObjectiveNumber()
Get number of objectives.
char type
type corresponds to the attribute that holds the variable type: C (Continuous), B (binary)...
int m_iVariableNumber
m_iVariableNumber holds the variable number.
bool m_bNonlinearExpressionTreeIndexesProcessed
m_bNonlinearExpressionTreeIndexesProcessed is true if getNonlinearExpressionTreeIndexes() has been ca...
int numberOfVariables
numberOfVariables is the number of variables in the instance
int m_iObjectiveNumberNonlinear
m_iObjectiveNumber is the number of objective functions with a nonlinear term.
The in-memory representation of the <instanceData> element.
std::map< int, int > getAllNonlinearVariablesIndexMap()
~Objective()
The Objective class destructor.
std::string * getVariableNames()
Get variable names.
~OSInstance()
The OSInstance class destructor.
bool m_bProcessConstraints
-—— data items for Constraints -——
The in-memory representation of the <constraints> child of the <stage> element.
int getNumberOfNonlinearExpressions()
Get number of nonlinear expressions.
std::vector< double > m_vdX
-—— data vectors for nonlinear optimization -——
int ** m_mmiTimeDomainStageObjList
m_mmiTimeDomainStageObjList holds the list of objectives in each stage.
int * m_miJacNumConTerms
m_miJacNumConTerms holds a int array of the number of constant terms (gradient does not change) for t...
double lb
lb is the lower bound on the constraint
The in-memory representation of the <constraints> element.
int numberOfObjectives
numberOfObjectives is the number of objective functions in the instance
bool getZeroOrderResults(double *x, double *objLambda, double *conLambda)
Calculate function values.
double ** m_mmdObjGradient
m_mdObjGradient holds an array of pointers, each pointer points to gradient of one objective function...
int ** m_mmiTimeDomainStageConList
m_mmiTimeDomainStageConList holds the list of constraints in each stage.
NonlinearExpressions()
The NonlinearExpressions class constructor.
std::string * m_msTimeDomainStageNames
m_msTimeDomainStageNames holds the names of the time stages.
int * m_miNonlinearExpressionTreeIndexes
m_miNonlinearExpressionTreeIndexes is an integer pointer to the distinct rows indexes in the nonlinea...
std::vector< double > m_vdLambda
m_vdYval is a vector of Lagrange multipliers
int numberOfObjectives
numberOfObjectives gives the number of objectives contained in this stage
std::map< int, int > m_mapAllNonlinearVariablesIndex
m_mapAllNonlinearVariablesIndexMap is a map of the variables in the Lagrangian function ...
bool setTimeDomainStages(int number, std::string *names)
This sets the number (and optionally names) of the time stages.
TimeDomainStageVar()
The TimeDomainStageVar class constructor.
int * m_miTimeDomainStageObjectiveNumber
m_miTimeDomainStageObjectiveNumber holds the number of objectives in each stage.
IntVector * start
a pointer to the start of each row or column stored in sparse format
double * getObjectiveWeights()
Get objective weights.
double ub
ub is the upper bound on the constraint
~LinearConstraintCoefficients()
The LinearConstraintCoefficients class destructor.
bool setTimeDomainStageConstraintsUnordered(int numberOfStages, int *numberOfConstraints, int **conIndex)
This sets the constraints associated with each time domain stage in srbitrary order.
double * m_mdJacValue
m_mdJacValue holds a double array of partial derivatives for the Jacobian matrix in sparse form (row ...
bool setInstanceName(std::string name)
set the instance name.
OSInstance()
The OSInstance class constructor.
TimeDomainStages * stages
stages is a pointer to a Stages object
double ** getDenseObjectiveCoefficients()
getDenseObjectiveCoefficients.
bool initObjGradients()
This should be called by initForAlgDiff()
The in-memory representation of the <nonlinearExpressions> element.
int m_iHighestTaylorCoeffOrder
m_iHighestTaylorCoeffOrder is the order of highest calculated Taylor coefficient
bool getSecondOrderResults(double *x, double *objLambda, double *conLambda)
Calculate second derivatives.
SparseJacobianMatrix * getJacobianSparsityPattern()
double getTimeDomainIntervalStart()
Get the start for the time domain interval.
int * m_miJacStart
m_miJacStart holds a int array of starts for the Jacobian matrix in sparse form (row major)...
int * m_miNonlinearExpressionIndexes
m_miNonlinearExpressionIndexes holds an integer array of nonlinear expression indexes, negative indexes correspond to objectives.
int numberOfVariables
numberOfVariables gives the number of variables contained in this stage
std::string * m_msObjectiveNames
m_msObjectiveNames holds an array of objective names.
int * m_miTimeDomainStageVariableNumber
m_miTimeDomainStageVariableNumber holds the number of variables in each stage.
TimeDomainStage ** stage
stage is pointer to an array of stage object pointers
double * m_mdConstraintFunctionValues
m_mdConstraintFunctionValues holds a double array of constraint function values – the size of the arr...
int getNumberOfNonlinearConstraints()
double * m_mdConstraintLowerBounds
m_mdConstraintLowerBounds holds an array of constraint lower bounds (default = -INF).
int m_iObjectiveNumber
m_iObjectiveNumber is the number of objective functions.
double weight
weight is the weight applied to the given objective function, 1.0 by default
bool setConstraintNumber(int number)
set the number of constraints.
a double vector data structure
bool m_bNonlinearExpressionTreeModIndexesProcessed
m_bNonlinearExpressionTreeModIndexesProcessed is true if getNonlinearExpressionTreeModIndexes has bee...
The in-memory representation of the <obj> element.
~InstanceData()
The InstanceData class destructor.
Nl ** nl
nl is pointer to an array of Nl object pointers
DoubleVector * value
a pointer to the array of nonzero values being stored
double * calculateAllConstraintFunctionValues(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate all of the constraint function values.
The in-memory representation of the <objectives> element.
double lb
lb corresponds to the optional attribute that holds the variable lower bound.
double horizon
horizon is the end of the planning period in the <interval> element.
a sparse matrix data structure
double ** calculateAllObjectiveFunctionGradients(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate the gradient of all objective functions.
double constant
constant is the constant term added to the objective function, 0 by default
int m_iConstraintNumberNonlinear
m_iConstraintNumberNonlinear is the number of constraints that have a nonlinear term.
char * getConstraintTypes()
Get constraint types.
std::map< int, OSExpressionTree * > m_mapExpressionTreesMod
m_mapExpressionTreesMod holds a map of expression trees, with the key being the row index and value b...
Variable ** var
Here we define a pointer to an array of var pointers.
std::vector< double > m_vdRangeUnitVec
m_vdRangeUnitVec is a unit vector in the range space
bool m_bProcessExpressionTreesMod
m_bProcessExpressionTreesMod is true if the modified expression trees have been processed.
double start
start is the start of the planning period in the <interval> element.
double * m_mdVariableUpperBounds
m_mdVariableUpperBounds holds a double array of variable upper bounds (default = INF).
int m_iNumberOfIntegerVariables
m_iNumberOfIntegerVariables holds the number of integer variables.
bool m_bProcessTimeInterval
m_bProcessTimeInterval holds whether a time interval has been processed.
SparseMatrix * getLinearConstraintCoefficientsInRowMajor()
Get linear constraint coefficients in row major.
bool m_bCppADTapesBuilt
is true if a CppAD Expresion Tree has been built for each row and objective with a nonlinear expressi...
std::map< int, OSExpressionTree * > m_mapExpressionTrees
m_mapExpressionTrees holds a hash map of expression tree pointers, with the key being the row index a...
double * m_mdObjectiveWeights
m_mdObjectiveWeights holds an array of objective weights (default = 1.0).
double value
value is the value of the objective function coefficient corresponding to the variable with index idx...
The in-memory representation of the <quadraticCoefficients> element.
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.
The in-memory representation of the <stages> element.
SparseHessianMatrix * getLagrangianHessianSparsityPattern()
bool setObjectiveNumber(int number)
set the number of objectives.
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...
bool m_bAllNonlinearVariablesIndex
m_bAllNonlinearVariablesIndexMap is true if the map of the variables in the Lagrangian function has b...
int idxOne
idxOne is the index of the first variable in the quadratic term
Objective()
The Objective class constructor.
bool setTimeDomainStageObjectivesUnordered(int numberOfStages, int *numberOfObjectives, int **varIndex)
This sets the objectives associated with each time domain stage in arbitrary order.
bool m_bProcessTimeDomain
-—— data items for time domain -——
SparseVector ** m_mObjectiveCoefficients
m_mObjectiveCoefficients holds an array of objective coefficients, one set of objective coefficients ...
bool m_bQuadraticRowIndexesProcessed
m_bQuadraticRowIndexesProcessed is true if getQuadraticRowIndexes() has been called.
int numberOfValues
numberOfValues is the number of nonzero elements stored in the <linearConstraintCoefficients> element...
bool addConstraint(int index, std::string name, double lowerBound, double upperBound, double constant)
add a constraint.
Constraints()
The Constraints class constructor.
bool m_bFiniteTimeStages
m_bFiniteTimeStages holds whether the time domain has the form of finite (discrete) stages...
TimeDomainStageCon()
The TimeDomainStageCon class constructor.
bool addObjective(int index, std::string name, std::string maxOrMin, double constant, double weight, SparseVector *objectiveCoefficients)
add an objective.
int * m_miNonLinearVarsReverseMap
m_miNonLinearVarsReverseMap maps the nonlinear variable number back into the original variable space ...
int m_iNumberOfTimeStages
m_iNumberOfTimeStages holds the number of discrete stages
bool setTimeDomain(std::string format)
This sets the format of the time domain ("stages"/"interval"/"none")
std::string * getObjectiveMaxOrMins()
Get objective maxOrMins.
bool setTimeDomainStageConstraintsOrdered(int numberOfStages, int *numberOfConstraints, int *startIdx)
This sets the constraints associated with each time domain stage in temporal order.
int * m_miNumberOfObjCoef
m_miNumberOfObjCoef holds an integer array of number of objective coefficients (default = 0)...
double ub
ub corresponds to the optional attribute that holds the variable upper bound.
int idx
idx gives the index of this constraint
a sparse vector data structure
Variables * variables
variables is a pointer to a Variables object
TimeDomainStage()
The TimeDomainStage class constructor.
ScalarExpressionTree * getLagrangianExpTree()
SparseMatrix * getLinearConstraintCoefficientsInColumnMajor()
Get linear constraint coefficients in column major.
int getTimeDomainStageNumber()
Get the number of stages that make up the time domain.
The in-memory representation of the <timeDomain> element.
The in-memory representation of the <con> element.
int m_iLinearConstraintCoefficientNumber
m_iLinearConstraintCoefficientNumber holds the number of specified (usually nonzero) linear constrain...
bool setVariables(int number, std::string *names, double *lowerBounds, double *upperBounds, char *types)
set all the variable related elements.
~QuadraticCoefficients()
The QuadraticCoefficients class destructor.
double * getObjectiveConstants()
Get objective constants.
int numberOfConstraints
numberOfConstraints is the number of constraints in the instance
~TimeDomainStageObj()
The TimeDomainStageObj class destructor.
int m_iHighestOrderEvaluated
m_iHighestOrderEvaluated is the highest order derivative of the current iterate
int startIdx
startdIdx gives the number of the first variable contained in this stage
a sparse Jacobian matrix data structure
std::string getInstanceName()
Get instance name.
bool m_bProcessVariables
-—— data items for Variables -——
int getADSparsityHessian()
end revised AD code
InstanceData * instanceData
A pointer to an InstanceData object.
int m_iQuadraticTermNumber
m_iQuadraticTermNumber holds the number of specified (usually nonzero) qTerms in the quadratic coeffi...
int startIdx
startdIdx gives the number of the first constraint contained in this stage
bool addQTermsToExressionTree()
The in-memory representation of the <nl> element.
int ** getTimeDomainStageConList()
Get the list of constraints in each stage.
an integer Vector data structure
int idx
idx holds the row index of the nonlinear expression
std::vector< double > m_vdYval
m_vdYval is a vector of function values
bool processVariables()
process variables.
char * m_mcConstraintTypes
m_mcConstraintTypes holds a char array of constraint types (R for range; L for <=; G for >=; E for =;...
std::string * getObjectiveNames()
Get objective names.
double ** m_mmdDenseObjectiveCoefficients
m_mmdDenseObjectiveCoefficients holds an array of pointers, each pointer points to a vector of dense ...
int m_iNonlinearExpressionNumber
m_iNonlinearExpressionNumber holds the number of nonlinear expressions.
int getConstraintNumber()
Get number of constraints.
Objective ** obj
coef is pointer to an array of ObjCoef object pointers
bool getLinearConstraintCoefficientMajor()
Get whether the constraint coefficients is in column major (true) or row major (false).
int startIdx
startdIdx gives the number of the first objective contained in this stage
double getTimeDomainIntervalHorizon()
Get the horizon for the time domain interval.
bool setInstanceSource(std::string source)
set the instance source.
double * m_mdVariableLowerBounds
m_mdVariableLowerBounds holds a double array of variable lower bounds (default = 0.0).
int getNumberOfQuadraticRowIndexes()
Get the number of rows which have a quadratic term.
std::string * getTimeDomainStageNames()
Get the names of the stages (NULL or empty string ("") if a stage has not been given a name...
bool setInstanceDescription(std::string description)
set the instance description.
bool m_bProcessNonlinearExpressions
m_bProcessNonlinearExpressions holds whether the nonlinear expressions are processed.
double coef
coef is the coefficient of the quadratic term
int getNumberOfQuadraticTerms()
Get the number of specified (usually nonzero) qTerms in the quadratic coefficients.
~TimeDomainStageVar()
The TimeDomainStageVar class destructor.
int * m_miTimeDomainStageConstraintNumber
m_miTimeDomainStageConstraintNumber holds the number of constraints in each stage.
bool m_bDeleteExpressionTree
m_bDeleteExpressionTree is true, if in garbage collection, we should delete the osExpression tree obj...
TimeDomainStageConstraints * constraints
constraints is a pointer to a TimeDomainConstraints object
The in-memory representation of the <variables> child of the <stage> element.
bool m_bProcessTimeStages
m_bProcessTimeStages holds whether the time stages have been processed.
QuadraticTerms * m_quadraticTerms
m_quadraticTerms holds the data structure for all the quadratic terms in the instance.
Objectives * objectives
objectives is a pointer to a Objectives object
TimeDomainStageVar ** var
var is a pointer to an array of TimeDomainStageVar object pointers
~QuadraticTerm()
The QuadraticTerm class destructor.
The in-memory representation of the <stage> element.
std::vector< ExprNode * > getNonlinearExpressionTreeInPrefix(int rowIdx)
Get the prefix tokens for a given row index.
std::string getInstanceSource()
Get instance source.
bool initForAlgDiff()
This should be called by nonlinear solvers using callback functions.
int ** getTimeDomainStageObjList()
Get the list of objectives in each stage.
std::map< int, ScalarExpressionTree * > getAllNonlinearExpressionTrees()
TimeDomainStageVariables()
The TimeDomainStageVariables class constructor.
int * m_miQuadRowIndexes
m_miQuadRowIndexes is an integer pointer to the distinct row indexes with a quadratic term...
double * calculateAllObjectiveFunctionValues(double *x, double *objLambda, double *conLambda, bool new_x, int highestOrder)
Calculate all of the objective function values.
QuadraticTerms * getQuadraticTerms()
Get all the quadratic terms in the instance.
int m_iNumberOfNonlinearExpressionTreeModIndexes
m_iNumberOfNonlinearExpressionTreeModIndexes holds the number of distinct rows and objectives with no...
double * getVariableUpperBounds()
Get variable upper bounds.
int ** getTimeDomainStageVarList()
Get the list of variables in each stage.
bool m_bColumnMajor
m_bColumnMajor holds whether the linear constraint coefficients are stored in column major (if m_bCol...
std::vector< double > reverseAD(int p, std::vector< double > vdlambda)
Perform an AD reverse sweep.
The in-memory representation of the <objectives> child of the <stage> element.
int numberOfNonlinearExpressions
numberOfNonlinearExpressions is the number of <nl> elements in the <nonlinearExpressions> element...
int numberOfObjCoef
numberOfObjCoef is the number of variables with a nonzero objective function coefficient ...
std::string m_sTimeDomainFormat
m_sTimeDomainFormat holds the format ("stages"/"interval") of the time domain.
std::vector< bool > m_vbLagHessNonz
m_vbLagHessNonz is a boolean vector holding the nonzero pattern of the Lagrangian of the Hessian ...
int numberOfQuadraticTerms
numberOfQuadraticTerms is the number of quadratic terms in the <quadraticCoefficients> element...
int m_iNumberOfQuadraticRowIndexes
-—— data items for quadratic coefficients -——
TimeDomainInterval * interval
interval is a pointer to an Interval object
~Constraint()
The Constraint class destructor.
~TimeDomain()
The TimeDomain class destructor.
Objectives()
The Objectives class constructor.
bool getSparseJacobianFromRowMajor()
bool m_bOSADFunIsCreated
m_bOSADFunIsCreated is true if we have created the OSInstanc OSAD Function
bool m_bNonLinearStructuresInitialized
m_bNonLinearStructuresInitialized is true if initializeNonLinearStructures() has been called...
std::string * m_msConstraintNames
m_msConstraintNames holds an array of constraint names.
TimeDomainStages()
The Stages class constructor.
std::vector< ExprNode * > getNonlinearExpressionTreeModInPostfix(int rowIdx)
Get the postfix tokens for a given row index for the modified Expression Tree (quadratic terms added)...
TimeDomainStageObjectives * objectives
objectives is a pointer to a TimeDomainObjectives object
bool setVariableNumber(int number)
set the number of variables.
The in-memory representation of an OSiL instance..
SparseMatrix * m_linearConstraintCoefficientsInColumnMajor
m_linearConstraintCoefficientsInColumnMajor holds the standard three-array data structure for linear ...
~TimeDomainStages()
The Stages class destructor.
The in-memory representation of the variables element.
bool m_bQTermsAdded
m_bQTermsAdded is true if we added the quadratic terms to the expression tree
bool processObjectives()
process objectives.
TimeDomainStageObj()
The TimeDomainStageObj class constructor.
QuadraticCoefficients * quadraticCoefficients
quadraticCoefficients is a pointer to a QuadraticCoefficients object
~TimeDomainStage()
The TimeDomainStage class destructor.
int * m_miJacIndex
m_miJacIndex holds a int array of variable indices for the Jacobian matrix in sparse form (row major)...
int idx
idx is the index of the variable corresponding to the coefficient
~NonlinearExpressions()
The NonlinearExpressions class destructor.
OSExpressionTree * osExpressionTree
osExpressionTree contains the root of the OSExpressionTree
Constraint()
The Constraint class constructor.
int numberOfStages
numberOfStages is the number of stages in the <stages> element.
int idx
idx is the index of the row in which the quadratic term appears
double * m_mdObjectiveFunctionValues
m_mdObjectiveFunctionValues holds a double array of objective function values – the size of the array...
bool setConstraints(int number, std::string *names, double *lowerBounds, double *upperBounds, double *constants)
set all the constraint related elements.
bool setTimeDomainInterval(double start, double horizon)
This sets the start and end of the time interval.
std::string m_sInstanceName
-—— data items for InstanceHeader -——
int * getTimeDomainStageNumberOfObjectives()
Get the number of objectives contained in each time stage.
The in-memory representation of a SparseHessianMatrix..
char * m_mcVariableTypes
m_mcVariableTypes holds a char array of variable types (default = 'C').
int m_iNumberOfBinaryVariables
m_iNumberOfBinaryVariables holds the number of binary variables.
Used to hold the instance in memory.
std::string * getConstraintNames()
Get constraint names.
std::vector< double > m_vdYjacval
m_vdYval is a vector equal to a column or row of the Jacobian
bool m_bGetDenseObjectives
m_bGetDenseObjectives holds whether the dense objective functions are processed.
int m_iNumberOfNonlinearExpressionTreeIndexes
-—— data items for nonlinear expressions -——
bool initializeNonLinearStructures()
Initialize the data structures for the nonlinear API.
int * getObjectiveCoefficientNumbers()
Get objective coefficient number.
~Objectives()
The Objectives class destructor.
LinearConstraintCoefficients * linearConstraintCoefficients
linearConstraintCoefficients is a pointer to a LinearConstraintCoefficients object ...
int * m_miNonlinearExpressionTreeModIndexes
m_miNonlinearExpressionTreeModIndexes is an integer pointer to the distinct rows indexes in the modif...
std::map< int, int > m_mapOSADFunRangeIndex
m_mapOSADFunRangeIndex is an inverse of the previous map.
The in-memory representation of the <qTerm> element.
unsigned int m_iNumberOfNonlinearVariables
m_iNumberOfNonlinearVariables is the number of variables that appear in a nonlinear expression...
double constant
constant is a value that is added to the constraint
std::vector< double > forwardAD(int p, std::vector< double > vdX)
Perform an AD forward sweep.
The in-memory representation of the variable element.
SparseMatrix * m_linearConstraintCoefficientsInRowMajor
m_linearConstraintCoefficientsInRowMajor holds the standard three-array data structure for linear con...
bool m_bLagrangianExpTreeCreated
m_bLagrangianHessionCreated is true if a Lagrangian function for the Hessian has been created ...
int * getQuadraticRowIndexes()
Get the indexes of rows which have a quadratic term.
int iNumberOfStartElements
iNumberOfStartElements counts the number of elements in the <start> section of <linearConstraintCoeff...
bool processLinearConstraintCoefficients()
process linear constraint coefficients.
SparseJacobianMatrix * m_sparseJacMatrix
m_sparseJacMatrix is the Jacobian matrix stored in sparse matrix format
~Variable()
The Variable class destructor.
int getNumberOfBinaryVariables()
getNumberOfBinaryVariables
std::string getInstanceDescription()
Get instance description.
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.
std::map< int, ScalarExpressionTree * > getAllNonlinearExpressionTreesMod()
void fint fint fint real fint real * x
The in-memory representation of the <con> element.
int getNumberOfNonlinearExpressionTreeIndexes()
Get the number of unique nonlinear expression tree indexes.
std::string name
name is the name of the constraint
int getNumberOfNonlinearObjectives()
std::string getTimeDomainFormat()
Get the format of the time domain ("stages"/"interval")
bool m_binitForAlgDiff
-—— data items for automatic differentiation -——
QuadraticTerm()
The QuadraticTerm class constructor.
std::vector< ExprNode * > getNonlinearExpressionTreeInPostfix(int rowIdx)
Get the postfix tokens for a given row index.