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

Generated on Wed Sep 21 2011 13:46:53 for ECF by  doxygen 1.7.1