00001 #ifndef SchedulingEvalOp_h
00002 #define SchedulingEvalOp_h
00003
00004 #include "matrice.h"
00005
00006 class SchedulingEvalOp : public EvaluateOp
00007 {
00008 public:
00009 FitnessP evaluate(IndividualP individual);
00010 void registerParameters(StateP);
00011 bool initialize(StateP);
00012 ~SchedulingEvalOp();
00013
00014 protected:
00015
00016 enum environment
00017 { SINGLE,
00018 UNIFORM,
00019 UNRELATED,
00020 JOBSHOP
00021 };
00022
00023 unsigned int edited,total,nItems;
00024
00025
00026
00027
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
00032
00033
00034
00035
00036 double EvaluateSingle(TreeP);
00037
00038
00039
00040
00041
00042 protected:
00043 unsigned int sets,max_jobs,total_jobs,max_machines,max_length;
00044 unsigned int m_fitness;
00045 unsigned int m_BestSubset;
00046 unsigned int m_SubsetSize;
00047 unsigned int m_InSubset;
00048 unsigned int m_WorstInSubset;
00049 double m_WorstSubsetFitness;
00050 double m_BestSubsetFitness;
00051 environment m_Environment;
00052 unsigned int m_SortSet;
00053 unsigned int m_PopSize;
00054
00055 bool m_Normalized;
00056 bool m_Evaluation;
00057 bool m_TermUsage;
00058 bool m_editing;
00059 bool m_LEF;
00060 double m_LEFVal;
00061 bool m_setup;
00062 double m_setup_faktor;
00063 bool m_dynamic;
00064 bool m_constrained;
00065 bool m_stsampling;
00066 double m_sampling;
00067 bool *pSamples;
00068 bool m_Idleness;
00069 bool *pRasporedjen;
00070 double *pVrijednosti, *pArray, *pSlack, *pSlackSpeed, *pArrival, *pLevel, *pSetupAvg;
00071 double *pOperationReady, *pJobReady, *pTotalWorkRemaining, *pTotalWorkDone, *pTotalMachineWork;
00072 double *pMachineWorkRemaining, *pMachineValues;
00073 unsigned int *pIndex, *pUsed, *pLastJob, *pPTimeMinMachine, *pMachineScheduled, *pOperationsScheduled;
00074 unsigned int *pOperationsWaiting;
00075 Matrica N,Duration,Deadline,WeightT,WeightF,WeightE,WeightN,Ready,Constraints,Machines,Speed;
00076 Matrica SP,SD,Fitness,Schedule,Precedence,Level,Setup,Terminals,MachineReady,PTimeAvg,PTimeMinMachine;
00077 Matrica SortedReady, Values, Durations, MachineIndex;
00078 std::string in_file;
00079 };
00080 typedef boost::shared_ptr<SchedulingEvalOp> SchedulingEvalOpP;
00081
00082 #endif // SchedulingEvalOp_h