ECF 1.5
MOFitness.h
1#ifndef MOFitness_h
2#define MOFitness_h
3
4#include "Fitness.h"
5#include <string>
6
7class MOFitness;
8typedef boost::shared_ptr<MOFitness> MOFitnessP;
9
10
11// razred nasljedjuje osnovni Fitness, ali zapravo koristimo vektor Fitness objekata!
12class MOFitness : public Fitness, public std::vector<FitnessP>
13{
14public:
15
16
17 int nc; // domination count, koliko jedinki iz populacije dominira ovom; [0..popSize-1]
18 std::vector<IndividualP> *Sp; // skup rješenja nad kojima dominira
19 int rank; // fronta nedominiranih rjesenja kojoj pripada ova jedinka; [1..popSize]
20 double crowding_distance; // mjera napucenosti prostora rjesenja; manji crowding_distance -> veca napucenost
21
22
23 std::vector<double> convertedFitness;
24 std::vector<double> convertedFitness2;
25
26 // ovo je zapravo 'crowded comparison operator' iz originalnog NSGA-II algoritma
27 // primjenjuje se nakon sto je fitnessima odreden rank i crowding_distance
28 // zato sto prema ta dva parametra usporeduje jedinke
29 bool isBetterThan(FitnessP other);
30
31 // stvori identicnu kopiju (kopiraj i sve fitnese u vektoru)
32 MOFitness* copy();
33
34 // ispis - trenutno ispisuje samo vrijednost prvog Fitness objekta u vektoru
35 void write(XMLNode &xFitness);
36
37 // vraca rank zasad
38 double getValue();
39
40 // fja koja prima int parametar
41 // pa vraca vrijednost i-tog fitnesa
42 double getValueOfObjective(int objective);
43
44 // u stringu je naziv propertya ("objective", "rank" ili "crowding_distance")
45 // u slucaju da prop == "objective" potreban je i argument objective koji specificira vrijednost koje funkcije cilja trazimo
46 double getProperty(std::string prop, int objective);
47
48};
49
50#endif
Fitness base class.
Definition: Fitness.h:16
double getValue()
Return fitness value.
Definition: MOFitness.cpp:54
bool isBetterThan(FitnessP other)
Mandatory comparison operator.
Definition: MOFitness.cpp:5
MOFitness * copy()
object copy (for duplication of an individual)
Definition: MOFitness.cpp:27
void write(XMLNode &xFitness)
Write fitness object to XMLNode.
Definition: MOFitness.cpp:42