La Mejor Solución Evolutiva al Dilema del Prisionero Iterado

Anuncio
La Mejor Solución Evolutiva al Dilema del Prisionero Iterado
Jesús Gutiérrez García
Centro de Investigación en Computación
Instituto Politécnico Nacional
México D.F.
jgg@pollux.cic.ipn.mx
Angel Kuri Morales
Centro de Investigación en Computación
Instituto Politécnico Nacional
México D.F.
akuri@pollux.cic.ipn.mx
Resumen
En este trabajo hacemos una presentación del programa que resultó ganador del concurso
del Dilema del Prisionero Iterado (DPI) que fue abierto a la comunidad internacional
durante el evento Congress on Evolutionary Computation 2000 (CEC2000), celebrado en la
ciudad de San Diego, California del 16 al 19 de julio del 2000. En la primera parte de
nuestro trabajo hacemos una introducción al problema del DPI. En la segunda parte
describimos el algoritmo que se usó para atacar el problema planteado durante CEC2000.
Este algoritmo está basado en técnicas de Algoritmos Genéticos coevolutivos. En la tercera
parte se presentan algunas conclusiones y se plantean trabajos futuros.
Palabras Clave. Cooperación, dilema, algoritmos genéticos, coevolución, CEC2000.
1. Planteamiento y Antecedentes
En este trabajo tratamos un problema clásico de la teoría de juego que vierte una nueva luz
en muchos de los problemas que han ocupado a filósofos éticos y políticos [1][2] a través
de la historia. El interés que ha despertado permite, incluso, plantear una ética que se
puede encontrar expuesta en Internet [3][4]. Este problema se refiere a una situación en la
cual hay que decidir cuál es la opción racional para un individuo como parte de un grupo y
para el grupo en su totalidad. Nos ayuda a entender cómo tales dilemas se pueden resolver
para obtener el mayor beneficio individual y colectivo. Aunque el planteamiento del
problema se hace en términos de un juego, sus implicaciones van mucho más allá de éste.
Por ejemplo, a la luz del DPI se ha analizado el problema de la carrera armamentista [5], la
correcta selección de proveedores de bienes y servicios en una economía de libre mercado
[6] y la política de asignación de fondos para el desarrollo de la ciencia [7], entre otros.
1.1 El dilema del prisionero iterado
El problema denominado Dilema del Prisionero toma su nombre de la siguiente situación
hipotética:
“En una celda la policía mantiene a dos presos políticos. El interrogador está
intentando persuadirlos a confesar que son miembros de un partido ilegal de la oposición.
Los presos saben que si ninguno de ellos confiesa, el investigador no podrá levantar cargos
pero éste podría proseguir el interrogatorio durante tres meses antes de dejarlos ir. Si uno de
ellos confiesa implicando al otro, el primero (que confesó) será liberado inmediatamente y
1
el otro será condenado a ocho meses de prisión. Por otra parte, si ambos confiesan será
tomada en cuenta su ayuda y tendrán cinco meses de prisión cada uno. Los prisioneros son
interrogados por separado. No saben si el otro a confesado o no, pero a ambos se les
informa del trato que, por separado, se ha ofrecido a cada uno. El dilema es: ¿Cuál es la
mejor estrategia? ¿Confesar (abandonar a la contraparte) o no confesar (cooperar con la
contraparte)?”
Este dilema puede plantearse como un “juego” en el que se califica a los jugadores
de acuerdo con la siguiente tabla de ponderación. Dependiendo de la respuesta de ambos
prisioneros cada uno de ellos obtendrá una puntuación. En el caso que ha sido descrito, esta
puntuación refleja las pérdidas derivadas de una posible respuesta., tal como se muestra en
la tabla T.1.1.1. En este caso el objetivo es minimizar la pérdida. Alternativamente, el
problema puede plantearse como la obtención de un beneficio, en cuyo caso buscaríamos
maximizar la ganancia.
Jugada
Puntos
Prisionero Prisionero Prisionero Prisionero
1
2
1
2
Coopera
Abandona
8
0
Coopera
Coopera
3
3
Abandona Abandona
5
5
Abandona
Coopera
0
8
Tabla T.1.1.1. Tabla de Ponderación del DP
Este problema se denomina “Dilema del Prisionero Iterado” si el proceso se repite
varias veces. El verdadero interés de este problema está, precisamente, en iterar las
acciones arriba planteadas. Cuando esto ocurre es que los participantes pueden aprender a
ajustar su comportamiento en función del comportamiento del segundo participante. Los
puntos de cada jugador son la suma de los puntos que obtuvo en cada jugada. Así, un juego
entre dos participantes podría ser como sigue:
Jugadas
1 2 3 4 5 6 7 8
Puntuación
C
A
C
C
A
C
C
A
8+5+3+3+0+8+3+5=35
Prisionero
1
0+5+3+3+8+0+3+5=27
Prisionero A A C C C A C A
2
Tabla T.1.1.2. Ejemplo de una Secuencia del DPI
En el juego iterado del dilema del prisionero se desea encontrar la estrategia que
minimiza los daños (o maximiza las ganancias) dado que se lleva el registro de las últimas
n jugadas. En el ejemplo anterior el jugador 1 recibe un daño de 35, mientras el daño
recibido por el jugador 2 es de solamente 27: el jugador 2 ha ganado.
La solución minimax dada por la teoría de juegos busca minimizar el daño máximo
que el oponente puede infringir. Este se determina comparando el máximo daño bajo
cooperación contra el máximo daño bajo abandono. Si el primer jugador Coopera (C,-) el
máximo daño es cuando el segundo jugador Abandona (CA) originando un daño de 8 para
2
el primer jugador. Si el primer jugador abandona (A,-), el máximo daño ocurre,
nuevamente, cuando el jugador 2 hace la respuesta A (AA). Ahora el daño al jugador uno
es de 5. Así que el primer jugador sufre un daño mínimo siempre abandonando. Este
razonamiento es simétrico así que (AA) es la mejor solución minimax. Es fácil ver, sin
embargo, que la mejor estrategia es aquella en la que ambos jugadores cooperan. Por
ejemplo, en una secuencia de longitud 4 (4 iteraciones) la estrategia minimax indica que la
mejor estrategia sería AA;AA;AA;AA. La pérdida para el jugador 1 (y para el jugador 2,
también) es de 5+5+5+5=20. Pero, claramente, la estrategia CC;CC;CC;CC induce una
pérdida para el jugador 1 de 3+3+3+3=12; mucho mejor que el óptimo minimax.
En general es más común plantear la tabla de ponderación del DPI como una tabla
de ganancias y no como una de pérdidas. Para ese caso, es posible generalizar el juego con
una tabla con valores variables que, para preservar el espíritu del juego, deberán de cumplir
con las restricciones indicadas como se muestra en la tabla T.1.1.3. Estas restricciones se
identifican con las siglas en inglés: C (cooperate); L (low); H (high) y D (defect).
Mi movimiento
C
C
A
A
Movimiento del oponente
C
A
C
A
L< D<C <H
H + L <= 2C
Puntuación
C
L
H
D
Tabla T.1.1.3. Tabla de Ponderación de DPI con Valores Variables
Por ejemplo, los valores C=3, L=0, H=5 y D=1 indican que el jugador 1 ganará 3
puntos si ambos jugadores cooperan (CC), 0 puntos si solamente él lo hace (CA), 5 puntos
si él abandona y el jugador 2 coopera (AC) y 1 punto si ambos abandonan. Aquí,
obviamente, 0<1<3<5 y 5+0<6, satisfaciendo las restricciones. Para esta tabla de
ponderación la estrategia minimax de abandono sostenido se traduce en ganancias
constantes de 1 punto. En el ejemplo ilustrado arriba (de 4 iteraciones), cada jugador
ganaría 4 puntos. La estrategia de cooperación constante, por otra parte, induciría una
ganancia de 12 puntos para cada jugador.
Se han estudiado diversas variantes a este problema [3]. Por ejemplo, cuando se
tienen múltiples movimientos por jugador, puntuación no simétrica en la tabla, múltiples
jugadores, etc.
1.2 Estrategias
Se le llama estrategia a una o varias reglas que nos indican cómo debemos jugar el DPI.
Tenemos algunas estrategias simples como: Siempre Cooperar (SC) o Siempre Abandonar
(SA). Una de las estrategias comunes (y simples) es la llamada Tit-For-Tat (Uno-por-Otro
[TT]). En esta estrategia el jugador empieza cooperando. Después repite el último
movimiento del oponente. Sorprendentemente, TT resulta ser muy eficiente. Si ejecutamos
3
juegos de 5 iteraciones con las estrategias TT, SA y SC usando los valores C=3, L=0, H=5
y D=1, tendríamos los resultados que se muestran en la tabla T.1.2.1.
Otra estrategia es la denominada estrategia de Pavlov (EP) y se muestra en la figura
F.1.2.1 como un autómata de 2 estados. El estado inicial está dado por la flecha con un solo
extremo en uno de los círculos. El resto de las flechas están etiquetadas con la jugada del
oponente y la respuesta correspondiente.
Estrategia
TT
SA
C
A
0
5
A
A
1
1
TT
SC
C
C
3
3
C
C
3
3
SA
SC
Acción/Puntos
A
1
A
1
A
A
1
1
A
A
1
1
Total
4
9
C
C
3
3
C
C
3
3
15
15
A
5
A
5
A
5
A
5
A
5
C
0
C
0
C
0
C
0
C
0
Tabla T.1.2.1. Resultado de Confrontar las Estrategias TT, SA y SC.
25
0
C
C
3
3
A/C
2
1
A/A
C/A
C/C
Figura F.1.2.1. Estrategia de Pavlov
Esta estrategia responde C siempre y cuando las jugadas anteriores (del oponente y
el concursante) sean iguales. Un juego de 5 iteraciones, con la tabla de ponderación T.1.1.3.
que confronte a SA vs. EP sería así:
Estrategia
SA
EP
Acción/Puntos
A
1
A
5
A
1
A
5
A
A
1
C
0
A
1
C
0
A
Tabla T.1.2.2. Resultado de Confrontar las Estrategias SA y EP
4
1
1
Total
13
3
Existe una gran variedad de estrategias [8] y software con el cual se pueden construir
estrategias propias y hacer torneos entre ellas. Por ejemplo, el programa WINPRI que se
puede obtener en [8].
1.3. Diseño de la estrategia
Una estrategia puede depender de N jugadas anteriores para N entera y N ≥ 0. Así, SA y
SA no dependen de ninguna jugada anterior; TT depende sólo de la respuesta recibida
mientras que EP depende tanto de la respuesta recibida como de la jugada anterior propia.
Una forma de representar las estrategias es con un vector [9] en donde cada posición
representa la respuesta que se debe de dar frente a cada posible situación. Por ejemplo, si
durante las 2 anteriores jugada se ha registrado la secuencia ACAC se dará la respuesta que
se observe en las localidades correspondientes del vector. Entonces lo que se necesita es
asignar a cada conjunto de respuestas un número y la forma más sencilla es hacerlo en
binario. Así, si las 2 jugadas anteriores han sido ACAC se convierten las C en “1” y las A en
“0” y se obtendrá la cadena“1010” (que corresponde a 12 decimal). Deberemos, entonces,
responder con el elemento del vector cuyo índice sea 12.
En el caso de la estrategia de Pavlov (que solo toma en cuenta la jugada anterior)
podemos representar la estrategia como se muestra en la tabla T.1.3.1.
Jugadas Anteriores
Estado
Entrada del vector
Respuesta
Propia/Oponente
AA
2
1
C
AC
2
2
A
CA
1
3
A
CC
1
4
C
Tabla T.1.3.1. Determinación de las Respuestas de EP a Partir de un Vector.
Con esta notación se puede ver que la respuesta de EP es CAAC. En el caso de TT
la respuesta será AACC. Si es necesario utilizar estrategias que dependen de más jugadas
anteriores junto con aquellas que sólo dependen de una o dos sólo debemos repetir la
secuencia. Esto es, la respuesta de SA corresponde a AAAA; no depende de ninguna jugada
previa. Por lo tanto, la longitud de la cadena que representa a una estrategia, depende de las
jugadas previas (l) que esta toma en cuenta y es 2 2l .
2. Solución al DPI usando un Algoritmo Genético
Dada la representación anterior es posible utilizar un algoritmo genético (AG) para resolver
el problema y encontrar una estrategia que resuelva el dilema del prisionero [10]. El
algoritmo básico que se usó para ganar en CEC200 se describe a continuación.
1) Generar un conjunto S de m estrategias aleatoriamente.
2) Desde i ← 1 hasta 6×6m hacer [de a) a c)]:.
a) Elegir al azar dos estrategias s1 y s 2 de S.
b) Confrontar s1 y s 2 un número predefinido de veces.
c) Registrar los resultados tanto de s1 como de s 2 .
3) De las S estrategias elegir las mejores t (aquellas cuyo comportamiento promedio ha
sido el mejor). Tomamos entonces a ese conjunto de estrategias (T) como la base contra
5
las cuales debemos de probar a los individuos del algoritmo genético (dentro de las
mejores T se inserta TT por convención).
4) Generar una población inicial aleatoria de n estrategias candidato (C)
5) Mientras criterio de convergencia no se ha alcanzado hacer.
a) Desde i ← 1 hasta n.
i) Elegir la estrategia ci de C.
ii) Desde j ← 1 hasta t
(1) Confrontar a ci contra sj
(2) Registrar la suma de los resultados como fitness de la población C.
b) De los n individuos en la población más los t individuos en el en el conjunto base,
elegir a los mejores t. Estos constituirán el conjunto base para la siguiente
generación.
c) Obtener una nueva C usando un EGA
6) La mejor estrategia es la mejor calificada del conjunto T.
Este algoritmo es coevolutivo porque el conjunto de las mejores estrategias encontradas
(T) cambia (o evoluciona) al mismo tiempo que las estrategias C que evolucionan con el
algoritmo genético. El AG usado es no convencional (le hemos denominado AG Ecléctico
o AGE). Contempla elitismo total, selección determinista de Vasconcelos, es autoadaptable
para la probabilidad de mutación, la de cruzamiento y para el numero de individuos por
generación, además de utilizar cruza anular y un escalador autoadaptable. La descripción
detallada de este algoritmo se puede consultar en [11] , [12].
El AGE ha sido aplicado a la solución del DPI y el software desarrollado para este
efecto y el cual puede ser obtenido de [10] o directamente de Internet en la dirección
http://148.204.45.189/galsk; el lector interesado también puede referirse a [10]. Este software
sólo requiere que se le den los valores de la tabla (que anteriormente se usaron como L, D,
C y H) y el número de jugadas (g) que debe recordar la estrategia. La salida del programa
será una cadena de longitud 2 2 g que codifica la estrategia encontrada.
2.1 Concurso internacional CEC2000
En el departamento de matemáticas de la Universidad Estatal de Iowa (Iowa State
University) se organizó el Congress on Evolutionary Computation con sede en San Diego,
California, que se llevó a cabo del 16 al 19 de julio del 2000. Como parte de este congreso
se organizaron cuatro concursos, a saber:
1)
2)
3)
4)
Reason vs Evolution: Prisoner’s Dilemma Competition
Time series prediction competition
Dow Jones Prediction Competition
Visualization Competition
Las reglas para cada concurso se especificaron en [13] y buscaban la aplicación de las
técnicas de computación evolutiva a cada uno de los problemas enlistados. A continuación
se resumen las instrucciones referentes al Dilema del Prisionero Iterado.
1. Se debe enviar el código que contenga un grupo de estrategias que podrán ser
publicadas en la WEB después de la prueba. Debe estar contenido en un archivo plano de
C++ con lo siguiente:
Definición de tipos/ estructuras/ variables globales/
int firstact() { codigo que inicializa al jugador y regresa
6
la primera jugada }
int pla (int lastact) { Codigo que porcesa la jugada del oponente
“lastact” y regresa la jugada actual.}
2. Se debe utilizar “0” para codificar “C” (cooperar) y “1” para “A” (abandonar).
3. Las estrategias que requieran memoria excesiva o mucho tiempo serán
descalificadas.
4. Todas las estrategias que concursan, más unas previamente diseñadas, se
incorporarán a un solo conjunto. Este grupo será adicionado a una interfaz en C++ que
podrá invocar a cualquiera de ellas.
5. Se agregarán estrategias de forma que el número de ellas sea cercano a un múltiplo
de diez para obtener un balance entre las estrategias diseñadas (manuales) y las
desarrolladas con técnicas evolutivas.
6. Se realizarán 100 iteraciones del procedimiento siguiente:
a) El grupo total será dividido en grupos de 10.
b) Se seleccionarán valores aleatorios de L, D, C, H en un rango de 0 a 10.
c) Se jugarán N rondas con N normalmente distribuido con media 300 y varianza
de 25.
d) En cada grupo se realizarán 10 torneos en los cuales cada par de jugadores
jugarán N rondas de DPI.
e) El jugador con la mayor puntuación de cada grupo de 10 recibirá 10 puntos, el
siguiente 9, y así respectivamente.
f) El ganador será determinado por el total de puntos.
A este concurso se envío un programa que se describe en los siguientes párrafos. Este
programa, como se mencionó en el resumen, resultó ser ganador del torneo.
2.1.1 Programa Ganador del Concurso internacional CEC2000
La estrategia que se envío a este concurso fue obtenida con el algoritmo coevolutivo antes
descrito. Sin embargo, puesto que los valores de ponderación, de acuerdo con las bases,
serían variables, se determinó lo siguiente.
1. Se utilizó una memoria de 4 jugadas. Es decir, el AG consideró 8 semi-jugadas
previas para determinar su estrategia. El espacio de búsqueda de la mejor estrategia, por
tanto, tiene
8
22 = 2256 = (210 )25 × 26
≈ 64 × (103 )25
≈ 64 × 1075
posibles soluciones. Es un tributo a las capacidades analíticas del AGE que se logre
encontrar una buena solución en tiempos razonables.
2. Como en el concurso el programa no recibe información sobre los parámetros L,
D, C y H se generaron todas las posibles combinaciones de valores enteros positivos que
cumplían las condiciones del problema (250 en total). De estas 250 combinaciones de
parámetros se hizo una selección aleatoria de 10 de ellas.
7
3. Se evolucionaron (usando el AG coevolutivo) las mejores soluciones para cada
uno de los conjuntos de parámetros.
2.1.2 Consideraciones
Los criterios descritos en la sección anterior obedecen a las siguientes
consideraciones:
1. Se eligió una memoria de 4 jugadas (m=8; 8 semi-jugadas) porque experiencias
anteriores [14] habían encontrado soluciones satisfactorias para m=6. Evidentemente, se
buscaba superar esa marca. Por otro lado, los tiempos de evolución con este valor todavía
son prácticos.
2. Se eligieron 10 combinaciones porque un análisis de determinación de clusters
usando mapas auto-organizados neuronales (redes neuronales de Kohonen) nos indicó que
los grupos de parámetros estaban suficientemente caracterizados considerando 10
elementos.
3. Asumimos que, dadas las bases del concurso, era razonable esperar que las peores
actuaciones de cada una de las 10 estrategias contrincantes, en promedio, serían menos
aptas que las nuestras, que fueron coevolucionadas.
Así, el programa que se envió al concurso elegía aleatoriamente una de las 10
cadenas, de longitud 28=256 y las cuatro primeras jugadas (cuando aún no podía usar la
estrategia por falta de información) respondía con TT.
A continuación se muestran las cadenas solución enviadas al concurso. Los valores
que aparecen como comentario (//) corresponden a los valores de L, D, C, H. Nótese que
cada cadena es de longitud 256. Esto se debe a que, dado que m = 8, el conjunto de
historias (secuencias de jugadas del oponente y propias) es de 28 = 256. Para los
parámetros (0-7-6-4), por ejemplo, la secuencia histórica AAAAAACC (índice = 3) induce
una respuesta, de parte nuestra, de abandono (0 o A); pero la secuencia histórica
AAAAACAA (índice = 4) induce nuestra respuesta “coopero” (1 o C). Por otro lado, y
como un último ejemplo, mencionaremos que para los parámetros (1-9-7-5) las mismas
secuencias (índices = 3 y 4) inducen las respuestas C y C.
//0,7,6,4
"000010011100100000111100110001010100010010010110001101110101010110100011
1111110100101010000011010110111010110111101100011011010111000001101000011
1001010101100110111101100011100110111011010100111000010101000001101101110
11000111001011100101101010011100111011",
//1,8,5,2
"110000010101010011001110010000011111101011001010001101100001101100010001
1101110000111001010011101000011111011111111000011100110010000110111000000
0111101000001101111000001011001000001110110001011111000100001011001100111
01000010101011000111100001110110000000",
//1,8,7,5
8
"000010011011100111011110110001001000011110011010010000101101101110100010
1001101011010000011111010101110001000010011011010101101111011111010100010
1101100110111111101000100001001110011110000001010111101011101101000100111
01001010010101110101101010111000111011",
//1,9,7,5
"111110000110101100010001000111101110000111100011000110000110010111000101
1110010001110111001100110011011110010111111001000010010011111110010100011
1101010110010010010110000110100111110000100101101010000001011101010110100
10110101110101011111000010111110011001",
//0,9,6,2
"001101000000000010111011011111010101011001000000011100011000010010110010
1001000010101011001001010000100100110001111111011100011111101001110100000
0010110100101110000111101001001010110110001010111110001000110100111100000
11101111110010100011111100010101001010",
//1,8,7,6
"101110010101100111000011000100101100011011100011000011001000100110110010
0001000111110100111010000010111111011000111110000001011110101010101010001
0010011011000111101001001010011011111110110101101111100010111101011001101
00001101101001101001101001100100101011",
//2,9,8,7
"101110010101100111000011000100101100011011100011000011001000100110110010
0001000111110100111010000010111111011000111110000001011110101010101010001
0010011011000111101001001010011011111110110101101111100010111101011001101
00001101101001101001101001100100101011",
//3,9,7,5
"110111001110001110000111001011011010100011010100110001001001100100001000
1110111110100000000000001110111001111100000000010001010110010010000100100
0011101000111000111000110010101010111110111001001100000111011101010010101
10100111110100000100000111001100000010",
//3,10,9,5
"010001100010111001010011110001010100101011011011100111010011000111011101
0010001001010110110100110110011010011111101100000111110100000111110001011
1001011000000010001001111000110000001100110111011111000101110111011100000
01010011110101001001100011000101000101",
//4,10,8,5
"110101100010011110010100110110010100101001111111010010001000001110001111
0100110110111110100010010000100100011011011110110110010011100110100001011
1101110010001001111001110011101101011110100011110111000001100111000001011
01101010011011010111010011001011001101"
3. Conclusiones y Trabajos Futuros
3.1. Implicaciones
El hecho de haber convocado a la comunidad internacional para atacar el DPI por medios
evolutivos es representativo de varios hechos:
a) Este problema es de una importancia que trasciende el ámbito estrictamente
formal.
b) Aunque se plantea como un juego, sus implicaciones tienen interés fuera del
ámbito de la teoría de juegos.
c) Las herramientas evolutivas han tenido éxito para atacar este tipo de problemas
allí en donde técnicas alternativas de análisis y búsqueda han fracasado.
9
d) La comunidad internacional que manifiesta interés en la inteligencia artificial y
sus aplicaciones es ya lo suficientemente madura como para asimilar, primero, la
importancia de este tipo de problemas y abordar con éxito, después, el problema inherente a
su solución con algoritmos genéticos.
3.2. Futuros Desarrollos
Para evitar tener que hacer una selección aleatoria de los posibles valores de las
combinaciones de L, C, D y H es posible cambiar el programa que encuentra las cadenas
[10]. En lugar de sumar los puntos que se obtienen en cada jugada se puede llevar un
registro de cuantas veces se obtuvo L o D o algún otro valor. Así, el resultado de un torneo
entre dos estrategias no seria un número sino una combinación lineal de los valores L, C, D
y H. Entonces, utilizando las 250 combinaciones de valores posibles se sabría cual de las
dos estrategias ganaría para cualquier valor de los parámetros. Después de esto se debe
hacer un análisis estadístico que compare el comportamiento de la cadena resultante
mediante este nuevo método con el programa que ya se envió al concurso, y que ganó, para
saber qué tan buen desempeño tiene.
3.3. Agradecimientos
Desde el punto de vista técnico es interesante consignar que los autores han aplicado
conceptos novedosos para resolver este problema (algoritmos genéticos no convencionales;
selección muestral de estrategias) pero apoyándose en estudios y desarrollos previos (las
propias técnicas evolutivas; el concepto de coevolución). Por ello deseamos consignar
nuestro agradecimiento a todos aquellos investigadores que nos han precedido en esta
búsqueda por el mejor algoritmo del DPI: a John Holland por sus trabajos iniciales en el
área de los AGs, a Robert Axelrod por haber motivado a la comunidad mundial a asomarse
al DPI y sus complejidades, a Douglas Hofstadter y otros investigadores por haber
sensibilizado a la misma comunidad acerca de las implicaciones del DPI fuera del ámbito
restringido de la teoría de juegos, a Dan Ashlock por haber propuesto y supervisado este
certamen internacional.
10
Referencias
[1] Keohane, Robert. O. 1984. After Hegemony:Cooperation and Discord in the World
Political Economy. Princenton.
[2] Castaingts, Juan. Así vamos... El dilema del FOBAPROA. Editorial, Excelsior
Financiera. 7 Noviembre 1998. México
[3] Stanford Encyclopedia of Philosophy. Prisoner’s Dilemma
http://plato.stanford.edu/entries/prisoner-dilemma/
[4] An Ethic Based on the Prisoner's Dilemma http://www.spectacle.org/995/
[5] Dewdney, A. K., Computer Recreations, Scientific American, October, 1987.
[6] Hofstadter, D., Metamagical Themas, Scientific American , May, 1983.
[7] Hofstadter, D., Metamagical Themas, Bantam Books, 1986.
[8] Iterated Prisoner’s Dilemma http://www.lifl.rf/IPD/ipd.html
[9] Axelrod, Robert. The Complexity of Cooperation. Princventon University Press. 1997.
[10] Kuri, Angel. A Solution to the Prisoner’s Dilemma using an Eclectic Genetic
Algorithm. Informe Técnico Centro de Investigación en Computación. No. 21. Serie
Roja. 1998.
[11] Kuri, Angel. A Universal Eclectic Genetic algorithm for constrained optimization.
EUFIT’98, 1998. pp 518-522
[12] Kuri, Angel. A Comprehensive approach to Genetic Algorithms in Optimization and
Learning Theory and Applications. Volumen 1. Fundations. IPN-SEP. Colección de
Ciencias de la Computación. 1999.
[13] CEC 2000 Competitions. http://www.math.iastate.edu/danwell/CEC2000/comp.html
[14] Mitchell, M., An Introduction to Genetic Algorithms, pp. 17-21, MIT Press, 1996.
11
Descargar