<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Ganando la Carrera a la Incertidumbre: Bots Evolutivos Mejorados para un Simulador de Carreras de Coches</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Mora</surname></persName>
							<email>amorag@ugr.es</email>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">Depto. de Teoría de la Señal</orgName>
								<orgName type="department" key="dep2">Telemática y Comunicaciones ETSIIT-CITIC</orgName>
								<orgName type="institution">Universidad de Granada</orgName>
								<address>
									<country key="ES">España</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">M</forename><surname>Salem</surname></persName>
							<email>salem@univ-mascara.dz</email>
							<affiliation key="aff1">
								<orgName type="department">Dept. of Computer Sciences</orgName>
								<orgName type="institution">University of Mascara</orgName>
								<address>
									<settlement>Argelia</settlement>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">J</forename><forename type="middle">J</forename><surname>Merelo</surname></persName>
							<email>jmerelo@ugr.es</email>
							<affiliation key="aff2">
								<orgName type="department">Depto. de Arquitectura y Tecnología de Computadores ETSIIT-CITIC</orgName>
								<orgName type="institution">Universidad de Granada</orgName>
								<address>
									<country key="ES">España</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Ganando la Carrera a la Incertidumbre: Bots Evolutivos Mejorados para un Simulador de Carreras de Coches</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">09CB68A2CD3D2BA2C6A10B60315F92B2</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T05:05+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Simulación de Carreras de Coches</term>
					<term>TORCS</term>
					<term>Controladores basados en Lógica Difusa</term>
					<term>Conductores autónomos</term>
					<term>Algoritmos Genéticos</term>
					<term>Optimización</term>
					<term>Cruce BLX-α</term>
					<term>Selección basada en Carreras</term>
					<term>Incertidumbre</term>
					<term>Ruido</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>One of the biggest problems in the design through optimization of bots for driving cars in racing simulators, is the so-called 'noise' inherent in the process. That is, in addition to the fact that the fitness function itself is a heuristic based on what we believe (or an expert believes) that will be most important to get a competitive controller to win races, that is, a surrogate/substitute model; the fitness calculation itself has associated uncertainty due to the stochastic components involved in its computation, such as the behavior of the rivals or the race conditions (track, weather), which are not deterministic. In previous work we defined an evolutionary controller based on fuzzy logic for the TORCS simulator. It worked with two sub-controllers, one dedicated to decide on the steering wheel rotation and the other to determine the target speed at each simulation instant. Both were optimized by means of a Genetic Algorithm (GA) based on a fitness calculation focused on maximizing the average speed during the race and minimizing the damage to the vehicle. The mentioned noise required to maintain diversity in the search (in the GA population), so we added the Blend Crossover operator (BLX-α), which also allows to exploit the current results while exploring for new solutions. Along with this in this work we try to manage the uncertainty in the selection of the best individuals of the GA by applying a novel race-based parent selection policy, called pole-position based selection. That is, individuals are grouped and compete against each other in several races, so that only the top-ranked individuals will remain in the population to reproduce. We have conducted several experiments, testing the performance of this new method and comparing the optimized controllers with others in the state of the art, including one of the best from an edition of the prestigious international Simulated Car Racing Championship, which we have clearly beaten.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introducción y descripción del problema</head><p>Los juegos son, en muchos casos, entornos cerrados y controlados, partes o mundos simulados completos que permiten probar técnicas que luego eventualmente se podrán aplicar en el mundo real, probablemente combinado con diferentes tecnologías para abordar su complejidad y variabilidad. Por ejemplo, la simulación de carreras de coches incluye muchos de los factores que están presentes en conducción autónoma: las pistas son muy diferentes y no se conocen por anticipado, hay otros vehículos presentes en la pista, las condiciones cambian según el clima y el vehículo se deteriora si sufre daños.</p><p>El coche simulado (o más bien, su conductor) puede ser 'consciente' de todo esto a través de un conjunto limitado de sensores, y deberá que tomar una decisión sobre la velocidad y dirección óptimas con varios objetivos diferentes <ref type="bibr" target="#b9">[10]</ref>, incluyendo, según el contexto, la posibilidad de vencer a un conjunto de oponentes en una carrera virtual.</p><p>Dado que probar diferentes metodologías de conducción autónoma en el mundo real está normalmente reservado a unas cuantas empresas en el mundo importantes, dichas metodologías y los algoritmos asociados se prueban habitualmente en entornos simulados. Estos entornos pueden ofrecer, además, la posibilidad de comparar nuestro sistema autónomo frente a otros. En este trabajo se usará uno de estos entornos, en concreto The Open Racing Car Simulator (TORCS) <ref type="bibr" target="#b24">[25]</ref>, un simulador de carreras realista que ofrece un gran banco de pruebas para la implementación y evaluación de conductores autónomos. TORCS se ha utilizado varias veces en competiciones de Inteligencia Artificial (IA), en las que el objetivo es crear el mejor conductor autónomo para competir en carreras <ref type="bibr" target="#b13">[14,</ref><ref type="bibr" target="#b12">13,</ref><ref type="bibr" target="#b11">12]</ref>. Además de poder probar nuestro coche frente a otros que se han publicado, se puede utilizar como un entorno independiente para optimizar la conducción en carreras en solitario.</p><p>Por otra parte, los Algoritmos Evolutivos (EAs) <ref type="bibr" target="#b0">[1]</ref> se han aplicado frecuentemente como un método de optimización de propósito general en esta área, generalmente combinado con motores de comportamiento que gobiernan diferentes partes del coche <ref type="bibr" target="#b18">[19,</ref><ref type="bibr" target="#b8">9,</ref><ref type="bibr" target="#b17">18]</ref>. Dichos motores de conducción han incluido últimamente controladores difusos <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b16">17,</ref><ref type="bibr" target="#b10">11]</ref>, que son aquellos que aplican Lógica Difusa <ref type="bibr" target="#b3">[4]</ref>, una técnica bastante adecuada para definir este tipo de agentes autónomos, ya que están en parte inspirados en el razonamiento humano al conducir. Un controlador difuso funciona con variables lingüísticas que, por ejemplo, permitirán girar ligeramente hacia la derecha cuando la siguiente curva está cerca, pero estos controladores deben diseñarse para mapear adecuadamente las entradas con las salidas deseadas en situaciones particulares.</p><p>Desde el punto de vista de la optimización, uno de los principales problemas es que el entorno siempre va a cambiar. Si esto está reflejado correctamente en el simulador utilizado, significará que la puntuación (y por lo tanto, la clasificación, si ese es el objetivo final) siempre cambiará, haciendo una selección probabilística del controlador mejor o ganador. Esta incertidumbre es un desafío a dos niveles: en primer lugar, controladores no óptimos (no ganadores) podrían seleccionarse por casualidad, ya que se les habría asignado una puntuación alta favorecida por dicha incertidumbre; en segundo lugar, una vez seleccionados, esto afectaría a que el algoritmo explote zonas alrededor de dichos controladores no óptimos y dejaría otros (que podrían ser prometedores) sin explorar.</p><p>Por estas dos razones, en este trabajo abordaremos dos desafíos: reducir la incertidumbre en la selección de los " mejores" y mantener una alta diversidad en la población de soluciones (controladores) para no explotar solo las áreas alrededor de esos individuos, cuya puntuación podría haber sido favorecida en parte por el azar durante el proceso de evolución.</p><p>En trabajos previos, los autores presentaron un enfoque que combinaba dos subcontroladores difusos especializados, diseñados por un experto, que podían decidir el mejor ángulo de giro del volante y la velocidad deseada para el coche en cada punto (o tic de simulación) durante una carrera <ref type="bibr" target="#b21">[22]</ref>. Este controlador fue posteriormente mejorado <ref type="bibr" target="#b22">[23]</ref> optimizando los parámetros de sus funciones de pertenencia mediante un algoritmo genético <ref type="bibr" target="#b4">[5]</ref>. Finalmente, los autores mejoraron el controlador en el último artículo <ref type="bibr" target="#b20">[21]</ref> mediante la definición de nuevas funciones de fitness. La selección del mejor controlador al final de la evolución se basó en un conjunto de carreras entre las mejores 4 soluciones, consiguiendo un mejor piloto que en estudios anteriores.</p><p>Esto demostró que los algoritmos evolutivos son capaces de obtener los mejores parámetros difusos para los subcontroladores, pero al mismo tiempo reveló varios desafíos. En general, los algoritmos evolutivos optimizan la función de fitness definida, de modo que los controladores difusos evolucionados (en adelante, FCs) serán eventualmente tan buenos como lo permita la función de fitness. Pero en este caso particular no podemos utilizar como función de aptitud la posición obtenida por el FC en todas las carreras posibles en todas las pistas posibles con todos los posibles oponentes, por lo que tenemos que conformarnos con un sustituto (subrogado) del fitness en un entorno muy limitado. Primero optamos por eliminar oponentes y hacer evaluaciones en carreras en solitario. Después elegimos una pista en particular que combinaba segmentos rectos, así como algunas curvas, y finalmente tuvimos que decidir qué factores relacionados con la velocidad, el daño y el tiempo por vuelta iban a ser incluidos efectivamente en la función de fitness final.</p><p>De este modo, las dos nuevas técnicas aplicadas en este trabajo: Selección basada en pole-position (basada en carreras) y cruce BLX − α, intentan mejorar los resultados anteriores confiando menos en la subrogación de la función de fitness para seleccionar las mejores soluciones (controladores). El mecanismo de selección utilizará una función de aptitud sin parámetros (parameter-less) para seleccionar algunos individuos que competirán entre sí, además las carreras reducirán la aleatoriedad en la aptitud al poner a los candidatos en un entorno más real, es decir, enfrentar coches en carreras uno contra uno ofrecerá un resultado mucho menos variable que simplemente comparar un número que represente su aptitud. Pero incluso en este caso, la incertidumbre estará presente al calcular la aptitud y debemos evitar una explotación excesiva de los resultados. El cruce de BLX − α que hemos introducido se ocupará de este aspecto.</p><p>Con estos métodos, nuestro objetivo es obtener controladores más confiables y competitivos, los cuales serán probados contra oponentes muy competitivos, incluyendo un controlador avanzado que obtuvo muy buenos resultados en varias ediciones de la competición internacional en TORCS.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">El simulador y los controladores</head><p>En esta sección se presentan el entorno de investigación considerado (el simulador de carreras de coches), y se describen los subcontroladores definidos por los autores.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">The Open Racing Car Simulator</head><p>TORCS <ref type="bibr" target="#b24">[25]</ref> es un simulador de carreras de coches de código abierto, realista, multijugador y modular que permite a los usuarios competir contra otros oponentes controlados por ordenador. Es un entorno de pruebas bastante fiable y muy utilizado en investigación en inteligencia artificial.</p><p>Cada coche en TORCS manejará un conjunto de sensores y valores del entorno <ref type="bibr" target="#b11">[12]</ref>, por ejemplo distancias a bordes de la pista o a otros vehículos rivales, el combustible restante, la marcha actual, la posición en la carrera, la velocidad, o los daños, entre otros (Ver Figura 1).</p><p>Figura 1. Captura de TORCS en la que se muestran varios de los sensores que considera el coche.</p><p>Estos valores serán considerados por los conductores autónomos o controladores, para gestionar el coche utilizando los llamados actuadores <ref type="bibr" target="#b11">[12]</ref>: giro del volante, acelerador, freno y cambios de marcha.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">Subcontroladores Difusos</head><p>El controlador diseñado por los autores se basa en el modelo de sensores y actuadores de la Simulated Car Racing Competition.</p><p>Sin embargo, la velocidad objetivo y el ángulo de giro de la dirección se calculan mediante dos sistemas modulares y especializados <ref type="bibr" target="#b21">[22]</ref>. Estos subcontroladores incorporaron lógica difusa y consideran cinco sensores de posición. Partiendo de ellos, se aplicaron AGs para mejorarlos de manera automática.</p><p>El subcontrolador difuso de velocidad objetivo pretende estimar la velocidad objetivo óptima del coche, tanto en las partes rectas, como en las curvas de la pista. Para ello tiene en cuenta dos criterios: moverse lo más rápido posible y de la manera más segura (con el menor daño posible). Esta estimación se basa en dos casos generales: si el coche encara una línea recta, la velocidad objetivo tomará un valor máximo (maxSpeed km/h). Sin embargo, si está cerca de una curva, se disminuirá la velocidad actual a un valor incluido en el intervalo [minSpeed, maxSpeed] km/h.</p><p>Este controlador difuso tiene una salida, la velocidad, y tres valores de entrada (ver Figura 1): Front = Sensor 9: Distancia frontal al borde de la pista (ángulo 0°). M5 = max (Sensor 8, Sensor 10): distancia máxima al borde de la pista con un ángulo de +5°y -5°con respecto a Front. M10 = max (Sensor 7, Sensor 11): distancia máxima al borde de la pista con un ángulo de +10°y -10°.</p><p>Se trata de un sistema difuso de tipo Mamdani <ref type="bibr" target="#b7">[8]</ref> con tres funciones de pertenencia (MF) trapezoidales para cada variable de entrada. En <ref type="bibr" target="#b22">[23]</ref> se optimizaron con un AG los conjuntos de parámetros que definen las funciones de pertenencia, mejorando en gran medida los resultados obtenidos.</p><p>Además, el controlador está basado en un conjunto de reglas difusas, diseñadas para maximizar la velocidad del coche dependiendo de las distancias detectadas al borde de la pista. Dichas reglas pueden verse en <ref type="bibr" target="#b21">[22]</ref>.</p><p>El segundo es el subcontrolador difuso para el giro del volante, que pretende determinar el mejor ángulo de giro en base a una estimación de la posición objetivo del coche. Su estructura es similar a la del controlador anterior, basándose en los mismos sensores, pero considerando el giro como salida del mismo.</p><p>De modo que, como reglas generales: si el coche circula en línea recta, se fijará como posición objetivo el centro del carril por el que circula; mientras que, si el coche está cerca de una curva a derecha o izquierda, se acercará a la curva dejando un espacio entre el coche y el borde de la pista para evitar la pérdida de control.</p><p>Para detectar las curvas, el controlador revisa los valores de los sensores (M10, M5 y Front), de modo que si el valor en el sensor frontal es el mayor, hay un tramo recto; mientras que si los valores de M5 y M10 con ángulos positivos (+5 y +10) son los mayores, habrá una curva a la derecha, y viceversa.</p><p>El controlador usa un conjunto de reglas que fue definido modelando el comportamiento de un conductor humano <ref type="bibr" target="#b21">[22]</ref>.</p><p>Los controladores difusos tienen funciones de pertenencia trapezoidales, que siguen la Ecuación 1. En un controlador de este tipo, las reglas difusas se aplican a términos lingüísticos, que califican las llamadas variables lingüísticas y que se definen mediante funciones de pertenencia que dependen de un conjunto de parámetros que determinan su forma y su 'funcionamiento'. De modo que se aplicó un AG para optimizar dichos parámetros y determinar la partición difusa de la variable lingüística <ref type="bibr" target="#b23">[24]</ref>. Las variables lingüísticas de entrada en nuestro problema serán Front, M5 y M10.</p><p>Una función de pertenencia (MF) trapezoidal, se define como:</p><formula xml:id="formula_0">µ A (x) =        x−x1 x2−x1 , x 1 ≤ x ≤ x 2 1, x 2 ≤ x ≤ x 3 x4−x x4−x3 , x 3 ≤ x ≤ x 4 0, else<label>(1)</label></formula><p>Con:</p><formula xml:id="formula_1">x 1 ≤ x 2 ≤ x 3 ≤ x 4<label>(2)</label></formula><p>Como se puede ver, una MF está determinada por cuatro parámetros x 1 , x 2 , x 3 y x 4 , los cuales tienen valores en el intervalo [a, b] (Figura 2). </p><formula xml:id="formula_2">a = x 1 ≤ x 2 ≤ ... ≤ x 2n−1 ≤ x 2n = b (3) µ A1 (x) =    1, x 1 ≤ x ≤ x 2 x3−x x3−x2 , x 2 ≤ x ≤ x 3 0, x &gt; x 3 µ Ai (x) =              0, x ≤ x 2i−2 x−x2i−2 x2i−1−x2i−2 , x 2i−2 ≤ x ≤ x 2i−1 , n = 2, ..., i − 1 1, x 2i−1 ≤ x ≤ x 2i x2i+1−x x2i+1−x2i , x 2i ≤ x ≤ x 2i+1 0, x &gt; x 2i+1 µ An (x) =    0, x ≤ x 2n−2 x−x2n−2 x2n−1−x2n−2 , x 2n−2 ≤ x ≤ x 2n−1 1, x &gt; x 2n−1 (4)</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Optimización Mediante un Algoritmo Genético</head><p>El algoritmo de optimización propuesto tiene como objetivo encontrar los parámetros óptimos de las funciones de pertenencia de los dos subcontroladores previamente introducidos.</p><p>De modo que cada individuo/cromosoma es un vector de 18 valores/parámetros, 6 por variable, como se muestra en la Figura 3. La inicialización de los cromosomas (población inicial) se realiza asignando valores aleatorios en un rango de variación ([0, 100]) <ref type="bibr" target="#b4">[5]</ref>, a fin de comenzar por valores válidos <ref type="bibr" target="#b21">[22]</ref>. Dado que nuestro trabajo requiere precisión y el intervalo de variación de cada parámetro no es completamente conocido, hemos considerado codificación real <ref type="bibr" target="#b1">[2]</ref> en el vector de variables a optimizar.</p><p>El proceso completo se puede ver en la Figura 3. Como se muestra, TORCS se usa en la fase de evaluación de cada individuo dentro del proceso evolutivo.</p><p>La evaluación de los individuos se ha realizado considerando la función de fitness que mejores resultados nos ha dado hasta este trabajo, usada en el artículo <ref type="bibr" target="#b20">[21]</ref>. Ésta es:</p><formula xml:id="formula_3">f AV S = AV G(Speed) Damage+1 (5)</formula><p>Es un enfoque sin parámetros (parameter-less) ya que no hay pesos en los términos <ref type="bibr" target="#b6">[7]</ref>, que se centra en los objetivos reales de un conductor en una carrera, en lugar de en el objetivo final de ganarla, a fin de conseguir controladores más humanos ('human-like'). La función depende únicamente de dos variables, por lo que se intenta conseguir conductores capaces de alcanzar la máxima velocidad media en la pista (AV G(Speed)), al tiempo que se evita que el coche sufra daños (Damage), ya que demasiado daño hará que el coche tenga que abandonar la carrera.</p><p>De modo que la aptitud de cada solución candidata se calcula 'inyectando' sus valores genéticos a los parámetros de las funciones de pertenencia de los dos subcontroladores difusos. El controlador autónomo definido se utiliza para conducir un coche en una carrera de 20 vueltas en un circuito sin oponentes, y los resultados (velocidad media y daño) se utilizan para calcular el valor de fitness. Como el objetivo del controlador del coche es ganar tantas carreras como sea posible, intentamos optimizar el caso más general realizando carreras de entrenamiento en solitario, que serán menos sensibles a la presencia de ruido/incertidumbre debido a la participación de otros controladores <ref type="bibr" target="#b14">[15]</ref>. La pista seleccionada para esta evaluación será una que combine curvas y partes rectas para obtener un 'comportamiento todoterreno'. El operador de mutación ha permanecido como en trabajos anteriores, es decir, mutación no uniforme <ref type="bibr" target="#b15">[16]</ref>.</p><p>Una nueva política de selección basada en pole-position ha sido implementada (o selección basada en carreras), con el objetivo de lograr que individuos/controladores mejores o más confiables sean padres de la siguiente población. Para ello, todos los individuos se organizan en grupos de 10, luego se simulan diferentes carreras de varias vueltas utilizando a cada individuo como controlador (con el mismo coche) en una pista de TORCS. Después de cada carrera, los participantes obtienen diferentes puntuaciones en función de su posición en la clasificación final. Los 5 mejores controladores tras la suma de puntuaciones de todas las carreras se seleccionan como padres para la siguiente descendencia.</p><p>De esta forma, se seleccionarán los mejores individuos para reproducirse con mayor probabilidad. No es posible asegurar que sean absolutamente los mejores, debido a la incertidumbre presente en este tipo de entornos, es decir, juegos en los que competimos contra oponentes no deterministas <ref type="bibr" target="#b14">[15]</ref>. Sin embargo, creemos firmemente que esta política de selección será "menos sensible" a esa incertidumbre (o ruido) y, por lo tanto, será más justa y confiable que un enfoque basado puramente en los valores de fitness. Por tanto, pensamos que este mecanismo de selección propuesto sería beneficioso para conseguir un buen proceso de optimización.</p><p>Además, se ha aplicado el operador de cruce BLX-α <ref type="bibr" target="#b2">[3]</ref>, en lugar del anterior cruce en dos puntos. El Blendcrossoveroperator elige aleatoriamente un número en el intervalo [x i − α(y i − x i )..y i + α(y i − x i )], donde x i e y i son los i th valores de paráme-tros de las soluciones padres x,y, y además x i &lt; y i . Vea la Figura 5 para comprender el proceso. De forma que este operador se basa en la generación aleatoria de genes de la vecindad asociada a los genes en los padres. Se generan tres descendientes, con diferencias entre sí y también entre ellos y sus padres, lo que lleva a un factor de exploración superior en la generación de la descendencia. Este operador es normalmente usado en algoritmos genéticos con codificación real, en los que ha demostrado alcanzar un buen equilibrio entre exploración y explotación <ref type="bibr" target="#b2">[3]</ref>.</p><p>En este operador, el parámetro α controla la relación entre exploración y explotación, de modo que, para garantizar un equilibrio entre estos factores, tomará un valor α = 0,5.</p><p>En los AGs, el proceso de búsqueda necesita una alta tasa de exploración en las primeras generaciones para evaluar múltiples partes del espacio de búsqueda (alta diversidad), pero en las últimas generaciones se prefiere una alta explotación para asegurar que se llega a una solución óptima.</p><p>Hemos considerado dos enfoques diferentes en los experimentos, uno en el que se usa un valor constante para α y otro en el que el valor es variable, de forma que éste decrece a medida que pasan las generaciones (obteniendo paulatinamente más explotación y menos exploración). De forma que el valor se calcula como:</p><formula xml:id="formula_4">α = 1 − g g max<label>(6)</label></formula><p>Donde g es la generación actual y g max es el máximo número de generaciones.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Experimentos y resultados</head><p>Basándonos en los resultados de nuestro artículo anterior <ref type="bibr" target="#b20">[21]</ref>, la elección de una pista adecuado para el entrenamiento es un factor importante para obtener bots competitivos. De manera que hemos seleccionado el circuito Alpine 2 para los experimentos, ya que combina múltiples giros con partes rectas (Ver Figura 6).</p><p>Además, al igual que en nuestros estudios previos, hemos considerado el coche car1-tbr1 en nuestros controladores, dado que tiene un rendimiento moderado que per-Figura 6. Alpine 2 Track: Circuito de montaña lento. Longitud: 3773.57m, Anchura: 10m mitirá a nuestro controlador adaptarse a la conducción en casi todas las condiciones de pista.</p><p>Los controladores genéticos difusos (GFC) se han evaluado con la función de fitness mencionada en la sección anterior: f AV S (Ecuación 5). Se ha considerado un tamaño de población de 60 individuos. El resto de parámetros han sido: Generaciones=50, Prob. Cruce=0,85, Prob. Mutación=0,09, y 10 ejecuciones diferentes por configuración.</p><p>La selección basada en pole-position se ha aplicado sobre la pista indicada, con 5 carreras de 20 vueltas cada una y una parrilla inicial (posición de partida) aleatoria. La función de puntuación se ha definido basándonos en el esquema habitual en la Fórmula 1, de modo que las puntuaciones obtenidas dependen del puesto del coche en el ranking final: 1 -25 puntos, 2 -18, 3 -15, 4 -12, 5 -10, 6 -8, 7 -6, 8 -4, 9 -2, 10 -1.</p><p>Al final de la evolución (en la última generación) un proceso de selección basado en carreras se ha aplicado de nuevo para elegir al mejor individuo de la ejecución. De modo que los 10 mejores individuos (en base a su fitness) de la población final han competido en 5 carreras de 5 vueltas en la misma pista. Se han calculado las mismas puntuaciones y el controlador con mayor puntuación ha sido elegido como el mejor.</p><p>El proceso evolutivo se ha aplicado en grupos separados de ejecuciones y se han obtenido los siguientes controladores: GF C: Controlador de nuestro trabajo anterior <ref type="bibr" target="#b20">[21]</ref>, en el que se usó el fitness f AV S (Equation <ref type="formula">5</ref>). GF C − RS: Un controlador obtenido aplicado el cruce de dos puntos, selección basada en pole-position cada 5 generaciones y el mismo fitness en las demás generaciones. GF C − F A: Un controlador obtenido aplicando BLX − α crossover con un valor constante de α = 0, 5 y selección basada en pole-position cada 5 generaciones y el fitness f AV S en las demás. GF C − V A: Un controlador obtenido aplicando BLX − α con un valor variable de α usando la expresión 6 y selección basada en pole-position carreras cada 5 generaciones y el fitness f AV S en las demás.</p><p>Una vez que las 10 ejecuciones han terminado, los mejores 10 controladores obtenidos compiten de nuevo en un conjunto similar de carreras al que se hace en la última generación, a fin de elegir al mejor controlador de cada esquema, es decir, el mejor</p><formula xml:id="formula_5">GF C − RS, GF C − F A y GF C − V A.</formula><p>Los mejores GFC finales (uno por esquema) se han evaluado en grupos de varias carreras, en una especie de mini campeonato de Fórmula 1, que consta de 10 carreras, cada una de 20 vueltas y con un total de 10 participantes por carrera: los 4 GFCs y 6 bots estándar de TORCS. Hemos elegido dos controladores de tipo tita (un conductor conservador), dos berniw (conocido por su agresiva política de adelantamiento) y dos inferno (el más rápido). Las primeras 5 carreras se llevaron a cabo en la pista Alpine 2 (utilizada durante el entrenamiento/optimización); y las otras 5 carreras se realizaron en la pista E-Track 5 (no entrenada para los nuevos controladores). Finalmente, para hacerlo más justo, hemos definido una puntuación adicional, por lo que el controlador que consigue la vuelta más rápida o el daño mínimo en cada carrera recibe 5 puntos extra. La parrilla de salida se estableció nuevamente al azar.</p><p>Los resultados de esta comparativa se muestran en la Tabla 1 y se resumen de manera gráfica en la Figura 7.</p><p>Tabla 1. Resultados del mini-campeonato con 10 controladores y 10 carreras en dos pistas diferentes. tita, berniw e inferno son controladores de ejemplo incluidos en TORCS <ref type="bibr" target="#b24">[25]</ref> Carreras en Alpine 2 De la tabla y la figura se desprende claramente que el controlador GF C − V A obtiene los mejores resultados. De hecho, el Dicho controlador ganó tres carreras en la pista Alpine 2 y se ha clasificado en segundo lugar en las otras dos pistas de carreras. En el circuito E-Track 5 ganó dos carreras, ha sido segundo dos veces y tercero en la última carrera.</p><p>El segundo controlador que usa BLX − α (valor constante de 0,5) quedó muy bien posicionado en todas las carreras. Ganó una carrera y se clasificó segundo en dos más y tercero otras. Las demás carreras las ganó el controlador berniw, siempre un duro rival. Podemos notar que los controladores basados en BLX − α ganaron tres de las cinco carreras en la pista Alpine 2 utilizada en la selección y se clasificaron al menos en el cuarto lugar. Se obtuvieron los mismos resultados o incluso mejores para la otra pista, la cual era desconocida para nuestros controladores.</p><p>Estos resultados confirman la eficacia y la solidez de la política de selección basada en pole-position utilizada para evaluar a los individuos, así como para seleccionar a los candidatos para el cruce. Aunque esta política se ha aplicado solo una vez cada 5 generaciones debido a que consume mucho tiempo, claramente ha afectado positivamente al rendimiento de los controladores, como se puede observar en la gran diferencia existente entre los resultados del controlador GF C frente a GF C − RS por ejemplo.</p><p>A su vez, la política de selección propuesta, combinada con el operador BLX − ha mejorado el rendimiento del controlador GF C − F A. La introducción de un parámetro variable α a lo largo de las generaciones en el bot GF C − V A ha hecho posible controlar mejor relación entre exploración/explotación durante el proceso evolutivo, permitiendo generar descendientes diferentes de sus padres y más eficientes que ellos.</p><p>Finalmente, para comprobar la bondad de nuestro mejor controlador, hemos realizado un experimento adicional. Hemos considerado un oponente del estado del arte, que participó en varias Competiciones de Carreras Simuladas en TORCS en ediciones pasadas. Fue propuesto por Pérez-Liébana, Sáez, Recio e Isasi <ref type="bibr" target="#b19">[20]</ref> y luego refinado en el trabajo <ref type="bibr" target="#b10">[11]</ref>. Lo hemos bautizado como PSRI en honor a los apellidos de sus autores.</p><p>Este controlador funciona principalmente mediante una máquina de estados finitos (FSM), definiendo los principales estados en los que puede encontrarse el conductor (por ejemplo, girando, adelantando a un rival, etc). Las transiciones en la FSM se rigen por un conjunto de reglas difusas, basadas en la información leída de diferentes sensores. También existe un módulo clasificador (árbol de decisión J48), capaz de analizar las entradas de algunos sensores con el fin de predecir partes de la pista, para anticipar las siguientes acciones a realizar. Las reglas difusas y también algunos parámetros del FSM se optimizaron mediante un algoritmo NSGA-II.</p><p>El controlador PSRI compitió en la edición 2009 del Simulated Car Racing Championship <ref type="bibr" target="#b12">[13]</ref>, donde ocupó el cuarto lugar considerando las puntuaciones obtenidas en tres competiciones diferentes (celebradas en las conferencias CEC, GECCO y CIG 2009). En promedio tuvo un gran rendimiento, alcanzando buenas puntuaciones y posiciones en varias carreras. La Tabla 2 muestra una comparativa entre nuestros dos controladores genéticos difusos con BLX − α: GF C − F A y GF C − V A y PSRI. Los resultados son los valores medios de Damage, M axSpeed y Speed para 10 carreras en la pistas Alpine 2 y E-Track 5.</p><p>Tabla 2. Daño y Velocidades medios para 5 carreras en la pista Alpine 2 y 5 carreras en la pista E-Track 5 Los resultados de los controladores P SRI y GF C − F A son similares, ganaron dos y una carrera respectivamente de las 10. Sus velocidades promedio son comparables pero en cuanto al daño, el controlador GF C − F A sufrió el mínimo al estar incluida la variable Damage en la evaluación de aptitud. Los resultados del controlador GF C − V A son aun más satisfactorios, ya que ganó 7 carreras y obtuvo el valor más bajo de daños 117, 55 y 14, 67 para ambos circuitos, así como la velocidad promedio más alta 199, 65 y 170, 23.</p><p>Observando estos resultados y los anteriores, podemos concluir que los controladores propuestos son más que competentes, debido a los nuevos mecanismos incluidos para hacer frente a la incertidumbre y realizar una búsqueda más adecuada del espacio de soluciones.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Conclusiones y trabajo futuro</head><p>En este artículo hemos intentado obtener, mediante la optimización evolutiva de sistemas difusos, controladores para coches de carreras competitivos mejorando el proceso de selección con el objetivo de eliminar (o al menos paliar) el efecto de la incertidumbre presente en este tipo de entornos. Para ellos se ha considerado evaluar a los controladores mediante carreras reales en lugar de seguir una evaluación basada en el cálculo de un fitness. Además, se ha controlado el equilibrio entre exploración y explotación durante el proceso evolutivo de optimización mediante el uso de un operador BLX-α.</p><p>Cada controlador genético difuso está sujeto a incertidumbres en la pista, especialmente en caso de que haya rivales (con un comportamiento no determinista), por lo que para superar este problema y así diseñar un bot robusto y confiable, propusimos aplicar una Política de selección basada en pole-position, en la que la elección de los padres en el proceso evolutivo se lleva a cabo de acuerdo con los resultados de un conjunto de mini-campeonatos organizados entre los individuos de la población, de manera similar a un torneo de carreras de coches. Al mismo tiempo, y con el objetivo de intensificar el proceso de exploración en el espacio de búsqueda, usamos el operador de cruce BLX − α con valores decrecientes del parámetro α a lo largo de las generaciones.</p><p>La evaluación se realizó comparando el controlador propuesto con bots de la plataforma TORCS, arrojando muy buenos resultados. La otra evaluación de nuestro controlador fue una confrontación con un bot real (controlador P SRI), que participó en varias ediciones de campeonatos internacionales de carreras simuladas de coches. En este caso, el operador BLX y la nueva política de selección han tenido un gran impacto al ayudar a nuestro controlador a ganar tres cuartas partes de las carreras, obteniendo además los valores más bajos de daño, velocidad promedio y velocidad máxima.</p><p>Estos resultados nos permiten pensar que nuestro controlador podría haber alcanzado una muy buena clasificación en dicha competición, que lamentablemente ya no se celebra desde 2015. En cualquier caso, pensamos que los resultados de este estudio podrían aplicarse con éxito a otros simuladores de carreras de coches, como los que se utilizan en las competiciones de e-sports actuales, como iRace (https://www.iracing.com/).</p><p>Como líneas de trabajo futuro, este controlador se puede mejorar de varias formas: Podemos extender la política de selección a todas las generaciones superando el inconveniente del tiempo de cálculo mediante una implementación paralela. También podemos explorar otras funciones de fitness sin parámetros para evaluar a los individuos, incluyendo otros factores que afecten al rendimiento del coche. Otra perspectiva es utilizar múltiples pistas (en lugar de solo una) en el proceso de selección para obtener un controlador más general, capaz de lidiar con muchas situaciones diferentes.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Agradecimientos</head><p>Este trabajo ha sido parcialmente financiado por los proyectos nacionales RTI2018-102002-A-I00 (Ministerio de Ciencia, Innovación y Universidades), TIN2017-85727-C4-2-P y PID2020-115570GB-C22 (Ministerio de Economía y Competitividad), así como los proyectos autonómicos B-TIC-402-UGR18 y P18-RT-4830 (FEDER y Junta de Andalucía).</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figura 2 .</head><label>2</label><figDesc>Figura 2. Función de pertenencia trapezoidal</figDesc><graphic coords="6,250.87,305.53,113.63,79.88" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figura 3 .</head><label>3</label><figDesc>Figura 3. Descripción de un cromosoma</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figura 4 .</head><label>4</label><figDesc>Figura 4. Diagrama de flujo del proceso de optimización de un controlador difuso en TORCS. Para evaluar a un individuo ponemos los valores de los parámetros de los dos subcontroladores en el cromosoma correspondiente, luego lanzamos una carrera en TORCS con esta configuración, obteniendo los valores resultantes de Damage, T opSpeed y M eanLapT ime. El valor de fitness del individuo se calcula utilizando estos valores.</figDesc><graphic coords="8,180.12,115.84,255.12,178.44" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figura 5 .</head><label>5</label><figDesc>Figura 5. Operador de cruce (BLX − α)</figDesc><graphic coords="9,236.81,163.21,141.74,73.55" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figura 7 .</head><label>7</label><figDesc>Figura 7. Puntuaciones obtenidas por los diferentes controladores difusos genéticos en dos pistas diferentes.</figDesc><graphic coords="11,194.29,479.49,226.77,141.49" type="bitmap" /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><forename type="first">T</forename><surname>Bäck</surname></persName>
		</author>
		<title level="m">Evolutionary algorithms in theory and practice</title>
				<imprint>
			<publisher>Oxford University Press</publisher>
			<date type="published" when="1996">1996</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">A genetic algorithm for solving the CEC2013 competition problems on real-parameter optimization</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">M M</forename><surname>Elsayed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Sarker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">L</forename><surname>Essam</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE Congress on Evolutionary Computation, CEC 2013</title>
				<meeting><address><addrLine>Cancun, Mexico</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2013-06-23">21-23 June 2013 2013</date>
			<biblScope unit="page" from="356" to="360" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Global and local realcoded genetic algorithms based on parent-centric crossover operators</title>
		<author>
			<persName><forename type="first">C</forename><surname>García-Martínez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Lozano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Herrera</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Molina</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Sánchez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">European Journal of Operational Research</title>
		<imprint>
			<biblScope unit="volume">185</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="1088" to="1113" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Fuzzy logic: A &apos;simple&apos; solution for complexities in neurosciences?</title>
		<author>
			<persName><forename type="first">S</forename><surname>Godil</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Shamim</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Enam</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Qidwai</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Surg Neurol Int</title>
		<imprint>
			<biblScope unit="page" from="2" to="24" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Genetic Algorithms in search, optimization and machine learning</title>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">E</forename><surname>Goldberg</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1989">1989</date>
			<publisher>Addison Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Tuning a fuzzy racing car by coevolution</title>
		<author>
			<persName><forename type="first">S</forename><surname>Guadarrama</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Vazquez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Genetic and Evolving Systems</title>
				<imprint>
			<date type="published" when="2008-03">2008. March 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">A parameter-less genetic algorithm</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">R</forename><surname>Harik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">G</forename><surname>Lobo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 1st Annual Conference on Genetic and Evolutionary Computation</title>
				<meeting>the 1st Annual Conference on Genetic and Evolutionary Computation<address><addrLine>San Francisco, CA, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Morgan Kaufmann Publishers Inc</publisher>
			<date type="published" when="1999">1999</date>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="page" from="258" to="265" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">A Mamdani Type Fuzzy Logic Controller</title>
		<author>
			<persName><forename type="first">I</forename><surname>Iancu</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2012">2012</date>
			<publisher>InTech</publisher>
			<biblScope unit="page" from="325" to="352" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Optimization of an autonomous car controller using a selfadaptive evolutionary strategy</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">S</forename><surname>Kim</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Na</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">J</forename><surname>Kim</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal of Advanced Robotic Systems</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page">73</biblScope>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Autonomous driving in dynamic environments</title>
		<author>
			<persName><forename type="first">S</forename><surname>Kolski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Ferguson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Stacniss</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Siegwart</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Workshop on Safe Navigation in Open and Dynamic Environments at the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</title>
				<meeting>the Workshop on Safe Navigation in Open and Dynamic Environments at the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)<address><addrLine>Beijing, China</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Evolving a fuzzy controller for a car racing competition</title>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">P</forename><surname>Liébana</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Recio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Sáez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Isasi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2009 IEEE Symposium on Computational Intelligence and Games, CIG 2009</title>
				<meeting>the 2009 IEEE Symposium on Computational Intelligence and Games, CIG 2009<address><addrLine>Milano, Italy</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2009-09-10">7-10 September, 2009. 2009</date>
			<biblScope unit="page" from="263" to="270" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<title level="m" type="main">Simulated car racing championship competition. software manual</title>
		<author>
			<persName><forename type="first">D</forename><surname>Loiacono</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Cardamone</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Lanzi</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
			<publisher>TORCS news</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">The 2009 simulated car racing championship</title>
		<author>
			<persName><forename type="first">D</forename><surname>Loiacono</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">L</forename><surname>Lanzi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Togelius</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Onieva</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">A</forename><surname>Pelta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">.</forename><surname>Butz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">D</forename><surname>Lonneker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Cardamone</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Perez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Saez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Preuss</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Quadflieg</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. Comput. Intell. AI Games</title>
		<imprint>
			<biblScope unit="volume">2</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="131" to="147" />
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">The wcci 2008 simulated car racing competition</title>
		<author>
			<persName><forename type="first">D</forename><surname>Loiacono</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Togelius</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">L</forename><surname>Lanzi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Kinnaird-Heether</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">M</forename><surname>Lucas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Simmerson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Perez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">G</forename><surname>Reynolds</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Saez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE Symposium On Computational Intelligence and Games</title>
				<imprint>
			<date type="published" when="2008-12">2008. Dec 2008</date>
			<biblScope unit="page" from="119" to="126" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">A statistical approach to dealing with noisy fitness in evolutionary algorithms</title>
		<author>
			<persName><forename type="first">J</forename><surname>Merelo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Chelly</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Mora</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Fernández-Ares</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">I</forename><surname>Esparcia-Alcázar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Cotta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>De Las Cuevas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Rico</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Computational Intelligence</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="79" to="95" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">A theoretical analysis of the non-uniform mutation operator for the modified genetic algorithm</title>
		<author>
			<persName><forename type="first">A</forename><surname>Neubauer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the IEEE International Conference on Evolutionary Computation</title>
				<meeting>the IEEE International Conference on Evolutionary Computation</meeting>
		<imprint>
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Autonomous car fuzzy control modeled by iterative genetic algorithms</title>
		<author>
			<persName><forename type="first">E</forename><surname>Onieva</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Alonso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Pérez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Milanés</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Fuzzy Systems</title>
		<imprint>
			<biblScope unit="page" from="1615" to="1620" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">An evolutionary tuned driving system for virtual car racing games: The autopia driver</title>
		<author>
			<persName><forename type="first">E</forename><surname>Onieva</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Pelta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Godoy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Milanés</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Rastelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal of Intelligent Systems</title>
		<imprint>
			<biblScope unit="volume">27</biblScope>
			<biblScope unit="page" from="217" to="241" />
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">A modular parametric architecture for the torcs racing engine</title>
		<author>
			<persName><forename type="first">E</forename><surname>Onieva</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">A</forename><surname>Pelta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Alonso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Milanés</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Pérez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 5th IEEE Symposium on Computational Intelligence and Games (CIG&apos;09)</title>
				<meeting>the 5th IEEE Symposium on Computational Intelligence and Games (CIG&apos;09)<address><addrLine>Piscataway, NJ, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="2009">2009</date>
			<biblScope unit="page" from="256" to="262" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Evolving a rule system controller for automatic driving in a car racing competition</title>
		<author>
			<persName><forename type="first">D</forename><surname>Perez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Saez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Recio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Isasi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE Symposium On Computational Intelligence and Games</title>
				<imprint>
			<date type="published" when="2008-12">2008. Dec 2008</date>
			<biblScope unit="page" from="336" to="342" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">The evolutionary race: Improving the process of evaluating car controllers in racing simulators</title>
		<author>
			<persName><forename type="first">M</forename><surname>Salem</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Mora</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">J</forename><surname>Merelo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE Conference on Computational Intelligence and Games (CIG)</title>
				<imprint>
			<date type="published" when="2018-08">2018. Aug 2018</date>
			<biblScope unit="page" from="1" to="8" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Driving in TORCS using modular fuzzy controllers</title>
		<author>
			<persName><forename type="first">M</forename><surname>Salem</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Mora</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">J</forename><surname>Merelo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>García-Sánchez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Applications of Evolutionary Computation. EvoApplications 2017</title>
				<editor>
			<persName><forename type="first">G</forename><surname>Squillero</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><forename type="middle">K</forename></persName>
		</editor>
		<meeting><address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="volume">10199</biblScope>
			<biblScope unit="page" from="361" to="376" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Evolving a TORCS modular fuzzy driver using genetic algorithms</title>
		<author>
			<persName><forename type="first">M</forename><surname>Salem</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Mora</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">J</forename><surname>Merelo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>García-Sánchez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Applications of Evolutionary Computation</title>
				<editor>
			<persName><forename type="first">K</forename><surname>Sim</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">P</forename><surname>Kaufmann</surname></persName>
		</editor>
		<meeting><address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer International Publishing</publisher>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="342" to="357" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">A novel fuzzy inferencing methodology for simulated car racing</title>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">D</forename><surname>Thang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Garibaldi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE International Conference on Fuzzy Systems</title>
				<meeting><address><addrLine>Hong Kong, China</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2008-06-06">1-6 June, 2008. 2008</date>
			<biblScope unit="page" from="1907" to="1914" />
		</imprint>
	</monogr>
	<note>Proceedings.</note>
</biblStruct>

<biblStruct xml:id="b24">
	<monogr>
		<author>
			<persName><forename type="first">B</forename><surname>Wyman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Espie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Guionneau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Dimitrakakis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Coulom</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Sumner</surname></persName>
		</author>
		<ptr target="http://www.torcs.org" />
		<title level="m">TORCS the open racing car simulator</title>
				<imprint>
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
