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
00047 class InstanceHeader
00048 {
00049 public:
00050
00052 InstanceHeader();
00053
00055 ~InstanceHeader();
00056
00058 std::string description;
00059
00061 std::string name;
00062
00064 std::string source;
00065
00069 bool IsEqual(InstanceHeader *that);
00070 };
00071
00072
00073
00077 class Variable
00078 {
00079 public:
00081 Variable();
00082
00084 ~Variable();
00085
00089 double lb;
00090
00094 double ub;
00095
00099 char type;
00100
00104 std::string name;
00105
00106
00110 bool IsEqual(Variable *that);
00111 };
00112
00113
00117 class Variables
00118 {
00119 public:
00120
00122 Variables();
00123
00125 ~Variables();
00126
00128 int numberOfVariables;
00129
00131 Variable **var;
00132
00136 bool IsEqual(Variables *that);
00137 };
00138
00139
00144 class ObjCoef
00145 {
00146 public:
00147
00149 ObjCoef();
00150
00152 ~ObjCoef();
00153
00157 int idx;
00158
00162 double value;
00163
00167 bool IsEqual(ObjCoef *that);
00168 };
00169
00170
00175 class Objective
00176 {
00177 public:
00178
00180 Objective();
00181
00183 ~Objective();
00184
00186 std::string name;
00187
00191 std::string maxOrMin;
00192
00196 double constant;
00197
00201 double weight;
00202
00206 int numberOfObjCoef;
00207
00210 ObjCoef **coef;
00211
00215 bool IsEqual(Objective *that);
00216 };
00217
00222 class Objectives
00223 {
00224 public:
00225
00227 Objectives();
00228
00230 ~Objectives();
00231
00235 int numberOfObjectives;
00236
00239 Objective **obj;
00240
00244 bool IsEqual(Objectives *that);
00245 };
00246
00247
00252 class Constraint
00253 {
00254 public:
00255
00257 Constraint();
00258
00260 ~Constraint();
00261
00263 std::string name;
00264
00266 double constant;
00267
00269 double lb;
00270
00272 double ub;
00273
00277 bool IsEqual(Constraint *that);
00278 };
00279
00280
00285 class Constraints
00286 {
00287 public:
00288
00290 Constraints();
00291
00293 ~Constraints();
00294
00298 int numberOfConstraints;
00299
00302 Constraint **con;
00303
00307 bool IsEqual(Constraints *that);
00308 };
00309
00310
00322 class LinearConstraintCoefficients
00323 {
00324 public:
00325
00327 LinearConstraintCoefficients();
00328
00330 ~LinearConstraintCoefficients();
00331
00335 int numberOfValues;
00336
00340 IntVector *start;
00341
00343 IntVector *rowIdx;
00344
00346 IntVector *colIdx;
00347
00349 DoubleVector *value;
00356 int iNumberOfStartElements;
00357
00361 bool IsEqual(LinearConstraintCoefficients *that);
00362 };
00363
00364
00374 class QuadraticTerm
00375 {
00376 public:
00377
00379 QuadraticTerm();
00380
00382 ~QuadraticTerm();
00383
00387 int idx;
00388
00392 int idxOne;
00393
00397 int idxTwo;
00398
00400 double coef;
00401
00405 bool IsEqual(QuadraticTerm *that);
00406 };
00407
00408
00409
00410
00416 class QuadraticCoefficients
00417 {
00418 public:
00419
00421 QuadraticCoefficients();
00422
00424 ~QuadraticCoefficients();
00425
00429 int numberOfQuadraticTerms;
00430
00433 QuadraticTerm** qTerm;
00434
00438 bool IsEqual(QuadraticCoefficients *that);
00439 };
00440
00441
00446 class Nl
00447 {
00448 public:
00450 int idx;
00451
00457 bool m_bDeleteExpressionTree;
00458
00460 OSExpressionTree *osExpressionTree;
00461
00465 Nl();
00466
00470 ~Nl();
00471
00475 bool IsEqual(Nl *that);
00476 };
00477
00482 class NonlinearExpressions
00483 {
00484 public:
00485
00487 NonlinearExpressions();
00488
00490 ~NonlinearExpressions();
00491
00496 int numberOfNonlinearExpressions;
00497
00500 Nl **nl;
00501
00505 bool IsEqual(NonlinearExpressions *that);
00506 };
00507
00508
00509
00514 class TimeDomainStageVar
00515 {
00516 public:
00517
00519 TimeDomainStageVar();
00520
00522 ~TimeDomainStageVar();
00523
00525 int idx;
00526 };
00527
00532 class TimeDomainStageVariables
00533 {
00534 public:
00535
00537 TimeDomainStageVariables();
00538
00540 ~TimeDomainStageVariables();
00541
00543 int numberOfVariables;
00544
00546 int startIdx;
00547
00549 TimeDomainStageVar** var;
00550 };
00551
00552
00557 class TimeDomainStageCon
00558 {
00559 public:
00560
00562 TimeDomainStageCon();
00563
00565 ~TimeDomainStageCon();
00566
00568 int idx;
00569 };
00570
00575 class TimeDomainStageConstraints
00576 {
00577 public:
00578
00580 TimeDomainStageConstraints();
00581
00583 ~TimeDomainStageConstraints();
00584
00586 int numberOfConstraints;
00587
00589 int startIdx;
00590
00592 TimeDomainStageCon** con;
00593 };
00594
00595
00600 class TimeDomainStageObj
00601 {
00602 public:
00603
00605 TimeDomainStageObj();
00606
00608 ~TimeDomainStageObj();
00609
00611 int idx;
00612 };
00613
00618 class TimeDomainStageObjectives
00619 {
00620 public:
00621
00623 TimeDomainStageObjectives();
00624
00626 ~TimeDomainStageObjectives();
00627
00629 int numberOfObjectives;
00630
00632 int startIdx;
00633
00635 TimeDomainStageObj** obj;
00636 };
00637
00638
00643 class TimeDomainStage
00644 {
00645 public:
00646
00648 TimeDomainStage();
00649
00651 ~TimeDomainStage();
00652
00656 std::string name;
00657
00659 TimeDomainStageVariables *variables;
00660
00662 TimeDomainStageConstraints *constraints;
00663
00665 TimeDomainStageObjectives *objectives;
00666 };
00667
00672 class TimeDomainStages
00673 {
00674 public:
00675
00677 TimeDomainStages();
00678
00680 ~TimeDomainStages();
00681
00685 int numberOfStages;
00686
00688 TimeDomainStage **stage;
00689 };
00690
00695 class TimeDomainInterval
00696 {
00697 public:
00698
00700 TimeDomainInterval();
00701
00703 ~TimeDomainInterval();
00704
00708 double start;
00709
00713 double horizon;
00714 };
00715
00720 class TimeDomain
00721 {
00722 public:
00723
00725 TimeDomain();
00726
00728 ~TimeDomain();
00729
00732 TimeDomainStages *stages;
00733
00736 TimeDomainInterval *interval;
00737 };
00738
00755 class InstanceData
00756 {
00757 public:
00758
00760 InstanceData();
00761
00763 ~InstanceData();
00764
00766 Variables *variables;
00767
00769 Objectives *objectives;
00770
00772 Constraints *constraints;
00773
00777 LinearConstraintCoefficients *linearConstraintCoefficients;
00778
00782 QuadraticCoefficients* quadraticCoefficients;
00783
00787 NonlinearExpressions* nonlinearExpressions;
00788
00792 TimeDomain* timeDomain;
00793
00797 bool IsEqual(InstanceData *that);
00798 };
00799
00800
00827 class OSInstance
00828 {
00829 public:
00830
00832 OSInstance();
00833
00835 ~OSInstance();
00836
00838 GeneralFileHeader *instanceHeader;
00839
00841 InstanceData *instanceData;
00842
00846 bool IsEqual(OSInstance *that);
00847
00851 bool bVariablesModified ;
00852
00856 bool bObjectivesModified ;
00857
00861 bool bConstraintsModified ;
00862
00866 bool bAMatrixModified ;
00867
00868
00869
00870 private:
00874 std::string m_sInstanceName;
00878 std::string m_sInstanceSource;
00882 std::string m_sInstanceDescription;
00883
00887 bool m_bProcessVariables;
00888
00892 int m_iVariableNumber;
00893
00897 int m_iNumberOfIntegerVariables;
00898
00902 int m_iNumberOfBinaryVariables;
00903
00907 int m_iNumberOfSemiContinuousVariables;
00908
00912 int m_iNumberOfSemiIntegerVariables;
00913
00917 int m_iNumberOfStringVariables;
00918
00922 int m_iNumberOfQuadraticRowIndexes;
00923
00927 bool m_bQuadraticRowIndexesProcessed;
00928
00932 int *m_miQuadRowIndexes;
00933
00937 int m_iNumberOfNonlinearExpressionTreeIndexes;
00938
00942 bool m_bNonlinearExpressionTreeIndexesProcessed;
00943
00948 int *m_miNonlinearExpressionTreeIndexes;
00949
00954 int m_iNumberOfNonlinearExpressionTreeModIndexes;
00955
00959 bool m_bNonlinearExpressionTreeModIndexesProcessed;
00960
00965 int *m_miNonlinearExpressionTreeModIndexes;
00966
00970 std::string* m_msVariableNames;
00971
00976 char* m_mcVariableTypes;
00977
00981 double* m_mdVariableLowerBounds;
00982
00986 double* m_mdVariableUpperBounds;
00987
00991 bool m_bProcessObjectives;
00992
00996 int m_iObjectiveNumber;
00997
01001 int m_iObjectiveNumberNonlinear;
01002
01006 std::string* m_msObjectiveNames;
01007
01011 std::string* m_msMaxOrMins;
01012
01016 int* m_miNumberOfObjCoef;
01017
01021 double* m_mdObjectiveConstants;
01022
01026 double* m_mdObjectiveWeights;
01027
01032 SparseVector** m_mObjectiveCoefficients;
01033
01037 bool m_bGetDenseObjectives;
01038
01043 double** m_mmdDenseObjectiveCoefficients;
01044
01048 bool m_bProcessConstraints;
01049
01053 int m_iConstraintNumber;
01054
01058 int m_iConstraintNumberNonlinear;
01059
01063 std::string* m_msConstraintNames;
01064
01068 double* m_mdConstraintLowerBounds;
01069
01073 double* m_mdConstraintUpperBounds;
01074
01079 double* m_mdConstraintConstants;
01080
01085 char* m_mcConstraintTypes;
01086
01090 bool m_bProcessLinearConstraintCoefficients;
01091
01096 int m_iLinearConstraintCoefficientNumber;
01097
01101 bool m_bColumnMajor;
01102
01106 bool m_binitForAlgDiff;
01107
01108
01113 SparseMatrix* m_linearConstraintCoefficientsInColumnMajor;
01114
01119 SparseMatrix* m_linearConstraintCoefficientsInRowMajor;
01120
01121
01125 bool m_bProcessQuadraticTerms;
01126
01131 int m_iQuadraticTermNumber;
01132
01136 double *m_mdConstraintFunctionValues;
01137
01141 double *m_mdObjectiveFunctionValues;
01142
01146 int m_iJacValueSize;
01147
01151 int *m_miJacStart;
01152
01156 int *m_miJacIndex;
01157
01161 double *m_mdJacValue;
01162
01163
01168 int *m_miJacNumConTerms;
01169
01173 SparseJacobianMatrix *m_sparseJacMatrix;
01174
01179 int m_iHighestTaylorCoeffOrder;
01180
01185 QuadraticTerms* m_quadraticTerms;
01186
01189 bool m_bQTermsAdded;
01190
01195 unsigned int m_iNumberOfNonlinearVariables;
01196
01200 bool m_bProcessNonlinearExpressions;
01201
01205 int m_iNonlinearExpressionNumber;
01206
01211 int* m_miNonlinearExpressionIndexes;
01212
01216 bool m_bProcessExpressionTrees;
01217
01221 bool m_bProcessExpressionTreesMod;
01222
01227 std::map<int, OSExpressionTree*> m_mapExpressionTrees ;
01228
01229
01230
01231 std::map<int, int> m_mapOSADFunRangeIndex ;
01232
01237 OSExpressionTree *m_LagrangianExpTree ;
01238
01242 bool m_bLagrangianExpTreeCreated ;
01243
01247 SparseHessianMatrix* m_LagrangianSparseHessian;
01248
01253 bool m_bLagrangianSparseHessianCreated;
01254
01258 std::map<int, int> m_mapAllNonlinearVariablesIndex;
01259
01263 int *m_miNonLinearVarsReverseMap;
01264
01269 bool m_bAllNonlinearVariablesIndex;
01270
01277 std::map<int, OSExpressionTree*> m_mapExpressionTreesMod ;
01278
01283 bool m_bOSADFunIsCreated;
01284
01289 bool m_bCppADTapesBuilt;
01290
01295 bool m_bCppADMustReTape;
01296
01300 bool m_bDuplicateExpressionTreesMap;
01301
01305 bool m_bNonLinearStructuresInitialized;
01306
01310 bool m_bSparseJacobianCalculated;
01311
01316 std::map<int, std::vector<OSnLNode*> > m_mapExpressionTreesInPostfix ;
01317
01318
01323 int m_iHighestOrderEvaluated;
01324
01329 double **m_mmdObjGradient;
01330
01331
01332
01337 std::vector<double> m_vdX;
01338
01343 std::vector<double> m_vdYval;
01344
01350 std::vector<bool> m_vbLagHessNonz;
01351
01356 std::vector<double> m_vdYjacval;
01357
01362 std::vector<double> m_vdw;
01363
01368 std::vector<double> m_vdLambda;
01369
01370
01375 std::vector<double> m_vdDomainUnitVec;
01376
01381 std::vector<double> m_vdRangeUnitVec;
01382
01383
01387 bool m_bProcessTimeDomain;
01388
01392 bool m_bProcessTimeStages;
01393
01397 bool m_bProcessTimeInterval;
01398
01402 bool m_bFiniteTimeStages;
01403
01407 int m_iNumberOfTimeStages;
01408
01412 std::string m_sTimeDomainFormat;
01413
01418 std::string* m_msTimeDomainStageNames;
01419
01424 int* m_miTimeDomainStageVariableNumber;
01425
01430 int** m_mmiTimeDomainStageVarList;
01431
01436 int* m_miTimeDomainStageConstraintNumber;
01437
01442 int** m_mmiTimeDomainStageConList;
01443
01448 int* m_miTimeDomainStageObjectiveNumber;
01449
01454 int** m_mmiTimeDomainStageObjList;
01455
01456
01463 bool processVariables() ;
01464
01471 bool processObjectives();
01472
01473
01480 bool processConstraints();
01481
01482
01489 bool processLinearConstraintCoefficients();
01490
01491
01492 public:
01493
01498 std::string getInstanceName();
01499
01500
01505 std::string getInstanceSource();
01506
01507
01513 std::string getInstanceDescription();
01514
01520 int getVariableNumber();
01521
01528 std::string* getVariableNames();
01529
01537
01538
01546
01547
01559 char* getVariableTypes();
01560
01565 int getNumberOfIntegerVariables();
01566
01571 int getNumberOfBinaryVariables();
01572
01577 int getNumberOfSemiContinuousVariables();
01578
01583 int getNumberOfSemiIntegerVariables();
01584
01589 int getNumberOfStringVariables();
01590
01597 double* getVariableLowerBounds();
01598
01605 double* getVariableUpperBounds();
01606
01612 int getObjectiveNumber();
01613
01614
01621 std::string* getObjectiveNames();
01622
01629 std::string* getObjectiveMaxOrMins();
01630
01639 int* getObjectiveCoefficientNumbers();
01640
01647 double* getObjectiveConstants();
01648
01655 double* getObjectiveWeights();
01656
01667 SparseVector** getObjectiveCoefficients();
01668
01675 double** getDenseObjectiveCoefficients();
01676
01682 int getConstraintNumber();
01683
01690 std::string* getConstraintNames();
01691
01698 double* getConstraintLowerBounds();
01699
01706 double *getConstraintUpperBounds();
01707
01720 char* getConstraintTypes();
01721
01727 int getLinearConstraintCoefficientNumber();
01728
01729
01736 bool getLinearConstraintCoefficientMajor();
01737
01738
01745 SparseMatrix* getLinearConstraintCoefficientsInColumnMajor();
01746
01753 SparseMatrix* getLinearConstraintCoefficientsInRowMajor();
01754
01760 int getNumberOfQuadraticTerms();
01761
01770 QuadraticTerms* getQuadraticTerms();
01771
01779 int* getQuadraticRowIndexes();
01780
01786 int getNumberOfQuadraticRowIndexes();
01787
01793 int getNumberOfNonlinearExpressions();
01794
01795
01801 OSExpressionTree* getNonlinearExpressionTree(int rowIdx);
01802
01809 OSExpressionTree* getNonlinearExpressionTreeMod(int rowIdx);
01810
01817 std::vector<OSnLNode*> getNonlinearExpressionTreeInPostfix( int rowIdx);
01818
01826 std::vector<OSnLNode*> getNonlinearExpressionTreeModInPostfix( int rowIdx);
01827
01834 std::vector<OSnLNode*> getNonlinearExpressionTreeInPrefix( int rowIdx);
01835
01843 std::string getNonlinearExpressionTreeInInfix( int rowIdx);
01844
01845
01850 std::string printModel( );
01851
01852
01860 std::string printModel( int rowIdx);
01861
01869 std::vector<OSnLNode*> getNonlinearExpressionTreeModInPrefix( int rowIdx);
01870
01871
01875 int getNumberOfNonlinearObjectives();
01876
01880 int getNumberOfNonlinearConstraints();
01881
01885 std::map<int, OSExpressionTree* > getAllNonlinearExpressionTrees();
01886
01887
01891 std::map<int, OSExpressionTree* > getAllNonlinearExpressionTreesMod();
01892
01898 int* getNonlinearExpressionTreeIndexes();
01899
01900
01906 int getNumberOfNonlinearExpressionTreeIndexes();
01907
01908
01915 int* getNonlinearExpressionTreeModIndexes();
01916
01917
01924 int getNumberOfNonlinearExpressionTreeModIndexes();
01925
01926
01932 std::string getTimeDomainFormat();
01933
01939 int getTimeDomainStageNumber();
01940
01946 std::string* getTimeDomainStageNames();
01947
01953 int* getTimeDomainStageNumberOfVariables();
01954
01960 int* getTimeDomainStageNumberOfConstraints();
01961
01967 int* getTimeDomainStageNumberOfObjectives();
01968
01974 int** getTimeDomainStageVarList();
01975
01981 int** getTimeDomainStageConList();
01982
01988 int** getTimeDomainStageObjList();
01989
01995 double getTimeDomainIntervalStart();
01996
02002 double getTimeDomainIntervalHorizon();
02003
02004
02005
02006
02007
02008
02015 bool setInstanceSource(std::string source);
02016
02023 bool setInstanceDescription(std::string description);
02024
02025
02032 bool setInstanceName(std::string name);
02033
02040 bool setVariableNumber(int number);
02041
02059 bool addVariable(int index, std::string name, double lowerBound, double upperBound, char type);
02060
02079 bool setVariables(int number, std::string* names, double* lowerBounds,
02080 double* upperBounds, char* types);
02081
02088 bool setObjectiveNumber(int number);
02089
02107 bool addObjective(int index, std::string name, std::string maxOrMin, double constant, double weight, SparseVector* objectiveCoefficients);
02108
02124 bool setObjectives(int number, std::string *names, std::string *maxOrMins, double *constants, double *weights, SparseVector **objectitiveCoefficients);
02125
02132 bool setConstraintNumber(int number);
02133
02147 bool addConstraint(int index, std::string name, double lowerBound, double upperBound, double constant);
02148
02160 bool setConstraints(int number, std::string* names, double* lowerBounds, double* upperBounds, double* constants);
02161
02180 bool setLinearConstraintCoefficients(int numberOfValues, bool isColumnMajor,
02181 double* values, int valuesBegin, int valuesEnd,
02182 int* indexes, int indexesBegin, int indexesEnd,
02183 int* starts, int startsBegin, int startsEnd);
02184
02200 bool setQuadraticTerms(int number,
02201 int* rowIndexes, int* varOneIndexes, int* varTwoIndexes, double* coefficients,
02202 int begin, int end);
02203
02217 bool setQuadraticTermsInNonlinearExpressions(int number,
02218 int* rowIndexes, int* varOneIndexes, int* varTwoIndexes, double* coefficients);
02219
02220
02221
02222
02223
02224
02230 bool initializeNonLinearStructures( );
02231
02245 double calculateFunctionValue(int idx, double* x, bool new_x);
02246
02261 double *calculateAllConstraintFunctionValues(double* x, double *objLambda, double *conLambda,
02262 bool new_x, int highestOrder);
02263
02277 double *calculateAllConstraintFunctionValues(double* x, bool new_x);
02278
02294 double *calculateAllObjectiveFunctionValues(double* x, double *objLambda, double *conLambda,
02295 bool new_x, int highestOrder);
02296
02310 double *calculateAllObjectiveFunctionValues(double* x, bool new_x);
02311
02312
02327 SparseJacobianMatrix *calculateAllConstraintFunctionGradients(double* x, double *objLambda,
02328 double *conLambda, bool new_x, int highestOrder);
02329
02330
02346 SparseVector *calculateConstraintFunctionGradient(double* x, double *objLambda, double *conLambda,
02347 int idx, bool new_x, int highestOrder);
02348
02362 SparseVector *calculateConstraintFunctionGradient(double* x, int idx, bool new_x );
02363
02378 double **calculateAllObjectiveFunctionGradients(double* x, double *objLambda, double *conLambda,
02379 bool new_x, int highestOrder);
02380
02396 double *calculateObjectiveFunctionGradient(double* x, double *objLambda, double *conLambda,
02397 int objIdx, bool new_x, int highestOrder);
02398
02411 double *calculateObjectiveFunctionGradient(double* x, int objIdx, bool new_x );
02412
02430 SparseHessianMatrix *calculateLagrangianHessian( double* x, double *objLambda, double *conLambda,
02431 bool new_x, int highestOrder);
02432
02445 SparseHessianMatrix *calculateHessian( double* x, int idx, bool new_x);
02446
02447
02452 bool getSparseJacobianFromColumnMajor();
02453
02458 bool getSparseJacobianFromRowMajor();
02459
02464 OSExpressionTree* getLagrangianExpTree( );
02465
02470 std::map<int, int> getAllNonlinearVariablesIndexMap( );
02471
02476 SparseHessianMatrix* getLagrangianHessianSparsityPattern();
02477
02482 bool addQTermsToExressionTree();
02483
02488 SparseJacobianMatrix *getJacobianSparsityPattern();
02489
02494 void duplicateExpressionTreesMap();
02495
02496 #ifdef OS_HAS_CPPAD
02497
02501 CppAD::ADFun<double> *Fad;
02502 #endif
02503
02514 bool createOSADFun(std::vector<double> vdX );
02515
02526 std::vector<double> forwardAD(int p, std::vector<double> vdX);
02527
02538 std::vector<double> reverseAD(int p, std::vector<double> vdlambda);
02539
02552 int getADSparsityHessian();
02553
02573 bool getIterateResults(double *x, double *objLambda, double *conLambda,
02574 bool new_x, int highestOrder);
02575
02576
02577
02590 bool getZeroOrderResults(double *x, double *objLambda, double *conLambda);
02591
02604 bool getFirstOrderResults(double *x, double *objLambda, double *conLambda );
02605
02618 bool getSecondOrderResults(double *x, double *objLambda, double *conLambda );
02619
02620
02630 bool initForAlgDiff();
02631
02641 bool initObjGradients();
02642
02643
02648 bool bUseExpTreeForFunEval;
02649
02650
02654 bool setTimeDomain(std::string format);
02655
02659 bool setTimeDomainStages(int number, std::string *names);
02660
02666 bool setTimeDomainStageVariablesOrdered(int numberOfStages, int *numberOfVariables, int *startIdx);
02667
02673 bool setTimeDomainStageVariablesUnordered(int numberOfStages, int *numberOfVariables, int **varIndex);
02674
02680 bool setTimeDomainStageConstraintsOrdered(int numberOfStages, int *numberOfConstraints, int *startIdx);
02681
02687 bool setTimeDomainStageConstraintsUnordered(int numberOfStages, int *numberOfConstraints, int **conIndex);
02688
02694 bool setTimeDomainStageObjectivesOrdered(int numberOfStages, int *numberOfObjectives, int *startIdx);
02695
02701 bool setTimeDomainStageObjectivesUnordered(int numberOfStages, int *numberOfObjectives, int **varIndex);
02702
02706 bool setTimeDomainInterval(double start, double horizon);
02707
02708
02709 };
02710
02711 #endif
02712