<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>So´ lo puede quedar uno: Evolucio´ n de Bots para RTS basada en supervivencia</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>A. Ferna´ndez-Ares</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>A.M. Mora</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>P. Garc´ıa-Sa´nchez</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>P.A. Castillo</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>J.J. Merelo</string-name>
          <email>jmerelog@.ugr.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Depto. de Arquitectura y Tecnolog ́ıa de Computadores</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Depto. de Lenguajes y Sistemas Informa ́ticos ETSIIT-CITIC, Universidad de Granada</institution>
          ,
          <addr-line>Espan ̃a</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>Resumen Este art´ıculo propone un algoritmo evolutivo para optimizar el comportamiento de bots (NPCs) que no requiere de una funcio´n de fitness expl´ıcita, usando en su lugar combates por pares (a modo de “justa”) en los que so´lo uno de los contendientes sobrevivira´. Este proceso hara´ las veces de mecanismo de seleccio´n del algoritmo, en el que so´lo los ganadores pasara´n a la siguiente generacio´n del mismo. Se ha utilizado un algoritmo de Programacio´n Gene´tica, disen˜ado para generar motores de comportamiento para bots del conocido RTS Planet Wars. Este me´todo tiene dos objetivos principales: en primer lugar, paliar el efecto que la naturaleza “ruidosa” de la funcio´n de fitness an˜ade a la evaluacio´n y, en segundo lugar, generar bots ma´s generales (menos especializados) que los que se obtienen mediante algoritmos evolutivos en los que se usa siempre un contendiente comu´n para evaluar los individuos. Ma´s au´n, la omisio´n de un proceso de evaluacio´n expl´ıcito reduce el nu´mero de combates necesarios para evolucionar, lo que reduce a su vez el tiempo de c o´mputo del algoritmo. Los resultados demuestran que el me´todo converge y que es menos sensible al ruido que otros me´todos ma´s tradicionales. Adema´s de esto, con este algoritmo se obtienen bots muy competitivos en comparacio´n con otros bots de la literatura.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>A modo de resumen, el objetivo del jugador es conquistar los planetas neutrales y
los que posee el enemigo en un simulador “espacial”. Cada jugador poseera´ planetas
(recursos) que producen naves (unidades) en funcio´n de una tasa de crecimiento. El
jugador debera´ controlar su flota de naves (so´lo podra´ actu´ar sobre ellas), envia´ndolas a
otros planetas para conquistarlos o reforzarlos (en caso de pertenecer al jugador
previamente). En el primer caso, dichas naves se estrellara´n literalmente contra los planetas,
reduciendo el nu´mero de naves o puntos necesarios para conquistarlos (en una relacio´n
de 1 por nave estrellada). Si este nu´mero llega a 0 el jugador pasara´ a dominar ese
planeta, que generara´ naves para e´l a partir de entonces. El ganador sera´ aquel que posea
todos los planetas al final de la partida o aquel al que le resten unidades (si un jugador
se queda sin naves pierde la partida).</p>
      <p>Existen ciertas restricciones, como un l´ımite de tiempo de un segundo para tomar
decisiones, por lo que se podr´ıan considerar turnos4; o tambie´n la imposibilidad de
guardar y considerar acciones de turnos anteriores (memoria de acciones realizadas).</p>
      <p>La Figura 1 muestra una captura de pantalla del juego.</p>
      <p>37
2
5
27
12</p>
      <p>5
14
13
2
27
54
9
34
Figura 1. Captura de la simulacio´n de un estado temprano del juego Planet Wars. Los planetas
blancos pertenecen al jugador, los planetas grises oscuros pertenecen al oponente y los planetas
grises claros no pertenecen au´n a ningu´n jugador. Los tria´ngulos representas flotas de naves. Los
nu´meros (tanto en planetas como en flotas) representan el nu´mero de naves que lo componen. El
taman˜o de los planetas se refiere a la tasa de crecimiento (nu´mero de naves que genera por turno)
que tiene asociada, de modo que sera´ mayor cuanto ma´s grande sea el planeta.</p>
      <p>Un bot de PlanetWars se encargara´ de controlar toda la flota, realizando las
acciones pertinentes sobre las naves para doblegar la flota enemiga y conquistar todos los
planetas en liza.</p>
      <p>
        Este juego presenta el problema mencionado antes en el ca´lculo del fitness [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. De
modo que, como medida habitual, se realizan diversos combates para evaluar a cada
individuo (en mapas diferentes y contra diferentes enemigos), de modo que su fitness
se obtiene como una media o sumatoria de los resultados obtenidos. De esta forma,
4 Aunque usemos este te´rmino, se considera que el juego transcurre en tiempo real.
idealmente, se obtendr´ıa una medida ma´s precisa (menos ruidosa) de la calidad de cada
individuo. Pero, en realidad, no es au´n una solucio´n totalmente fiable dado que depende
de diversos valores del propio bot, como el nu´mero de victorias obtenidas o de naves
generadas en las batallas; as´ı como de otros relacionados con el rendimiento del rival,
que podr´ıa ser tambie´n un bot.
      </p>
      <p>
        De modo que, incluso si obtuvie´semos una evaluacio´n estad´ısticamente
significativa, el calculo del fitnes podr´ıa incluir una tendencia relacionada con el oponente
seleccionado. Este problema esta´ relacionado con el sobre-entrenamiento de la poblacio´n
para enfrentarse a un rival espec´ıfico, es decir, los individuos aprenden a jugar
excesivamente bien contra e´l y obtienen peores resultados contra otros enemigos [
        <xref ref-type="bibr" rid="ref15 ref16">16,15</xref>
        ].
      </p>
      <p>
        Este art´ıculo propone un AE co-evolutivo (AEC) [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] para mejorar la IA de bots
de Planet Wars por medio de una evaluacio´n impl´ıcita del fitness. E´sta se basara´ en la
supervivencia de los individuos. Para ello, el proceso de seleccio´n se transformara´ en
un torneo (o justa, para diferenciar el te´rmino del cla´sico torneo de los AEs), en el
que so´lo los ganadores sobrevivira´n y pasara´n a ser individuos (padres) de la siguiente
generacio´n. De este modo se evita el ca´lculo del fitness y, por lo tanto, la influencia del
ruido que e´sta funcio´n introduce se reduce. Adema´s, con este enfoque se evitan algunos
de los para´metros de configuracio´n del algoritmo, como el nu´mero de combates o los
rangos para las puntuaciones, as´ı como la consideracio´n de un rival en particular para
combatir.
      </p>
      <p>
        Este modelo es ma´s cercano al proceso real de seleccio´n natural [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], en el que so´lo
los mejores sobreviven, de lo que lo esta´n los AEs cano´nicos. De forma que el me´todo
propuesto se podr´ıa denominar un algoritmo co-evolutivo competitivo [
        <xref ref-type="bibr" rid="ref11 ref22">22,11</xref>
        ], en el que
el fitness (impl´ıcito aqu´ı) depende de una competicio´n contra otros individuos.
      </p>
      <p>
        La propuesta se ha implementado como un algoritmo de Programacio´n Gene´tica
(PG) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], debido a la flexibilidad que este modelo ofrece respecto a los Algoritmos
Gene´ticos (AGs) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], es decir, con PG se pueden crear nuevas reglas de comportamiento,
mientras que el AG estar´ıa centrado en la optimizacio´n de un conjunto ya existente.
Adema´s, esta te´cnica la hemos aplicado con buenos resultados en trabajos anteriores en
esta misma l´ınea [
        <xref ref-type="bibr" rid="ref5 ref8">8,5</xref>
        ].
      </p>
      <p>Dado que el algoritmo se ejecuta en conjuncio´n con Planet Wars, la justa se ha
