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

AgentFarmHousehold.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:       AgentFarmHousehold.h (formerly agentF.h)
00012 //
00013 //  Contents:   Header of farm-household class that is derived
00014 //              from the basic class "agent"
00015 //
00016 //
00017 //------------------------------------------------------------------------------
00018 
00019 
00020 #ifndef _AgentFarmHousehold_h
00021 #define _AgentFarmHousehold_h
00022 
00023 #include "Agent.h"
00024 
00025 #ifdef LP_OLD
00026         #include "simplx9.h"
00027 #else
00028         //#include "AgentSolution.h"
00029         //#include "AgentProblem.h"
00030         #include "MipHandler.h"
00031 #endif /*LP_OLD*/
00032 
00033 #include "MatrixDouble.h"
00034 #include "AgentParcelList.h"
00035 #include "AgentHouseholdList.h"
00036 #include "AgentLivestockList.h"
00037 #include "PopulationNetworkSegment.h"
00038 #include "AgentParcelGridCellInterface.h"
00039 #include "TimeHandlerClass.h"
00040 
00041 class IrrigationMethodSector;
00042 
00043 
00044 class agentF : public agent
00045 {       public:
00046         
00047 //------------------------------------------------------------------------------------
00049 
00050         virtual void    setSegPtr(segment*);
00051 
00052         virtual int             getNumberOfParcels();
00053         virtual void    setNumberOfParcels(int);
00054         virtual int             getNumberOfIrrigableParcels();//special treatment for Ghana
00055         virtual int             get_segment();
00056         virtual void    set_segment(int);
00057         virtual int             get_innov();
00058         virtual int             get_erwart();
00059         virtual void    set_erwart(int);
00060         virtual int             getCluNum();
00061         virtual int             getPopNum();
00062         virtual int             getFstID();
00063         virtual int             get_farbe();
00064         virtual void    set_farbe(int clr56);
00065 
00066    virtual int getFirstInflowID();
00067 
00068         virtual double get_b_wert();//Betriebswert
00069         virtual int             getSolvedLP();
00070 
00071         virtual int    get_FamAK();
00072         virtual void   set_FamAK(int);
00073         virtual int    get_FrAK();
00074         virtual void   set_FrAK(int);
00075         virtual double get_EK();
00076         virtual void   set_EK(double);
00077         virtual double get_liq();
00078         virtual void   set_liq(double);
00079         virtual double get_akt();
00080         virtual void   set_akt(double);
00081         virtual double get_FK();
00082         virtual void   set_FK(double);
00083         virtual double get_entfk();
00084         virtual void   set_entfk(double);
00085         virtual double get_werts();
00086         virtual double get_durchsDB();
00087         virtual int    get_migr();//migration decision
00088 
00089         virtual int    checkNumPlots();
00090         virtual int             getNumPlotsInClass(int);
00091         virtual int             getNumPlotsInSoilType(int soilType);
00092         virtual int    get_parzellen(int);//Parameter Typ
00093         virtual void   set_parzellen(int, int);//Parameter Typ, Anzahl
00094         virtual int    get_hof_x();
00095         virtual void   set_hof_x(int);
00096         virtual int    get_hof_y();
00097         virtual void   set_hof_y(int);
00098         virtual void   set_bflaech_verpachtet(int, int);
00099         virtual void   make_bflaech(int c, int r, int typ, int fst, double dst);
00100         virtual int    get_bflaech_anzahl();
00101         virtual void   bflaechen_printOnScreen();
00102         virtual void   bflaech_einfuegen(parzelle*);
00103 
00104         virtual double getEtaOfAgent(){return etaOfAgent;}
00105         virtual double getTotalIrrigationWaterApplied() {return totalIrrigationWaterApplied;};
00106         
00107 //------------------------------------------------------------------------------------
00108 
00113 
00114         virtual int get_sym_obj(int);//Parameter Nr
00115         virtual void set_sym_obj(int, int);//Parameter Nr, Flag
00116         virtual void makeSymObj(int oID);
00117         virtual int lookSymObj(int oID);
00118         virtual void copyCoeffSymObjMILP();
00119         virtual void printSymObjsOnScreen();
00120 
00122         virtual int get_binv_size();
00123         virtual int get_binv_anz_obj();
00124         virtual char* get_binv_acc(int i);
00125         virtual void set_binv_acc(int i, char* chr);
00126         virtual int get_binv_code(int i);//Parameter Row
00127         virtual double get_binv_ask(int i);//Parameter Row
00128         virtual double get_binv_anz(int i);//Parameter Row
00129         virtual int get_binv_age(int i);//Parameter Row
00130         virtual void set_binv_age(int i, int age);//Parameters Row, age
00131         virtual double get_binv_shareEC(int i);//Parameter Row
00132         virtual void set_binv_shareEC(int i, double shr);//Parameters Row, share
00133         virtual double get_binv_rateDC(int i);//Parameter Row
00134         virtual void set_binv_rateDC(int i, double rat);//Parameters Row, rate
00135         virtual void binvest_vergroessern();//erhoeht die Speicherplatzgroesse
00136         virtual void inventarisieren(char* acc, int oID, double pPr, double siz, double ssf, double iDC, int age);
00137         virtual void deinventarisieren(int);// Uebergabe: Inventarnr.
00138         virtual void binvest_ausschreiben();
00139         virtual void binvest_writeToStream(FILE* strm);
00140         virtual int getObjRowForCol(int cLP);//neu 2004 gibt Obj.nr in Invest_matrix
00141         virtual int getObjCodeForCol(int cLP);//neu 2004 gibt Objektcode zurueck
00142         virtual int getObjRowForCode(int code);//neu 2004
00143         virtual int getCapRowForCode(int code);//neu 2004 liefert Kapazitaetsnr.
00144         virtual int get_n_dauer(int code);//neu 2004 ermittelt Nutz.dauer
00145         virtual int getRegRowForCode(int code);//Nr. im Dauerkulturenregister ermitteln
00146 
00148         virtual void checkIfAgentHasInfrastructureProjects();
00149         
00150         //virtual int get_klasse(int code);//substitute ## soil 
00151         virtual int getSoilType(int objID);
00152 
00153         virtual double get_lohn();//ermittelt ausserlandwirtschaftliches Einkommen
00155         virtual nutz get_nutz_info(int);
00156 
00158         virtual void updatePerennialsRegistry();
00159         virtual int makeEntryInPerennialsRegistry(int objID, int colLP);
00160         virtual void computeIndividualObjectCoefficients(int objectID, double sizeHa, int age, int idxPermCrops, double interest);
00161 
00162         virtual void dauerkultur_austragen(int soilType, double sizeHa);//## soil rename function
00163         virtual double get_fruehe_produktionskosten(int);
00164         virtual double getHectaresOfPermanentCropsOnSoilType(int soilType, int);
00165 
00166         /* TODO 2 -oBerger -cImplement : these 3 functions need to be made generic,
00167                 currently they are Chile-specific */
00168         virtual void bflaech_obst_belegen(double, double);//substitute ## soil
00169    // ... Additional string passed for error messages   
00170         virtual void blockParcelsWithPermanentCrops(int soilType, double existingHa, double deltaHa, string outputStr);
00171 
00172 
00173         virtual void bflaech_forst_belegen(double, double);//substitute ## soil
00174         virtual void forst_zaehlen();//zaehlt Parzellen der Bodenklasse "Forst" //substitute ## soil
00175 
00176 //------------------------------------------------------------------------------------
00177 
00182 
00183         virtual void makePriceExpectation(); 
00184         virtual void makeWaterSupplyExpectationYearly();
00185         virtual void makeWaterSupplyExpectationInMonth(int m);
00186         virtual void makeWaterDemandExpectationYearly();
00187 //Arnold2008_0812 NOT SUITABLE FOR DYNAMIC PRECIPITATIOM
00188 // --> naivly set to last-year's precipitation
00189 //  ... (or, if the time continuum is broken, then to real precipitation -- which is
00190 //  ...  unknown, even if river flows are rather well known! )
00191         virtual void makeWaterDemandExpectationInMonth(int m);
00192         virtual void makeYieldExpectationsForCropWat();
00193         virtual void initializeYieldExpectationsForCropWat();
00194 
00195 
00196 //Arnold2008_0812 NOT TESTED
00197    virtual void estimateEffectivePrecipitationForFullYear(TimeHandler& th_notChanged,    MatrixDouble& vectorPrecipitation,    MatrixDouble& agentsEffectivePrecipitation );
00198 //Arnold2008_0812 NOT TESTED         
00199    virtual void copyEffectivePrecipitationInMonth(int m, const MatrixDouble& vectorOfMonthlyCropEffectivePrecipitation, MatrixDouble& agentsEffectivePrecipitation);
00200 
00201 /* FOR REFERENCE ONLY (see bellow declaration!)
00202         //CHECK: yield expectations
00203         MatrixDouble expCropWaterYields;
00204         //CHECK: actual yields
00205         MatrixDouble actCropWaterYields;
00206 
00207         //CHECK: expected irrigation water demands
00208         MatrixDouble expCropWaterIrrDmds;  // DIMENSION: numActivities X numMonths
00209 */
00210 
00211 
00212         virtual void makeYieldExpectationsForTspc();//renamed from <makeYieldExpect>
00213         virtual void initializeYieldExpectationsForTspc();//renamed from <initYieldExpect>
00214         virtual void initPlotsInNRUs();
00215         
00217         virtual int pacht_ueberlegen(); //Ueberlegungen ueber Pacht/Zupacht
00218         virtual double hole_q_B(int);//liefert Boden-Schattenpreis
00219         virtual double hole_q_W(int);//liefert Wasser-Schattenpreis
00220         virtual double hole_volB(int);//liefert erwartetetes Brutto-Water
00221         virtual void forderung_speichern(int, p_gebot* f);
00222         virtual void forderung_holen(int typ, p_gebot* f);
00223         virtual void forderung_loeschen(int typ);//loescht eine gespeicherte Forderung
00224         virtual void matrix_forderung_loeschen();
00225         virtual double get_zus_TK();
00226         virtual void set_zus_TK(double);
00227 
00228 //------------------------------------------------------------------------------------
00229 
00234 
00235         virtual double investPlanOSL();
00236         virtual double producPlanOSL();
00237         virtual double consumPlanOSL();
00238         
00240         // ... functions to avoid LP_OLD branching 
00241    virtual int getNNrowsInternal();
00242         virtual int getNNcolsInternal();
00243         virtual int getNumColsInternal();
00244    virtual double getActualTotalGrossMargin();
00245 
00246 
00247         virtual void inv_leistungen();  //traegt die Leistungen der Investitionsobjekte in die Kapazitaeten ein
00248         virtual void rhs_Runden();//rundet Nachkommastellen
00249 
00250         virtual double get_kapazitaeten(int);
00251         virtual void set_kapazitaeten(int, double);
00252         virtual double get_schattenpreise(int);
00253         virtual void schattenpreise_speichern();
00254         virtual void schattenpreise_wiederherstellen();
00255 
00256         virtual void updateAgentZRow();//formerly 'kapaz9()'
00257         virtual void updateStartPeriodRHS();//formerly 'kapaz9()'
00258         virtual void updateEndOfPeriodRHS();//formerly 'kapaz9()'
00259         virtual void copyInvPCropsRHS();//formerly 'teilb_innovationen()'
00260         
00261         virtual int copyLPdataInvMode(int);//subsitute
00262         virtual int copyLpDataInInvestmentMode(int isIntegerProblem);
00263         
00264         virtual void copyAvailablePermanentCropsInInvestmentMode(int availPCropsIdx);//availPermCrops
00265         virtual void copyExistingPermanentCropsInInvestmentMode(int agentRegistryIdx, int lpCol, int lpRow);//dkult_reg
00266         virtual void copyAllOtherAvailableObjectsInInvestmentMode(int invObjIdx);//investmeth
00267         virtual void copyNewLivestockInInvestmentMode(int invObjIdx);
00268         virtual void copyExistingLivestockInInvestmentMode(int objectID);
00269 
00270         virtual int copyLPdataPrdMode(int);//subsitute
00271         virtual int copyLpDataInProductionMode(int isIntegerProblem);
00272         
00273         virtual void copyExistingPermanentCropsInProductionMode(int agentRegistryIdx, int lpCol, int lpRow);//dkult_reg
00274         virtual void copyExistingLivestockInProductionMode(int objectID);
00275 
00276         virtual void copyExpectedWaterDemandsIntoMILP();
00277         virtual void copyExpectedYieldsOfAnnualCropsIntoMILP();//refactoring of <copyYldExpMILP>
00278         
00279         virtual int copyLPdataConMode(int ipr);
00280         virtual void copyConsCoeff(double hhEgy);
00281         virtual void modifyProductionSolution(int num, int*& cols, double*& values);
00282         virtual void setProductionSolutionColumn(double va, int colLP);
00283 
00284 #ifdef LP_OLD
00285 
00286         virtual double solveLinPrbOSL(int savePrim, int saveDual);
00287         virtual double solveIntPrbOSL(int savePrim, int saveDual, int& forSol);
00288 
00289         virtual void makeNewPrbOSL();
00290         virtual void freeNewPrbOSL();
00291 #else
00292         //some functions that were formerly handeled by "mpPrbl"
00293         virtual void changeObjFunc(double*& objF, int oSta, int oEnd);
00294         virtual void fixLaborBinar(double femLab, double malLab);
00295         virtual void fixProducVars();
00296         virtual void changeElemMtx(int num, int*& rows, int*& cols, double*& elms);
00297         virtual void setToEEConstr(int rLP, double value);      
00298         virtual void switchOffFineTune();
00299         virtual void switchOnFineTune();
00300 
00301         //formerly implemented in class mpPrbl
00302         virtual int identCrAcForCol(int colLP, int& aID, int& nru);
00303 #endif
00304 
00305 //------------------------------------------------------------------------------------
00306 
00310         //virtual void initializeEdicIrrigationModel(void);//Tbe 080220
00311         //virtual void calculateIrrigationSuppyQuantityByCrop(int m);//Tbe 080220
00312         virtual void set_IPGvec(void);
00313         //virtual double computeEtaOnIrrigatedArea(IrrigationMethodSector* sectorPointerToIrrigationMethods);//substitute
00314         virtual double computeAverageOnFieldIrrigationEfficiency(IrrigationMethodSector* sectorPointerToIrrigationMethods);//Tbe 080220
00315 
00316         //virtual double irrigateCropsUsingPriorityGroupsRule(int mTot);//substitute
00317         virtual double irrigateCropsByPriorityGroups(int month);//Tbe 080220
00318 
00319         //virtual void calculateYieldsEdic();//substitute
00320         virtual void computeCropWaterYields();//Tbe 080220
00321 
00322         //virtual void setOutputOfPerennialCropsToZero();//substitute
00323         //virtual void modifyPerennialsEdic();//substitute
00324         virtual void setOutputOfAllCropsToZero();//Tbe 080220
00325 
00326         //virtual void computeYieldAndIncomeAndCostsFromIrrigationActivities(const MatrixDouble& colsForObjs);//substitute
00327         virtual void applyYieldReductionFactorsAndUpdateLpSolution();//Tbe 080220
00328 
00330         virtual double get_N_i(int);
00331         virtual double get_WPa_i(int);
00332         virtual void set_WPa_i(int, double);//Parameters Month, Volumn
00333         virtual void waterrights_eintragen(int, double);//Zufluss-Nr. und Anteil
00334         virtual void hole_durchs_waterrights(w_rechte*);//... je Parzelle 
00335         virtual void waterrights_austragen(w_rechte*);//traegt WaterRights aus
00336         
00338         //virtual void createCropLookupAndResetCropYieldInfo();//substitute
00339         //virtual void compareCropLookupWithCropYieldInfo();//substitute
00340         virtual void createDataForCropWaterModule();//Tbe 080220
00341 
00342         //virtual double calculateIrrigationDemandByIrrigMethod(int month);//substitute 
00343         virtual double aggregateIrrigationWaterDemandsByIrrigationMethod(int month);//Tbe 080220, renamed from <meth_D_berechnen9>
00344 
00345         virtual double receiveNetInflows(int month, int = true);//Flag (save sector values yes/no) //renamed from <N_berechnen>
00346         //      virtual void Extra_berechnen9(int);//vorlaeufig ungenutztes Betriebswasser     //erw. EDIC-Modell
00347         virtual double receivePlantWaterDemandsSatisfied(int month);//renamed from <D_sat_berechnen>
00348    virtual double receivePlantWaterDemandsSatisfied(int month, double Ueb_j_tmp);
00349 
00350 //------------------------------------------------------------------------------------
00351 
00356 
00357         virtual void makePlantYields();//formerly 'ertraege_berechnen()'
00358 
00360         virtual double bodenvermoegen_bestimmen();//auf Grundlage von Schattenpreisen
00361         virtual void computeIncome();//formerly "einkommen_berechnen()"
00362         virtual double computeCashConsumption();
00363         virtual double vermoegen_umschichten(w_rechte*);//liefert Verkaufserloes
00364         virtual int betriebsaufgabe_pruefen(double);//Faktorentlohnung
00365         virtual double abandonAllWaterAndLandResources(w_rechte*);
00366         virtual double abs_tilg_berechnen(double&);//liefert Tilgung zurueck
00367         virtual double computeTransportCosts();
00368         virtual double computeFarmFixCosts();
00369 
00371         virtual void addHHmember(int age, int sex, int head, int career);
00372         virtual void makeHeadOfHH(int sex);
00373         virtual void updateAgeOfMembers();
00374                 
00375         virtual void addUnitLstck(int type, int age);
00376         virtual void updateOffspOfLstck();
00377         virtual void updateAgeOfLstck();
00378 
00379         virtual void updateSalesOfLivestock();
00380         virtual void updateAges();
00381         virtual double updateIdleLsInBinvest(MatrixDouble& lsIdle);
00382         virtual double updateSoldLsInBinvest(MatrixDouble& lsSold);
00383         virtual void incrLiqStartPeriod(double amount);
00384         virtual void incrLiqEndOfPeriod(double amount);
00385         
00386 //------------------------------------------------------------------------------------
00387 
00392 
00393         virtual void writeAgtLandData(FILE* stream0);
00394         virtual void writeAgtWaterData(int m);
00395 
00397         virtual void writeExpectedMarketPriceData(FILE* strm);
00398         virtual void writeExpectedWaterSupplyData(FILE* strm);
00399         virtual void writeExpectedCropWaterData(FILE* strm);
00400 
00401         //Function writes the first lines of the agent - which is needed for every output file to identify agents
00403         virtual void writeAgtIdEntry(FILE* stream);
00404         virtual void writePfmPrdData(FILE* stream0, FILE* stream1);
00405         virtual void writeCapRHSData(FILE* stream);
00406         
00407         virtual void printOnScreenHH();
00408         virtual void printOnScreenWaterRights();
00409         virtual void bnummer_anpassen(int);
00410 
00412         virtual void printOnScreen_crpMixClass();
00413         
00415         virtual void printOnScreen_crpMixClass(int cnt);
00416         virtual void printOnScreen_crpMixWater();
00417         virtual void printOnScreen_crpMixWater(int cnt);
00418 
00419         virtual void printOnScreenProduction();
00420         virtual void writeToFileProduction(ofstream& out);
00421         virtual void printOnScreen_AllInfo(int soilC, int cnt);
00422         virtual void printOnScreen_bflaech(void);
00423         virtual void printSymbolicObjects();
00424 
00425         virtual void printOnScreenLv();
00426         virtual void printOnScreen2();
00427         //Arnold2006_8
00428         virtual void printOnScreenWater();
00429         virtual void printOnScreenCropMatrix();
00430 
00431    //virtual void writeToFileCropMatrix();//substitute
00432         virtual void writeAllCropWaterDataToFile();//Tbe 080220
00433 
00434         //Arnold2006_12
00435         virtual void writeAllParcelsToFile(ofstream& out);
00436         //Arnold2006_62
00437         virtual void writeWaterInfoToFile(ofstream& out);
00438 
00439 //------------------------------------------------------------------------------------
00440 
00445         //returns 0 of no activity within soil class, 1 otherwise
00446         virtual int checkCropsInClass(int i);
00447         //virtual void checkCropsInClass(crpMixClass*& cmClass);
00448         
00449         //Arnold2006_36
00450         virtual void allocateActivitiesInSpace(void);
00451         // For coupling and spatially active runs:
00452         virtual void  allocateSpatiallyIrrigationWaterToCropMixClass(int thisMonth);
00453 
00454         //Arnold2008_08 TO BE ERASED
00455         //virtual void updateParcelToLandscape(Content cont);
00456         //for monthly: takes REAL month
00457         //virtual void updateParcelToLandscape(Content cont, int m);
00458         virtual void updateIrrigWaterCropMixClass2Parcels(int mTot);
00459 
00460    //for monthly: takes REAL month
00461         virtual void copyContent_Water2Parcels(int mTot);
00462    
00463    virtual void copyContent_Landscape2Parcels(Content cont);
00464     virtual void copyContent_Landscape2Parcels(Content cont, bool flag_fixCopyToCell);
00465    virtual void copyContent_Landscape2Parcels_monthly(Content cont, int m);
00466    virtual void copyContent_ParcelToLandscape(Content cont);
00467    virtual void copyContent_ParcelToLandscape_monthly(Content cont, int month);
00468    
00469    // ... for testing
00470    virtual double getMeanOfAllParcels(Content cont);
00471 
00472 
00473         //Arnold2006_45 also clears parcel lists!
00474         virtual void resetAllParcels_toNotUsed(void);
00475 
00476         //Arnold2006_55
00477         // checks if all parcels in crpMixClass are set to "get_hasCrop() == true"
00478         virtual void checkIfTrue(bool isTrue);
00479         virtual void addLanduseToColumnOfMatrix(MatrixDouble& matrixOfCatchmentLandUses, int uaID);
00480 
00481         virtual void checkActivityIDconsistent(int a, string functionName);
00482         virtual double getActivityArea(int a);
00483         
00484 //------------------------------------------------------------------------------------          
00485 
00487 
00488 
00489         investart* investmeth;//Pointer to info on investment goods <invest_matrix>
00490         int* inv_anz_ptr;               //Zeiger auf die Objektanzahl einer Invest_matrix
00491         double* rateLC_ptr;     //Zeiger auf den FK-Zinssatz eines Segments
00492         double* rateSC_ptr;     //Zeiger auf den kurzfristgen FK-Zinssatz eines Segments
00493         double* rateSD_ptr;     //Zeiger auf den EK-Zinssatz eines Segments
00494         double* shareEC_ptr;    //Zeiger auf den Eigenfinanzierungsanteil eines Segments
00495         double* bonus_ptr;      //Zeiger auf direkte Einkommenstransfers fuer ein Segment
00496         double* sunkcost_ptr;//Zeiger auf den Anteil der wiederzugewinnenden Kosten
00497         double* sog_ptr;                //Zeiger auf den "Sogfaktor"
00498         double* opp_ptr;     //neu 2003 Zeiger auf "Opplohn"
00499         MatrixDouble* dkulturen_ptr;//Pointer to matrix <verfuegb_dkulturen> //substitute
00500 
00502 #ifdef LP_OLD
00503         agentF(int agid, int scid, int skid, int ppid, int clid, int nwid, int fstd, int numP, int seg, int erw);
00504 #else
00505 
00506 
00507 
00508         //default copy constructor
00509         //default assignment operator
00511         agentF(int agid, int scid, int skid, int ppid, int clid, int nwid, int fstd, int numP, int seg, int erw, MipHandler* globalProblemHandler_);
00512 #endif /*LP_OLD*/
00513 
00515         virtual ~agentF();
00516         virtual void deallocYieldExp(); 
00518 
00519 //------------------------------------------------------------------------------------          
00520 
00521 #ifndef LP_OLD
00522         private:
00524 
00525         MipHandler* globalProblemHandler;
00526         ProblemDescription* specialMipIndices;
00527         AgentProblem* specificProblem;
00528         AgentSolution investmentSolution;
00529         AgentSolution productionSolution;
00530         AgentSolution consumptionSolution;
00532 
00533 
00534         virtual void upateMipHandlerAgentParam();
00536 #endif /*LP_OLD*/
00537 
00538         protected:
00540 
00541 
00542         int seg_nr;        //Nummer des Betriebssegments (Innovationsfaehigkeit)
00543         int innov;         //Nr. des Innovationskommunikations-Netzwerks (=Betriebsliste)
00544         int erwart;        //Art der Preiserwartungsbildung
00545         int popID;     //population ID
00546         int cluID;     //cluster ID
00547         int fstID;     //farmstead ID in maps
00548         int farbe;     //color of plots in maps (max. 56 colors)
00549 
00550 //------------------------------------------------------------------------------------   
00551 
00555 
00556         int fl_anzahl;
00558         int* parzellen;
00560         coord hofflaeche;
00562         p_liste bflaech;     
00564         ls_list herd;        
00566         hh_list household;   
00567         int famAK_anzahl;
00568         int frAK_anzahl;
00569 
00571         MatrixDouble wr;
00572         // DIMS: (numInflows X 2)
00573         //  col 0: zuf    ID for inflow
00574         //  col 1: anz    quantity
00575 
00577         investdef* binvest;     //Zeiger auf das Inventar-Array
00578         int binv_anz;              //Anzahl der inventarisierten Objekte
00579         int binv_size;             //Speicherplatzgroesse
00580         MatrixDouble dkult_reg; //enum columnsInPermamentCropsRegistry, Matrix (Register) der eigenen Dauerkulturen
00581         segment* segPtr;     //Pointer to segment investment data
00582         int** sym_obj;                  //Pointer to symbolic objects
00583         
00584 //------------------------------------------------------------------------------------
00585 
00590 
00591         double afa;
00592         double aktiva;
00593         double arbeitseinsatz;
00594         double bodenentlohnung;
00595         double cashflow;
00596         double durchsDB;
00597         double eigenkapital;
00598         double einkommen;
00599         double entfernungskosten;//Transportkosten fuer die Eigentumsflaechen
00600         double entnahmen;
00601         double fremdkapital;
00602         double tilgung;
00603    //Arnold2008_0812  Changed from totalIrrigArea, to distinguish from "irrigable" which is different
00604         double totalIrrigatedArea;      //monthly irrigated area, formerly betr_Wert
00605         double kapitaleinsatz;
00606         double shortTermDeposits;
00607         double liqMeans;
00608         double liqMeansPreviousPeriod;
00609         double liqMeansUsedForInvestment;
00610         double equityCapitalPreviousPeriod;
00611         double debtCapitalPreviousPeriod;
00612         double pacht;
00613         double relEntl;
00614         double wertschoepfung;
00615         double zinskosten;
00616         double zusaetzlicheTK;//durch Pachtaktivitaeten entstandene Transportkosten
00617 
00619         double inCashEarn; //Net cash earnings from MILP
00620         double inKindEarn; //Net in-kind earnings from MILP
00621         double apprAssets; //Appreciation of durable assets
00622         double savingOfHH; //Savings of household
00623         double extraConHH; //Extra consumption
00624 
00625 //------------------------------------------------------------------------------------   
00626 
00630         //information on yields of water activities actually selected (uses cropLookup,  cols: Months)
00631         //MatrixDouble cropYieldInfo;//contents of cropYieldInfo defined in enumYieldInfo //substitute
00632         //int lengthCropYieldInfo;// number of watetr activities actually selected //substitute
00633         //int* cropLookup; //substitute
00634 
00636         MatrixDouble cropWaterData;// using <enumYieldInfo>
00637 
00638         //information on water deficits for selected water activities, (effectiveRainfall + irrig)  / Plant Water Demand
00639         //(uses cropLookup,  cols: Months)
00640         //MatrixDouble waterDeficitByActiveCropAndMonth;//substitute
00641         MatrixDouble waterDeficitsOfCropsAsMonthlyKR;//Tbe 080220 selected crops, irrigated and rainfed
00642 
00643         //Matrix of monthly water demands[absolute value]
00644         //MatrixDouble irrWaterDemandGroup;//substitute
00645         MatrixDouble irrigationWaterDemandsPerPriorityGroup;//Tbe 080220
00646 
00647         //Percentage of irrigation water demand that was served
00648         //... in [1/1], from interval [0.0 , 1.0]
00649         MatrixDouble percentageIrrigatedPerPriorityGroup; //Tbe 080220
00650 
00651         // Actual irrigation water given to each HydroActivity
00652         //... total water supplied to an activity, in l/sec times area
00653         MatrixDouble irrigationWaterSuppliedToCrops;//Tbe 080220 (actualHydro x months)
00654 
00655         double etaOfAgent;
00656         double totalIrrigationWaterApplied; // total irrigation water in current month
00657 
00658         //Arnold2006_19
00659         // Making code spatially explicit: LP info related to WASIM
00660         // data structure for crop mix per soil class
00661         // Dimensions: KLASSEN(), which should be an equivalent to NRU in TSPC-Model!
00662         // Info on cropping activities within this class in int* and double*;
00663         // dimension of these vectors is determined by counting
00664         // bprod.umf[lps]>MINUMFANG()
00665         crpMixClass* cropMixAgent;
00666 
00667 //------------------------------------------------------------------------------------
00668 
00672 
00673         double* D_i;            
00675         double* D_sat;          
00676         // expected net  water supply
00677         double* erw_N_i;        
00679         double* N_i;            
00681         double* erw_Ext_i;      
00683         double* Ext_i;
00685         double* WPa_i;
00687         double* S_i;//renamed from <Initial_i>     
00688         
00690         MatrixDouble expCropWaterYields;
00692         MatrixDouble actCropWaterYields;
00693 
00695         MatrixDouble expCropWaterIrrDmds;
00696 
00697 //------------------------------------------------------------------------------------
00698 
00702 
00703         caYld** expYlds;        
00705         caYld** actYlds;
00706 
00707 //------------------------------------------------------------------------------------
00708 
00712         double* erw_preise;                     //expected prices, used to initialize objective fucntion coefficients
00713         double* varsRHS;                                //the agent's ressources (Right Hand Side)
00714         double* varsLHS;                                //used capacities of ressources (Left Hand Side)
00715         double* schattenpreise;         //shadow prices
00716         double* alte_spreise;           //old shadow prices     
00717         MatrixDouble ford_bak;          //Matrix to save minimal asking prices
00718         int lock;                                               //blockiert weitere Investitionen bei Liquiditaetsproblemen
00719         int migr;                                               //migration decision -1 illiquidity -2 voluntary
00720                                                                                 //-3 deceased -4 no labor force -5 no adult labor force
00721         int solvedLP;                                   //forced solution (default 0, inv 1, prd 2, con 3)      
00723         MatrixDouble mEntries;          //MatrixDouble with information for "forced" solution
00724 
00725 #ifdef LP_OLD
00726         l_vektor bprod;//Loesungsvektor (Umfaenge, Zielfunktionskoeff., Zielwert)
00727 #endif
00728 
00730         int numChangedElems;   
00732         int* idxRow;   
00734         int* idxCol;   
00736         double* matEls;
00737 
00738         //}@
00739 //------------------------------------------------------------------------------------
00740 };
00741 
00742 
00743 /* TODO 5 -oBerger -cImplement : this is for later, with more time */
00745 //class PermanentCropsOfAgent 
00746 //{     //auxiliary class, everything public
00747 //public:
00748 //
00749 //      double investmentObjectID;                      //formerly 17 
00750 //      double purchasePrice;                           //formerly 0  
00751 //
00752 //      double currentCropYield;                        //formerly 15
00753 //      double currentVariableCosts;            //formerly 16
00754 //      double currentPreHarvestCosts;  //formerly 3
00755 //
00756 //      double futureCropYield;                         //formerly 1
00757 //      double futureVariableCosts;             //formerly 2
00758 //      double futurePreHarvestCosts;           //formerly 9
00759 //
00760 //      //current labor demands
00761 //      MatrixDouble currentLaborDemands;       //formerly 4, 7, 8
00762 //
00763 //      //future (average) labor demands
00764 //      MatrixDouble futureLaborDemands;                //formerly 10, 13, 14
00765 //
00766 //      //current machinery demands
00767 //      MatrixDouble currentMachineryDemands;//formerly 5, 6
00768 //
00769 //      //future (average) machinery demands
00770 //      MatrixDouble futureMachineryDemands;//formerly 11, 12
00771 //
00772 //      ///constructor
00773 //      PermanentCropsOfAgent()
00774 //      {       investmentObjectID - 1;         
00775 //              purchasePrice = 0.0;                    
00776 //
00777 //              currentCropYield = 0.0;         
00778 //              currentVariableCosts = 0.0;     
00779 //              currentPreHarvestCosts = 0.0;
00780 //
00781 //              futureCropYield = 0.0;                  
00782 //              futureVariableCosts = 0.0;      
00783 //              futurePreHarvestCosts = 0.0;    
00784 //      }
00785 //
00786 //      ///destructor
00787 //      virtual ~PermanentCropsOfAgent()
00788 //      {       currentLaborDemands.deallocate();
00789 //              futureLaborDemands.deallocate();
00790 //              currentMachineryDemands.deallocate();
00791 //              futureMachineryDemands.deallocate();
00792 //      }
00793 //};
00794 //*/
00795 
00796 #endif
00797 

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