00001
00032 #ifndef OSINSTANCE_H
00033 #define OSINSTANCE_H
00034 #include "OSConfig.h"
00035 #include "OSParameters.h"
00036 #include "OSGeneral.h"
00037 #include "OSnLNode.h"
00038 #include "OSExpressionTree.h"
00039 #include <string>
00040 #include <map>
00041
00042
00043
00047 class Variable
00048 {
00049 public:
00051 Variable();
00052
00054 ~Variable();
00055
00059 double lb;
00060
00064 double ub;
00065
00069 char type;
00070
00074 std::string name;
00075
00076
00080 bool IsEqual(Variable *that);
00081 };
00082
00083
00087 class Variables
00088 {
00089 public:
00090
00092 Variables();
00093
00095 ~Variables();
00096
00098 int numberOfVariables;
00099
00101 Variable **var;
00102
00106 bool IsEqual(Variables *that);
00107 };
00108
00109
00114 class ObjCoef
00115 {
00116 public:
00117
00119 ObjCoef();
00120
00122 ~ObjCoef();
00123
00127 int idx;
00128
00132 double value;
00133
00137 bool IsEqual(ObjCoef *that);
00138 };
00139
00140
00145 class Objective
00146 {
00147 public:
00148
00150 Objective();
00151
00153 ~Objective();
00154
00156 std::string name;
00157
00161 std::string maxOrMin;
00162
00166 double constant;
00167
00171 double weight;
00172
00176 int numberOfObjCoef;
00177
00180 ObjCoef **coef;
00181
00185 bool IsEqual(Objective *that);
00186 };
00187
00192 class Objectives
00193 {
00194 public:
00195
00197 Objectives();
00198
00200 ~Objectives();
00201
00205 int numberOfObjectives;
00206
00209 Objective **obj;
00210
00214 bool IsEqual(Objectives *that);
00215 };
00216
00217
00222 class Constraint
00223 {
00224 public:
00225
00227 Constraint();
00228
00230 ~Constraint();
00231
00233 std::string name;
00234
00236 double constant;
00237
00239 double lb;
00240
00242 double ub;
00243
00247 bool IsEqual(Constraint *that);
00248 };
00249
00250
00255 class Constraints
00256 {
00257 public:
00258
00260 Constraints();
00261
00263 ~Constraints();
00264
00268 int numberOfConstraints;
00269
00272 Constraint **con;
00273
00277 bool IsEqual(Constraints *that);
00278 };
00279
00280
00292 class LinearConstraintCoefficients
00293 {
00294 public:
00295
00297 LinearConstraintCoefficients();
00298
00300 ~LinearConstraintCoefficients();
00301
00305 int numberOfValues;
00306
00310 IntVector *start;
00311
00313 IntVector *rowIdx;
00314
00316 IntVector *colIdx;
00317
00319 DoubleVector *value;
00326 int iNumberOfStartElements;
00327
00331 bool IsEqual(LinearConstraintCoefficients *that);
00332 };
00333
00334
00344 class QuadraticTerm
00345 {
00346 public:
00347
00349 QuadraticTerm();
00350
00352 ~QuadraticTerm();
00353
00357 int idx;
00358
00362 int idxOne;
00363
00367 int idxTwo;
00368
00370 double coef;
00371
00375 bool IsEqual(QuadraticTerm *that);
00376 };
00377
00378
00379
00380
00386 class QuadraticCoefficients
00387 {
00388 public:
00389
00391 QuadraticCoefficients();
00392
00394 ~QuadraticCoefficients();
00395
00399 int numberOfQuadraticTerms;
00400
00403 QuadraticTerm** qTerm;
00404
00408 bool IsEqual(QuadraticCoefficients *that);
00409 };
00410
00411
00416 class Nl
00417 {
00418 public:
00420 int idx;
00421
00427 bool m_bDeleteExpressionTree;
00428
00430 OSExpressionTree *osExpressionTree;
00431
00435 Nl();
00436
00440 ~Nl();
00441
00445 bool IsEqual(Nl *that);
00446 };
00447
00452 class NonlinearExpressions
00453 {
00454 public:
00455
00457 NonlinearExpressions();
00458
00460 ~NonlinearExpressions();
00461
00466 int numberOfNonlinearExpressions;
00467
00469 Nl **nl;
00470
00474 bool IsEqual(NonlinearExpressions *that);
00475 };
00476
00477
00478
00483 class TimeDomainStageVar
00484 {
00485 public:
00486
00488 TimeDomainStageVar();
00489
00491 ~TimeDomainStageVar();
00492
00494 int idx;
00495 };
00496
00501 class TimeDomainStageVariables
00502 {
00503 public:
00504
00506 TimeDomainStageVariables();
00507
00509 ~TimeDomainStageVariables();
00510
00512 int numberOfVariables;
00513
00515 int startIdx;
00516
00518 TimeDomainStageVar** var;
00519 };
00520
00521
00526 class TimeDomainStageCon
00527 {
00528 public:
00529
00531 TimeDomainStageCon();
00532
00534 ~TimeDomainStageCon();
00535
00537 int idx;
00538 };
00539
00544 class TimeDomainStageConstraints
00545 {
00546 public:
00547
00549 TimeDomainStageConstraints();
00550
00552 ~TimeDomainStageConstraints();
00553
00555 int numberOfConstraints;
00556
00558 int startIdx;
00559
00561 TimeDomainStageCon** con;
00562 };
00563
00564
00569 class TimeDomainStageObj
00570 {
00571 public:
00572
00574 TimeDomainStageObj();
00575
00577 ~TimeDomainStageObj();
00578
00580 int idx;
00581 };
00582
00587 class TimeDomainStageObjectives
00588 {
00589 public:
00590
00592 TimeDomainStageObjectives();
00593
00595 ~TimeDomainStageObjectives();
00596
00598 int numberOfObjectives;
00599
00601 int startIdx;
00602
00604 TimeDomainStageObj** obj;
00605 };
00606
00607
00612 class TimeDomainStage
00613 {
00614 public:
00615
00617 TimeDomainStage();
00618
00620 ~TimeDomainStage();
00621
00625 std::string name;
00626
00628 TimeDomainStageVariables *variables;
00629
00631 TimeDomainStageConstraints *constraints;
00632
00634 TimeDomainStageObjectives *objectives;
00635 };
00636
00641 class TimeDomainStages
00642 {
00643 public:
00644
00646 TimeDomainStages();
00647
00649 ~TimeDomainStages();
00650
00654 int numberOfStages;
00655
00657 TimeDomainStage **stage;
00658 };
00659
00664 class TimeDomainInterval
00665 {
00666 public:
00667
00669 TimeDomainInterval();
00670
00672 ~TimeDomainInterval();
00673
00677 double start;
00678
00682 double horizon;
00683 };
00684
00689 class TimeDomain
00690 {
00691 public:
00692
00694 TimeDomain();
00695
00697 ~TimeDomain();
00698
00701 TimeDomainStages *stages;
00702
00705 TimeDomainInterval *interval;
00706 };
00707
00724 class InstanceData
00725 {
00726 public:
00727
00729 InstanceData();
00730
00732 ~InstanceData();
00733
00735 Variables *variables;
00736
00738 Objectives *objectives;
00739
00741 Constraints *constraints;
00742
00746 LinearConstraintCoefficients *linearConstraintCoefficients;
00747
00751 QuadraticCoefficients* quadraticCoefficients;
00752
00756 NonlinearExpressions* nonlinearExpressions;
00757
00761 TimeDomain* timeDomain;
00762
00766 bool IsEqual(InstanceData *that);
00767 };
00768
00769
00797 class OSInstance
00798 {
00799 public:
00800
00802 OSInstance();
00803
00805 ~OSInstance();
00806
00808 GeneralFileHeader *instanceHeader;
00809
00811 InstanceData *instanceData;
00812
00816 bool IsEqual(OSInstance *that);
00817
00821 bool bVariablesModified ;
00822
00826 bool bObjectivesModified ;
00827
00831 bool bConstraintsModified ;
00832
00836 bool bAMatrixModified ;
00837
00838
00839
00840 private:
00844 std::string m_sInstanceName;
00848 std::string m_sInstanceSource;
00852 std::string m_sInstanceDescription;
00856 std::string m_sInstanceCreator;
00860 std::string m_sInstanceLicence;
00861
00865 bool m_bProcessVariables;
00866
00870 int m_iVariableNumber;
00871
00875 int m_iNumberOfIntegerVariables;
00876
00880 int m_iNumberOfBinaryVariables;
00881
00885 int m_iNumberOfSemiContinuousVariables;
00886
00890 int m_iNumberOfSemiIntegerVariables;
00891
00895 int m_iNumberOfStringVariables;
00896
00900 int m_iNumberOfQuadraticRowIndexes;
00901
00905 bool m_bQuadraticRowIndexesProcessed;
00906
00910 int *m_miQuadRowIndexes;
00911
00915 int m_iNumberOfNonlinearExpressionTreeIndexes;
00916
00920 bool m_bNonlinearExpressionTreeIndexesProcessed;
00921
00926 int *m_miNonlinearExpressionTreeIndexes;
00927
00932 int m_iNumberOfNonlinearExpressionTreeModIndexes;
00933
00937 bool m_bNonlinearExpressionTreeModIndexesProcessed;
00938
00943 int *m_miNonlinearExpressionTreeModIndexes;
00944
00948 std::string* m_msVariableNames;
00949
00954 char* m_mcVariableTypes;
00955
00959 double* m_mdVariableLowerBounds;
00960
00964 double* m_mdVariableUpperBounds;
00965
00969 bool m_bProcessObjectives;
00970
00974 int m_iObjectiveNumber;
00975
00979 int m_iObjectiveNumberNonlinear;
00980
00984 std::string* m_msObjectiveNames;
00985
00989 std::string* m_msMaxOrMins;
00990
00994 int* m_miNumberOfObjCoef;
00995
00999 double* m_mdObjectiveConstants;
01000
01004 double* m_mdObjectiveWeights;
01005
01010 SparseVector** m_mObjectiveCoefficients;
01011
01015 bool m_bGetDenseObjectives;
01016
01021 double** m_mmdDenseObjectiveCoefficients;
01022
01026 bool m_bProcessConstraints;
01027
01031 int m_iConstraintNumber;
01032
01036 int m_iConstraintNumberNonlinear;
01037
01041 std::string* m_msConstraintNames;
01042
01046 double* m_mdConstraintLowerBounds;
01047
01051 double* m_mdConstraintUpperBounds;
01052
01057 double* m_mdConstraintConstants;
01058
01063 char* m_mcConstraintTypes;
01064
01068 bool m_bProcessLinearConstraintCoefficients;
01069
01074 int m_iLinearConstraintCoefficientNumber;
01075
01079 bool m_bColumnMajor;
01080
01084 bool m_binitForAlgDiff;
01085
01086
01091 SparseMatrix* m_linearConstraintCoefficientsInColumnMajor;
01092
01097 SparseMatrix* m_linearConstraintCoefficientsInRowMajor;
01098
01099
01103 bool m_bProcessQuadraticTerms;
01104
01109 int m_iQuadraticTermNumber;
01110
01114 double *m_mdConstraintFunctionValues;
01115
01119 double *m_mdObjectiveFunctionValues;
01120
01124 int m_iJacValueSize;
01125
01129 int *m_miJacStart;
01130
01134 int *m_miJacIndex;
01135
01139 double *m_mdJacValue;
01140
01141
01146 int *m_miJacNumConTerms;
01147
01151 SparseJacobianMatrix *m_sparseJacMatrix;
01152
01157 int m_iHighestTaylorCoeffOrder;
01158
01163 QuadraticTerms* m_quadraticTerms;
01164
01167 bool m_bQTermsAdded;
01168
01173 unsigned int m_iNumberOfNonlinearVariables;
01174
01178 bool m_bProcessNonlinearExpressions;
01179
01183 int m_iNonlinearExpressionNumber;
01184
01189 int* m_miNonlinearExpressionIndexes;
01190
01194 bool m_bProcessExpressionTrees;
01195
01199 bool m_bProcessExpressionTreesMod;
01200
01205 std::map<int, OSExpressionTree*> m_mapExpressionTrees ;
01206
01207
01208
01209 std::map<int, int> m_mapOSADFunRangeIndex ;
01210
01215 OSExpressionTree *m_LagrangianExpTree ;
01216
01220 bool m_bLagrangianExpTreeCreated ;
01221
01225 SparseHessianMatrix* m_LagrangianSparseHessian;
01226
01231 bool m_bLagrangianSparseHessianCreated;
01232
01236 std::map<int, int> m_mapAllNonlinearVariablesIndex;
01237
01241 int *m_miNonLinearVarsReverseMap;
01242
01247 bool m_bAllNonlinearVariablesIndex;
01248
01255 std::map<int, OSExpressionTree*> m_mapExpressionTreesMod ;
01256
01261 bool m_bOSADFunIsCreated;
01262
01267 bool m_bCppADTapesBuilt;
01268
01273 bool m_bCppADMustReTape;
01274
01278 bool m_bDuplicateExpressionTreesMap;
01279
01283 bool m_bNonLinearStructuresInitialized;
01284
01288 bool m_bSparseJacobianCalculated;
01289
01294 std::map<int, std::vector<OSnLNode*> > m_mapExpressionTreesInPostfix ;
01295
01296
01301 int m_iHighestOrderEvaluated;
01302
01307 double **m_mmdObjGradient;
01308
01309
01310
01315 std::vector<double> m_vdX;
01316
01321 std::vector<double> m_vdYval;
01322
01328 std::vector<bool> m_vbLagHessNonz;
01329
01334 std::vector<double> m_vdYjacval;
01335
01340 std::vector<double> m_vdw;
01341
01346 std::vector<double> m_vdLambda;
01347
01348
01353 std::vector<double> m_vdDomainUnitVec;
01354
01359 std::vector<double> m_vdRangeUnitVec;
01360
01361
01365 bool m_bProcessTimeDomain;
01366
01370 bool m_bProcessTimeStages;
01371
01375 bool m_bProcessTimeInterval;
01376
01380 bool m_bFiniteTimeStages;
01381
01385 int m_iNumberOfTimeStages;
01386
01390 std::string m_sTimeDomainFormat;
01391
01396 std::string* m_msTimeDomainStageNames;
01397
01402 int* m_miTimeDomainStageVariableNumber;
01403
01408 int** m_mmiTimeDomainStageVarList;
01409
01414 int* m_miTimeDomainStageConstraintNumber;
01415
01420 int** m_mmiTimeDomainStageConList;
01421
01426 int* m_miTimeDomainStageObjectiveNumber;
01427
01432 int** m_mmiTimeDomainStageObjList;
01433
01434
01441 bool processVariables() ;
01442
01449 bool processObjectives();
01450
01451
01458 bool processConstraints();
01459
01460
01467 bool processLinearConstraintCoefficients();
01468
01469
01470 public:
01471
01476 std::string getInstanceName();
01477
01482 std::string getInstanceSource();
01483
01489 std::string getInstanceDescription();
01490
01495 std::string getInstanceCreator();
01496
01502 std::string getInstanceLicence();
01503
01504
01510 int getVariableNumber();
01511
01518 std::string* getVariableNames();
01519
01527
01528
01536
01537
01549 char* getVariableTypes();
01550
01555 int getNumberOfIntegerVariables();
01556
01561 int getNumberOfBinaryVariables();
01562
01567 int getNumberOfSemiContinuousVariables();
01568
01573 int getNumberOfSemiIntegerVariables();
01574
01579 int getNumberOfStringVariables();
01580
01587 double* getVariableLowerBounds();
01588
01595 double* getVariableUpperBounds();
01596
01602 int getObjectiveNumber();
01603
01604
01611 std::string* getObjectiveNames();
01612
01619 std::string* getObjectiveMaxOrMins();
01620
01629 int* getObjectiveCoefficientNumbers();
01630
01637 double* getObjectiveConstants();
01638
01645 double* getObjectiveWeights();
01646
01657 SparseVector** getObjectiveCoefficients();
01658
01665 double** getDenseObjectiveCoefficients();
01666
01672 int getConstraintNumber();
01673
01680 std::string* getConstraintNames();
01681
01688 double* getConstraintLowerBounds();
01689
01696 double *getConstraintUpperBounds();
01697
01704 double *getConstraintConstants();
01705
01719 char* getConstraintTypes();
01720
01726 int getLinearConstraintCoefficientNumber();
01727
01728
01735 bool getLinearConstraintCoefficientMajor();
01736
01737
01744 SparseMatrix* getLinearConstraintCoefficientsInColumnMajor();
01745
01752 SparseMatrix* getLinearConstraintCoefficientsInRowMajor();
01753
01759 int getNumberOfQuadraticTerms();
01760
01769 QuadraticTerms* getQuadraticTerms();
01770
01778 int* getQuadraticRowIndexes();
01779
01785 int getNumberOfQuadraticRowIndexes();
01786
01792 int getNumberOfNonlinearExpressions();
01793
01799 Nl** getNonlinearExpressions();
01800
01806 OSExpressionTree* getNonlinearExpressionTree(int rowIdx);
01807
01814 OSExpressionTree* getNonlinearExpressionTreeMod(int rowIdx);
01815
01822 std::vector<OSnLNode*> getNonlinearExpressionTreeInPostfix( int rowIdx);
01823
01831 std::vector<OSnLNode*> getNonlinearExpressionTreeModInPostfix( int rowIdx);
01832
01839 std::vector<OSnLNode*> getNonlinearExpressionTreeInPrefix( int rowIdx);
01840
01848 std::string getNonlinearExpressionTreeInInfix( int rowIdx);
01849
01850
01858 std::vector<OSnLNode*> getNonlinearExpressionTreeModInPrefix( int rowIdx);
01859
01860
01864 int getNumberOfNonlinearObjectives();
01865
01869 int getNumberOfNonlinearConstraints();
01870
01874 std::map<int, OSExpressionTree* > getAllNonlinearExpressionTrees();
01875
01876
01880 std::map<int, OSExpressionTree* > getAllNonlinearExpressionTreesMod();
01881
01887 int* getNonlinearExpressionTreeIndexes();
01888
01889
01895 int getNumberOfNonlinearExpressionTreeIndexes();
01896
01897
01904 int* getNonlinearExpressionTreeModIndexes();
01905
01906
01913 int getNumberOfNonlinearExpressionTreeModIndexes();
01914
01915
01921 std::string getTimeDomainFormat();
01922
01928 int getTimeDomainStageNumber();
01929
01935 std::string* getTimeDomainStageNames();
01936
01942 int* getTimeDomainStageNumberOfVariables();
01943
01949 int* getTimeDomainStageNumberOfConstraints();
01950
01956 int* getTimeDomainStageNumberOfObjectives();
01957
01963 int** getTimeDomainStageVarList();
01964
01970 int** getTimeDomainStageConList();
01971
01977 int** getTimeDomainStageObjList();
01978
01984 double getTimeDomainIntervalStart();
01985
01991 double getTimeDomainIntervalHorizon();
01992
01993
01994
01995
01996
01997
02004 bool setInstanceName(std::string name);
02005
02012 bool setInstanceSource(std::string source);
02013
02020 bool setInstanceDescription(std::string description);
02021
02028 bool setInstanceCreator(std::string fileCreator);
02029
02036 bool setInstanceLicence(std::string licence);
02037
02038
02045 bool setVariableNumber(int number);
02046
02064 bool addVariable(int index, std::string name, double lowerBound, double upperBound, char type);
02065
02084 bool setVariables(int number, std::string* names, double* lowerBounds,
02085 double* upperBounds, char* types);
02086
02093 bool setObjectiveNumber(int number);
02094
02112 bool addObjective(int index, std::string name, std::string maxOrMin, double constant, double weight, SparseVector* objectiveCoefficients);
02113
02129 bool setObjectives(int number, std::string *names, std::string *maxOrMins, double *constants, double *weights, SparseVector **objectitiveCoefficients);
02130
02137 bool setConstraintNumber(int number);
02138
02152 bool addConstraint(int index, std::string name, double lowerBound, double upperBound, double constant);
02153
02165 bool setConstraints(int number, std::string* names, double* lowerBounds, double* upperBounds, double* constants);
02166
02185 bool setLinearConstraintCoefficients(int numberOfValues, bool isColumnMajor,
02186 double* values, int valuesBegin, int valuesEnd,
02187 int* indexes, int indexesBegin, int indexesEnd,
02188 int* starts, int startsBegin, int startsEnd);
02189
02209 bool copyLinearConstraintCoefficients(int numberOfValues, bool isColumnMajor,
02210 double* values, int valuesBegin, int valuesEnd,
02211 int* indexes, int indexesBegin, int indexesEnd,
02212 int* starts, int startsBegin, int startsEnd);
02213
02229 bool setQuadraticTerms(int number,
02230 int* rowIndexes, int* varOneIndexes, int* varTwoIndexes, double* coefficients,
02231 int begin, int end);
02232
02246 bool setQuadraticTermsInNonlinearExpressions(int number,
02247 int* rowIndexes, int* varOneIndexes, int* varTwoIndexes, double* coefficients);
02248
02258 bool setNonlinearExpressions(int nexpr, Nl** root);
02259
02260
02261
02266 std::string printModel( );
02267
02268
02276 std::string printModel( int rowIdx);
02277
02278
02279
02280
02281
02282
02288 bool initializeNonLinearStructures( );
02289
02303 double calculateFunctionValue(int idx, double* x, bool new_x);
02304
02319 double *calculateAllConstraintFunctionValues(double* x, double *objLambda, double *conLambda,
02320 bool new_x, int highestOrder);
02321
02335 double *calculateAllConstraintFunctionValues(double* x, bool new_x);
02336
02352 double *calculateAllObjectiveFunctionValues(double* x, double *objLambda, double *conLambda,
02353 bool new_x, int highestOrder);
02354
02368 double *calculateAllObjectiveFunctionValues(double* x, bool new_x);
02369
02370
02385 SparseJacobianMatrix *calculateAllConstraintFunctionGradients(double* x, double *objLambda,
02386 double *conLambda, bool new_x, int highestOrder);
02387
02388
02404 SparseVector *calculateConstraintFunctionGradient(double* x, double *objLambda, double *conLambda,
02405 int idx, bool new_x, int highestOrder);
02406
02420 SparseVector *calculateConstraintFunctionGradient(double* x, int idx, bool new_x );
02421
02436 double **calculateAllObjectiveFunctionGradients(double* x, double *objLambda, double *conLambda,
02437 bool new_x, int highestOrder);
02438
02454 double *calculateObjectiveFunctionGradient(double* x, double *objLambda, double *conLambda,
02455 int objIdx, bool new_x, int highestOrder);
02456
02469 double *calculateObjectiveFunctionGradient(double* x, int objIdx, bool new_x );
02470
02488 SparseHessianMatrix *calculateLagrangianHessian( double* x, double *objLambda, double *conLambda,
02489 bool new_x, int highestOrder);
02490
02503 SparseHessianMatrix *calculateHessian( double* x, int idx, bool new_x);
02504
02505
02510 bool getSparseJacobianFromColumnMajor();
02511
02516 bool getSparseJacobianFromRowMajor();
02517
02522 OSExpressionTree* getLagrangianExpTree( );
02523
02528 std::map<int, int> getAllNonlinearVariablesIndexMap( );
02529
02534 SparseHessianMatrix* getLagrangianHessianSparsityPattern();
02535
02542 bool addQTermsToExressionTree();
02543
02548 bool addQTermsToExpressionTree();
02549
02554 SparseJacobianMatrix *getJacobianSparsityPattern();
02555
02560 void duplicateExpressionTreesMap();
02561
02562 #ifdef OS_HAS_CPPAD
02563
02567 CppAD::ADFun<double> *Fad;
02568 #endif
02569
02580 bool createOSADFun(std::vector<double> vdX );
02581
02592 std::vector<double> forwardAD(int p, std::vector<double> vdX);
02593
02604 std::vector<double> reverseAD(int p, std::vector<double> vdlambda);
02605
02618 int getADSparsityHessian();
02619
02639 bool getIterateResults(double *x, double *objLambda, double *conLambda,
02640 bool new_x, int highestOrder);
02641
02642
02643
02656 bool getZeroOrderResults(double *x, double *objLambda, double *conLambda);
02657
02670 bool getFirstOrderResults(double *x, double *objLambda, double *conLambda );
02671
02684 bool getSecondOrderResults(double *x, double *objLambda, double *conLambda );
02685
02686
02696 bool initForAlgDiff();
02697
02707 bool initObjGradients();
02708
02709
02714 bool bUseExpTreeForFunEval;
02715
02716
02720 bool setTimeDomain(std::string format);
02721
02725 bool setTimeDomainStages(int number, std::string *names);
02726
02732 bool setTimeDomainStageVariablesOrdered(int numberOfStages, int *numberOfVariables, int *startIdx);
02733
02739 bool setTimeDomainStageVariablesUnordered(int numberOfStages, int *numberOfVariables, int **varIndex);
02740
02746 bool setTimeDomainStageConstraintsOrdered(int numberOfStages, int *numberOfConstraints, int *startIdx);
02747
02753 bool setTimeDomainStageConstraintsUnordered(int numberOfStages, int *numberOfConstraints, int **conIndex);
02754
02760 bool setTimeDomainStageObjectivesOrdered(int numberOfStages, int *numberOfObjectives, int *startIdx);
02761
02767 bool setTimeDomainStageObjectivesUnordered(int numberOfStages, int *numberOfObjectives, int **varIndex);
02768
02772 bool setTimeDomainInterval(double start, double horizon);
02773
02774
02775 };
02776
02777 #endif
02778