Dilema del presoner (GA)

Jugant al dilema del presoner diverses vegades hom es planteja la pregunta: quina és la millor estratègia?
La resposta és complexa i no és única. Com ho podem avaluar? Una manera és posar diversos individus amb diverses estratègies a competir entre ells (ara no hi ha només un jugador i Llucifer, però juguen per parelles). Les millors estratègies (les que guanyen més) es poden reproduir amb més facilitat, i els seus fills n'hereten les propietats - tal i com passa amb la selecció natural de les espècies i la genètica. De tant en tant, apareix una mutació que fa variar els esquemes i introdueix un nou tipus d'adversari que pot ser molt més eficaç que els seus progenitors i descendents.

El següent applet pretén simular aquest joc que acabem de proposar. Aquest cop la màquina juga sola (el que volem saber és quina és la millor estratègia després de molts segles de jugar al joc, molts tipus d'oponents). Observem els següents aspectes:

Memòria  1 jugada   2 jugades   3 jugades 
 Codi genètic tipus  a/bc a/bcde a/bcdefghi
0 (b)
0 (b)
1 (c)
0 (b)
0 (d)
1 (c)
1 (e)
 
0 (f)
0 (d)
1 (g)
1 (c)
0 (h)
1 (e)
1 (i)
                Seguint així, fins a recordar les últimes 5 jugades on tenim 32 possibilitats. L'estructura del codi genètic reflexa la història del joc i la posició dels nombres del codi corresponen a una de les possibilitats de la història. Per exemple si tenim memòria de les tres últimes possibilitats calen descriure el que es farà en 2 elevat a 3 casos (8 casos). El primer cas correspon a que l'oponent ha delatat tres cops seguits. El segon cas l'oponent ha delatat dos cops i a continuació ha cooperat, el tercer cas ha delatat, ha cooperat i ha tornat a delatar. I així successivament, seguint una estructura d'arbre. Descrivint què faríem per cadascuna d'aquestes possibilitats tenim determinat el nostre comportament.

                Exemples:     

  1. Codi genètic del tipus a/bcde-té memòria de 2 jugades i per això calen 2x2=4 caracters (veure la taula anterior)
    La primera opció és a (recordem, a=0 delatar, a=1 cooperar).
    La segona opció és b i correspon al que fem si l'oponent delata els dos últims cops seguits. Si b val 1 vol dir que quan l'oponent fa 2 jugades ha delatat i la jugada anterior ha tornat a delatar, tú cooperes (1 és cooperar  i el que fa el rival ve determinat per la posició al codi genètic).
    La tercera opció és c i correspon al que farem si l'oponent ens delata i a continuació coopera.
    La quarta opció és d i correspon al que farem is l'oponent coopera i a continuació delata.
    La cinquena opció és el que fem si l'oponent ens coopera dos cops seguits.
  2. L'estratègia d'un codi genètic 1/11 és cooperar sempre. Vegem com funciona: és del tipus a/bc. El paràmetre a indica què fariem a la primera jugada (1 correspon a cooperar i per tant, la primera jugada cooperem). La segona vegada ja tenim un registre d'història del rival que és el que ha fet a la primera jugada. Com que el codi genètic té 2 valors només tenim 1 registre d'història. El primer valor, b, correspon al que fariem si el rival ens ha traït (com que el valor és 1, vol dir que cooperem si ens ha traït) i el valor c és el que fariem si ens ha col·laborat (també cooperem). De manera que el codi 1/11 correspon a cooperar sempre.
  3. El codi 0/00 correspon a delatar sempre.
  4. El codi 1/01 correspon a l'estratègia "Tip for Tat" ("ull per ull i dent per dent"). Comencem cooperant, i si el rival delata nosaltres delatem i si coopera cooperem. Cal veure que l'estratègia 1/0101 ó 1/010101 també són del tipus "Tip for Tat", tot i que els calen 2 i 3 registres de reaccions del rival per començar l'estratègia i fins llavors cooperariem. Per exemple, l'estratègia 1/010101 a la primera, la segona i la tercera jugades cooperariem encara que Llucifer delatés, però a la quarta, com que ja tenim 3 jugades de Llucifer mirariem què ha fet. És clar que com que els 1 ocupen les posicions parelles, si la última opció de l'oponent ha sigut cooperar, cooperem i si no delatem.
  5. 1/0001 Revenja. Si l'oponent ens traeix un cop no ho oblidem  i el delatem fins que l'oponent coopera dos cops seguits. (NOTA: si l'oponent traeix a la primera jugada, la segona encara cooperem, però a la tercera ja funciona per revenja).


http://www.bekkoame.ne.jp/~ishmnn/java/ga_dlm.html


Que és un Algoritme Genétic?

Els algoritmes genètics (genetic algorithms, o GAs) son un tipus especial d'algoritmes. Els algoritmes normalment donen una recepta per a la manipulació de certes dades, amb l'objectiu de produir un resultat, ja sigui un càlcul o una transformació. Els GAs intenten resoldre problemes que per la via habitual trigarien segles amb la potència actual dels ordinadors. I ho fan d'una altra manera: imitant la selecció natural. Se simula doncs una població de possibles solucions al problema, que es reprodueixen i muten de manera que exploren l'espai de possibles solucions.

Vídeo de Kalr Sims Provant múltiples combinacions de sistemes formats per peces unides amb una rigidesa, una gravetat i associades a un medi generades aleatòriament per un ordinador seguint unes regles es posen a competir entre elles i s'associen les més òptimes per buscar uns "fills" que compleixin l'objectiu encara millor. Aquest vídeo presenta resultats sorprenentment semblants a comportaments d'éssers vius quan realment estan generalts aleatòriament a partir de normes senzilles i combinant els sistemes més eficaços, tal i com passa a la natura.

Tornar a l'índex de la Visita guiada pels sistemes complexos