by lightuniverse » 07 May 2010, 21:49
4 opeartorii genetici
Eu am facut in felul urmator:
a.) cei mai buni N indivizi i-am transferat automat in populatia noua pentru a nu pierde solutii bune. (in general am folosit N<=10%)
b.) cei mai buni M indivizi au fost supusi operatiei de incrucisare (fie intre ei astfel generand M indivizi ), (fie fiecare cu individul cel mai bun generand astfel 2xM indivizi )
c.) restul de indivizi au fost supusi operatiei de mutatie (fie regenerati de la 0, fie doar o parte din genele lor au fost regenerate)
Incrucisarea se face in general in 1 sau mai multe puncte.
Pentru încrucişarea într-un singur punct secvenţa cromozomului este împărţită în două iar una
din părţi va fi schimbată cu o parte care aparţine altui cromozom. De exemplu pentru doi cromozomi de forma c1=[ 0 1 1 0 0 0 1 1 1 ] si c2=[ 1 0 0 1 1 0 1 0 1 ], dacă punctul de tăiere este ales după a patra genă a cromozomului atunci cromozomii rezultaţi vor fi: c1n2=[ 0 1 1 0 1 0 1 0 1 ] iar c2n1=[ 1 0 0 1 0 0 1 1 1 ].
Pentru încrucişarea în n puncte cromozomul se împarte în mai multe componente care vor fi
schimbate sau nu cu componente ale celuilalt cromozom. Regula după care cei doi indivizi schimbă componentele între ei poate varia în funcţie de necesităţile problemei care trebuie rezolvate. Dacă considerăm cromozomii din exemplul anterior ( c1=[ 0 1 1 0 0 0 1 1 1 ] si c2=[ 1 0 0 1 1 0 1 0 1 ] ), iar asupra lor se aplicăm încrucişarea după genele trei şi şapte vom obţine următoarele componente: c11=[ 0 1 1 ], c12=[ 0 0 0 1 ], c13=[ 1 1 ] , c21=[ 1 0 0] , c22=[ 1 1 0 1 ], c23=[ 0 1 ] iar o doi posibili noi indivizi pot fi: c2n1n2=[ 1 0 0 0 0 0 1 0 1 ] şi c1n2n1=[ 0 1 1 1 1 0 1 1 1].
Mult succes si daca mai ai intrebari, argumente sau pareri te asteptam sa le imparti cu noi.