17.04.2015 Views

Diplomska naloga (.pdf)

Diplomska naloga (.pdf)

Diplomska naloga (.pdf)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.3 NSGA-II 39<br />

gredo po vrsti najboljši sloji. Sloj, ki zaradi prevelike velikosti prvi v celoti ne more<br />

v novo populacijo, uredimo glede na metriko nakopičenosti. V populacijo dodamo<br />

tiste osebke iz sloja, ki so najmanj nakopičeni. Iz dobljene populacije staršev P t+1<br />

generiramo populacijo potomcev Q t+1 z uporabo tekmovalne selekcije, križanja in<br />

mutacije. Tekmovalna selekcija v našem primeru izmed dveh naključnih staršev<br />

izbere tistega, ki je v sloju z nižjo zaporedno vrednostjo. Če pa starša ležita v<br />

istem sloju, zmaga tisti, ki ima boljšo vrednost metrike nakopičenosti. Tekmovalno<br />

selekcijo ustreznokrat ponovimo in dobljene starše križamo ter mutiramo, enako<br />

kot smo to naredili pri algoritmu za enokriterijsko optimizacijo. Tako dobimo novo<br />

populacijo potomcev Q t+1 , ki jo še ovrednotimo.<br />

Ko želimo osebke urediti po konceptu dominantnosti, moramo vsak osebek primerjati<br />

z vsakim in ugotoviti, v kakšnem razmerju sta posamezna osebka. Psevdokoda<br />

nedominiranega urejanja zgleda sledeče:<br />

nedominirano_urejanje(P)<br />

F = ∅;<br />

n 1,2,...,|P | = 0; //V n p shranimo št. osebkov, ki dominirajo osebek p.<br />

S 1,2,...,|P | = ∅; //V S p shranimo osebke, ki jih osebek p dominira.<br />

for p = 1 to |P |<br />

for q = p to |P |<br />

//Če osebek p dominira osebek q, q shranimo v S p .<br />

if p ≻ q<br />

S p = S p ∪ {q};<br />

n q = n q + 1;<br />

//Če osebek q dominira osebek p, povečamo n p .<br />

else if q ≻ p<br />

n p = n p + 1;<br />

S q = S q ∪ {p};<br />

end;<br />

if n p = 0 //Če noben osebek ne dominira p,<br />

F 1 = F 1 ∪ {p}; //je ta vsebovan v 1. sloju.<br />

end;<br />

k = 1;<br />

while F k ≠ ∅<br />

H = ∅;<br />

for each p ∈ F k<br />

for each q ∈ S p //Vsakemu osebku iz S p<br />

n q = n q − 1; //zmanjšamo št. osebkov, ki dominirajo q, in<br />

if n q = 0 //tiste iz naslednjega sloja damo v pomožni H.<br />

H = H ∪ {q};<br />

end;<br />

end;<br />

k = k + 1;<br />

F k = H; //Določimo naslednji sloj.<br />

end;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!