• Main Page
  • Modules
  • Classes
  • Files
  • File List

D:/Projekt/ECF_trunk/examples/iprojekt/fitnes.hpp

00001 #ifndef SchedulingEvalOp_h
00002 #define SchedulingEvalOp_h
00003 
00004 #include <string>
00005 #include <vector>
00006 #include "readpar.h"
00007 #include "matrice.h"
00008 #include "rpn.h"
00009 
00010 
00011 class SchedulingEvalOp : public EvaluateOp 
00012 {
00013 public:
00014     SchedulingEvalOp();
00015     FitnessP evaluate(IndividualP individual);
00016     void registerParameters(StateP);
00017     bool initialize(StateP);
00018     ~SchedulingEvalOp();
00019 
00020     StateP state_;
00021 
00022     unsigned int edited,total,nItems;
00023     RPN Evaluator;
00024     void write(std::string &output);
00025     void ReadTerminals(TreeP);
00026     void ReadTerminals(StateP);
00027     void DefineNodeNames(void);
00028     void ReadConstraints(Matrica &Constraints, int set, int jobs, Matrica &Precedence);
00029     void MakeSetup(Matrica &Duration, int set, int jobs, double faktor, Matrica &Setup);
00030     double NodeLevel(int set, int node);
00031     //void StartTerminalStatistic(Beagle::GP::Context& ioContext, double dSubsetSize=0);
00032     //void GetTerminalStatistic(double *pValues);
00033     //void UpdateTerminalStatistic(double &dFitness);
00034     void ReadIndividual(IndividualP individual);
00035     void CalcTimedTerminals(uint &nNiz, uint &nPoslova, uint &nJob, double &dClock, uint nMachine=0, uint nMachines=1);
00036     void EvaluateSingle(double &dRawFitness);
00037     void EvaluateUniform(double &dRawFitness);
00038     void EvaluateUnrelated(double &dRawFitness);
00039     void EvaluateUnrelatedFP(FloatingPointP fp, double &dRawFitness);
00040     void EvaluateJobShop(double &dRawFitness);
00041     int Before(const void *arg1, const void *arg2);
00042     std::string in_file;
00043 
00044 protected:
00045 
00046 enum environment
00047 {   SINGLE,
00048     UNIFORM,
00049     UNRELATED,
00050     JOBSHOP
00051 };
00052 
00053     unsigned int sets,max_jobs,total_jobs,max_machines,max_length;
00054     unsigned int m_fitness; // koja fitnes funkcija? definicije u nodes.h
00055     unsigned int m_genotip; // koji genotip (0 - FP, 1 - GP)
00056     unsigned int m_primjer; // koji ispitni primjer (iz fitness.txt)
00057     unsigned int m_BestSubset;  // koliko najboljih jedinki gledamo za statistiku terminala
00058     unsigned int m_SubsetSize;  // vlastita proracunata velicina (default vrijednost)
00059     unsigned int m_InSubset;        // koliko ih trenutno ima u matrici
00060     unsigned int m_WorstInSubset;   // koji je najlosiji
00061     double m_WorstSubsetFitness;    // fitnes najlosije jedinke u podskupu najboljih
00062     double m_BestSubsetFitness; // treba li komentar?
00063     environment m_Environment;  // okruzenje: single, uniform, unrelated, job shop
00064     unsigned int m_SortSet;     // oznaka skupa za potrebe qsort-a
00065     unsigned int m_PopSize;     // ukupna velicina populacije
00066 
00067     bool m_Normalized;      // je li fitnes normiran brojem i trajanjem poslova
00068     bool m_Evaluation;      // pisanje rezultata za svaki skup u datoteku
00069     bool m_TermUsage;           // prikupljanje statistike koristenja terminala
00070     bool m_editing;         // editiranje?
00071     bool m_LEF;             // limited error fitness (1 ili 0)
00072     double m_LEFVal;            // vrijednost za LEF
00073     bool m_setup;               // postoje li trajanja postavljanja izmedyu poslova
00074     double m_setup_faktor;  // prosjecni odnos izmedju trajanja postavljanja i trajanja posla
00075     bool m_dynamic;         // dinamicka okolina?
00076     bool m_constrained;     // ogranicenja u rasporedu?
00077     bool m_stsampling;      // stochastic sampling?
00078     double m_sampling;      // koliki postotak test skupova se uzima
00079     bool *pSamples;         // koji tocno skupovi idu
00080     bool m_Idleness;            // uzimamo li u obzir i cekanje operacija (job shop)
00081     bool *pRasporedjen;
00082     double *pVrijednosti, *pArray, *pSlack, *pSlackSpeed, *pArrival, *pLevel, *pSetupAvg;
00083     double *pOperationReady, *pJobReady, *pTotalWorkRemaining, *pTotalWorkDone, *pTotalMachineWork;
00084     double *pMachineWorkRemaining, *pMachineValues;
00085     unsigned int *pIndex, *pUsed, *pLastJob, *pPTimeMinMachine, *pMachineScheduled, *pOperationsScheduled;
00086     unsigned int *pOperationsWaiting;
00087     Matrica N,Duration,Deadline,WeightT,WeightF,WeightE,WeightN,Ready,Constraints,Machines,Speed;
00088     Matrica SP,SD,Fitness,Schedule,Precedence,Level,Setup,Terminals,MachineReady,PTimeAvg,PTimeMinMachine;
00089     Matrica SortedReady, Values, Durations, MachineIndex;
00090 };
00091 typedef boost::shared_ptr<SchedulingEvalOp> SchedulingEvalOpP;
00092 
00093 #endif // SchedulingEvalOp_h

Generated on Thu Jul 10 2014 14:13:41 for ECF by  doxygen 1.7.1