modelado como un combate en el juego. El ganador de la batalla pasa a la siguiente
generacio´n como padre de los siguientes bots, el perdedor se elimina de la poblacio´n.
Adema´s, la consideracio´n de todos los individuos como oponentes, en lugar de uno so´lo,
hace el entrenamiento (la evolucio´n) ma´s generalista, lo que producira´ bots capaces de
enfrentarse con e´xito a un rango ma´s amplio de rivales (aprendera´n diversas estrategias).</p>
      <p>Se han realizado varios experimentos, a fin de medir la convergencia en la evolucio´n,
as´ı como la influencia del ruido en la misma, y se han comparado los resultados con los
obtenidos por otros algoritmos y bots de la literatura. Nuestro objetivo es comprobar
si el me´todo propuesto es va´lido para evaluar individuos, si resulta menos sensible a la
influencia del ruido y si los bots generados son suficientemente competitivos.
2.</p>
    </sec>
    <sec id="sec-2">
      <title>Conceptos preliminares y estado del arte</title>
      <p>
        La evolucio´n de motores de IA para controlar NPCs/Bots se ha convertido en una
te´cnica muy exitosa en el entorno de los videojuegos. Existen dos enfoques principales:
partir de un conjunto de reglas, cuyos para´metros o variables son optimizados off-line
(antes de la partida real) por medio de AGs [
        <xref ref-type="bibr" rid="ref10 ref17 ref3 ref6 ref7">7,17,6,3,10</xref>
        ]; o bien usar PG para crear
automa´ticamente el conjunto de reglas que compondra´n dicho motor de IA partiendo
de una serie de condiciones y acciones (antecedentes y consecuentes de las reglas) [
        <xref ref-type="bibr" rid="ref5 ref8">8,5</xref>
        ].
      </p>
      <p>El problema en ambos casos suele ser la consideracio´n de un bot espec´ıfico para la
evaluacio´n de los potenciales individuos o la definicio´n de una funcio´n de fitness que
realmente pueda valorar el rendimiento de cada bot en la batalla, atendiendo,
normalmente, a diversos factores.</p>
      <p>
        Una posible forma de evitar estos problemas es el uso de AECs, en los que el
comportamiento de un individuo depende del de otros individuos de la poblacio´n. En el
a´mbito de los videojuegos, los AECs se empezaron a aplicar en juegos de tablero como
Backgammon [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], o Go [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] hace muchos an˜os. Adema´s, en an˜os posteriores, este
enfoque se ha aplicado a videojuegos, dentro de la rama de IC. Por ejemplo Togelius et al.
[
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] estudiaron los efectos de la co-evolucio´n en una poblacio´n de controladores para
un juego de carreras de coches; Cook et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] presentaron una propuesta co-evolutiva
para el disen˜o automa´tico de niveles de un juego de plataformas; y recientemente,
Cardona et al. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] experimentaron con el rendimiento de un algoritmo competitivo para
la evolucio´n simulta´nea de controladores para Ms. PacMan y el grupo de Fantasmas
simulta´neamente.
      </p>
      <p>Nuestro trabajo tambie´n se ha enfocado como un me´todo co-evolutivo, que es
competitivo en la seleccio´n de individuos para ser padres de la siguiente generacio´n y, a
su vez, cooperativo puesto que todos los individuos forman parte del mismo proceso
evolutivo.</p>
      <p>
        Centra´ndonos en los trabajos dentro del a´mbito de los RTSs, Livingstone [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]
comparo´ diferentes modelos de AI y propuso un entorno co-evolutivo de generacio´n de los
mismos, considerando diferentes niveles de AI (nivel de comandante, nivel de
unidades, etc), de modo que era un enfoque cooperativo. El que se propone aqu´ı se diferencia
tambie´n en que el nivel de AI que se evoluciona es el mismo para todos los individuos.
      </p>
      <p>
        Finalmente, Nogueira et al. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] consideraron en una publicacio´n reciente el uso
