Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

lp9.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 //
00003 //  Thomas Berger (main author), Pepijn Schreinemachers, and Thorsten Arnold
00004 //
00005 //
00006 //  Hohenheim University (490d)
00007 //  Professorship for Land Use Economics in the Tropics and Subtropics
00008 //
00009 //  May not be distributed without permission by main author
00010 //
00011 //  File:       ???.h (formerly lp9.h)
00012 //
00013 //  Contents:   "Old" LP-Solver class, use compiler flag LP_OLD
00014 //
00015 //
00016 //
00017 //------------------------------------------------------------------------------
00018 
00019 
00020 
00021 #ifdef LP_OLD
00022 
00023 #ifndef _lp9_h
00024 #define _lp9_h
00025 #include "MatrixDouble.h"
00026 #include "FinancialMathFunctions.h"
00027 #include "simplx9.h"
00028 #include "BasicDefines.h"
00029 
00030 #include "ekk_c_api.h"
00031 
00032 //#define EPS 1.0e-6 //neu 2003 OSL seems to work with 1.0e-7 (see "ekk_c_api.h")
00033 #define MAXITERATIONEN 400
00034 #define ITER2 3
00035 #define ITER1 4
00036 #define NR 2
00037 
00038 //auxiliary class for specially ordered set
00039 class sos
00040 {  protected:
00041    FILE* file;
00042    int numm;        //number of members in set
00043    int type;        //type (-1 in case of integer set)
00044    int prio;        //priority
00045    int* col_p;      //column indices
00046    double* dpco_p;  //down pseudocosts
00047    double* rrow_p;  //reference row  (or up-pseudocosts in case of integer set)
00048 
00049    public:
00050    sos();
00051    virtual ~sos()
00052    {  delete [] col_p;
00053       delete [] dpco_p;
00054       delete [] rrow_p;
00055    }
00056 
00057    virtual void readInfoFromFile(FILE*);
00058    virtual void writeInfoToFile(FILE*);
00059    virtual int getType();
00060    virtual int getPriority();
00061    virtual int getNumber();
00062    virtual int* getColumns();
00063    virtual double* getPCost();
00064    virtual double* getRRow();
00065 };
00066 
00067 //neu 2004 column indices for performance indicators
00068 typedef struct
00069 {       int numA; //number of activities
00070         int col0; //first column index
00071 } infoPerf;
00072 
00073 
00074 //neu 2004 MILP fine-tuning parameters
00075 typedef struct
00076 {       int    rowLP;  //row (=constraint) index
00077         int    colLP;  //column (=activity) index
00078    double origV;  //original fine-tuned parameter
00079    double consV;        //parameter for consumption mode
00080 } infoFine;
00081 
00082 
00083 //neu 2004 TSPC model auxiliary structures -------------------------------------
00084 typedef struct
00085 {  //data per cropping activity
00086    int colLP;  //activity column in LP
00087    int colOp;  //output column in LP ("Preisertragsspalte")
00088    int typCr;  //type of crop (seasonal=0; annual=1; permanent=2)
00089    int roYLD;  //grain yield row in LP
00090    int roYSM;  //stover energy row in LP
00091 
00092 } infoTSPC;
00093 
00094 
00095 typedef struct
00096 {  int colStv;    //'stover fed to livestock' column in LP
00097 } infoResi;
00098 
00099 
00100 //------------------------------------------------------------------------------
00101 
00102 
00103 
00104 
00105 //Auxiliary structure and class for LP tableau
00106 typedef struct
00107 {  int brows;     //start rows of block
00108    int bcols;     //start column of block
00109    MatrixDouble bzrow;  //block z-row
00110    MatrixDouble bmat;   //block MatrixDouble
00111 } matblock;
00112 
00113 
00114 class tableau
00115 {  protected:
00116    int numblx;       //Number of MatrixDouble blocks
00117    int trans;        //transposed (yes/no)
00118    matblock** matblx;//Pointer to MatrixDouble block pointers
00119    MatrixDouble infoblx;   //Matrix containing info for each block
00120 
00121    public:
00122    tableau();
00123    virtual ~tableau()
00124    {  deallocateTableau();
00125    }
00126 
00127    virtual void printToScreen();
00128    virtual void allocateTableau(int, int);
00129    virtual void readTableauFromFile(FILE* strm,
00130          MatrixDouble& zrx, MatrixDouble& mtx, int nrows, int ncols);
00131    virtual void writeTableauIntoFile(FILE* strm,
00132          const MatrixDouble& zrx, const MatrixDouble& mtx);
00133 
00134    virtual void allocateBlock(int, int, int);
00135    virtual void readBlockFromFile(int, FILE*);
00136    virtual void writeBlockIntoFile(int, FILE*);
00137 
00138    virtual int getNumBlocks();
00139    virtual int getIfTrans();
00140    virtual void writeInfoblxInFile(FILE* strm);
00141 
00142    virtual void copyBlockIntoZRow(int bn, MatrixDouble& zrx, int zrxc);
00143    virtual void copyBlockIntoMatrix(int bn, MatrixDouble& mtx, int mtxr, int mtxc);
00144 
00145    virtual void copyZRowIntoBlock(int bn, const MatrixDouble& zrx, int zrxc);
00146    virtual void copyMatrixIntoBlock(int bn, const MatrixDouble& mtx, int mtxr, int mtxc);
00147 
00148    virtual void deallocateTableau();
00149    virtual void deallocateBlock(int);
00150 
00151 };
00152 
00153 
00154 
00155 //neu 2004
00156 class mpPrbl
00157 {  protected:
00158    FILE* datStrm;//lpdatei;        //Zeiger auf einen Datenstrom
00159    char  datName[MXLENGTH];
00160 
00161    //basic LP info
00162    //  --> (SHOULD NOT BE ACCESSED DIRECTLY, BUT ONLY VIA get-Functions!) 
00163    int ncols;      //number of columns
00164    int nrows;      //number of rows
00165    int nncols;     //number of nonzero columns
00166    int nnrows;     //number of nonzero rows
00167    double pfill;   //percentage of MatrixDouble filled with nonzero values
00168 
00169    
00170    int capLab;     //row index labor capacity
00171    int capLiq;     //row index liquidity capacity
00172    int* capInv;    //row indices for investments in different soil classes
00173 
00174    int capLnd;      //Zeilennr. der ersten Bodenkapazitaet
00175    int capWat;      //Zeilennr. der ersten Wasserkapazitaet
00176    int capCsh;      //Zeilennr. durchs. Kapitalbedarf
00177    int capAvl;     //Zeilennr. durchs. Arbeitsbedarf
00178    int capMac;      //Zeilennr. durchs. Maschinenbedarf der Dauerkulturen
00179    //int capFM1;            //Zeilennr. durchs. Bedarf an tierischer Zugkraft (M1) ##
00180    int actSvg;     //Savings activity (LP column)
00181    int actExt;      //Extra consumption activity (LP column)
00182 
00183    int anzahlK;  //Anzahl der betriebsunabhaengigen LP-Kapazitaeten
00184 
00185         double** ap;     //NR-Ausgangsmatrix
00186    double** bp;  //NR-Betriebsmatrix
00187    tableau tabMILP;//MILP-Tableau
00188    
00189    MatrixDouble tmp_LP;  //hier werden die Informationen aus LP.DAT reingeschrieben
00190    // Dimensions: (nrows, ncols);
00191 
00192    MatrixDouble erste_zeile;// Vector with obective function coefficients (OFC)
00193    //(die Produktpreise werden spaeter durch die
00194         //Preiserwartungen ersetzt, die restlichen Zielfunktionswerte (i.d.R.
00195         //Spezialkosten) bleiben unveraendert)
00196    // dimensions:   (1, ncols)
00197 
00198    int cshSpans;     //number of cash spans
00199    int labSpans;     //number of labor spans
00200 
00201         int  fixLabor;          //fix binary labor (yes/no)
00202    int  actFemaY;    //activity index for female adult labor (yes)
00203    int  actFemaN;    //activity index for female adult labor (no)
00204    int  actMaleY;    //activity index for male adult labor (yes)
00205    int  actMaleN;    //activity index for male adult labor (no)
00206 
00207    int  disBinC;     //column index of binary disinvestment activity
00208    int  disBinR;     //row index of first asset in binary disinvestment activity
00209         int  ntrDmdR;           //row index of first food nutrient demand
00210    int  numFixV;     //number of variables to be fixed in consumption model
00211         int* fixCols;           //column indices of fixed variable in consumption model
00212 
00213 
00214         infoPerf cashOnf;//info on cash on-farm (=short-term credit)
00215         infoPerf cashOff;//info on cash off-farm (=short-term deposit)
00216         infoPerf tLabOnf;//info on hiring in temporary labor
00217         infoPerf tLabOff;//info on hiring out temporary labor
00218         infoPerf pLabOnf;//info on hiring in permanent labor
00219         infoPerf pLabOff;//info on hiring out permanent labor
00220 
00221    int  numFine;     //number of fine-tuning parameters
00222    infoFine* actFine;//pointer to MILP fine-tuning information
00223 
00224    infoTSPC** actTSPC;//pointer to crop information used in TSPC model
00225    // dimensions: (soilsp->getNumCropA() X soilsp->getNumCropA())
00226       
00227    infoResi* actResi;//  "     "  stover      "      "      "
00228    int       colManu;//manure accounting column in LP
00229 
00230 
00231         //additonal information on bounds of columns
00232    MatrixDouble uppColA;
00233    // dimensions:              (1, ncols)
00234    MatrixDouble lowColA;
00235    // dimensions:  (1, ncols)
00236    MatrixDouble uppColB;
00237    // dimensions: (1, ncols)
00238    MatrixDouble lowColB;
00239    // dimensions: (1, ncols)
00240 
00241    //Pointers to OSL context and model. Environment is created in
00242    //zeiger_initialisieren() and deleted in gesamten_speicher_freigeben(). Model
00243    //is created and deleted in betrieb::solveLpOSL()
00244    EKKContext* env;
00245    EKKModel* model;
00246 
00247 
00248    double* dels_p;// Matrix elements
00249    //int tnel: number of MatrixDouble elements (mps-Style)
00250    //dimensions: (1 X tnel + OFFSET
00251 
00252    int* mrow_p   ;// Row indices
00253    //dimensions: (1 X  tnel + OFFSET
00254    int* mcol_p   ;// Column indices
00255    //dimensions: (1 X  tnel + OFFSET
00256    double* drlo_p;// Lower bounds on row activities
00257     //dimensions: (1 X   [nrows + OFFSET]
00258    double* drup_p;// Upper bounds on row activities
00259    //dimensions: (1 X nrows + OFFSET
00260    double* dclo_p;// Lower bounds on columns
00261    //dimensions: (1 X  [ncols + OFFSET]
00262    double* dcup_p;// Upper bounds on columns
00263    //dimensions: (1 X   [ncols + OFFSET]
00264    double* dobj_p;// Objective function coefficients
00265     //dimensions: (1 X   [ncols + OFFSET]
00266 
00267    int tnel;            // Total number of MatrixDouble elements
00268    int nzel;      // Number of non-zero MatrixDouble elements
00269    int* vtyp_p   ;// Type of decision variable, 1 if integer, otherwise 0
00270    //dimensions: (1 X [ncols + OFFSET])
00271    int* etyp_p   ;// Type of equation (LE = 1, GE = 2, EE = 3)
00272    //dimensions: (1 X [nrows + OFFSET]
00273    double* rng_p ;// Range values on the RHS
00274    //dimensions: (1 X [nrows + OFFSET]
00275 
00276    int imark;     // Flag if ekk_markAsInteger() must be called
00277    int nint;      // Number of integer sets
00278    sos* is_p;     // Pointer to integer sets
00279    int nsos;      // Number of specially ordered sets
00280    sos* sos_p;    // Pointer to specially ordered sets
00281 
00282         int nudR;      // Number of empty rows to be dropped from model
00283    int* dropR;    // Array of row indices
00284       //dimensions: (1 X nrows + OFFSET
00285 
00286         int nudC;      // Number of empty columns to be dropped from model
00287    int* dropC;    // Array of column indices
00288       //dimensions: (1 X ncols + OFFSET
00289 
00290 
00291 
00292    public:
00293    mpPrbl();
00294    virtual ~mpPrbl()
00295    {  LP_deallokieren9();
00296    }
00297 
00298    //function returning basic LP info
00299    virtual int getNCOLS();   //number of columns
00300    virtual int getNROWS();   //number of rows
00301    virtual int getNNCOLS();  //number of nonzero columns
00302    virtual int getNNROWS();  //number of nonzero rows
00303    virtual double getPerFil();//percentage of MatrixDouble filled with nonzero values
00304 
00305    virtual int getCapLab();    //row index labor capacity
00306    virtual int getCapLiq();    //row index liquidity capacity
00307    virtual int getCapInv(int sclass);//row indices for investments in different soil classes
00308    virtual int getCapLnd();      //row index first land capacity
00309    virtual int getCapWat();      //row index first water capacity
00310    virtual int getCapCsh();      //row index average cash demand
00311    virtual int getCapAvl();    //row index average labor demand
00312    virtual int getCapMac();      //row index average demand for fruit equipment M4
00313    //virtual int getCapFM1();    //row index average demand for fruit equipment M1 ##
00314    virtual int getActSvg();      //Savings activity (LP column)
00315    virtual int getActExt();      //Extra consumption activity (LP column)
00316 
00317    //reading and writing
00318         virtual void LP_readInputFromFile(char*);
00319    virtual void LP_writeInputIntoFile(char* filename);
00320    virtual void LP_matrizen_anlegen();
00321         virtual void sendCostDataToMarketHandler();
00322 
00323         //info on performance indicators
00324    virtual infoPerf getInfocashOnf();
00325    virtual infoPerf getInfocashOff();
00326    virtual infoPerf getInfotLabOnf();
00327    virtual infoPerf getInfotLabOff();
00328    virtual infoPerf getInfopLabOnf();
00329    virtual infoPerf getInfopLabOff();
00330 
00331         //neu 2004 Fine-tuning parameters for MILP
00332    virtual void switchOffFineTune();
00333    virtual void switchOnFineTune();
00334 
00335    //neu 2004 TSPC model
00336    virtual int identCrAcForCol(int colLP, int& aID, int& nru);
00337    virtual int getColLP(int aID, int nru);
00338    virtual int getColOp(int aID, int nru);
00339    virtual int getTypCr(int aID, int nru);
00340    virtual int getRoYld(int aID, int nru);
00341    virtual int getRoYsm(int aID, int nru);
00342    virtual int getColStv(int nru);
00343    virtual int getColMan();
00344    virtual void writeTSPCInfoInFile(char* filename);
00345 
00346         //MILP handling
00347    virtual double getZRowEntry(int);
00348         virtual double getVarRHS(int r);
00349    virtual void setVarRHS(int r, double w);
00350 
00351         virtual double getOgMtxCoeff(int, int);//refers to original matrix ap
00352         virtual void setOgMtxCoeff(int r, int c, double w);//refers to original matrix ap   
00353    virtual double getOgObjCoeff(int c);//refers original matrix ap  
00354    virtual void setOgObjCoeff(int c, double w);//refers original matrix ap  
00355 
00356         virtual double getMtxCoeff(int r, int c);//refers agent matrix bp
00357    virtual void setMtxCoeff(int r, int c, double w);//refers agent matrix bp
00358    virtual double getObjCoeff(int c);//refers agent matrix bp
00359    virtual void setObjCoeff(int c, double w);//refers agent matrix bp
00360 
00361    virtual double getMtxCoeffNR(int r, int c);//"old" NR-style function
00362    virtual void setMtxCoeffNR(int r, int c, double w);//"old" NR-style function
00363    virtual int callSimplxNR(double, int);//"old" NR-style function
00364         virtual void LP_ausschreiben9();
00365    virtual void writeLpMatrixToFileAP(char* filename);
00366         virtual void writeLpMatrixToFileBP(char* filename);//renamed from <LP_datei_schreiben>
00367    virtual void Primal_datei_schreiben(char* filename);
00368    virtual void Schatten_datei_schreiben(char* filename);
00369    virtual void LP_readLpNR(char* filename);
00370    virtual void LP_kopieren9();
00371    virtual void LP_Runden1(void);
00372    virtual void LP_Runden2(void);
00373    virtual void LP_deallokieren9(void);
00374 
00375    //neu 2004 OSL functions
00376    virtual void updateOrigMatrix();//neu 2004
00377    virtual void setColUppOSL(int c, double w);
00378    virtual void copyModelOSL(int aID, int sID, int fstID);
00379         virtual void loadModelOSL(int aID, int sID, int fstID);
00380    virtual void testModelOSL(int aID, int sID, int fstID);
00381    virtual void freeModelOSL();
00382    virtual void rmEmptyOSL(void);
00383    virtual int checkPrimalsOSL(void);
00384         virtual int checkColumnsOSL(void);
00385    virtual void cleanMemoryOSL(void);
00386 
00387    virtual double solveLpOSL(int agID, int scID, int fstID, int savePrim, int saveDual,
00388          l_vektor& bprod, double*& varsLHS, double*& dualRHS, double*& varsRHS,
00389          MatrixDouble& mEntries);
00390 
00391         //attempts to solve Milp, calls solveMilpOSLx if problems show up
00392    virtual double solveMilpOSL(int agID, int scID, int fstID, int savePrim, int saveDual,
00393          int& forSol, l_vektor& bprod, double*& varsLHS, double*& dualRHS,
00394          double*& varsRHS, MatrixDouble& mEntries);
00395 
00396         //with previous call of ekk_eitherSimplex, see sample code EXIMDL.CPP
00397    virtual int solveMilpOSL1(int agID, int scID, int fstID, int savePrim, int saveDual,
00398          l_vektor& bprod, double*& varsLHS, double*& dualRHS, double*& varsRHS);
00399 
00400         //with presolving, see sample code EXMIP.CPP
00401    virtual int solveMilpOSL2(int agID, int scID, int fstID, int savePrim, int saveDual,
00402          l_vektor& bprod, double*& varsLHS, double*& dualRHS, double*& varsRHS);
00403 
00404         //with transformation to 0/1 MIP problem, see sample code EXGMIP.CPP
00405    virtual int solveMilpOSL3(int agID, int scID, int fstID, int savePrim, int saveDual,
00406          l_vektor& bprod, double*& varsLHS, double*& dualRHS, double*& varsRHS);
00407 
00408    virtual double getObjValue();
00409    virtual double getPrintCPU();
00410    virtual void setPrintCPU(double time);
00411    virtual int hasPrblInts();//Q: has Problem marked integer variables?
00412    virtual int hasPrblSets();//Q: has Problem integer or special ordered sets?
00413    virtual double forSolutionOSL(int, int, int,
00414                 l_vektor&, double*&, double*&, double*&, MatrixDouble& mEntries);
00415    virtual double optSolutionOSL(int agID, int scID, int fstID, int savePrim, int saveDual,
00416       double prp, l_vektor& bprod, double*& varsLHS, double*& schattenpreise,
00417       double*& varsRHS);
00418 
00419    //labor and cash and labor spans
00420    virtual int getCshSpans();
00421    virtual int getLabSpans();
00422 
00423    //neu 2004 fixing binary activities for labor force
00424    virtual int fixAdultBin(); //fix adult labor binaries (yes(no)
00425    virtual int getActFemaY();//acitivity index for female adult labor (yes)
00426    virtual int getActFemaN();//acitivity index for female adult labor (no)
00427    virtual int getActMaleY();//acitivity index for male adult labor (yes)
00428    virtual int getActMaleN();//acitivity index for male adult labor (no)
00429 
00430    //neu 2004 consumption model
00431    virtual int getDisBinC();
00432    virtual int getDisBinR();
00433         virtual int getNtrDmdR();
00434 
00435         //modifies Milp tableau before loading OSL model
00436         virtual void changeObjFuncOSL(double*& objF, int oSta, int oEnd);
00437    virtual void fixLaborBinarOSL(double femLab, double malLab);
00438    virtual void fixProducVarsOSL(l_vektor& bprod);
00439    virtual void changeElemMtxOSL(int num, int*& rows, int*& cols, double*& elms);
00440         virtual void setToEEConstrOSL(int rLP, double value);
00441         
00442         //modifies loaded OSL model using ekk_functions
00443    virtual int modifySolVectEKK(int num, int*& cols, double*& values);
00444    virtual int changeObjFuncEKK(double*& objF, int oSta, int oEnd);
00445    virtual int fixProducVarsEKK(l_vektor& bprod);
00446    virtual int changeElemMtxEKK(int num, int*& rows, int*& cols, double*& elms);
00447    virtual int setToEEConstrEKK(int rLP, double value);
00448 
00449    //write LP model to file in Excel style
00450    virtual void writeModelInFile(char* filename);
00451    virtual void writePrimsInFile(char* filename);
00452    virtual void writeDualsInFile(char* filename);
00453 
00454    // Write into stream, with two formats
00455    // ... default: format (XLA)
00456    virtual void writeDualsIntoStream( FILE*  datei);
00457    // ... formatType == true : default format (XLA)
00458    // ... formatType == false:   block format (tsv in row)
00459    virtual void writeDualsIntoStream( FILE*  datei, bool formatType);
00460 
00461    virtual void writePrimsIntoStream( FILE*  datei);
00462    virtual void writePrimsIntoStream( FILE*  datei, bool formatType);
00463 
00464 
00465    //for models with less than 256 columns (including RHS and LHS)
00466    virtual void writeModelIn256Cols(char* filename);
00467    virtual void writePrimsIn256Cols(char* filename);
00468    virtual void writeDualsIn256Cols(char* filename);
00469 
00470    //export OSL model to file in Excel style
00471    virtual void exportOSLToFile(char* filename);
00472 
00473    //special functions only for 'MilpCheck' and 'MilpCvter' applications
00474    virtual void initContext();
00475    virtual void maxModelOSL(int aID, int sID);
00476    virtual void LP_readMilpExl(char* filename);
00477    virtual void LP_readMilpText(char* filename);
00478 
00479    virtual void copyVarsRHS(double*& varsRHS);
00480    virtual void saveMilpMPS(char* filename);
00481    virtual void LP_readMilpMPS(char* filename);
00482 
00483    //some functions for debugging
00484    virtual void cleanArraysForMilp(double dval, int ival);
00485         virtual void cleanMatrixForMilp(double dval, int ival);
00486    virtual void checkArraysForMILP(double dval, int ival);
00487    virtual int  checkVectorForMilp(double*& array, int size, int start, double dval);
00488    virtual int  checkVectorForMilp(int*& array, int size, int start, int ival);
00489    virtual void writeArraysInFiles(char* prefix);
00490 
00491 
00492         //write changes of MILP values into file
00493    virtual void writeUpElemsInFile(int aID, int sID);
00494    virtual void writeUpCoeffInFile(int r, int c, double d);
00495    virtual void writeUpRowupInFile(int r, double d);
00496    virtual void writeUpRowloInFile(int r, double d);
00497    virtual void writeUpColupInFile(int c, double d);
00498    virtual void writeUpColloInFile(int c, double d);
00499    virtual void writeUpObjFcInFile(int c, double d);
00500    virtual void writeUpRhsVcInFile(int r, double d);
00501    virtual void writeUpSolVcInFile(int c, double d);
00502    virtual void closeUpElemsStream();
00503 
00504 #ifdef SENSITIVITY
00505 
00506    // In "TestGlobalSesitivity.cpp"
00507    // Updates OFC starting from column firstCol until column (firstCol+vecOFC.cols())
00508    // with content of vector vecOFC
00509 
00510    virtual void print_OFC_toScreen();
00511    virtual void print_OFC_toScreen(int maxCol);
00512 
00513    virtual void updateOFC(int firstCol, MatrixDouble& vecOFC, int startColPrices);
00514    // As above, but uses row <row> of a MatrixDouble
00515    virtual void updateOFC(int firstCol, MatrixDouble& vecOFC, int startColPrices, int row);
00516 
00517    // Copies solution vector into MatrixDouble "solutionVector"
00518    // and returns Objective Function Value
00519    virtual double getPrimalSolution(MatrixDouble& solutionVector);
00520    //                                    // row vector // column vector // empty MatrixDouble
00521    virtual void extractMtxIntoMatrix( MatrixDouble& rowMat, MatrixDouble& colMat, MatrixDouble& targetVector);
00522 
00523    virtual void getVectorOfRHS(MatrixDouble& allWaterVect, int FirstWater, int numWater);
00524    virtual void setVectorOfRHS(MatrixDouble& allWaterVect, int FirstWater);
00525    virtual void printVectorOfRHS(int FirstWater, int numWater);
00526 
00527    // Cut MatrixDouble out of LP
00528    virtual void getWaterRequirements(MatrixDouble& waterRequirements,
00529      int firstWater, int numWater,
00530      int firstActivity, int numActivity);
00531 #endif
00532 };
00533 
00534 #endif /*LP_OLD*/
00535 #endif  /* #ifndef _lp9_h */
00536 

Generated on Thu Aug 28 12:38:45 2008 for MPMAS by  doxygen 1.3.9.1