ECF 1.5
nodes.h
1// definicija svih funkcija i terminala koji se mogu koristiti
2#ifndef NODES
3#define NODES
4#include<string>
5using namespace std;
6
7const int MAX_JOBS = 200; // najveci broj poslova
8const int MAX_TREES = 3; // zasada :) najvise 3 stabla
9//#define TREES // ako koristimo visestablenu strukturu za jobshop!
10//#define ADAPTATION // ako koristimo prilagodbu operatora i cvorova
11
12// Postupak za dodavanje novog terminala:
13// - definirati konstantu (ovdje)
14// - definirati ime terminala (fitnes.cpp: konstruktor)
15// - omoguciti citanje terminala iz stabla (fitnes.cpp:ReadIndividual)
16const int ONE = 1; // specijalni terminali
17const int NUL = 0;
18const int OFFSET = 2; // pocetak terminala
19// za SINGLE
20const int T_N = OFFSET + 0;
21const int T_SP = OFFSET + 1;
22const int T_SD = OFFSET + 2;
23const int T_pt = OFFSET + 3;
24const int T_dd = OFFSET + 4;
25const int T_SL = OFFSET + 5;
26const int T_w = OFFSET + 6;
27const int T_Nr = OFFSET + 7;
28const int T_SPr = OFFSET + 8;
29const int T_L = OFFSET + 9; // kasnjenje
30const int T_SLr = OFFSET + 10; // prosjecni slack svih preostalih poslova
31const int T_AR = OFFSET + 11; // (ready - clock)_+
32const int T_SC = OFFSET + 12; // koliko sljedbenika
33const int T_LVL = OFFSET + 13; // level of a node
34const int T_STP = OFFSET + 14; // trajanje postavljanja sa prethodnog na promatrani zadatak
35const int T_Sav = OFFSET + 15; // prosjecno trajanje postavljanja sa prethodnog na sve ostale zadatke
36const int T_CLK = OFFSET + 16;
37const int T_TF = OFFSET + 17; // tardines faktor (procjena): 1 - dd_avg/SP
38// UNIFORM
39const int T_SPD = OFFSET + 18; // brzina konkretnog stroja
40const int T_Msm = OFFSET + 19; // suma brzina svih strojeva
41const int T_SLs = OFFSET + 20; // slack koji uzima u obzir brzinu stroja
42// UNRELATED
43const int T_pmin = OFFSET + 21; // najkrace trajanje izvodjenja zadatka (ovisno o stroju)
44const int T_pavg = OFFSET + 22; // srednje trajanje izvodjenja zadatka
45const int T_PAT = OFFSET + 23; // za koliko ce stroj koji daje najmanje trajanje izvodjenja biti slobodan
46const int T_MR = OFFSET + 24; // za koliko ce doticni stroj biti slobodan (machine ready - clock)
47const int T_age = OFFSET + 25; // koliko dugo je posao vec u sustavu (clock - ready)_+
48// JOBSHOP
49// pt - trajanje operacije
50// dd - due date posla
51// w - tezina
52// AR - trajanje do dolaska operacije (idle time)
53// CLK - trenutno vrijeme
54// STP - trajanje postavljanja
55// Sav - prosjecno t. p. sa prethodne na ostale operacije (ovisno o poslu)
56// age - vrijeme proteklo od dolaska posla kojemu operacija pripada
57const int T_NOPr = OFFSET + 26; // ukupni broj preostalih operacija posla
58const int T_TWK = OFFSET + 27; // ukupno trajanje posla
59const int T_TWKr = OFFSET + 28; // preostalo trajanje posla (ukljucujuci i trenutnu operaciju)
60const int T_PTav = OFFSET + 29; // prosjecno trajanje operacija na stroju
61const int T_HTR = OFFSET + 30; // head time ratio - omjer vremena provedenog u sustavu i kolicine prethodnog posla
62 // HTR = age / (suma trajanja obavljenih operacija)
63 // HTR = 1 ako do sada nije bilo obavljenog posla
64// terminali za strojeve
65const int T_MNOPr = OFFSET + 31; // preostali broj operacija na stroju
66const int T_MNOPw = OFFSET + 32; // broj operacija na cekanju
67const int T_MTWK = OFFSET + 33; // ukupno trajanje svih operacija na stroju
68const int T_MTWKr = OFFSET + 34; // trajanje preostalih operacija na stroju
69const int T_MTWKav = OFFSET + 35; // prosjecno trajanje svih operacija za sve strojeve
70const int T_MUTL = OFFSET + 36; // omjer rada i ukupnog vremena do sada
71
72const int T_wc= OFFSET + 37;
73const int T_we= OFFSET + 38;
74
75const int TERMINALS = 39; // broj terminala BEZ pocetna dva (OFFSET)
76const int ADD = 51; // pocetak funkcija
77const int SUB = 52;
78const int MUL = 53;
79const int DIV = 54;
80const int POS = 55; // POS(x) = max{x,0}
81const int SIN = 56;
82const int COS = 57;
83const int EXP = 58;
84const int LOG = 59;
85const int SQR = 60; // SQR(x) = 1 ako x<0
86const int IFGT = 61;
87const int FUNC_START = 51;
88const int FUNC_END = 62;
89const int TOTAL_NODES = FUNC_END; // ukupan broj terminala i funkcija (zapravo velicina polja Nodes)
90
91struct _node
92{ std::string name; // ime terminala
93 double value; // vrijednost - zasada samo za 0 i 1
94 bool active; // jesu li ukljuceni u terminal set
95 unsigned int frequency; // brojac terminala
96};
97typedef struct _node node;
98
99// definicije oznaka fitnes funkcija
100const int FUNCTIONS = 14;
101const int Twt = 0;
102const int Nwt = 1;
103const int FTwt = 2;
104const int ETwt = 3;
105const int Fwt = 4;
106const int Cmax = 5;
107const int TwtCmax = 6;
108const int NwtCmax = 7;
109const int Tmax = 8;
110const int Fmax = 9;
111const int TwtEwt = 10;
112const int Cw = 11;
113const int Mus = 12;
114const int Ewt = 13;
115
116#endif // NODES
Definition: nodes.h:92