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

Go to the documentation of this file.
00001 /* $Id: OSInstance.h 3815 2010-11-03 23:46:16Z Gassmann $ */
00034 #ifndef OSINSTANCE_H
00035 #define OSINSTANCE_H
00036 #include "OSParameters.h"
00037 #include "OSGeneral.h"
00038 #include "OSnLNode.h"
00039 #include "OSExpressionTree.h"
00040 #include <string>
00041 #include <map>
00042 
00043 
00048 class InstanceHeader{
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 public:
00080         Variable();
00081         
00083         ~Variable();
00084 
00088         double lb;
00089 
00093         double ub;
00094         
00098         char type;
00099         
00103         std::string name;
00104         
00105 
00109         bool IsEqual(Variable *that);
00110 }; // class Variable
00111 
00112 
00116 class Variables{
00117 public:
00118 
00120         Variables();
00121         
00123         ~Variables();
00124         
00126         int numberOfVariables;
00127         
00129         Variable **var;
00130 
00134         bool IsEqual(Variables *that);
00135 }; // class Variables
00136 
00137 
00142 class ObjCoef{
00143 public:
00144 
00146         ObjCoef();
00147         
00149         ~ObjCoef();
00150         
00154         int idx;
00155         
00159         double value;
00160 
00164         bool IsEqual(ObjCoef *that);
00165 };//class ObjCoef
00166 
00167 
00172 class Objective{
00173 public:
00174 
00176         Objective();
00177         
00179         ~Objective();
00180         
00182         std::string name;
00183         
00187         std::string maxOrMin;
00188         
00192         double constant;
00193         
00197         double weight;
00198         
00202         int numberOfObjCoef;
00203         
00206         ObjCoef **coef;
00207 
00211         bool IsEqual(Objective *that);
00212 };//class Objective
00213 
00218 class Objectives{
00219 public:
00220 
00222         Objectives();
00223         
00225         ~Objectives();
00226         
00230         int numberOfObjectives;
00231         
00234         Objective **obj;
00235 
00239         bool IsEqual(Objectives *that);
00240 };//class Objectives
00241 
00242 
00247 class Constraint{
00248 public:
00249 
00251         Constraint();
00252         
00254         ~Constraint();
00255         
00257         std::string name;
00258         
00260         double constant;
00261         
00263         double lb;
00264         
00266         double ub;
00267 
00271         bool IsEqual(Constraint *that);
00272 };//class Constraint
00273 
00274 
00279 class Constraints{
00280 public:
00281 
00283         Constraints();
00284         
00286         ~Constraints();
00287         
00291         int numberOfConstraints;
00292         
00295         Constraint **con;
00296 
00300         bool IsEqual(Constraints *that);
00301 };//class Constraints
00302 
00303 
00315 class LinearConstraintCoefficients{
00316 public:
00317 
00319         LinearConstraintCoefficients();
00320         
00322         ~LinearConstraintCoefficients();
00323         
00327         int numberOfValues;
00328         
00332         IntVector *start;
00333         
00335         IntVector *rowIdx;
00336         
00338         IntVector *colIdx;
00339         
00341         DoubleVector *value;
00348         int iNumberOfStartElements;
00349 
00353         bool IsEqual(LinearConstraintCoefficients *that);
00354 };//class LinearConstraintCoefficients
00355 
00356 
00366 class QuadraticTerm{
00367 public:
00368     
00370         QuadraticTerm();
00371         
00373         ~QuadraticTerm();
00374         
00378         int idx;
00379         
00383     int idxOne;
00384     
00388     int idxTwo;
00389     
00391     double coef;
00392 
00396         bool IsEqual(QuadraticTerm *that);
00397 }; // QuadraticTerm
00398 
00399 
00400 
00401 
00407 class QuadraticCoefficients {
00408 public:
00409     
00411         QuadraticCoefficients();
00412         
00414         ~QuadraticCoefficients();
00415         
00419         int numberOfQuadraticTerms;
00420         
00423     QuadraticTerm** qTerm;
00424 
00428         bool IsEqual(QuadraticCoefficients *that);
00429 }; // QuadraticCoefficients
00430 
00431 
00436 class Nl{  
00437 public: 
00439         int idx;
00440 
00446         bool m_bDeleteExpressionTree;
00447         
00449         OSExpressionTree *osExpressionTree;
00450         
00454         Nl();
00455 
00459         ~Nl();
00460 
00464         bool IsEqual(Nl *that);
00465 };//end Nl
00466 
00471 class NonlinearExpressions {
00472 public:
00473     
00475         NonlinearExpressions();
00476         
00478         ~NonlinearExpressions();
00479         
00484         int numberOfNonlinearExpressions;
00485         
00488     Nl **nl;
00489 
00493         bool IsEqual(NonlinearExpressions *that);
00494 }; // NonlinearExpressions
00495 
00496 
00497 
00502 class TimeDomainStageVar {
00503 public:
00504     
00506         TimeDomainStageVar();
00507         
00509         ~TimeDomainStageVar();
00510         
00512         int idx;
00513 }; // TimeDomainStageVar
00514 
00519 class TimeDomainStageVariables {
00520 public:
00521     
00523         TimeDomainStageVariables();
00524         
00526         ~TimeDomainStageVariables();
00527         
00529         int numberOfVariables;
00530 
00532         int startIdx;
00533 
00535         TimeDomainStageVar** var;
00536 }; // TimeDomainStageVariables
00537 
00538 
00543 class TimeDomainStageCon {
00544 public:
00545     
00547         TimeDomainStageCon();
00548         
00550         ~TimeDomainStageCon();
00551         
00553         int idx;
00554 }; // TimeDomainStageCon
00555 
00560 class TimeDomainStageConstraints {
00561 public:
00562     
00564         TimeDomainStageConstraints();
00565         
00567         ~TimeDomainStageConstraints();
00568         
00570         int numberOfConstraints;
00571 
00573         int startIdx;
00574 
00576         TimeDomainStageCon** con;
00577 }; // TimeDomainStageConstraints
00578 
00579 
00584 class TimeDomainStageObj {
00585 public:
00586     
00588         TimeDomainStageObj();
00589         
00591         ~TimeDomainStageObj();
00592         
00594         int idx;
00595 }; // TimeDomainStageObj
00596 
00601 class TimeDomainStageObjectives {
00602 public:
00603     
00605         TimeDomainStageObjectives();
00606         
00608         ~TimeDomainStageObjectives();
00609         
00611         int numberOfObjectives;
00612 
00614         int startIdx;
00615 
00617         TimeDomainStageObj** obj;
00618 }; // TimeDomainStageObjectives
00619 
00620 
00625 class TimeDomainStage {
00626 public:
00627     
00629         TimeDomainStage();
00630         
00632         ~TimeDomainStage();
00633         
00637         std::string name;
00638         
00640         TimeDomainStageVariables *variables;
00641 
00643         TimeDomainStageConstraints *constraints;
00644 
00646         TimeDomainStageObjectives *objectives;
00647 }; // TimeDomainStage
00648  
00653 class TimeDomainStages {
00654 public:
00655     
00657         TimeDomainStages();
00658         
00660         ~TimeDomainStages();
00661         
00665         int numberOfStages;
00666         
00668     TimeDomainStage **stage;
00669 }; // Stages
00670  
00675 class TimeDomainInterval {
00676 public:
00677     
00679         TimeDomainInterval();
00680         
00682         ~TimeDomainInterval();
00683         
00687         double start;
00688         
00692         double horizon;
00693 }; // Interval
00694  
00699 class TimeDomain {
00700 public:
00701     
00703         TimeDomain();
00704         
00706         ~TimeDomain();
00707 
00710         TimeDomainStages *stages;
00711 
00714         TimeDomainInterval *interval;
00715 }; // TimeDomain
00716 
00733 class InstanceData{
00734 public:
00735 
00737         InstanceData();
00738         
00740         ~InstanceData();
00741         
00743         Variables *variables;
00744         
00746         Objectives *objectives;
00747         
00749         Constraints *constraints;
00750         
00754         LinearConstraintCoefficients *linearConstraintCoefficients;
00755         
00759         QuadraticCoefficients* quadraticCoefficients;
00760         
00764         NonlinearExpressions* nonlinearExpressions;
00765         
00769         TimeDomain* timeDomain;
00770 
00774         bool IsEqual(InstanceData *that);
00775 }; // class InstanceData
00776 
00777 
00804 class OSInstance {
00805 public:
00806 
00808         OSInstance(); 
00809         
00811         ~OSInstance();
00812         
00814         InstanceHeader *instanceHeader;
00815         
00817         InstanceData *instanceData;
00818         
00822         bool IsEqual(OSInstance *that);
00823 
00827         bool bVariablesModified ;
00828         
00832         bool bObjectivesModified ;
00833         
00837         bool bConstraintsModified ;
00838         
00842         bool bAMatrixModified ;
00843         
00844 
00845 
00846 private:
00850         std::string m_sInstanceName;
00854         std::string m_sInstanceSource;  
00858         std::string m_sInstanceDescription;
00859         
00863         bool m_bProcessVariables;
00864         
00868         int m_iVariableNumber;
00869         
00873         int m_iNumberOfIntegerVariables;
00874         
00878         int m_iNumberOfBinaryVariables;
00879         
00883         int m_iNumberOfSemiContinuousVariables;
00884         
00888         int m_iNumberOfSemiIntegerVariables;
00889         
00893         int m_iNumberOfStringVariables;
00894         
00898         int m_iNumberOfQuadraticRowIndexes;
00899         
00903         bool m_bQuadraticRowIndexesProcessed;
00904 
00908         int *m_miQuadRowIndexes;
00909         
00913         int m_iNumberOfNonlinearExpressionTreeIndexes;
00914         
00918         bool m_bNonlinearExpressionTreeIndexesProcessed;
00919 
00924         int *m_miNonlinearExpressionTreeIndexes;
00925         
00930         int m_iNumberOfNonlinearExpressionTreeModIndexes;
00931         
00935         bool m_bNonlinearExpressionTreeModIndexesProcessed;
00936 
00941         int *m_miNonlinearExpressionTreeModIndexes;
00942         
00946         std::string* m_msVariableNames;
00947         
00952         //double* m_mdVariableInitialValues ;
00953 
00958         //std::string* m_msVariableInitialStringValues;
00959 
00964         char* m_mcVariableTypes;
00965 
00969         double* m_mdVariableLowerBounds;
00970 
00974         double* m_mdVariableUpperBounds;
00975 
00979         bool m_bProcessObjectives;
00980 
00984         int m_iObjectiveNumber;
00985         
00989         int m_iObjectiveNumberNonlinear;
00990         
00994         std::string* m_msObjectiveNames;
00995         
00999         std::string* m_msMaxOrMins;
01000         
01004         int* m_miNumberOfObjCoef;
01005         
01009         double* m_mdObjectiveConstants;
01010         
01014         double* m_mdObjectiveWeights;
01015         
01020         SparseVector** m_mObjectiveCoefficients;
01021         
01025         bool m_bGetDenseObjectives;
01026         
01031         double** m_mmdDenseObjectiveCoefficients;
01032 
01036         bool m_bProcessConstraints;
01037         
01041         int m_iConstraintNumber;
01042         
01046         int m_iConstraintNumberNonlinear;
01047 
01051         std::string* m_msConstraintNames;
01052         
01056         double* m_mdConstraintLowerBounds;
01057 
01061         double* m_mdConstraintUpperBounds;
01062         
01067         double* m_mdConstraintConstants;
01068 
01073         char* m_mcConstraintTypes;
01074         
01078         bool m_bProcessLinearConstraintCoefficients;
01079         
01084         int m_iLinearConstraintCoefficientNumber;
01085 
01089         bool m_bColumnMajor;
01090         
01094         bool m_binitForAlgDiff;
01095 
01096 
01101         SparseMatrix* m_linearConstraintCoefficientsInColumnMajor;
01102 
01107         SparseMatrix* m_linearConstraintCoefficientsInRowMajor;
01108 
01109         
01113         bool m_bProcessQuadraticTerms;
01114 
01119         int m_iQuadraticTermNumber;
01120 
01124     double *m_mdConstraintFunctionValues;
01125     
01129     double *m_mdObjectiveFunctionValues;
01130 
01134         int m_iJacValueSize;
01135     
01139         int *m_miJacStart;
01140         
01144         int *m_miJacIndex;
01145         
01149         double *m_mdJacValue;
01150         
01151         
01156         int *m_miJacNumConTerms;
01157  
01161         SparseJacobianMatrix *m_sparseJacMatrix;
01162         
01167          int m_iHighestTaylorCoeffOrder;
01168         
01173          QuadraticTerms* m_quadraticTerms;
01174          
01177          bool m_bQTermsAdded;
01178          
01183         unsigned int m_iNumberOfNonlinearVariables;
01184          
01188         bool m_bProcessNonlinearExpressions;
01189         
01193         int m_iNonlinearExpressionNumber;
01194 
01199         int* m_miNonlinearExpressionIndexes;
01200         
01204         bool m_bProcessExpressionTrees;
01205         
01209         bool m_bProcessExpressionTreesMod;
01210         
01215         std::map<int, OSExpressionTree*> m_mapExpressionTrees ;
01216         
01217         
01218         
01219         std::map<int, int> m_mapOSADFunRangeIndex ;
01220         
01225         OSExpressionTree *m_LagrangianExpTree ;
01226         
01230         bool m_bLagrangianExpTreeCreated ;
01231         
01235         SparseHessianMatrix* m_LagrangianSparseHessian;
01236         
01241         bool m_bLagrangianSparseHessianCreated;
01242         
01246          std::map<int, int> m_mapAllNonlinearVariablesIndex;
01247 
01251         int *m_miNonLinearVarsReverseMap;
01252          
01257          bool m_bAllNonlinearVariablesIndex;
01258         
01265         std::map<int, OSExpressionTree*> m_mapExpressionTreesMod ;
01266         
01271          bool m_bOSADFunIsCreated;
01272         
01277         bool m_bCppADTapesBuilt;
01278         
01283         bool m_bCppADMustReTape;
01284         
01288         bool m_bDuplicateExpressionTreesMap;
01289         
01293         bool m_bNonLinearStructuresInitialized;
01294 
01298         bool m_bSparseJacobianCalculated;
01299         
01304         std::map<int, std::vector<OSnLNode*> > m_mapExpressionTreesInPostfix ;
01305          
01306         
01311          int m_iHighestOrderEvaluated;
01312          
01317         double **m_mmdObjGradient;
01318         
01319         //define the vectors    
01320 
01325         std::vector<double> m_vdX;
01326         
01331         std::vector<double> m_vdYval;
01332         
01338         std::vector<bool> m_vbLagHessNonz;
01339         
01344         std::vector<double> m_vdYjacval;
01345 
01350         std::vector<double> m_vdw;
01351         
01356         std::vector<double> m_vdLambda;
01357         
01358         
01363         std::vector<double> m_vdDomainUnitVec;
01364         
01369         std::vector<double> m_vdRangeUnitVec;
01370         
01371 
01375         bool m_bProcessTimeDomain;
01376 
01380         bool m_bProcessTimeStages;
01381 
01385         bool m_bProcessTimeInterval;
01386 
01390         bool m_bFiniteTimeStages;
01391 
01395         int m_iNumberOfTimeStages;
01396 
01400         std::string m_sTimeDomainFormat;
01401 
01406         std::string* m_msTimeDomainStageNames;
01407 
01412         int* m_miTimeDomainStageVariableNumber;
01413 
01418         int** m_mmiTimeDomainStageVarList;
01419 
01424         int* m_miTimeDomainStageConstraintNumber;
01425 
01430         int** m_mmiTimeDomainStageConList;
01431 
01436         int* m_miTimeDomainStageObjectiveNumber;
01437 
01442         int** m_mmiTimeDomainStageObjList;
01443 
01444 
01451         bool processVariables() ;
01452         
01459         bool processObjectives();
01460         
01461         
01468         bool processConstraints();
01469         
01470         
01477         bool processLinearConstraintCoefficients();
01478         
01479         
01480 public:
01481 
01486         std::string getInstanceName();
01487                 
01488 
01493         std::string getInstanceSource();
01494         
01495         
01501         std::string getInstanceDescription();
01502         
01508         int getVariableNumber();
01509         
01516         std::string* getVariableNames();
01517         
01525         //double* getVariableInitialValues();
01526         
01534         //std::string* getVariableInitialStringValues();
01535         
01547         char* getVariableTypes();
01548         
01553         int getNumberOfIntegerVariables();
01554         
01559         int getNumberOfBinaryVariables();
01560         
01565         int getNumberOfSemiContinuousVariables();
01566         
01571         int getNumberOfSemiIntegerVariables();
01572         
01577         int getNumberOfStringVariables();
01578         
01585         double* getVariableLowerBounds();
01586         
01593         double* getVariableUpperBounds();
01594         
01600         int getObjectiveNumber();
01601         
01602         
01609         std::string* getObjectiveNames();
01610 
01617         std::string* getObjectiveMaxOrMins();
01618         
01627         int* getObjectiveCoefficientNumbers();
01628         
01635         double* getObjectiveConstants();
01636         
01643         double* getObjectiveWeights();
01644         
01655         SparseVector** getObjectiveCoefficients();
01656         
01663         double** getDenseObjectiveCoefficients();
01664         
01670         int getConstraintNumber();
01671         
01678         std::string* getConstraintNames();
01679         
01686         double* getConstraintLowerBounds();
01687         
01694         double *getConstraintUpperBounds();
01695         
01708         char* getConstraintTypes();
01709         
01715         int getLinearConstraintCoefficientNumber();
01716         
01717 
01724         bool getLinearConstraintCoefficientMajor();
01725         
01726         
01733         SparseMatrix* getLinearConstraintCoefficientsInColumnMajor();
01734         
01741         SparseMatrix* getLinearConstraintCoefficientsInRowMajor();
01742         
01748         int getNumberOfQuadraticTerms();
01749         
01758         QuadraticTerms* getQuadraticTerms();
01759         
01767         int* getQuadraticRowIndexes();
01768         
01774         int getNumberOfQuadraticRowIndexes();
01775         
01781         int getNumberOfNonlinearExpressions();
01782         
01783         
01789         OSExpressionTree* getNonlinearExpressionTree(int rowIdx);
01790         
01797         OSExpressionTree* getNonlinearExpressionTreeMod(int rowIdx);
01798         
01805         std::vector<OSnLNode*> getNonlinearExpressionTreeInPostfix( int rowIdx); 
01806         
01814         std::vector<OSnLNode*> getNonlinearExpressionTreeModInPostfix( int rowIdx);  
01815         
01822         std::vector<OSnLNode*> getNonlinearExpressionTreeInPrefix( int rowIdx); 
01823         
01831         std::string getNonlinearExpressionTreeInInfix( int rowIdx);  
01832         
01833         
01838         std::string printModel( ); 
01839         
01840         
01848         std::string printModel( int rowIdx); 
01849         
01857         std::vector<OSnLNode*> getNonlinearExpressionTreeModInPrefix( int rowIdx);      
01858 
01859         
01863         int getNumberOfNonlinearObjectives();
01864 
01868         int getNumberOfNonlinearConstraints();
01869         
01873         std::map<int, OSExpressionTree* > getAllNonlinearExpressionTrees();
01874         
01875         
01879         std::map<int, OSExpressionTree* > getAllNonlinearExpressionTreesMod();
01880         
01886         int* getNonlinearExpressionTreeIndexes(); 
01887         
01888         
01894         int getNumberOfNonlinearExpressionTreeIndexes(); 
01895         
01896         
01903         int* getNonlinearExpressionTreeModIndexes(); 
01904         
01905         
01912         int getNumberOfNonlinearExpressionTreeModIndexes(); 
01913         
01914         
01920         std::string getTimeDomainFormat(); 
01921         
01927         int getTimeDomainStageNumber(); 
01928         
01934         std::string* getTimeDomainStageNames(); 
01935         
01941         int* getTimeDomainStageNumberOfVariables(); 
01942         
01948         int* getTimeDomainStageNumberOfConstraints(); 
01949         
01955         int* getTimeDomainStageNumberOfObjectives(); 
01956         
01962         int** getTimeDomainStageVarList(); 
01963         
01969         int** getTimeDomainStageConList(); 
01970         
01976         int** getTimeDomainStageObjList(); 
01977 
01983         double getTimeDomainIntervalStart(); 
01984 
01990         double getTimeDomainIntervalHorizon(); 
01991         
01992         
01993         
01994         // the set() methods
01995         
01996         
02003         bool setInstanceSource(std::string source);
02004         
02011         bool setInstanceDescription(std::string description);
02012         
02013                                         
02020         bool setInstanceName(std::string name);
02021         
02028         bool setVariableNumber(int number);
02029         
02047         bool addVariable(int index, std::string name, double lowerBound, double upperBound, char type);
02048         
02067         bool setVariables(int number, std::string* names, double* lowerBounds, 
02068                 double* upperBounds, char* types);
02069 
02076         bool setObjectiveNumber(int number);
02077         
02095         bool addObjective(int index, std::string name, std::string maxOrMin, double constant, double weight, SparseVector* objectiveCoefficients);
02096 
02112         bool setObjectives(int number, std::string *names, std::string *maxOrMins, double *constants, double *weights, SparseVector **objectitiveCoefficients);
02113                                         
02120         bool setConstraintNumber(int number);
02121 
02135 bool addConstraint(int index, std::string name, double lowerBound, double upperBound, double constant);
02136 
02148 bool setConstraints(int number, std::string* names, double* lowerBounds, double* upperBounds, double* constants);
02149 
02168 bool setLinearConstraintCoefficients(int numberOfValues, bool isColumnMajor, 
02169         double* values, int valuesBegin, int valuesEnd, 
02170         int* indexes, int indexesBegin, int indexesEnd,                         
02171         int* starts, int startsBegin, int startsEnd);
02172         
02188         bool setQuadraticTerms(int number, 
02189                 int* rowIndexes, int* varOneIndexes, int* varTwoIndexes, double* coefficients,
02190                 int begin, int end);
02191                 
02205         bool setQuadraticTermsInNonlinearExpressions(int number, 
02206                 int* rowIndexes, int* varOneIndexes, int* varTwoIndexes, double* coefficients);
02207                 
02208                 
02209                 
02210         // nonlinear API methods
02211         
02212         
02218         bool initializeNonLinearStructures( );
02219         
02233         double calculateFunctionValue(int idx, double* x, bool new_x);
02234         
02249         double *calculateAllConstraintFunctionValues(double* x, double *objLambda, double *conLambda,
02250                 bool new_x, int highestOrder);
02251                 
02265         double *calculateAllConstraintFunctionValues(double* x, bool new_x);
02266         
02282         double *calculateAllObjectiveFunctionValues(double* x, double *objLambda, double *conLambda,
02283                 bool new_x, int highestOrder);
02284         
02298         double *calculateAllObjectiveFunctionValues(double* x, bool new_x);     
02299                 
02300         
02315         SparseJacobianMatrix *calculateAllConstraintFunctionGradients(double* x, double *objLambda, 
02316                 double *conLambda, bool new_x, int highestOrder);               
02317                 
02318 
02334         SparseVector *calculateConstraintFunctionGradient(double* x, double *objLambda, double *conLambda,
02335                 int idx, bool new_x, int highestOrder);
02336                 
02350         SparseVector *calculateConstraintFunctionGradient(double* x, int idx, bool new_x );
02351         
02366         double **calculateAllObjectiveFunctionGradients(double* x, double *objLambda, double *conLambda,
02367                 bool new_x, int highestOrder);          
02368 
02384         double *calculateObjectiveFunctionGradient(double* x, double *objLambda, double *conLambda,
02385                 int objIdx, bool new_x, int highestOrder);
02386                 
02399         double *calculateObjectiveFunctionGradient(double* x, int objIdx, bool new_x );
02400 
02418         SparseHessianMatrix *calculateLagrangianHessian( double* x, double *objLambda, double *conLambda,
02419                 bool new_x, int highestOrder);
02420                 
02433         SparseHessianMatrix *calculateHessian( double* x, int idx, bool new_x);
02434         
02435                                 
02440         bool getSparseJacobianFromColumnMajor();
02441         
02446         bool getSparseJacobianFromRowMajor();
02447         
02452         OSExpressionTree* getLagrangianExpTree( );
02453 
02458         std::map<int, int> getAllNonlinearVariablesIndexMap( ); 
02459         
02464         SparseHessianMatrix* getLagrangianHessianSparsityPattern();
02465         
02470         bool addQTermsToExressionTree();
02471         
02476         SparseJacobianMatrix *getJacobianSparsityPattern();
02477         
02482         void duplicateExpressionTreesMap();
02483         
02484 #ifdef COIN_HAS_CPPAD    
02485 
02489         CppAD::ADFun<double> *Fad;
02490 #endif
02491 
02502         bool createOSADFun(std::vector<double> vdX );
02503         
02514         std::vector<double> forwardAD(int p, std::vector<double> vdX);
02515 
02526         std::vector<double> reverseAD(int p, std::vector<double> vdlambda);
02527          
02540         int  getADSparsityHessian();
02541          
02561         bool getIterateResults(double *x, double *objLambda, double *conLambda,  
02562                         bool new_x, int highestOrder);
02563                         
02564                         
02565                         
02578         bool getZeroOrderResults(double *x, double *objLambda, double *conLambda);
02579                         
02592         bool getFirstOrderResults(double *x, double *objLambda, double *conLambda );
02593                         
02606         bool getSecondOrderResults(double *x, double *objLambda, double *conLambda );
02607                         
02608 
02618         bool initForAlgDiff();
02619         
02629         bool initObjGradients();
02630 
02631 
02636         bool bUseExpTreeForFunEval;
02637         
02638         
02642         bool setTimeDomain(std::string format);
02643         
02647         bool setTimeDomainStages(int number, std::string *names);
02648 
02654         bool setTimeDomainStageVariablesOrdered(int numberOfStages, int *numberOfVariables, int *startIdx);
02655 
02661         bool setTimeDomainStageVariablesUnordered(int numberOfStages, int *numberOfVariables, int **varIndex);
02662 
02668         bool setTimeDomainStageConstraintsOrdered(int numberOfStages, int *numberOfConstraints, int *startIdx);
02669 
02675         bool setTimeDomainStageConstraintsUnordered(int numberOfStages, int *numberOfConstraints, int **conIndex);
02676 
02682         bool setTimeDomainStageObjectivesOrdered(int numberOfStages, int *numberOfObjectives, int *startIdx);
02683 
02689         bool setTimeDomainStageObjectivesUnordered(int numberOfStages, int *numberOfObjectives, int **varIndex);
02690 
02694         bool setTimeDomainInterval(double start, double horizon);
02695 
02696 
02697 }; //class OSInstance
02698 
02699 #endif
02700 

Generated on Wed Mar 23 03:05:46 2011 by  doxygen 1.4.7