de la llamada Hall of Fame, es decir, un conjunto de rivales que componen la e´lite de
los oponentes hasta el momento, para evolucionar bots para el RTS RobotWars. Los
mismos autores aplicaron una versio´n de dicho enfoque a Planet Wars [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. En ella,
describieron un algoritmo de aprendizaje similar al que proponemos, pero centrado en
un subconjunto de individuos (la e´lite), que creemos que podr´ıa tener un efecto negativo
en cuanto a la capacidad de generalizacio´n de los bots. Adema´s, los autores aplican una
funcio´n de fitness que depende de diversos para´metros, varios combates y medidas de
puntuacio´n adicionales.
      </p>
      <p>
        La propuesta de este trabajo implementa un enfoque co-evolutivo basado en
supervivencia, que evita el uso de un funcio´n de fitness expl´ıcita. El objetivo es intentar
minimizar el efecto del ruido que introducir´ıa dicha funcio´n [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Adema´s, se evita el
uso de para´metros adicionales y el uso de un rival (o rivales) espec´ıfico en los combates
que pudiera llevar a un sobre-entrenamiento contra e´l (o ellos).
      </p>
    </sec>
    <sec id="sec-3">
      <title>Survival Bots</title>
      <p>
        Esta seccio´n describe el algoritmo propuesto para generar bots llamados
SurvivalBots. En e´l se combina un algoritmo de PG [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] con diferentes pol´ıticas de seleccio´n y
reemplazo, basadas en la supervivencia de los mejores y con un enfoque co-evolutivo.
3.1.
      </p>
      <sec id="sec-3-1">
        <title>Generacio´n de Bots mediante PG</title>
        <p>El algoritmo basado en Programacio´n Gene´tica (llamado GPBot) evoluciona un
conjunto de para´metros que modela un a´rbol de decisio´n. Durante la evolucio´n cada
individuo de la poblacio´n (un a´rbol) se evalu´a. Para esto, el a´rbol que modela el motor
de comportamiento de un agente, es colocado en un mapa en una partida de Planet
Wars. Dependiendo de los resultados obtenidos, el agente (individuo) obtiene un valor
fitness que se usa durante el proceso evolutivo.</p>
        <p>Durante cada turno de la partida el a´rbol decidira´ la mejor estrategia a seguir,
seleccionando por cada planeta un objetivo y un porcentaje de naves a enviar. Estos a´rboles
de decisio´n son a´rboles binarios de expresiones compuestas por dos diferentes tipos de
nodos:</p>
        <p>Decisio´n: una expresio´n lo´gica formada por una variable, el operador &lt;, y un
nu´mero entre 0 y 1. Es el equivalente al concepto “primitiva” en el campo de la PG.
Accio´n: una hoja del a´rbol (o sea, un “terminal”). Cada decisio´n es el nombre del
me´todo a llamar del planeta que ejecuta el a´rbol. Este me´todo indica a que´ planeta
enviar un porcentaje de las naves disponibles (de 0 a 1).</p>
        <p>Las decisiones, definidas por un experto humano, se basan en los valores de las
distintas variables (tambie´n definidas por el experto) que son computadas considerando
algunas otras variables del juego.</p>
        <p>myShipsEnemyRatio: Relacio´n entre las naves del jugador y las naves del enemigo.
myShipsLandedFlyingRatio: Relacio´n entre las naves del jugador que vuelan y
esta´n aterrizadas.
myPlanetsEnemyRatio: Relacio´n entre el nu´mero de planetas del jugador y del
enemigo.
myPlanetsTotalRatio:Relacio´n entre el nu´mero de planetas del jugador y del total
(incluyendo los del enemigo y los neutrales).
actualMyShipsRatio: Relacio´n entre el nu´mero de naves en el planeta espec´ıfico
que evalu´a el a´rbol y el total de naves del jugador.
actualLandedFlyingRatio: Relacio´n entre el nu´mero de naves aterrizadas y volando
desde el planeta espec´ıfico que evalu´a el a´rbol, y el total de naves del jugador.
Finalmente, las posibles acciones, segu´n conocimiento experto, son:
Attack Nearest (Neutral—Enemy—NotMy) Planet: El objetivo es el planeta ma´s
cercano. NotMy se refiere a un planeta que no pertenezca al jugador, es decir, uno
de los otros dos: enemigo o neutral.</p>
        <p>Attack Weakest (Neutral—Enemy—NotMy) Planet: El objetivo es el planeta con
menos naves.</p>
        <p>Attack Wealthiest (Neutral—Enemy—NotMy) Planet: El objetivo es el planeta con
ma´s tasa de crecimiento.</p>
        <p>Attack Beneficial (Neutral—Enemy—NotMy) Planet: El objetivo es el planeta ma´s
beneficioso, es decir, el que tiene mayor tasa de crecimiento dividido por el nu´mero
de naves que alberga.</p>
        <p>Attack Quickest (Neutral—Enemy—NotMy) Planet: El objetivo es el planeta ma´s
fa´cil de conquistar: el menor producto entre la distancia del planeta que ejecuta el
a´rbol y el nu´mero de naves en el planeta objetivo.</p>
        <p>Attack (Neutral—Enemy—NotMy) Base: El objetivo es el planeta con ma´s naves
(es decir, la base).</p>
        <p>Attack Random Planet. Atacar un planeta aleatorio.</p>
        <p>Reinforce Nearest Planet: Reforzar el planeta ma´s cercano al que ejecuta el a´rbol.
Reinforce Base: Reforzar al planeta con ma´s naves del jugador.</p>
        <p>Reinforce Wealthiest Planet: Reforzar al planeta del jugador con mayor tasa de
crecimiento.</p>
        <p>Do nothing. No hacer nada.</p>
        <p>Un ejemplo de un a´rbol de decisio´n posible se muestra a continuacio´n. Este ejemplo
tiene un total de 5 nodos, con dos decisiones y tres acciones, con una profundidad de
tres niveles.
if(myShipsLandedFlyingRatio &lt; 0.796)
if(actualMyShipsRatio &lt; 0.201)</p>
        <p>attackWeakestNeutralPlanet(0.481);
else</p>
        <p>attackNearestEnemyPlanet(0.913);
else</p>
        <p>attackNearestEnemyPlanet(0.819);
3.2.</p>
        <p>El comportamiento del bot se explica en el Algoritmo 1.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Seleccio´n por supervivencia</title>
        <p>El algoritmo presentado en la seccio´n anterior se ha combinado con una evaluacio´n
impl´ıcita del fitness que se ocupara´ de la seleccio´n y el reemplazo. Dicha evaluacio´n es,
en esencia, un combate entre individuos en un determinado mapa. Hemos denominado
a este enfrentamiento justa (para diferenciarlo del cla´sico torneo de los AEs). De forma
que la seleccio´n de padres para la siguiente generacio´n se consigue mediante la
resolucio´n de estos combates, siendo el ganador (el superviviente) el elegido para continuar
en la poblacio´n y siendo el perdedor eliminado de la misma.</p>
        <p>
          De esta forma, el proceso de seleccio´n intenta fomentar la supervivencia de los
mejores individuos, paliando en cierta medida el ruido que an˜aden las funciones de
evaluacio´n expl´ıcitas (o nume´ricas) [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. De modo que los individuos que no son capaces de
ganar un combate son fuertemente penalizados y eliminados de la poblacio´n. Au´n as´ı,
seguira´ habiendo ruido, el cua´l es intr´ınseco al problema en s´ı. Es decir, un individuo
Algorithm 1 Pseudoco´digo del agente propuesto. El mismo a´rbol se ejecuta durante
toda la ejecucio´n del agente.
        </p>
        <p>//Al principio de la ejecucio´n el agente recibe el a´rbol
a´rbol leer A´rbol()
while el juego no termine do
// iniciar el turno
calcularPlanetasGlobales() // p.e. Base o Base Enemiga
calcularRatiosGlobales() // p.e. myPlanetsEnemyRatio
for cada p en planetas del jugador do
calcularPlanetasLocales(p) // p.e. NearestNeutralPlanet a p
calcularRatiosDePlanetas(p) //p.e. actualMyShipsRatio
ejecutarA´ rbol(p, a´rbol) // Enviar un porcentaje de naves al destino
end for
end while
con peores condiciones que otro podr´ıa ganar un combate por causas ajenas a su buen
rendimiento, como errores del rival o condiciones ma´s favorables en el desarrollo del
juego. Aunque Planet Wars parte siempre de escenarios totalmente equivalentes para los
contendientes. En cualquier caso, la presencia de ruido permitira´, a su vez, an˜adir
diversidad a la poblacio´n, lo cual siempre es beneficioso en un algoritmo de optimizacio´n
combinatoria como este.</p>
        <p>En este enfoque hablamos de “iteracio´n” como sino´nimo de generacio´n, dado que
no se trata de un proceso evolutivo cla´sico, como se explicara´ ma´s adelante.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Reemplazo de los perdedores</title>
        <p>
          Hemos implementado la pol´ıtica de reemplazo del enfoque estacionario cla´sico de
los AEs [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]. De forma que una gran parte de la poblacio´n pasa a la siguiente
generacio´n y otra parte es sustituida. Este enfoque pretende fomentar la explotacio´n en la
bu´squeda, a fin de mejorar el factor de convergencia del me´todo. El objetivo es reducir
la exploracio´n que es ma´s sensible en un espacio de bu´squeda ruidoso como este.
        </p>
        <p>De modo que el algoritmo propuesto realiza dos combates (justas) por generacio´n.
Los contendientes se seleccionan de forma aleatoria entre los individuos de la
poblacio´n, asegurando simplemente que no se eligen los mismos bots para los dos combates.</p>
        <p>
          Los dos ganadores pasan a ser los padres de la operacio´n de cruce, que genera dos
nuevos hijos, que son adema´s mutados e incluidos en la poblacio´n en el lugar de los
individuos que hayan perdido el combate. Hemos considerado cruce de sub-a´rboles y
mutacio´n a nivel de nodo, dado que con ellos obtuvimos buenos resultados en trabajos
previos [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>Este enfoque presenta un componente de aleatoriedad mayor que el AE estacionario
cla´sico, debido a la falta de una funcio´n de fitness que asigne un valor representativo
a cada individuo. La seleccio´n aleatoria entre todos los individuos aumenta la
probabilidad de que los malos individuos salgan de la poblacio´n, lo que reducir´ıa tambie´n el
ruido presente en e´sta. Este sera´ un factor muy relevante, como se demostrara´ en los
experimentos realizados.</p>
        <p>El Algoritmo 2 muestra la combinaci o´n del algoritmo de PG propuesto con la
evaluaci o´n impl´ıcita del fitness mencionada y los mecanismos de selecci o´n y reemplazo.
Algorithm 2 Pseudocode of the proposed SurvivalBot.</p>
        <p>poblacion inicializarPoblacion()
while criterio de terminaci o´n no cumplido do
descendientes,perdedores,seleccionados fg
/* Se eligen dos contendientes aleatorios para la justa */
contendientes seleccionarContendientes(poblacion)
/* Los contendientes luchan y se obtiene un ganador y un perdedor */
ganador1,perdedor1 justa(contendientes)
/* Los bots selecionados no participan en m a´s combates */
seleccionados seleccionados + ganador1 + perdedor1
/* Contendientes de la segunda justa */
contendientes selectContenders(poblacion)
/* Los contendientes luchan y se obtiene un ganador y un perdedor */
ganador2,perdedor2 justa(contendientes)
seleccionados seleccionados + ganador2 + perdedor2
/* Se guarda referencia a los perdedores */
perdedores perdedores + perdedor1 + perdedor2
/* PROCESO EVOLUTIVO */
hijo1,hijo2 cruce(ganador1,ganador2);
hijo1,hijo2 mutacion(hijo1,hijo2)
descendientes descendientes + hijo1 + hijo2
/* Reemplazo de perdedores */
poblacion poblacion - perdedores
poblacion poblacion + descendientes
end while
4.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Experimentos y resultados</title>
      <p>Se han realizado varios experimentos para estudiar diferentes aspectos de la
propuesta, pero debemos se n˜alar que el principal objetivo no es la generaci o´n de los
mejores bots (los ma´s competitivos) posibles a toda costa, sino, en primera instancia, probar
la validez de este me´todo co-evolutivo basado en selecci o´n por supervivencia o justa. De
modo que comprobaremos que el algoritmo converge y que el ruido tiene una influencia
menor que en otros casos. Posteriormente analizaremos la calidad de los bots obtenidos
para demostrar que son bots suficientemente buenos. E´ stos se podra´n mejorar en un
futuro usando el mismo me´todo pero con configuraciones ma´s adecuadas para ello (como
un ajuste de para´metros ma´s fino, ejecutarlos durante ma´s generaciones, etc).</p>
      <p>
        El conjunto de para´metros considerado en nuestro algoritmo co-evolutivo de PG
(Co-PG), SurvivalBot, se muestra en la Tabla 1. E´stos son los mismos utilizados
previamente por los autores en el trabajo [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], GPBot, con los que se obten´ıan buenos bots.
Adema´s, usamos la misma configuraci o´n porque GPBot se usara´ como base
comparativa en los experimentos. De modo que, para hacer ma´s justa la comparativa, se han fijado
4000 iteraciones en SurvivalBot (2 combates por iteracio´n), dado que en GPBot se
realizaron 8000 combates (32 individuos * 5 combates por evaluacio´n * 50 generaciones).
Se han considerado 5 mapas representativos (con configuraciones muy diferentes entre
s´ı) que se eligen de forma aleatoria antes de cada combate.
      </p>
      <p>Se han realizado 30 ejecuciones en cada caso, para obtener resultados
estad´ısticamente significativos.</p>
      <p>En este primer conjunto de experimentos analizaremos la convergencia del
me´todo propuesto, dado que se espera que su comportamiento, au´n sin funcio´n expl´ıcita de
fitness, sea similar al de otros AEs. El problema radica en que es dif´ıcil mostrar esta
convergencia sin contar con un valor nume´rico para el fitness. Por ello, una vez
terminada la ejecucio´n, se ha analizado la poblacio´n de cada generacio´n haciendo uso de una
funcio´n Score, que hab´ıamos definido y usado en art´ıculos anteriores para valorar el
rendimiento de un bot en el juego. E´ sta se basa en el desarrollo de varios combates, y la
consideracio´n del nu´mero de victorias obtenidas, turnos requeridos para ganar y turnos
resistidos en caso de haber perdido.</p>
      <p>De modo que cada individuo i perteneciente a la poblacio´n de cada
generacio´n/iteracio´n se ha enfrentado con GPBot, obteniendo un Score, definido como:
Donde</p>
      <p>Scorei =
+</p>
      <p>+
= v;
(3)
(4)
tdefeated 2 [0; N</p>
      <p>Considerando el nu´mero de combates realizados (N ), el nu´mero de victorias contra
GPBot (v), el nu´mero total de turnos usados para ganar a GPBot (twin), el nu´mero total
de turnos aguantados, si ha sido vencido (tdefeated) y el nu´mero ma´ximo de turnos que
dura un combate (tMAX = 1000). Esta funcio´n tiende a favorecer las victorias frente
a los turnos. Cada individuo se ha enfrentado 3 veces en 10 mapas diferentes: los 5
usados durante la evolucio´n, llamados mapas entrenados y otros 5 nuevos (mapas no
entrenados), por tanto N = 30.</p>
      <p>La Figura 2 muestra los boxplots del Score obtenido por toda la poblacio´n de las 30
ejecuciones en cada iteracio´n. Agrupados segu´n los mapas conocidos (con los que se
ha evolucionado) a la izquierda, o los mapas nuevos a la derecha. Como se puede ver la
tendencia es creciente, como era deseable. Respecto a los resultados que se muestran
ligeramente mejores en los mapas no conocidos (no entrenados previamente), este hecho
se debe a la propiedad del algoritmo propuesto de fomentar la generalizacio´n,
evitando el poco deseable efecto de sobre especializacio´n. De forma que los bots obtenidos
no “aprenden” a jugar en mapas espec´ıficos ni contra rivales espec´ıficos, por lo que su
rendimiento contra GPBot en este caso es relativamente bueno en todos los individuos.</p>
      <p>Mapas entrenados</p>
      <p>Mapas NO entrenados
roe 10
cS 5
0
roe 10
cS 5</p>
      <p>0
INICIAL 1000
3000
4000</p>
      <p>Inicial
1000
3000
4000
2000
Iteraciones
Figura 2. Score obtenido en el enfrentamiento contra el mejor GPBot de todos los SurvivaBots
obtenidos en cada generacio´n/iteracio´n de las 30 ejecuciones.</p>
      <p>Este estudio se complementa en primer lugar con las dos gra´ficas que se muestran
en la Figura 3. En ellas se presenta el porcentaje de individuos (normalizado entre 0
y 1) que gana un determinado nu´mero de combates (de 0 a 30) contra GPBot de los
que hay en la poblacio´n inicial (izquierda) y en la final (derecha). Como se puede ver,
los individuos de las 30 poblaciones iniciales en las ejecuciones tienden a ganar muy
pocos o ningu´n combate, mientras que en las poblaciones finales, el porcentaje de bots
capaces de vencer la mayor´ıa de las veces e incluso todos los combates se incrementa
en gran medida. Lo que demuestra que las poblaciones, en general, han evolucionado
positivamente y han conseguido bots cada vez ma´s competitivos durante el proceso
evolutivo.</p>
      <p>Población Inicial
Población Final
sou .40
d
iiivdn .02
Figura 3. Histograma del nu´mero de victorias contra GPBot para todos los individuos de las
poblaciones iniciales y finales de las 30 ejecuciones, en los 30 combates (10 mapas * 3
enfrentamientos)</p>
      <p>Por u´ltimo, si estudiamos la edad (nu´mero de generaciones que sobrevive un
individuo) de los bots evolucionados, podremos entender mejor la dina´mica del proceso. Para
ello, la Figura 4 muestra las edades de los individuos en una ejecucio´n. Como se puede
ver, la edad media se mantiene en torno a un valor estable durante toda la ejecucio´n, lo
que nos indica que la poblacio´n esta´ continuamente mejorando, de modo que los hijos
son capaces de vencer a sus padres en pocas generaciones. Existen valores extremos,
debidos, sin duda, al componente aleatorio que hay en la seleccio´n de los padres, por el
que algunos individuos combatira´n muy pocas veces (o ninguna) en una ejecucio´n.</p>
      <p>A tenor de lo visto en estos experimentos, consideramos que la evolucio´n del
algoritmo es la adecuada. Pasaremos a analizar la influencia del ruido en este proceso.</p>
      <sec id="sec-4-1">
        <title>4.2. Ana´lisis de ruido</title>
        <p>En este estudio se comparara´n los mejores 30 bots obtenidos por GPBot con los
mejores 30 SurvivalBots (de las 30 ejecuciones). Para elegir el mejor SurvivalBot de
cada ejecucio´n, se ha realizado un torneo todos contra todos entre los bots de la u´ltima
generacio´n. El bot que ha ganado ma´s combates ha sido considerado como el mejor.
Hemos aplicado este me´todo para evitar el uso de una funcio´n Score sobre bots
evolucionados sin fitness, a fin de evitar las desventajas que esta funcio´n conlleva, como
hemos explicado a lo largo del art´ıculo.</p>
        <p>
          E´stos se han enfrentado contra el mejor rival de nuestros trabajos, el bot experto o
especializado ExpGeneBot [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], capaz de adaptar sus estrategias a las caracter´ısticas del
Figura 4. Boxplots de la edad (nu´mero de generaciones/iteraciones que sobrevive un bot) de la
poblacio´n en una ejecucio´n.
mapa en el que se desarrolla el combate. Dichos enfrentamientos se han realizado en los
mismos 10 mapas considerados en el experimento anterior, en cada uno de los cuales
se han realizado 30 combates y calculado el Score de los bots implicados, siguiendo la
Ecuacio´n 1.
        </p>
        <p>A fin de comprobar la influencia que ha tenido el ruido en la generacio´n de los
SurvivalBots, hemos calculado un factor de ruido para cada bot, el cual se ha obtenido
como la diferencia entre el ma´ximo y el m´ınimo de los Scores obtenidos en los 30
combates que ha llevado a cabo cada bot en cada mapa.</p>
        <p>La Figura 5 muestra los boxplots de los 30 GPBots y SurvivalBots. Segu´n la
definicio´n del factor de ruido que hemos propuesto, una distancia grande entre valores
significara´ una mayor incertidumbre en los resultados. Las gra´ficas muestran que los
SurvivalBots se comportan mejor en este sentido, presentando una varianza menor en
resultados contra un rival de gran dificultad y capaz de autoadaptar su comportamiento
en funcio´n del mapa y la partida. De modo que se puede concluir que los bots obtenidos
mediante el me´todo descrito en este art´ıculo son ma´s fiables o “robustos” en te´rminos
de comportamiento y rendimiento.</p>
        <p>Finalmente, en la siguiente seccio´n analizaremos la calidad o competitividad de los
bots obtenidos con el me´todo propuesto, ya que ese es el objetivo final de esta evolucio´n.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.3. Ana´lisis de los bots generados</title>
        <p>En este experimento todos los SurvivalBots obtenidos al final de las ejecuciones
se han enfrentado a otros bots del estado del arte. Para ello, en primer lugar se han
seleccionado los 30 mejores, como se hizo en el experimento anterior. Dichos bots han
sido enfrentados contra un bot ba´sico (BullyBot) y 4 del estado del arte. Los bots y sus
configuraciones se pueden ver en la Tabla 2.</p>
        <p>Los enfrentamientos se han realizado en los 100 mapas de ejemplo que
proporciono´ Google en el campeonato, los cuales no han sido usados durante la evolucio´n.</p>
        <p>La Figura 6 muestra los boxplots del porcentaje de victorias obtenido por los
SurvivalBots contra los dema´s rivales (no se consideran los empates).</p>
        <p>El resultado ma´s interesante es que GPBot es ampliamente superado, dado que el
nu´mero de combates en la evolucio´n es el mismo y la base de sus motores de IA,
basada en PG es similar. El HoFBot, que tambie´n se obtuvo usando un algoritmo
coevolutivo, ha sido vencido ma´s del 50 % de los combates por la mayor´ıa de los mejores
SurvivalBots. Sin embargo, bots ampliamente entrenados (4 veces ma´s evaluaciones)
y basados en una IA disen˜ada por un experto, como son GeneBot y ExpGeneBot, han
resultado dif´ıciles de vencer, como era de esperar.</p>
        <p>En cualquier caso, este es un punto de partida para SurvivalBot, que tiene mucho
margen de mejora, empezando por un mayor nu´mero de iteraciones/combates en su
entrenamiento, que llevar´ıan a obtener bots ma´s competitivos.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusiones y trabajo futuro</title>
      <p>Este art´ıculo presenta una implementacio´n de un algoritmo de Programacio´n
Gene´tica (PG) co-evolutivo simple para la generacio´n de bots (NPCs) para RTSs. E´ste me´todo
propone la omisio´n de la seleccio´n basada en fitness en el proceso evolutivo. En su
irsao .06
it
c
V
de .04
%
Figura 6. Porcentaje de victorias al enfrentar los mejores 30 SurvivalBots contra otros bots de la
literatura.
lugar, se simula una evolucio´n de forma ma´s natural, puesto que se basa en la mera
supervivencia de los individuos, que se enfrentan en combates contra otros en los que
so´lo el ganador pasa a la siguiente generacio´n.</p>
      <p>Esta propuesta se ha aplicado a la creacio´n y mejora de reglas de comportamiento
para la IA de un bot que juegue a Planet Wars. De forma que la seleccio´n se ha
modelado como in combate en el juego, que hemos denominado justa, en el que el ganador
sera´ padre de la siguiente descendencia, mientras que el perdedor sera´ reemplazado por
dicha descendencia.</p>
      <p>Segu´n se ha demostrado en los experimentos, el algoritmo propuesto ofrece tres
beneficios principales:</p>
      <p>Genera bots ma´s generalistas en su comportamiento, no especializados en un
rival en concreto, dado que no utiliza rivales espec´ıficos en sus evaluaciones, sino
miembros de la propia poblacio´n.</p>
      <p>Se ve menos afectado por el ruido intr´ınseco a las funciones de evaluacio´n en el
entorno de los videojuegos, debido a la gran presio´n selectiva que introduce el
hecho de que un so´lo combate perdido por un bot har´ıa que e´ste se eliminara de
la poblacio´n. De modo que es muy dif´ıcil que bots que no sean realmente buenos
sobrevivan.</p>
      <p>Requiere menos combates en la evaluacio´n (so´lo uno), en contraposicio´n a los
mu´ltiples combates que se suelen realizar en las evaluaciones de otras propuestas.
Esto hace que se reduzca el tiempo de co´mputo del algoritmo.</p>
      <p>Los bots obtenidos, llamados SurvivalBots, han sido enfrentados contra otros bots
del estado del arte, obteniendo muy buenos resultados en general, considerando que el
menor entrenamiento de los bots obtenidos en esta propuesta.</p>
      <p>Como l´ıneas de trabajo futuro se plantean muchas, ya que este enfoque es reciente
en nuestras investigaciones. En primer lugar nos centraremos en obtener bots ma´s
competitivos y complejos, a n˜adiendo ma´s variedad de condiciones y acciones al algoritmo
de PG, como por ejemplo distancias entre planetas. En la misma l´ınea se hara´n pruebas
sin limitar el tama n˜o ma´ximo de los a´rboles.</p>
    </sec>
    <sec id="sec-6">
      <title>Agradecimientos</title>
      <p>Este trabajo ha sido financiado en parte por los proyectos: EPHEMECH
(TIN201456494-C4-3-P) y KNOWAVES (TEC2015-68752-R), Ministerio de Econom´ıa y
Competitividad, Fondos FEDER, PROY-PP2015-06 (Plan Propio 2015 UGR), y el proyecto
MOSOS (PRY142/14), financiado por la Fundaci o´n P u´blica Andaluza Centro de
Estudios Andaluces en la IX Convocatoria de Proyectos de Investigaci o´n.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Cardona</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Togelius</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nelson</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          : Competitive coevolution in Ms.
          <source>Pac-Man. In: Proceedings of the 2013 IEEE Congress on Evolutionary Computation</source>
          . pp.
          <fpage>1403</fpage>
          -
          <lpage>1410</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Cook</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colton</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gow</surname>
          </string-name>
          , J.:
          <article-title>Initial results from co-operative co-evolution for automated platformer design</article-title>
          . In: Applications of Evolutionary Computation,
          <source>EVOApplications</source>
          <year>2012</year>
          , LNCS 7248. pp.
          <fpage>194</fpage>
          -
          <lpage>203</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Cotta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferna</surname>
          </string-name>
          <article-title>´ndez-</article-title>
          <string-name>
            <surname>Leiva</surname>
            ,
            <given-names>A.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sa</surname>
          </string-name>
          ´nchez,
          <string-name>
            <given-names>A.F.</given-names>
            ,
            <surname>Lara-Cabrera</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.</surname>
          </string-name>
          :
          <article-title>Car setup optimization via evolutionary algorithms</article-title>
          . In: Rojas,
          <string-name>
            <given-names>I.</given-names>
            ,
            <surname>Joya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Cabestany</surname>
          </string-name>
          ,
          <string-name>
            <surname>J</surname>
          </string-name>
          . (eds.)
          <source>Advances in Computational Intelligence, LNCS</source>
          , vol.
          <volume>7903</volume>
          , pp.
          <fpage>346</fpage>
          -
          <lpage>354</lpage>
          . Springer Berlin Heidelberg (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Darwin</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>On the Origin of Species by Means of Natural Selection</article-title>
          . Murray, London (
          <year>1859</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. Esparcia-Alca´zar,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Moravec</surname>
          </string-name>
          , J.:
          <article-title>Fitness approximation for bot evolution in genetic programming</article-title>
          .
          <source>Soft Comput</source>
          .
          <volume>17</volume>
          (
          <issue>8</issue>
          ),
          <fpage>1479</fpage>
          -
          <lpage>1487</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Ferna</surname>
          </string-name>
          <article-title>´ndez-</article-title>
          <string-name>
            <surname>Ares</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , Garc´
          <fpage>ıa</fpage>
          -Sa´nchez,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Mora</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.M.</given-names>
            ,
            <surname>Merelo</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.J.</surname>
          </string-name>
          :
          <article-title>Adaptive bots for realtime strategy games via map characterization</article-title>
          .
          <source>In: 2012 IEEE Conference on Computational Intelligence and Games</source>
          ,
          <string-name>
            <surname>CIG</surname>
          </string-name>
          <year>2012</year>
          . pp.
          <fpage>417</fpage>
          -
          <lpage>721</lpage>
          . IEEE (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Ferna</surname>
          </string-name>
          <article-title>´ndez-</article-title>
          <string-name>
            <surname>Ares</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mora</surname>
            ,
            <given-names>A.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merelo</surname>
            ,
            <given-names>J.J.</given-names>
          </string-name>
          , Garc´
          <fpage>ıa</fpage>
          -Sa´nchez,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Fernandes</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>Optimizing player behavior in a real-time strategy game using evolutionary algorithms</article-title>
          .
          <source>In: Evolutionary Computation</source>
          ,
          <year>2011</year>
          . CEC '11. IEEE Congress on. pp.
          <fpage>2017</fpage>
          -
          <lpage>2024</lpage>
          (
          <year>June 2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Garc</surname>
          </string-name>
          <article-title>´ıa-Sa´nchez, P., Ferna´ndez-</article-title>
          <string-name>
            <surname>Ares</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mora</surname>
            ,
            <given-names>A.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castillo</surname>
            ,
            <given-names>P.A.</given-names>
          </string-name>
          , Gonza´lez, J.,
          <string-name>
            <surname>Merelo</surname>
          </string-name>
          , J.:
          <article-title>Tree depth influence in genetic programming for generation of competitive agents for RTS games</article-title>
          . In: Applications of Evolutionary Computation - EvoApplications
          <year>2012</year>
          , Granada, Spain,
          <source>April 23-25</source>
          ,
          <year>2014</year>
          , Proceedings. LNCS, Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Goldberg</surname>
          </string-name>
          , D.E.:
          <article-title>Genetic Algorithms in search, optimization and machine learning</article-title>
          .
          <source>Addison Wesley</source>
          (
          <year>1989</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Jas`kowski, W.,
          <string-name>
            <surname>Krawiec</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wieloch</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Winning ant wars: Evolving a human-competitive game strategy using fitnessless selection</article-title>
          . In: O'
          <string-name>
            <surname>Neill</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <year>e</year>
          .a. (ed.)
          <article-title>Genetic Programming, LNCS</article-title>
          , vol.
          <volume>4971</volume>
          , pp.
          <fpage>13</fpage>
          -
          <lpage>24</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>A tournament-based competitive coevolutionary algorithm</article-title>
          .
          <source>Applied Intelligence</source>
          <volume>20</volume>
          (
          <issue>3</issue>
          ),
          <fpage>267</fpage>
          -
          <lpage>281</lpage>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Koza</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          :
          <article-title>Genetic Programming: On the programming of computers by means of natural selection</article-title>
          . MIT Press, Cambridge, MA (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Lara-Cabrera</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cotta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferna</surname>
          </string-name>
          <article-title>´ndez-</article-title>
          <string-name>
            <surname>Leiva</surname>
            ,
            <given-names>A.J.</given-names>
          </string-name>
          :
          <article-title>On balance and dynamism in procedural content generation with self-adaptive evolutionary algorithms</article-title>
          .
          <source>Natural Computing</source>
          <volume>13</volume>
          (
          <issue>2</issue>
          ),
          <fpage>157</fpage>
          -
          <lpage>168</lpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Livingstone</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Coevolution in hierarchical ai for strategy games</article-title>
          .
          <source>In: IEEE Symposium on Computational Intelligence and Games (CIG'05)</source>
          . IEEE (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. Merelo-Guervo´s;,
          <string-name>
            <surname>J.J.</surname>
          </string-name>
          :
          <article-title>Using a Wilcoxon-test based partial order for selection in evolutionary algorithms with noisy fitness</article-title>
          .
          <source>Tech. rep</source>
          ., GeNeura group, university of Granada (
          <year>2014</year>
          ), available at http://dx.doi.org/10.6084/m9.figshare.974598
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Mora</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <article-title>Ferna´ndez-</article-title>
          <string-name>
            <surname>Ares</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , Guervo´s,
          <string-name>
            <given-names>J.M.</given-names>
            ,
            <surname>Garc´</surname>
          </string-name>
          ıa-Sa´nchez,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Fernandes</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>Effect of noisy fitness in real-time strategy games player behaviour optimisation using evolutionary algorithms</article-title>
          .
          <source>Journal of Computer Science and Technology</source>
          <volume>27</volume>
          (
          <issue>5</issue>
          ),
          <fpage>1007</fpage>
          -
          <lpage>1023</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Mora</surname>
            ,
            <given-names>A.M.</given-names>
          </string-name>
          ,
          <article-title>Ferna´ndez-</article-title>
          <string-name>
            <surname>Ares</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merelo</surname>
            ,
            <given-names>J.J.</given-names>
          </string-name>
          , Garc´
          <fpage>ıa</fpage>
          -Sa´nchez, P.:
          <article-title>Dealing with noisy fitness in the design of a RTS game bot</article-title>
          .
          <source>In: Proc. Applications of Evolutionary Computing: EvoApplications</source>
          <year>2012</year>
          . pp.
          <fpage>234</fpage>
          -
          <lpage>244</lpage>
          . Springer, LNCS, vol.
          <volume>7248</volume>
          (
          <year>April 2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Nogueira</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cotta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferna</surname>
          </string-name>
          <article-title>´ndez-</article-title>
          <string-name>
            <surname>Leiva</surname>
            ,
            <given-names>A.J.:</given-names>
          </string-name>
          <article-title>An analysis of hall-of-fame strategies in competitive coevolutionary algorithms for self-learning in rts games</article-title>
          .
          <source>In: Learning and Intelligent Optimization - 7th International Conference, LION 7</source>
          ,
          <string-name>
            <surname>Catania</surname>
          </string-name>
          , Italy, January 7-
          <issue>11</issue>
          ,
          <year>2013</year>
          ,
          <source>Revised Selected Papers. LNCS</source>
          , vol.
          <volume>7997</volume>
          , pp.
          <fpage>174</fpage>
          -
          <lpage>188</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Nogueira</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cotta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferna</surname>
          </string-name>
          <article-title>´ndez-</article-title>
          <string-name>
            <surname>Leiva</surname>
            ,
            <given-names>A.J.:</given-names>
          </string-name>
          <article-title>Virtual player design using self-learning via competitive coevolutionary algorithms</article-title>
          .
          <source>Natural Computing</source>
          <volume>13</volume>
          (
          <issue>2</issue>
          ),
          <fpage>131</fpage>
          -
          <lpage>144</lpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Paredis</surname>
          </string-name>
          , J.:
          <article-title>Coevolutionary computation</article-title>
          .
          <source>Artif. Life</source>
          <volume>2</volume>
          (
          <issue>4</issue>
          ),
          <fpage>355</fpage>
          -
          <lpage>375</lpage>
          (
          <year>Aug 1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Pollack</surname>
            ,
            <given-names>J.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blair</surname>
            ,
            <given-names>A.D.:</given-names>
          </string-name>
          <article-title>Co-evolution in the successful learning of backgammon strategy</article-title>
          .
          <source>Machine Learning</source>
          <volume>32</volume>
          ,
          <fpage>225</fpage>
          -
          <lpage>240</lpage>
          (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Rosin</surname>
            ,
            <given-names>C.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Belew</surname>
            ,
            <given-names>R.K.</given-names>
          </string-name>
          :
          <article-title>New methods for competitive coevolution</article-title>
          .
          <source>Evol. Comput</source>
          .
          <volume>5</volume>
          (
          <issue>1</issue>
          ),
          <fpage>1</fpage>
          -
          <lpage>29</lpage>
          (
          <year>Mar 1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Runarsson</surname>
            ,
            <given-names>T.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lucas</surname>
            ,
            <given-names>S.M.:</given-names>
          </string-name>
          <article-title>Co-evolution versus self-play temporal difference learning for acquiring position evaluation in smallboard go</article-title>
          .
          <source>IEEE Transactions on Evolutionary Computation</source>
          <volume>9</volume>
          (
          <issue>6</issue>
          ),
          <fpage>628</fpage>
          -
          <lpage>640</lpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Togelius</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Burrow</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lucas</surname>
          </string-name>
          , S.M.
          <article-title>: Multi-population competitive co-evolution of car racing controllers</article-title>
          .
          <source>In: Proceedings of the IEEE Congress on Evolutionary Computation</source>
          . pp.
          <fpage>4043</fpage>
          -
          <lpage>4050</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Whitley</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kauth</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>GENITOR: A different genetic algorithm</article-title>
          .
          <source>In: Proceedings of the 1988 Rocky Mountain Conference on Artificial Intelligence</source>
          . pp.
          <fpage>118</fpage>
          -
          <lpage>130</lpage>
          . Computer Science Department, Colorado State University (
          <year>1988</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26. Zio´łko,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Kruk</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          :
          <article-title>Automatic reasoning in the planet wars game</article-title>
          .
          <source>Annales UMCS, Informatica</source>
          <volume>12</volume>
          (
          <issue>1</issue>
          ),
          <fpage>39</fpage>
          -
          <lpage>45</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>