#ifndef FITNESS_H #define FITNESS_H #include #include // cout #include #include using namespace std; // REPRESENTATION //----------------------------------------------------------------------------- // define your individuals class MyIndividual : public EO { public: int operator[](int i) const { return classes[i]; } int& operator[](int i) { return classes[i]; } void resize(int N) { classes.resize(N); } unsigned size() const { return classes.size(); } virtual std::string className() const { return "MyIndividual"; } virtual void printOn(std::ostream& os) const { EO::printOn(os); for (unsigned i=0; i classes; }; // FITNESS FUNCTION // rozdil mezi nejlehci a nejtezsi hromadkou class MyFitness : public eoEvalFunc { public: // nacteme ze souboru seznam vah predmetu // vytvorime prazdne hromadky MyFitness(string _fileName,int _K) : fileName(_fileName), K(_K) { ifstream file (fileName.c_str()); int N; int vaha; file >> N; for (int i=0; i> vaha; predmety.push_back(vaha); } hromadky.resize(K); }; // fitness k hromadkovani virtual void operator() (MyIndividual& ind) { if (ind.invalid()) { vyprazdni(); // vyprazdni hromadky // rozdel predmety do hromadek podle predpisu v jedinci for (unsigned i=0; i max) max = hromadky[i]; } // aktualizuj fitness ind.fitness( (min - max) ); } }; // vyprazdni vsechny hromadky void vyprazdni() { for (unsigned i=0; i predmety; vector hromadky; }; #endif