/home/coin/SVN-release/OS-2.4.0/OS/src/OSCommonInterfaces/OSInstance.h

Go to the documentation of this file.
00001 /* $Id: OSInstance.h 4292 2011-09-21 05:47:18Z kmartin $ */
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 };//class InstanceHeader
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 }; // class Variable
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 }; // class Variables
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 };//class ObjCoef
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 };//class Objective
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 };//class Objectives
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 };//class Constraint
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 };//class Constraints
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 };//class LinearConstraintCoefficients
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 }; // QuadraticTerm
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 }; // QuadraticCoefficients
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 };//end Nl
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 }; // NonlinearExpressions
00507 
00508 
00509 
00514 class TimeDomainStageVar
00515 {
00516 public:
00517 
00519     TimeDomainStageVar();
00520 
00522     ~TimeDomainStageVar();
00523 
00525     int idx;
00526 }; // TimeDomainStageVar
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 }; // TimeDomainStageVariables
00551 
00552 
00557 class TimeDomainStageCon
00558 {
00559 public:
00560 
00562     TimeDomainStageCon();
00563 
00565     ~TimeDomainStageCon();
00566 
00568     int idx;
00569 }; // TimeDomainStageCon
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 }; // TimeDomainStageConstraints
00594 
00595 
00600 class TimeDomainStageObj
00601 {
00602 public:
00603 
00605     TimeDomainStageObj();
00606 
00608     ~TimeDomainStageObj();
00609 
00611     int idx;
00612 }; // TimeDomainStageObj
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 }; // TimeDomainStageObjectives
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 }; // TimeDomainStage
00667 
00672 class TimeDomainStages
00673 {
00674 public:
00675 
00677     TimeDomainStages();
00678 
00680     ~TimeDomainStages();
00681 
00685     int numberOfStages;
00686 
00688     TimeDomainStage **stage;
00689 }; // Stages
00690 
00695 class TimeDomainInterval
00696 {
00697 public:
00698 
00700     TimeDomainInterval();
00701 
00703     ~TimeDomainInterval();
00704 
00708     double start;
00709 
00713     double horizon;
00714 }; // Interval
00715 
00720 class TimeDomain
00721 {
00722 public:
00723 
00725     TimeDomain();
00726 
00728     ~TimeDomain();
00729 
00732     TimeDomainStages *stages;
00733 
00736     TimeDomainInterval *interval;
00737 }; // TimeDomain
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 }; // class InstanceData
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     //define the vectors
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     //double* getVariableInitialValues();
01538 
01546     //std::string* getVariableInitialStringValues();
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     // the set() methods
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     // nonlinear API methods
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 }; //class OSInstance
02710 
02711 #endif
02712 

Generated on Thu Sep 22 03:06:01 2011 by  doxygen 1.4.7