ANÁLISIS ESTADÍSTICO COOPERATIVOCOMPETITIVO DE MASAS DE ENJAMBRES DE RPAS INTELIGENTES EN LA AIR COMBAT CLOUD Trabajo Final de Máster Autor: Fernando Aguirre Estévez Director: Manuel Caravaca Garratón Máster Universitario en Técnicas de Ayuda a la Decisión Especialidad: Estadística Curso: 2019/2020 ANÁLISIS ESTADÍSTICO COOPERATIVO-COMPETITIVO DE MASAS DE ENJAMBRES DE RPAS INTELIGENTES EN LA AIR COMBAT CLOUD RESUMEN: Desarrollo de avanzados algoritmos híbridos, basados en un MA de optimización evolutiva y búsqueda de estados, adicionado a un SVM/RNA de aprendizaje automático, definiendo una máquina de IA, la cual se combina con la teoría de juegos cooperativos, calculando los valores de Shapley y Banzhaf para subenjambres, y con la teoría de juegos no cooperativos para el enjambre completo, determinando nuevas soluciones optimizadas respecto al equilibrio de Nash, apoyados en conceptos innovadores estadístico-modales, de elusión de colisiones y variación de la entropía del enjambre, capaz de tomar la mejor decisión operativa en la Air Combat Cloud. ABSTRACT: Development of advanced hybrid algorithms, based on a MA of evolutionary optimization and search of states, added to a machine learning algorithm SVM/ANN, defining an artificial intelligence machine, in combination with cooperative game theory, calculating the Shapley and Banzhaf values for sub-swarms, as well as the theory of noncooperative game for the entire swarm, determining new optimized solutions with respect to the Nash equilibrium, supported by innovative concepts such as statistical modal analysis, collision avoidance technology and drone swarm entropy variation, able to make the best operational decision within an Air Combat Cloud. Dedicatoria Dedicado a aquellas almas de un cierto temple; que como sostiene el filósofo Jean-Jacques Rousseau, transforman a las otras en ellas mismas; tienen un círculo de influencia al cual nadie se resiste; no se las puede conocer, sin querer imitarlas, y por su sublime elevación, atraen a ellas todo lo que les rodea Julia, o la Nueva Eloísa Agradecimientos Contenido Capítulo 1. Introducción ............................................................................... 1 1.1. Estado del arte ......................................................................................................................... 7 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs ................................................................................................................... 13 Capítulo 3. RPAs en la Air Combat Cloud ............................................... 23 Capítulo 4. Colisiones entre RPAs ............................................................ 41 Capítulo 5. Tratamiento físico-matemático de un RPA .................... 53 Capítulo 6. Técnica de evitación de colisiones entre RPAs ............. 60 Capítulo 7. Entropía del enjambre .......................................................... 82 Capítulo 8. Análisis estadístico modal ................................................... 90 Capítulo 9. Interferencia entre enjambres ........................................ 150 Capítulo 10. Enjambre en movimiento ............................................... 160 Capítulo 11. El enjambre como juego cooperativo ......................... 178 11.1. El valor de Shapley.......................................................................................................... 184 11.2. El valor de Banzhaf ......................................................................................................... 192 Capítulo 12. Optimización ....................................................................... 197 Capítulo 13. Algoritmo Memético ......................................................... 204 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre .... 234 Capítulo 15. Aprendizaje Automático (Machine Learning) ......... 244 15.1. Máquinas de vectores soporte ................................................................................... 247 15.2. Red Neuronal Artificial ................................................................................................. 311 Capítulo 16. Juegos no cooperativos en masas de enjambres..... 346 i Capítulo 17. Conclusiones (y trabajo futuro).................................... 388 17.1. Líneas futuras ................................................................................................................... 396 Apéndice A. Códigos del programa....................................................... 400 Referencias ................................................................................................... 486 ii iii iv Lista de Acrónimos ACRÓNIMO Significado AAA Artillería Antiaérea ACC Air Combat Cloud ACM Computer Chess Championships ACO Ant Colony Optimization ADS–B Automatic Dependent Surveillance–Broadcast AFRL Air Force Research Laboratory AgI Agentes inteligentes AHLoS Ad-Hoc Localization System AI Artificial Intelligence ANN Artificial Neuron Network AoA Angle of Arrival APIT Approximate Point In Triangulation APS Ad-hoc Positioning System ASW Anti-Submarine Warfare AWAC Airborne Early Warning and Control CAOC Combined Air Operations Centre v ACRÓNIMO Significado CAS Close Air Support C2 Command and Control C5ISR Command, Control, Communications, Computing, Combat and Intelligence, Surveillance and Reconnaissance CC Campos computacionales CODE Collaborative Operations in Denied Environment CPCE Coalition-Proof Correlated Equilibrium CPNE Coalition-Proof Nash Equilibrium CPU Central Processing Unit CUD Centro Universitario de la Defensa DARPA Defense Advanced Research Projects Agency DIC Digital Image Correlation DoD Department of Defense EMOE Electromagnetic Operational Environment EO Electroóptica ERM Empirical Risk Minimization EW Electronic Warfare FCAS Future Combat Air System GA Genetic Algorithm GCS Ground Control Station GNSS Global Navigation Satellite System GPS Global Positioning System GSM Global System for Mobile vi ACRÓNIMO Significado HMI Human Machine Interface I2R Imaging Infrared IA Inteligencia Artificial IR Infrarroja ISR Intelligence, Surveillance and Reconnaisance ISTAR Intelligence, Surveillance Target, Adquisition and Reconnaisance JTAC Joint Terminal Attack Controller KAIST Korea Advanced Institute of Science and Technology KKT Karush-Kuhn-Tucker KS Kolmogorov-Smirnov LCCM Low Cost Cruise Missile LIDAR Laser/Light Imaging Detection And Ranging LOCUST Low-Cost UAV Swarming Technology LOS Line-Of-Sight LPD Low probability of detection LPI Low Probability of Intercept MA Memetic Algorithm MANET Mobile and Ad Hoc Wireless Networks MDC2 Multi Domain Command and Control MDS MultiDimenSional ML Machine Learning MMW Millimeter Wave MPA Maritime Patrol Aircraft vii ACRÓNIMO Significado MS Maestro y subordinados NAVAIR Naval Air Systems Command NE Nash Equilibrium NGF Next Generation Fighter NGWS Next Generation Weapon System NP Navegación proporcional ONR Office of Naval Research OODA Observe Orient Decide Act PCPNE Perfectly Coalition-Proof Nash Equilibrium PPE Pareto Perfect Equilibrium RNA Red Neuronal Artificial RBF Gaussian Radial Basis Function RCS Radar Cross-Section RPA Remotely Piloted Aircraft (Agente) RPAs Remotely Piloted Aircraft System RSSI Received Signal Strenght Indicator RSRP Relative Strong Renegotiation Proof S&A Sense & Avoid SAASM Selective Availability Anti-Spoofing Module SAM Surface to Air Missile SCE Strong Correlated Equilibrium SCO Strategic Capabilities Office SEAD Suppression of Enemy Air Defenses viii ACRÓNIMO Significado SPE Subgame Perfect Equilibrium SRM Structural Risk Minimization SRP Strong Renegotiation Proof SVM Support Vector Machine TDL Tactical Data Link TDoA Time Difference of Arrival TE Trabajo en equipo ToA Time of Arrival TTP Tactics, Techniques, and Procedures UCAV Unmanned Combat Air Vehicle USA United States of America USAF United States Air Force USN United States Navy UV Ultravioleta VC Variables de consenso VCNE Values Close Nash Equilibrium Wi-Fi Wireless-Fidelity WRP Weakly Renegotiation Proof ix x Capítulo 1. Introducción A comienzos del año 2020 Alemania, Francia y España firmaron la carta de intenciones para el Futuro Sistema de Combate Aéreo FCAS. Este sistema de sistemas, que debería estar operativo para 2035-2040, girara en torno a un caza de sexta generación, así como otros elementos aéreos que aprovecharan las capacidades de cooperación de las plataformas conectadas, remotamente tripuladas y no remotamente tripuladas, llevando el poder aéreo a entornos denegados GNSS donde estas señales lleguen degradadas. Dentro del FCAS, la Nube de Combate Aéreo (Air Combat Cloud) constituirá un multiplicador de fuerza, que conectará y sincronizará, en tiempo real, todos los sistemas aéreos, permitiendo el procesamiento y la distribución de información para mejorar el conocimiento situacional y las operaciones colaborativas en entornos C5ISR. Dentro del FCAS, los enjambres de RPAs (remote carriers) tendrán un peso específico relevante, actuando bajo el paraguas de la Air Combat Cloud que enlazará e integrará todas sus componentes. Inicialmente estos enjambres presentan dos acepciones. Una primera acepción, dentro del concepto “Skyborg” o “loyal wingman”, donde un grupo reducido de RPAs escoltarán a los cazas, enlazados mediante una red de comunicaciones, donde estas aeronaves remotas podrán ser monitorizadas, tanto desde los propios cazas como desde tierra. No obstante, el concepto planteado en este trabajo se encuadra en una segunda acepción, donde las operaciones aéreas serán apoyadas por enjambres constituidos por masas de cientos de pequeños RPAs. Estas masas de enjambres, integrados bajo la Air Combat Cloud, tendrán un papel clave en las misiones denominadas como “sucias y peligrosas”, siendo un ejemplo de ello las misiones SEAD e ISR. En este tipo de misiones de alto riesgo, los RPAs reemplazarían a las plataformas tripuladas no remotamente en algunas de sus funciones, salvaguardando las vidas de las tripulaciones que de otro modo se verían expuestas a un riesgo muy elevado [32]. 1 Capítulo 1. Introducción Una masa de enjambres de RPAs constituye un extraordinario candidato para las misiones SEAD, neutralizando y/o degradando los sistemas defensivos enemigos, lo cual permitirá que otras operaciones aéreas, actuando dentro de la Air Combat Cloud, se desarrollen sin pérdidas. Este conjunto de enjambres serán capaces de saturar las defensas aéreas enemigas, generando numerosos objetivos baratos que provocaran a los radares y a los misiles enemigos, que al apuntar a los vehículos remotos del enjambre producirán dos efectos. Por una parte, los sistemas enemigos revelaran su posición, lo cual será aprovechado por efectores apropiados del FCAS para su neutralización, y por otra parte, el enemigo malgastará caros efectores en derribar económicos RPAs. Así, este sistema defensivo enemigo, diseñado para repeler una agresión de misiles y aviones de mayor tamaño, podría ser abrumado, confundido y colapsado por este grupo de enjambres de RPAs, los cuales podrían variar automáticamente su firma radar con dispositivos incrementadores diseñados para tal fin. Otro tipo de misiones “sucias” en las cuales la tecnología desarrollada en este trabajo podría aplicarse serían las ISR. Estas masas de enjambres son muy apropiadas para actuar como elementos ISR dentro de la Air Combat Cloud, dado su elevado número que permite conformar una imagen tridimensional del entorno, al combinarse entre ellos automáticamente empleando dispositivos de inteligencia artificial, donde estos RPAs se coordinan para conseguir una alta eficacia en las misiones de vigilancia y reconocimiento. Obviamente, este tipo de misiones ocurren en teatros de operaciones congestionados de alto riesgo, debiendo adoptar estos RPAs una configuración de maniobras evasivas óptimas durante la misión ISR, empleando estratagemas de decepción y desconcierto contra las defensas aéreas enemigas, configurando un entramado organizado, armonizado, colaborativo, e inteligente, al objeto de incrementar la probabilidad de supervivencia de estos enjambres. Cuando los enjambres de RPAs están formados por cientos de vehículos remotos, surge un problema añadido, el coordinar toda esta cantidad ingente de RPAs en el desempeño de las misiones operativas descritas anteriormente, problema no ciertamente fácil que demanda recursos computacionales muy potentes, no disponibles siempre, difíciles de obtener así como de alojar en los actuales Sistemas de Armas con espacios limitados. Estos enjambres están constituidos por una cantidad tan enorme de aeronaves remotas que no resulta posible la existencia de un piloto individual por cada RPA, siendo necesario recurrir a técnicas de pilotado del enjambre completo, coordinando y gestionando todo el grupo como si fuera un ejército. 2 Capítulo 1. Introducción Para ello, una tecnología clave que apoyaría el desarrollo de estos enjambres será la inteligencia artificial, entendida como la capacidad de una máquina para tomar la mejor decisión entre varias opciones. Sin embargo, la inteligencia artificial no es suficiente cuando el número de vehículos remotos es muy grande dada la enorme cantidad de recursos computacionales demandados. Otra dificultad añadida es el tamaño de los RPAs, debido a que si bien, a priori, no existe limitación técnica en cuanto al tamaño de los RPAs que componen los enjambres, generalmente estos enjambres se conciben como un grupo de vehículos remotos de tamaño reducido por varias razones, tales como que resulta más fácil localizar aparatos remotos de mayor tamaño, su mayor movilidad, bajo precio, capacidad de enmascaramiento con el medio,… Así, dada la pequeña dimensión de estos vehículos remotos, no es posible alojar procesadores de gran tamaño lo que evidentemente conduce a una baja capacidad de computación de cada RPA y por tanto a una lentitud en los cálculos. A priori, podría pensarse que esta cantidad ingente de vehículos remotos podrían combinar sus capacidades computacionales, si bien para que esto ocurra aún se deben superar algunos puntos débiles como lentitud en la transmisión de los datos, interferencias y necesidad de protocolos fiables de transferencia de la información que aún ralentizan más la operación. Esta circunstancia unida al elevado número de RPAs, exige el desarrollo de alguna tecnología maestra inteligente que permita gestionar el comportamiento de toda esta masa de enjambres de RPAs, estableciendo comunicaciones seguras entre ellos, detectando y esquivando obstáculos en tiempo real, calculando la trayectoria de cada RPA individual de forma autónoma, y poder así ejecutar la misión asignada. La tecnología desarrollada para este trabajo organiza a todo el enjambre en escuadrones o subenjambres, haciendo uso, para ello, de la teoría de juegos. Primeramente cada subenjambre se modela mediante un juego cooperativo donde los RPAs del subenjambre conforman una estrategia evolutiva. Estos RPAs se consideran jugadores en un juego, que buscan en su evolución el máximo pago, beneficio o utilidad, con una estrategia compartida donde todos los RPAs cooperen entre sí. El cálculo del valor de Shapley [3] y el valor de Banzhaf estima un reparto de beneficios como la ganancia de una nueva magnitud del subenjambre, que se ha denominado entropía, donde cada RPA contribuye a maximizar esta entropía con su contribución individual. Como se verá, este incremento de entropía aumenta la supervivencia 3 Capítulo 1. Introducción del enjambre en un teatro de operaciones congestionado al colapsar los sistemas defensivos enemigos. Por otra parte, en cuanto al enjambre completo, en este trabajo se ha diseñado un juego no cooperativo basado en subenjambres. En este nuevo juego, la matriz de pagos se calcula en base a dos características: la entropía de cada subenjambre por un lado y la distancia de cada subenjambre al teatro de operaciones por otro. Alcanzado el equilibrio de Nash en este juego donde el pago es máximo, se han definido unos nuevos valores próximos al equilibrio de Nash (VCNE) donde, aunque estos valores están Pareto dominados por el equilibrio de Nash, la renuncia a una parte del pago del equilibrio de Nash al seleccionar los valores VCNE, proporciona a cambio un incremento del tiempo que el enjambre es capaz de actuar bajo el fuego enemigo en la zona de conflicto, incrementando la supervivencia del enjambre. Descendiendo a nivel de microestado, un problema a abordar en los enjambres de RPAs es el de las colisiones, el cual se incrementa a medida que aumenta el número de vehículos remotos que componen el enjambre. Este paso resulta esencial antes de emplear tecnologías de inteligencia artificial y teoría de juegos que exploten los conceptos de cooperación y colaboración entre individuos, con alto carácter de reciprocidad y apoyo mutuo, que finalmente conformarán el enjambre como un conjunto organizado, sincronizado e inteligente. Aunque existen diferentes teorías de elusión de colisiones, decisivos han sido los avances del KAIST, apoyados en los principios de Reynolds, que realizaron múltiples simulaciones acerca de la conducta de un enjambre, concluyendo que cada vehículo remoto debe guardar una distancia de seguridad con el resto de RPAs del enjambre, comprendida entre cinco y quince veces el tamaño promedio del RPA [9], lo cual evita en su mayor parte las colisiones, resultado que ha sido corroborado en este trabajo mediante los algoritmos de cálculo desarrollados. Partiendo de las conclusiones del KAIST y Reynolds, en este trabajo se ha diseñado un algoritmo de elusión de colisiones entre RPAs del enjambre, definido por tres factores de decisión. De una forma preliminar, para cada vehículo remoto se calculan las distancias al resto de RPAs y se asocia a cada RPA la distancia más pequeña, de tal manera que cuando esta distancia es menor que el primer factor de decisión, el RPA gira conforme a la velocidad angular de viraje de la aeronave remota. Si además existe riesgo de colisión y esta distancia es menor que el segundo factor de decisión, el RPA se decelera con la precaución de no entrar en pérdida. Asimismo, ha sido fundamental proyectar un algoritmo adicional que evita que el enjambre se disperse y 4 Capítulo 1. Introducción disemine, mediante la introducción de un tercer factor de decisión que actúa cuando la distancia es superior a este factor, haciendo girar al RPA y dirigirse al centroide del enjambre, un nuevo punto representativo del enjambre, análogo al centro de masas de un sistema másico. Como se verá, el centroide de cada subenjambre también puede representarse como una función de liderazgo para cada subenjambre. En el caso de impactos con elementos ajenos al enjambre se requiere información adicional obtenida de sensores como se comentará posteriormente. Para que un enjambre de estas aeronaves remotas adquiera una conducta cooperativa y de coordinación, donde estos RPAs sean capaces de conjuntar sus capacidades para constituir un ente que muestre una conducta como colectivo organizado, inteligente y sinérgico, fruto de la adición del comportamiento de los RPAs individuales, se va requerir del desarrollo de algoritmos complejos de inteligencia artificial y teoría de juegos que permitan construir una red cognitiva entre estas plataformas remotas. Una inteligencia artificial puede conceptuarse como un grupo de programas computacionales, estructurados en algoritmos, que según el padre de la inteligencia artificial, Nils John Nilsson, se apoya en cuatro puntales: búsqueda de estados, métodos de optimización evolutivos, máquinas aprendizaje automático y técnicas de razonamiento lógico formal [84]. Para que el enjambre de RPAs aumente su efecto neutralizante, degradador y saturante en el sistema defensivo aéreo enemigo, a la par que impulse el colapso, confusión, desconcierto y decepción, cada RPA del enjambre debe desenvolverse de manera diferente respecto al resto de agentes remotos del enjambre, donde la velocidad de cada RPA sea distinta. Comprensiblemente, un elevado número de objetos volando, cada uno con una dirección distinta, saturara al sistema de defensa aérea enemigo, ocasionándole importantes molestias e imposibilitándole para actuar contra todas las amenazas simultáneamente. Para ello, en este trabajo se ha hecho uso de una función de entropía que se ha definido como el número de estados posible, que en el caso de enjambres, es el número de RPAs con velocidades diferentes, de tal modo que entropías altas implica elevados efectos neutralizantes, degradantes y saturantes en el sistema defensivo aéreo enemigo. Para abordar el problema, descrito previamente, de organizar a todo el enjambre en escuadrones o subenjambres y aplicar la teoría de juegos, es necesario analizar, por una parte, cómo evoluciona la entropía de un enjambre formado por varios subenjambres, cuando estos 5 Capítulo 1. Introducción se aproximan hasta interferir entre ellos. Esto implica que el algoritmo de elusión de colisiones, desarrollado para cada subenjambre, debe abarcar en su procesado al otro subenjambre que se le aproxima, de tal modo que los RPAs perteneciente al primer subenjambre eviten colisionar con los del segundo subenjambre, y viceversa. Por otra parte, otra cuestión a analizar es cómo evoluciona la entropía de un subenjambre cuando a este se le dota de velocidad de desplazamiento como subenjambre completo, concretamente cuando se dota de velocidad de movimiento al centroide del subenjambre. Haciendo uso del concepto de entropía del enjambre, el mayor efecto saturador, neutralizador y degradante sobre el sistema defensivo enemigo se alcanzará maximizando la entropía en función de los tres factores de decisión definidos previamente. Esta función maximizante es, como se verá posteriormente, una función muy ruidosa, variable y discontinua, y con muchos óptimos locales, para lo cual ha sido necesario diseñar y programar un algoritmo memético [6] evolutivo con búsqueda de estados, que a partir de una triada de factores de decisión con su entropía, va obteniendo subsiguientes triadas con entropías mayores, desestimando aquellas que presenten entropías menores, de tal suerte de razonamiento que a partir de un conjunto de tríos se obtiene una triada distinta de los primeros pero con entropía incrementada. Dado el elevado número de RPAs involucrado y la baja capacidad de computación indicada, como en la Air Combat Cloud resulta crucial la agilidad en la toma de decisiones, en este trabajo se plantea una estrategia consistente en generar un conjunto de simulaciones, previamente al despliegue del enjambre en zona de operaciones, y emplear estas simulaciones como datos de aprendizaje en un algoritmo de aprendizaje automático, entrenándolo, confeccionando de esta forma un algoritmo que pronostique una respuesta para una nueva muestra, de tal manera que el enjambre tenga capacidad para tomar decisiones por sí mismo. Para ello, se ha hecho uso del entorno de programación r-project en dos vertientes diferenciadas. La primera empleando máquinas de vectores soporte con el paquete e1071 [1] [13] (implementación en r-project de la excelente librería libsvm [14]) y la función tune de localización de parámetros óptimos mediante técnicas de validación cruzada con búsqueda aleatoria. En una segunda vertiente se han empleado redes neuronales artificiales con los paquetes neuralnet, nnet, RSNNS, brnn, caret y deepnet de r-project, estableciendo comparativas entre estos paquetes, así como entre máquinas de vectores soporte y redes neuronales artificiales, donde se verá que la balanza se 6 Capítulo 1. Introducción decanta a favor de las máquinas de vectores soporte en el caso que nos ocupa de inteligencia de enjambres. Finalmente, en este trabajo se ha diseñado y desarrollado una serie de algoritmos que comprenden desde la optimización evolutiva y búsqueda de estados, además de tecnologías de aprendizaje automático, donde a partir de valores de entropías más bajas, el procedimiento desarrollado es capaz de encontrar un valor de entropía más alta, lo cual estructura un artefacto de inteligencia artificial capaz de decidir entre varias opciones aquellos valores de entropía más alta en un enjambre de RPAs, lo que permite concluir que este conjunto de algoritmos se ha concebido como un sistema de inteligencia de enjambres. Además, esta inteligencia artificial se ha combinado con técnicas de teoría de juegos, tanto cooperativos para subenjambres como no-cooperativos para el enjambre completo. Como última aportación reseñable en este trabajo, es de destacar la recopilación, exploración y presentación del gran volumen de información que se ha obtenido al analizar el comportamiento de un gran grupo de RPAs, con la intención de descubrir nueva información, patrones y tendencias implícitas. De esta forma, mediante un análisis estadístico modal se ha encontrado un movimiento que muestra un comportamiento repetitivo de ciertas magnitudes del enjambre, lo cual permite afirmar acerca de la aparición de un patrón de oscilación del enjambre, de una forma similar a una frecuencia de oscilación del enjambre asociada a una forma modal de vibración, con una baja influencia del resto de parámetros del enjambre excepto el de la velocidad de crucero de los RPAs del propio enjambre. 1.1. Estado del arte Uno de los últimos éxitos del DoD norteamericano ha sido el lanzamiento de un enjambre de 103 micro-RPAs en misión de vigilancia, desde tres cazas F/A-18 Super Hornet del Naval Air Systems Command. Estos vehículos remotos son un desarrollo del Instituto Tecnológico de Massachusetts bajo la denominación de Perdix, siendo su característica más innovadora no en sí su alto número, sino su capacidad autónoma, transmitiendo y recibiendo información a través de una malla de comunicaciones [34]. El hito alcanzado fue tan notable que la Strategic Capabilities Office del DoD describió el comportamiento de este enjambre como un organismo colectivo que exhibe un “cerebro distribuido” compartido, lo cual le da capacidad de toma de 7 Capítulo 1. Introducción decisiones. Este enjambre no presenta un líder claro como tal y es capaz de adaptar su conducta al número de agentes que componen el enjambre en cada momento. Liderado de nuevo por los Estados Unidos, el LOCUST es un programa de la Oficina de Investigación Naval, en estado avanzado, de un enjambre con capacidad autónoma. Ideado para desplegar en su primera fase hasta treinta RPAs tipo Coyote, en un minuto, desde un lanzador multitubo, alcanzando la zona de operaciones para generar decepción y confusión sobre el adversario. Estas plataformas remotas tienen una firma radar reducida, reduciendo el tiempo de alerta, lo cual unido a su elevado número produciría tal desconcierto que sería aprovechado por un enjambre de misiles para atacar y colapsar un sistema defensivo tan conocido como el Aegis, que aunque está considerado uno de los mejores del mundo, su capacidad no permite contrarrestar más de ocho vehículos en vuelo a la vez [31]. La Agencia DARPA del DoD también dispone de programas punteros como el Gremlin. Este enjambre de vehículos remotos se ha concebido como reutilizable, barato y lanzable desde distintos tipos de aviones para ser recuperados desde un C-130 Hércules. Sin prácticamente mantenimiento, estos RPAs están ideados para ser reutilizados una veintena de veces, antes de su retirada del servicio, en misiones de alto riesgo, tipo ISR y EW, con el fin de saturar las defensas enemigas e inutilizar sus comunicaciones, tejiendo una estructura cooperativa cognitiva entre ellos [31]. Otro programa de la Agencia DARPA es el llamado “system-of-systems”, donde RPAs, misiles y aviones trabajan en conjunción [31]. En caso de que un caza tripulado no remotamente se vea comprometido en territorio hostil, alerta a un avión nodriza que lanza un enjambre de RPAs en misión ISR inicialmente, y como medio perturbador e interferidor de los radares enemigos en misión alternativa, con el fin de acercarse a la zona de conflicto y recopilar información del adversario, y a la vez interferir y perturbar sus radares. Una vez analizada esta información y confirmado que se trata de sistemas enemigos, el avión nodriza lanza un enjambre de misiles y los RPAs regresan a zona segura para ser recuperados. El CODE, también de la Agencia DARPA, explota la capacidad de cooperación entre RPAs en zona de conflicto, de forma autónoma/semiautónoma, reconociendo obstáculos, analizando el entorno, pudiendo tomar el rol de misil en la fase final si fuera necesario [31]. 8 Capítulo 1. Introducción El AFRL de la USAF tiene en curso actualmente el programa “Skyborg”, donde un UCAV acompañará a los cazas F-35 o/y F-15EX como componente de apoyo en ciertas misiones. Este concepto está basado en el programa “loyal wingman” en desarrollo por Boeing y el gobierno Australiano, donde estos vehículos remotos escoltarán a los cazas, comunicándose entre ellos, pudiendo ser controlados tanto desde los cazas como desde estaciones en tierra, de tal forma que los RPAs volarán por delante de los cazas provocando a las defensas enemigas a la par que perturbándolas. Con un rol primario ISR y EW, se tiene previsto disponer de un primer prototipo para 2023, aunque se espera que estos RPAs puedan desempeñar misiones más ambiciosas en el futuro. Estas plataformas remotas serán baratas, modulares, reutilizables, con bajo nivel de mantenimiento, y software abierto, cuya inteligencia artificial pueda hacer frente a múltiples adversarios [32]. Descendiendo a un nivel más teórico, la librería del Congreso de los Estados Unidos ha editado un documento que por su interés puede considerarse un documento llave en los enjambres de RPAs: Mini, Micro, and Swarming Unmanned Aerial Vehicles: a baseline study [82]. En este paper se hace una exhaustiva recopilación de las líneas tecnológicas más vanguardistas, haciendo mención a las dos características esenciales que todo enjambre debe tener. La primera es que los RPAs que componen el enjambre tengan capacidad de eludir las colisiones entre sí, y además con otros elementos que no pertenezcan al enjambre. Por otra parte, el enjambre debe disponer de capacidad de dirigirse hacia un teatro de operaciones y poder cumplir una misión operativa. En este documento, se destaca los avances alcanzados por el KAIST, un instituto tecnológico Coreano, donde a partir de un enjambre como un conjunto de elementos descentralizados, cada uno de los vehículos remotos es capaz de eludir las colisiones con otros componentes del enjambre, obteniendo como corolario final, tras un conjunto de simulaciones, que un área de seguridad comprendida entre cinco y quince veces la longitud media de la plataforma remota permite eludir las colisiones en su mayor parte [9]. La Universidad de Padua también resulta mencionada en este estudio, donde un grupo de investigadores instalaron cámaras en los vehículos remotos con el fin de evitar las colisiones, de un modo análogo a como lo hacen las aves, a partir de un modelo geométrico de correlación, computando la distancia de visualización y el ángulo de visión de la cámara [16] [45]. Asimismo, en las referencias [26] y [27] se puede encontrar un interesante análisis de investigación donde 9 Capítulo 1. Introducción empleando tecnologías de tratamiento estadístico de imágenes podría identificarse un obstáculo y prevenir la colisión. Otro estudio que se conviene citar por su relevancia, también realizado por el KAIST [94], es la utilización de la navegación proporcional, que habitualmente se ha usado para el guiado de misiles, para definir una ley de control de evitación de colisiones alcanzando un cierto éxito en la elusión de colisiones en un enjambre. No obstante, en la referencia [26] se ha realizado un interesante análisis muy detallado acerca de la aplicación de la navegación proporcional [28] [30] a las técnicas de evitación de colisiones en un enjambre de RPAs, llegando a la conclusión de que esta tecnología es mucho más adecuada para el vuelo en formación. Una vez que se han evitado las colisiones, otra cuestión es cómo el enjambre escoge las rutas más adecuadas para desplazarse a la zona de conflicto. En este sentido, se debe destacar el estudio realizado por el Shaanxi Engine Design Institute de Xian, el Hebei Electric Power Reconnaissance Design Academy, y el Aircraft Engineering Department of Northwestern Polytechnical University, que aplicaron técnicas heurísticas ACO de optimización de colonia de hormigas que permite el desarrollo de algoritmos de caminos óptimos hacia el objetivo, basadas en la búsqueda de alimentos [82]. Otra perspectiva relevante es la ideada por la Universidad de Delft que aplicaron técnicas heurísticas de simulación de rutas autónomas de supresión de defensas, función de parámetros como el tiempo, la distancia y el esfuerzo realizado, teniendo presente la necesidad de minimizar el tiempo en zona de operaciones [82]. Esta convicción acerca de minimizar el tiempo del RPA en territorio enemigo está también latente en el concepto de operación desarrollado por el Israel Institute of Technology Technion que ha ideado un algoritmo heurístico que tiene en cuenta cambios en el grupo completo, haciendo énfasis en que aumentar la complejidad computacional obtiene mejores resultados, pero presenta la dificultad de que es muy lento dado que estas técnicas demandan una elevada velocidad de cálculo [82]. El Technion también ha publicado un algoritmo de patrones de vuelo, que analiza y escanea un área rectangular, de tal manera que matiza las diferencias entre áreas escaneadas y no escaneadas, donde se llega a la conclusión final de que es necesario aumentar la transmisión de información entre vehículos remotos [82]. 10 Capítulo 1. Introducción Alternativamente, el Indian Institute of Science de Bangalore ha profundizado en la toma de decisiones en la búsqueda de rutas óptimas, analizando el tiempo asociado a este proceso, aplicando Teoría de Juegos a un algoritmo de ruta óptima, comparando estrategias cooperativas y no cooperativas o competitivas [82]. Para finalizar este apartado, el concepto ultraswarm introduce una nueva acepción al especificar un grupo de aeronaves remotas que presenta características de enjambre [15] [86], pero que, además, aúna la potencia computacional de todos los procesadores de los agentes trabajando conjuntamente merced a una red, de tal modo que es posible acometer cálculos complejos, mostrando altas capacidades con funciones de alto nivel, como el análisis de datos provenientes de aviones AWACs, por citar alguno de los más relevantes. No obstante, esta supuesta agilidad y fiabilidad potencial basada en la redundancia presenta serios puntos débiles como inseguridad requiriendo protocolos de transmisión de comunicaciones seguros, lentitud en la transmisión de la información y sujeto a interferencias, por citar algunos de ellos. 11 Capítulo 1. Introducción 12 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs Actualmente los RPAs (Remotely Piloted Aircraft System) comienzan a vislumbrarse como un elemento habitual entre la población. Ya sea desarrollando tareas de vigilancia, apoyando a la policías en diversas misiones o realizando trabajos de alto riesgo como la inspección de redes eléctricas, estos vehículos remotos se han convertido en una tecnología esencial en nuestras vidas. Esta popularidad se debe básicamente a su bajo coste y las grandes mejoras implementadas en los últimos años que hacen pensar en pasar a un estadio de madurez tecnológico. No obstante, los científicos trabajan en nuevas teorías, adicionando innovaciones en inteligencia artificial y comunicaciones, de tal modo que la suma de un conjunto de estas aeronaves permite la realización de tareas que anteriormente eran prácticamente imposibles de realizar o tenían un coste muy elevado. Figura 2.1. Recreación artística de un enjambre. 13 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs Técnicamente, un "enjambre" es un grupo de RPAs impulsados por inteligencia artificial. Los RPAs del enjambre se comunican mutuamente, entre ellos, mientras están volando, y pueden anticipar una respuesta a los cambios del momento de forma autónoma. La palabra enjambre, proveniente de la naturaleza, describe como un grupo de insectos combinan sus habilidades de forma cooperativa/colaborativo para cumplir una cierta misión. Sin embargo, el concepto de grupo no es el más innovador sino el de comportamiento cooperativo, donde el concepto grupal de RPAs cobra fuerza impulsado por la coordinación, apareciendo un comportamiento inteligente macroscópico como enjambre basado en una visión microscópica individual de cada RPA [95]. La clasificación de RPAs establecida por el JCGUAG (Joint Capability Group on Unmanned Aerial Vehicles) de la OTAN (Organización del Tratado del Atlántico Norte) es la más común dentro de los Ejércitos, donde se tomó como parámetro principal el peso/tamaño para continuar con el empleo, altitud, radio de acción, etc. Los de la clase I conforman el segmento táctico de aquellos de menos de 150 Kg, que a su vez se subdividen a su vez en tres categorías: micro, de menos de dos Kg de peso; mini, por debajo de los 20 Kg, y finalmente los small. Los de la Clase II, de hasta 600 Kg de peso, también son tácticos, aunque algunos se encuadran en el nivel operacional. Figura 2.2. Usualmente el enjambre ha sido concebido como aquel formado por RPAs de tipo nano o micro. 14 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs Desde los inicios de los enjambres, la conceptuación de este tipo de ingenios ha sido orientada hacia enjambres constituidos por RPAs de tamaño pequeño, de tipo nano o micro (menos de 2 Kg), imitando al vuelo de insectos o aves más bien pequeñas, si bien este concepto se está expandiendo a otras categorías del tipo mini (menos de 20 Kg). Indudablemente el primer reto a alcanzar es operar sincronizadamente a través de una red de información, tomando decisiones y analizando el entorno simultáneamente, lo que permite realizar misiones difíciles de forma rápida y económica sin poner en peligro la vida de la tripulación [95]. Desde un punto de vista técnico, un enjambre puede definirse como “un conjunto de RPAs autónomos que suelen disponer de capacidad sensora propia y conducta reactiva frente a los elementos del entorno y del resto de RPAs, de forma que emerge una conducta colectiva a partir de la suma de la conducta de los RPAs individuales”. El grupo de RPAs que forman el enjambre tienen que tener un comportamiento cooperativo en pos del cumplimiento de una misión operativa [17]. Esta conducta es la base de las Unidades Militares donde diferentes individuos especializados en disciplinas diversas actúan de forma sinérgica al objeto de aumentar la eficiencia del conjunto en el desarrollo de la misión [52]. Así, diversas tareas concretas son realizadas por individuos especializados en esos cometidos a través de un mecanismo de división del trabajo. Una característica esencial de estas conductas es la flexibilidad en el sentido de que el número de individuos efectuando las diferentes tareas varía en función de perturbaciones externas. Perturbaciones por encima de un primer umbral, realizan un cometido expreso, pero si la perturbación desciende por debajo de un segundo umbral, dejan de realizarla. La naturaleza muestra muchísimos ejemplos de estas teorías, siendo el patrón inicial un grupo de individuos trabajando cooperativamente en pos de un objetivo, donde estos individuos trabajan conjuntamente con elevadas aptitudes de adaptación al medio y persistencia en el teatro de operaciones. Además, el efecto de confusión, frustración o desmoralización que este tipo de conductas suele provocar, son cruciales en los conflictos modernos que se prevén. 15 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs Figura 2.3. Acción cooperativa de un enjambre de hormigas. El estado actual de los RPAs ha alcanzado un nivel suficiente como para afrontar una segunda fase, la de integrar un conjunto de individuos remotos en una estructura inteligente y organizada. Cada uno de estos RPAs integrantes del enjambre debe ser autónomo o al menos semi-autónomo para ser capaces de tomar ciertas decisiones, pero con la suficiente capacidad de operar de forma sincronizada, de tal modo que las misiones puedan encomendarse al conjunto completo, como un todo, sin bajar a los elementos individuales [36]. No obstante, conseguir esta capacidad para todo el enjambre de RPAs demandará el desarrollo de algoritmos complejos en inteligencia artificial que permitan montar una red cognitiva entre estas aeronaves remotas, de tal manera que se alcance un comportamiento cooperativo de apoyo mutuo [96]. Al ser capaces de distribuir los miembros del enjambre en una zona geográfica extensa con el objeto de detectar blancos para guiar sus acciones hacia la identificación y el seguimiento de blancos, este tipo de ingenios reducirá el tiempo necesario para llevar a cabo las misiones ISTAR (Intelligence, Surveillance Target, Adquisition and Reconnaisance) obteniendo información de mayor precisión y calidad. También puede ser necesaria la combinación de diversos RPAs con diferentes tipos de sensores, lo cual confiere a estos sistemas mayor adaptabilidad y versatilidad, aunando sus habilidades 16 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs inteligentemente, evitando los choques mediante tecnologías avanzadas como el “Sense & Avoid” (S&A). Un enjambre requiere de una red de comunicaciones con una serie de características como elevada resistencia a interferencias, fallos o jamming, recuperarse ante la pérdida de un RPA, ejecutar tareas críticas, capacidad para coordinar a una gran cantidad de vehículos remotos, etc. En estos momentos se trabaja con cuatro topologías básicas: celulares, satelitales, enlaces directos y redes de mallas [31]. Figura 2.4. Topologías esenciales de comunicación de enjambres. Los enlaces directos entre RPAs y GCS constituyen una topología centralizada, aunque esta disposición no es la mejor para aprovechar las tecnologías de cooperación que demandarán los futuros enjambres. Esta disposición presenta el inconveniente de que no puede existir ningún tipo de obstáculo entre los enlaces, necesitan grandes anchos de banda y transmisores muy potentes. Los enlaces satelitales también pertenecen al grupo de topologías centralizadas, proporcionan una mayor cobertura que el directo referido en el párrafo anterior, no manifiestan problemas LOS pero necesitan medios complejos y caros. 17 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs Los enlaces celulares son muy parecidos a los de la telefonía móvil con un coste similar en cuanto a radios y repetidores. Sin embargo, esta topología muestra ventajas notables como una extensa cobertura, repetidores redundantes, fiabilidad, además de poder compartirse estos enlaces con otros RPAs. Las redes de mallas son arquitecturas en que cada nodo, terrestre o bien montado en un RPA, pueden funcionar como repetidor. Ventajas remarcables son que la comunicación avión-avión puede ser directa, permite el empleo de protocolos de enrutamiento, emplearse combinadamente con otras topologías proporcionando redundancia adicional, flexibilidad, robustez, y el alcance podría prolongarse empleando otros RPAs como repetidores. Figura 2.5. Estructura básica de comunicaciones de enjambres. Un ejemplo típico de Redes de malla son las MANET (Mobile and Ad Hoc Wireless Networks), estructuradas mediante clusters de nodos, con un nodo central líder y otros nodos periféricos, nodos pasarelas (gateway) y racimos. Entre las ventajas más importantes se tiene modularidad, resistencia a degradaciones, ampliamente configurable y con carácter general no necesita un administrador de red. La gestión y control de un enjambre requiere que los RPAs dispongan de un cierto comportamiento autónomo, de tal modo que se establezca una relación directa entre las iniciativas individuales simples de aviones remotos, incorporando protocolos de 18 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs ayuda mutua con carácter de reciprocidad elevado, siendo el objetivo que el enjambre se desarrolle y opere como un ente único [18]. Para garantizar que un enjambre sea autónomo se requiere que cada vehículo remoto conste al menos de tres elementos: mantenimiento de vuelo en formación y seguimiento del terreno, un piloto automático avanzado, un controlador responsable de evitar colisiones, y para terminar un sistema discriminador entre el piloto automático y el controlador [31]. Figura 2.6. Control de una aeronave autónoma. En estos momentos se estudian dos alternativas para conseguir el nivel de cooperación exigido. Bien RPAs especializados de varios tipos, que trabajan coordinadamente para afrontar tareas complicadas utilizando sensores de altas prestaciones, o bien RPAs iguales y baratos pero mucho menos versátiles que los primeros. Los modelos de conducta de enjambre se pueden ordenar, de menor a mayor nivel en complejidad, en modelo maestro y subordinados (MS), trabajo en equipo (TE), variables de consenso (VC), agentes inteligentes (AgI) y modelo de campos computacionales (CC) co-fields. El modelo MS consiste en una aeronave remota master más grande y capaz, controlada desde la GCS, que se enlaza a su vez con un enjambre de RPAs, más pequeños, con una capacidad autónoma inferior, que se comunica con el master y la 19 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs GCS. La pérdida de RPAs subordinados no es importante ya que su rol lo asumirá otro. La figura del master si es relevante por lo que se salvaguarda en zona segura libre de riesgo. TE es un modelo que no presenta una conducta cooperativa como tal. Se adapta bien a diferentes tipos de RPAs, bien todos iguales o bien con diferentes clases. Este concepto permitiría una rápida configuración mediante un simple cambio de carga de pago, en el que la pérdida de un RPA puede ser ocupada por otro vehículo remoto. En el modelo VC, cada RPA posee interiormente la mínima información que le permite coordinarse con el enjambre. Esta información, llamada variable de consenso, se actualiza no periódicamente con las ristras de información que envían el resto de vehículos, si bien presenta la ventaja de que no es necesario conectarse en tiempos concretos. Figura 2.7. Variables de consenso. 20 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs El modelo AgI permite a cada RPA algún tipo de razonamiento con capacidad de tomar algunas decisiones autónomas/semi-autónomas, pudiendo disponer de RPAs de diferentes tipos. No obstante, en un proceso imitativo de la conducta de los insectos, los científicos hacen significar como modelo más avanzado desarrollado hasta la fecha el de campos computacionales. Puede concebirse como una imitación a la conducta de enjambres de insectos, donde se adicionan sus destrezas, función del entorno, presentando un comportamiento colectivo a partir de la suma de los comportamientos de los individuos. Empero, aún no se ha alcanzado un desarrollo de patrón completo aunque se han establecido soluciones parciales, siendo la más significativa la CC cofields, cuya designación se fundamenta en que el medio se sintetiza mediante este tipo de campos [72] [73] [74]. Figura 2.8. Agentes inteligentes. 21 Capítulo 2. Comunicaciones, control y gestión de enjambre de RPAs 22 Capítulo 3. RPAs en la Air Combat Cloud Los RPAs tendrán un papel crucial en el desarrollo de la futura Air Combat Cloud. Pero vayamos por partes, antes de hablar de la Air Combat Cloud debe hablarse del FCAS. El Futuro Sistema de Combate Aéreo es un sistema europeo de combate de sistemas que se encuentra en fase de desarrollo por Airbus y Dassault Aviation. El FCAS consistirá básicamente en un Sistema de Armas de próxima generación (NGWS), así como otros elementos aéreos que se integraran en el futuro espacio de batalla operativo. Los componentes del NGWS serán múltiples vehículos, encabezado por un caza de sexta generación (NGF), y donde los RPAs y los enjambres de RPAs tendrán un importante peso específico. Este sistema de sistemas debería estar operativo para 2035-2040 reemplazando a los Rafale franceses y a los Typhoons alemanes y españoles. El concepto FCAS potenciará los efectos operativos al aprovechar las capacidades de cooperación de las plataformas conectadas, no remotamente tripuladas y remotamente tripuladas, llevando el poder aéreo a entornos denegados GNSS donde estas señales lleguen degradadas. Dentro del FCAS, la Nube de Combate Aéreo (Air Combat Cloud) constituirá un multiplicador de fuerza, conectando y sincronizando, en tiempo real, todos los componentes no remotamente tripulados y remotamente tripulados, permitiendo el procesamiento y la distribución de información para mejorar el conocimiento situacional y las operaciones colaborativas en entornos C5ISR. Potenciando la adquisición de información y la superioridad en la toma de decisiones, un objetivo esencial es incorporar las capacidades más avanzadas de las redes digitales, mejorando la eficacia y la eficiencia en una transformación de las Fuerzas Aéreas. La Air Combat Cloud está llamada a ser una parte esencial del FCAS para lo cual es necesario establecer puntos de mejora en ciberseguridad, ya que una mayor 23 Capítulo 3. RPAs en la Air Combat Cloud potenciación implica una mayor exposición a las amenazas ciberelectrónicas, interoperabilidad, conectividad, protocolos de estandarización, intercambio de información, accesibilidad, etc. El núcleo del FCAS está formado por el NGWS (Next Generation Weapon System) donde está incluido el NGF (Next Generation Fighter), con nuevos elementos aún por definir como RPAs, municiones, enjambres de RPAs, enjambres de misiles,… donde el concepto de partida no es una plataforma, ya sea no remotamente tripulada o remotamente tripulada, sino un sistema de sistemas (system of systems) donde tendrán cabida dentro de la nube, además de los mencionados, diversos tipos de sensores y efectores (misiles, láseres, armas de energía dirigida,…). Con respecto a las operaciones aéreas, un promotor de la nube de combate aérea ha sido durante mucho tiempo el Teniente General David Deptula, miembro del equipo de planificación de la operación Tormenta del Desierto, inventor del concepto de operaciones basadas en efectos y defensor del poder aéreo, donde su noción de "nube de combate" estaría basada en un entramado ISR, strike, maniobra, sostenimiento, sinergias,… que conceptualizaría una topología innovadora de conducción de las operaciones militares. En 2016, la USAF desarrolló un concepto inicial de operación en la nube de combate aérea donde esta red se concibe como una malla global para la distribución de datos y el intercambio de información dentro de un teatro de operaciones aéreas, donde cada usuario, plataforma o bien nodo autorizado aporta y recibe información para poder emplearla en las operaciones militares. Por su parte, la Marina Norteamericana va más allá, esta nube táctica no es únicamente un concepto de almacenamiento de datos en múltiples dominios, externalización de aplicaciones o bien virtualización de servidores, sino que, dicho de un modo simple, almacenar una gran cantidad de información, accediendo rápidamente, alojada en múltiples fuentes dispares, disponiendo de herramientas de tratamiento y análisis, como smart data o inteligencia artificial, que permitan correlacionar toda esta cantidad ingente de datos, extrayendo significado de aplicación a los procesos de toma de decisiones. No obstante, se debe hacer significar que esta tecnología no es solamente una herramienta de nivel estratégico sino que todas las plataformas y Unidades harán uso de ella, con la circunstancia añadida de 24 Capítulo 3. RPAs en la Air Combat Cloud que las decisiones que tome una Unidad militar estarán sujetas al del resto de entes militares, de tal forma que la coordinación y la eficacia queden garantizadas. En el 2004, el Pentágono dio unas directrices básicas que caracterizan el combate en la red. La superioridad de la información sobre el adversario es esencial, conciencia situacional, sincronización dinámica de fuerzas de bajo nivel, ejecución rápida de operaciones no lineales con fuerzas dispersas, empleo de la inteligencia en la integración de operaciones (ISR), fusión de las capacidades conjuntas a nivel táctico multidominio, y velocidad en la toma de decisiones que mantengan la ventaja de la superioridad de la información sobre el oponente. En este concepto, los Tactical Data Link (TDL) resultan esenciales. Los archiconocidos Link 16 han permitido la interoperabilidad multinacional, transformando las operaciones aéreas, identificando las aeronaves amigas equipadas de este modo, y formando una imagen multidimensional de la situación aérea en zona, contribuyendo notablemente al desarrollo de este concepto; no obstante, sus limitaciones, propias de un sistema diseñado en los años 70, en el ámbito de la ciberseguridad, mensajes limitados, bajas características de definición, bajo nivel de automatismo y elevada carga de trabajo, exige un reemplazo. El big data se apoya en cuatro puntales: volumen de datos, variedad en la fuente de obtención de la información, velocidad en la toma de datos y veracidad de la información, corriendo el riesgo los usuarios tácticos de verse abrumados por una imponente masa de datos, por lo que surge el smart data que extiende el big data en un quinto pilar con el aumento del valor de los datos, dejando de lado la cantidad para centrarse en la calidad de los datos almacenados, que permitan una mejora en el tratamiento y análisis. Esta extensión del big data al escenario táctico requiere del desarrollo de varias tecnologías: capacidades sensoras, mayor tasa de transferencia de datos, mayor flexibilidad en el uso del espectro electromagnético, mayor capacidad de almacenamiento de información, mejoras en el software de procesado basado en inteligencia artificial, herramientas avanzadas para la fusión de datos heterogéneos que van más allá de una simple correlación o mezcla de información sino en la integración de datos procedentes de múltiples sensores, y mayor velocidad de procesado. 25 Capítulo 3. RPAs en la Air Combat Cloud Por su parte, la USN considera que los datos a intercambiar en la Nube Táctica Naval deberían ser: datos del sensores (radares, warnings, guerra electrónica, optrónicos,…), productos de inteligencia, datos sobre el entorno operativo (clima, topografía, etc.), datos sobre disponibilidad y rendimiento del resto de integrantes de la nube (estado de Unidades y plataformas, sensores, satélites, armas, combatientes, etc.), datos históricos relacionados con inteligencia, medio ambiente o misiones previas, datos abiertos relacionados con la misión (como redes sociales),… El NGF, futuro avión de combate del FCAS, constituirá un nodo de la nube en el extremo táctico, comprendiendo, además de lo descrito previamente, aplicaciones de tipo operativo, herramientas automatizadas compartidas, servicios comunes compartidos, conexión a redes comerciales, etc. Indudablemente estos sistemas requieren de una elevada automatización para no saturar a las tripulaciones con información tácticamente de apoyo, disponiendo estas plataformas de sistemas de inteligencia artificial que se hagan cargo de funciones de bajo nivel pero costosas cognitivamente, permitiendo de este modo a los pilotos dedicarse plenamente a funciones de alto nivel como la gestión táctica de la misión. La gestión de la transferencia de datos por parte de la red se realizará independientemente del piloto, que verá los datos fusionados, aunque supervisará el proceso general. La construcción de la Air Combat Cloud no se completará en un único paso dado que los elementos tecnológicos están actualmente en desarrollo e irán mejorándose poco a poco, como las capacidades de fusión de datos de los aviones de quinta generación (F-35), arquitecturas de control de fuego, incremento en la detección de sistemas de defensa aérea del enemigo con una mayor precisión, ambiente colaborativo sincronizado de los efectores y sus municiones, en un entorno degradado de posicionamiento, navegación y sincronización. Un concepto aún por definir de manera incremental, asumiendo diferentes misiones operativas, involucrará una conciencia situacional compartida para lo cual los TDL actuales deben mejorarse incrementando las capacidades de transmisión de información en volumen y velocidad, y avanzando hacia análisis predictivos, que emplearan inteligencia artificial para manipular objetos complejos y mayores cantidades de datos. 26 Capítulo 3. RPAs en la Air Combat Cloud Figura 3.1. Recreación artística de la Air Combat Cloud. El caso de una misión de apoyo aéreo cercano (CAS) involucra tal número de elementos que desde que el controlador JTAC hace una solicitud de apoyo con una recomendación para un ataque aéreo hasta que el piloto efectúa finalmente el disparo puede durar decenas de minutos en la era radio. El concepto DACAS (Digitally Aided CAS) disminuirá el tiempo a minutos reduciendo estos riesgos de malentendidos y errores, y acelerando el ciclo de decisión, dejando la radio como elemento para abortar la misión únicamente. No obstante, el DACAS aún requiere la mejora en la ciberseguridad. Una Air Combat Cloud madura mejoraría aún más la velocidad y calidad en el intercambio de información, así como la explotación que cada parte interesada hace de ella, dado que el intercambio de información se haría a través de la nube. Una vez que se asigna la aeronave a la misión, obtendría automáticamente el estado y las capacidades de sensores y armas, y la información se integraría en su sistema de navegación y ataque. Una vez en zona, los datos de su sistema de navegación y ataque se correlacionarían con los del JTAC, dando información adicional al piloto como sensores de otras aeronaves, RPAs, radares,… lo que permitiría al piloto y al JTAC tener una mejor visión de la situación. De este modo, la Air Combat Cloud constituye un factor esencial para aumentar la efectividad del FCAS donde la necesidad de información es mucho más esencial que la velocidad de la aeronave, por poner un ejemplo. El concepto de conciencia situacional 27 Capítulo 3. RPAs en la Air Combat Cloud compartida que proporcionará la nube será clave para alcanzar la superioridad de la información sobre el adversario y por supuesto la superioridad en la toma de decisiones en un entorno cooperativo táctico. El combate colaborativo pretende que las capacidades de diferentes plataformas interaccionen como un sistema, detectando los sistemas enemigos para coordinar una respuesta más rápida y efectiva. Para ello, se requiere una mejor explotación de la inteligencia donde todos los elementos se constituyen en sensores, un mejor conocimiento compartido al ser capaces de comunicarse entre estos elementos a través de la nube en tiempo real, una rápida respuesta coordinada de estos elementos donde las capacidades operativas de las unidades involucradas respondan colaborativamente, potenciando la precisión de los efectos deseados, constituyéndose así en un multiplicador de fuerza del poder aéreo. La implementación de esta Air Combat Cloud transformará el binomio C2 (Command and Control) en las operaciones. Tradicionalmente, las operaciones aéreas siguen un esquema donde, desde un punto de vista simple, el control se centraliza en el CAOC y la ejecución es descentralizada siendo compartida por el propio CAOC y por las plataformas aéreas. Con la Air Combat Cloud, las plataformas se convierten en efectores y elementos ISR. La conciencia situacional y las capacidades de procesamiento de la nube permitirá a estos aviones tomar la iniciativa asumiendo una mayor parte de control del que disponen ahora en un concepto denominado control distribuido. De cualquier modo, la principal amenaza a la que se enfrenta la Air Combat Cloud son los ciberataques. Así, es necesario desarrollar TDLs con baja probabilidad de detección e interceptación (LPD/LPI) al objeto de dificultar el bloqueo de las comunicaciones. Un factor importante es que estos TDLs no deben depender de los sistemas GNSS (GPS), muy vulnerables a la interferencia, por lo que la Air Combat Cloud debe ser capaz de funcionar en entornos denegados GNSS donde estas señales lleguen degradadas. Indudablemente, quizás el mayor desafío de la Air Combat Cloud sea operar en un entorno electromagnético bajo la acción de los procesos de guerra electrónica del enemigo. En definitiva, una Air Combat Cloud insuficientemente asegurada contra un enemigo de envergadura supone un importante riesgo potencial de parálisis sistémico del poder aéreo. 28 Capítulo 3. RPAs en la Air Combat Cloud De esta manera, la Air Combat Cloud debe estar preparada para funcionar en un ambiente electromagnético denegado donde las operaciones pueden estar degradadas o incluso negadas. Las Unidades militares deben ser capaces de adaptarse a conexiones intermitentes mejorando los TDLs, introduciendo transmisiones asíncronas, almacenamiento masivo de información, capacidad autónoma temporal mediante inteligencia artificial, y modelos de combate cooperativo sin conexiones. Otra cuestión a tener en cuenta es la interoperabilidad que se exigirá a la Air Combat Cloud. A este respecto, los norteamericanos son pragmáticos ya que su experiencia parece demostrar que establecer estándares no es suficiente para garantizar la interoperabilidad entre sistemas. Hasta estos momentos, la interoperabilidad se ha alcanzado cuando una autoridad orgánica u operativa impone sus estándares a los componentes bajo su control. Sin embargo, esto va a cambiar con sistemas de información basados en arquitecturas abiertas modulares que se actualizan en tiempo real, enlaces flexibles entre sistemas a demanda entre sistemas, políticas simétricas y abiertas de intercambio de información, particularmente en el caso de FCAS que se basa en una asociación internacional,... Así, si no se disponen de sistemas compatibles, es necesario recurrir a soluciones laboriosas a la par que ineficientes que impactaría de algún modo en la efectividad de la coalición. No obstante, el acceso a productos de inteligencia se prevé un desafío importante, como lo será la "guerra de fusión" entre sensores en aviones de diferentes naciones, especialmente entre los más sensibles SIGINT. Para concluir, la Air Combat Cloud se articula como una nube multidominio, que incluirá no solo a las Fuerzas Aéreas, sino también al espacio y al entorno cibernético, además de las Fuerzas Terrestres y Navales, abarcando no solo las misiones del poder aéreo sino también las de fuerza conjunta, incluidas las de mantenimiento de la paz y asistencia humanitaria. Resulta evidente que la superioridad de la información y la decisión no puede ser conseguida por un país de manera aislada lo cual obliga a recurrir a coaliciones multinacionales, si bien es necesario vencer la dificultad de optimizar un sistema de comando y control multidominio (MDC2) entre las naciones implicadas, dotadas con 29 Capítulo 3. RPAs en la Air Combat Cloud diferentes Sistemas de Armas, para lo cual es necesario minimizar las diferencias en tácticas, capacidades y procedimientos (TTP) entre los miembros de la coalición. Para que Air Combat Cloud sea efectiva, debería compartir un entorno informático común que permita a las naciones compartir datos, aplicaciones, planificar, colaborar, preparar, ejecutar,… operaciones, para lo cual es necesario disponer de niveles de clasificación de seguridad compartidos. Es decir, la seguridad es esencial para que los socios de la coalición se adhieran a trabajar en esta nube requiriéndose sistemas de ciberseguridad contra las vulnerabilidades asociadas a la interconexión. Obviamente el sistema debe ser robusto, protegido y defendido para prevenir riesgos. Pero hay que tener en cuenta que los riesgos no son solo externos, sino también internos. Ciertos países pueden unirse a la coalición y no ser socios “leales” lo que implicaría que el nivel de compartición con las diferentes naciones tendrá que tener diferentes niveles, de tal modo que no se comparta todo sino lo imprescindible para cumplir la misión concreta desarrollada. Qué duda cabe que esto supone un importante desafío para el desarrollo de la Air Combat Cloud, cada país no va a ceder la información que tanto le ha costado conseguir para que otros la usen abiertamente lo cual trastoca el sistema que pierde su carácter abierto para convertirse en un proceso de negociación de transferencia de información. Dentro de la Air Combat Cloud, los RPAs tendrán un papel clave en misiones de las comúnmente denominadas como “sucias y peligrosas”, como podrían ser las misiones AWAC, ISTAR, EW, CAS, ISR, SEAD,… por citar las más destacables. En este tipo de misiones de alto riesgo, los RPAs reemplazarían a las plataformas tripuladas no remotamente en algunas de sus funciones, salvaguardando las vidas de las tripulaciones que de otro modo se verían expuestas a un riesgo muy elevado en el desempeño de estas misiones. El objetivo de los enjambres de RPAs en la Air Combat Cloud sería similar a todas estas misiones en el sentido de que estas aeronaves remotas tejerían una red de RPAs en la zona de operaciones para desempeñar una misión AWAC, ISTAR, EW, CAS, ISR, SEAD,… Sin entrar en detalle en este tipo de misiones, que no es objeto de este trabajo, lo que si queda claro es que la metodología de estas plataformas remotas sería análoga, destacando como representativas de todas ellas por su mayor riesgo las misiones ISR y SEAD. 30 Capítulo 3. RPAs en la Air Combat Cloud El Departamento de Defensa Norteamericano (DoD) define en su anecdotario la supresión de defensas aéreas (SEAD) como “aquella actividad que neutraliza, destruye o degrada temporalmente las defensas aéreas de superficie del enemigo por medio de rotura y/o disrupción". Este tipo de operaciones también son conocidas como Wild Weasel e Iron Hand en los Estados Unidos siendo el objetivo primordial destruir los misiles superficie-aire (SAM) y la artillería antiaérea (AAA) en las primeras horas del ataque. Durante la guerra de Vietnam se crearon unidades especiales con aviones diseñados específicamente para misiones SEAD y se diseñaron las primeras tácticas. Estas operaciones consisten en la neutralización, destrucción o degradación del sistema de defensa superficie-aire del enemigo. Las operaciones SEAD permiten que otras operaciones aéreas se realicen sin pérdidas innecesarias y aunque no son misiones en sí mismas, han creado mucha expectación debido a que son capaces de facilitar el desempeño de otras operaciones aliadas creando condiciones favorables. Las misiones SEAD no son en absoluto fáciles. Todo lo contrario, son extremadamente complejas y de alto riesgo. El objeto es destruir o neutralizar las defensas aéreas enemigas, las cuales pueden causar un daño importante, aumentando las bajas, como así ocurrió en la Guerra de Yom Kippur en 1973 donde los SAM egipcios diezmaron drásticamente a los israelíes. Una de las estrategias que se están barajando es el engaño, mediante RPAs, misiles crucero, o una combinación de ambos, que simulen aviones, de tal modo que saturen las defensas enemigas, las cuales verán numerosos blancos económicos a los que derribar, gastando caros misiles, o sencillamente incitando a los sistemas radar que se encienden y así son localizados y neutralizados [40] [41]. Asimismo, los RPAs o bien misiles crucero, podrían mostrarse como aviones mayores, si se aumenta artificialmente su firma radar RCS (Radar Cross-Section), empleando paneles que reflejen las ondas del radar, de manera que puedan confundirse con algún avión grande. Una de la principales potencias en este tipo de lides es Israel, el cual lleva desarrollando es tipo de tecnologías desde antes de los años ochenta. Rememorando la misión SEAD en el valle de la Bekaa, esta fue iniciada por RPAs que identificaron las 31 Capítulo 3. RPAs en la Air Combat Cloud instalaciones de las defensas sirias. En primer lugar las Fuerzas Especiales destruyeron un centro de mando y control, para a continuación, los vehículos remotos entraron en acción en modo señuelos, activando los radares sirios, que fueron localizados por RPAs de reconocimiento, para ser destruidos por sistemas de guerra electrónica israelíes. Finalmente, el trabajo final lo terminaron los misiles antirradiación que entraron en acción destruyendo la red de defensa aérea siria. Otra operación digna de ser recordada aconteció durante la Guerra de Irak de 1991, donde los Estados Unidos emplearon RPAs BQM-74C modificados para que muestren una firma radar similar a la de un avión. Desplegados desde Arabia Saudí en oleadas en la primera fase de la campaña aérea, se desplazaron a la zona de operaciones en Bagdad, donde permanecieron durante 20 minutos, provocando una gran carga de trabajo a las defensas antiaéreas, que al saturarse dieron ocasión a los misiles antirradiación AGM-88 HARM para destruir las defensas antiaéreas. Por otra parte, también se usaron señuelos ADM-141 TALD con la misma misión aunque el sistema de lanzamiento era diferente al desplegarse directamente desde aviones. En la actualidad existen modelos mucho más avanzados como el ADM-160 capaz de emular la firma radar de aviones determinados como el B-52, en situaciones de más alcance y altura. De este modo, los enjambres de RPAs se encuentran en situación de prototipos con innumerables ventajas aunque aún no han conseguido alcanzar la fase operacional. Qué duda cabe que la ventaja más importante de estos dispositivos en misiones operativas será la integración de estos RPAs autónomos bajo el paraguas de una estructura inteligente, sincronizada, cooperativa y organizada [89], donde cada agente cuenta con unas capacidades que combinadas en su conjunto con el resto de individuos, constituye una conducta sinérgica colectiva fruto de la suma de los RPAs como individuos. Y como ejemplo de un enjambre en estado avanzado, se puede destacar el LOCUST, un programa de la ONR/USN, aún en fase de desarrollo, el cual es considerado como uno de los enjambres con la capacidad autónoma más avanzada. Este dispositivo monta un enjambre de RPAs, modelo Coyote, el cual se configura desde un lanzador multitubo 32 Capítulo 3. RPAs en la Air Combat Cloud en tierra, pudiendo el enjambre de unos treinta vehículos alcanzar la zona de conflicto y producir decepción y desconcierto en el espacio aéreo enemigo [31]. Figura 3.2. Programa LOCUST. Lanzador multitubo de Coyotes. El Coyote es un RPA no reutilizable diseñado para ser fabricado en grandes cantidades a bajo coste, peso de 5.9 Kg y 1.47 m de envergadura, la carga de pago es 0.9 Kg y la autonomía 90 minutos. El concepto inicial era como elemento ISR de los aviones/helicópteros antisubmarinos MPA/ASW, donde cada Coyote fue proyectado para ser lanzado desde tubos sonoboyas, freno de paracaídas para a continuación apertura de la hélice y las superficies de vuelo. Dispone de una cámara electróptica digital Sony FCB-IX10A (EO) o una cámara infrarroja (IR) BAE SCC500 para los cometidos ISR. Indudablemente una cosa es el RPA y otra muy distinta el enjambre. LOCUST requiere de un vector aérea y es ahí donde el RPA Coyote hace su aparición al ser un vehículo remoto ya consolidado; sin embargo, la cooperación, integración, sincronización e interconexión del enjambre requiere de una red de inteligencia artificial aún en fase de desarrollo, pero que muestra gran potencial de crecimiento. La firma radar de estos vehículos es muy pequeña, reduciendo de esta forma el tiempo de alerta, lo cual sumado a su elevado número producirá tal confusión, que podría ser aprovechado 33 Capítulo 3. RPAs en la Air Combat Cloud para que los misiles penetren el sistema de defensa aérea enemigo. Así, un enjambre de este tipo podría saturar un sistema de defensa aéreo diseñado en origen para rebatir una agresión de misiles y aviones más grandes. Figura 3.3. RPA Coyote. Actualmente la USN se encuentra trabajando en simulaciones acerca de cómo afectaría uno de estos enjambres al Sistema de Defensa de Misiles Aegis, considerado uno de los mejores del mundo. Estas simulaciones muestran que el Aegis no fue diseñado para neutralizar más de ocho de estos RPAs. Incluso la USN ya imagina un enjambre defensivo diseminado en misiones de ataque. La Agencia DARPA también se encuentra trabajando en enjambres aún más avanzados, como el Gremlin. Este tipo de enjambres está formado por RPAs reutilizables, baratos y lanzables desde diferentes tipos de aviones, para ser recuperados desde un C-130 Hércules. Esta nueva plataforma es un nuevo concepto no reutilizable, pudiendo cumplir hasta veinte misiones de alto riesgo, con un mantenimiento básico, antes de ser dado de baja [31]. El Gremlin podría ser adaptado para realizar misiones ISR y EW a los efectos de saturar las defensas enemigas y anular las comunicaciones. Estos dispositivos se combinaran 34 Capítulo 3. RPAs en la Air Combat Cloud entre ellos constituyendo una red cooperativa e inteligente donde podrá suplirse la pérdida de un agente por otros elementos del enjambre. t Figura 3.4. Programa Gremlin con un C-130 Hércules recuperando un enjambre. “System-of-Systems” es otro programa de interés destacable de la Agencia DARPA donde RPAs, misiles y aviones operarán coordinadamente [31]. Mediante una serie de simulaciones, la DARPA demostró como un caza tripulado no remotamente acometía una misión SEAD, localizando una batería SAM, alertando de tal hecho a un avión nodriza que lanza un enjambre de RPAs en misión ISR, se aproxima al teatro de operaciones recopilando información enemiga a la par que perturba e interfiere sus radares. Una vez procesada la información y confirmado que se trata de un elemento hostil, el nodriza lanza un enjambre de misiles LCCM (Low Cost Cruise Missile) hacia el blanco mientras los RPAs regresan para ser recuperados. Otro programa muy reciente de la Agencia DARPA es el CODE, diseñado para extender la autonomía cooperativa de varios RPAs en un área EMOE, incluso aunque la conexión con la GCS sea perturbada. Sus potenciales capacidades incluyen reconocer y 35 Capítulo 3. RPAs en la Air Combat Cloud responder ante obstáculos y situaciones imprevistas, e incluso operar como misiles en la fase final [31]. Figura 3.5. Enjambre de RPAs “System-of-systems”. Por otra parte, otra misión sucia es la ISR, consistente en la adquisición, recopilación y procesado de información de inteligencia de forma coordinada, integrada, precisa, coherente y segura, de tal manera que permita la conducción de operaciones en un teatro de operaciones. ISR abarca varias actividades enfocadas a la planificación y operación de sistemas que recopilan, procesan y propagan información en apoyo de operaciones militares tanto actuales como futuras. Figura 3.6. CODE. 36 Capítulo 3. RPAs en la Air Combat Cloud Existen múltiples ejemplos característicos de sistemas ISR, los cuales abarcan sistemas de vigilancia y reconocimiento que van desde satélites hasta aeronaves tripuladas no remotamente, como el archiconocido U-2, o RPAs diseñados específicamente para ello, como el Predator o el Global Hawk. La inteligencia procesada por estos sistemas ISR puede tomar muchas formas, como imágenes ópticas, radar, infrarrojas o señales electrónicas. La información ISR permite configurar un sistema de alerta temprana para neutralizar al enemigo y que las fuerzas militares propias incrementen su coordinación, efectividad y letalidad. Figura 3.7. Despliegue de enjambre de micro-RPAs Perdix desde aviones F/A-18 Super Hornet. 37 Capítulo 3. RPAs en la Air Combat Cloud Los enjambres de RPAs son componentes eficaces para acometer misiones ISR [61], integrándose colaborativamente para la adquisición de información de inteligencia de manera cooperativa, automática, sincronizada, e inteligente [89], donde estos RPAs se organizan y armonizan en misiones de vigilancia y reconocimiento. Generalmente, este tipo de misiones acontecen en zonas “calientes” de elevado riesgo, donde los RPAs se hallan en peligro de ser abatidos por lo que estos aparatos adoptan una configuración de maniobras evasivas durante la misión ISR, componiendo desconcierto y decepción en las defensas aéreas enemigas, al objeto de aumentar su probabilidad de supervivencia. Este hecho remarca el paralelismo con las misiones de saturación de defensas y el tratamiento de ambas misiones dentro del mismo desarrollo matemático. Figura 3.8. Perdix junto a su contenedor de dispensación. Un prototipo de enjambre de RPAs que se encuentra en fase de desarrollo por el DoD, optimizado para misiones ISR es el Perdix. Este departamento informó del despliegue con éxito de un enjambre de 103 micro-RPAs en misión de vigilancia, desde tres cazas F/A-18 Super Hornet del NAVAIR. Estos RPAs son del modelo Perdix, que han sido desarrollados por el Instituto Tecnológico de Massachusetts siendo su principal ventaja que cada vehículo remoto (agente) es autónomo en su singladura, cooperando y compartiendo información a través de sus data links. Responsables de la SCO del DoD 38 Capítulo 3. RPAs en la Air Combat Cloud describieron el comportamiento de los Perdix como una forma colectiva que comparte un “cerebro distribuido”, lo cual le da cierta capacidad de tomar decisiones y volar en formación [34]. El enjambre adapta su conducta automáticamente dependiendo del número de RPAs que forman el enjambre en cada momento. En opinión de la propia SCO, es mucho más que simples elementos individuales sincronizados y preprogramados. Con un peso de 290 gramos y una envergadura de 30 centímetros, el Perdix es un avión clásico de ala fija con cámara. Fabricado en su mayor parte con impresoras 3D para ahorrar costes, es propulsado con una hélice de 66 mm y motor eléctrico con batería de polímero de litio, lo cual le permite desplazarse a 113 km/h durante unos 20 minutos. Anteriormente ya se habían lanzado Perdix desde dispensadores de las bengalas de aviones F-16 de la USAF desde Edwards y Alaska. El avance de NAVAIR es que estos Perdix se desplegaron con seguridad a 0.6 Mach y -10°C. 39 Capítulo 3. RPAs en la Air Combat Cloud 40 Capítulo 4. Colisiones entre RPAs Un enjambre no presenta posiciones fijas para cada RPA sino que las posiciones temporales que ocupan los agentes del enjambre cambian en cada momento. Considerando únicamente el vuelo en formación, el aspecto general del enjambre no se altera pero las posiciones de cada vehículo concreto si lo hacen. Habitualmente el vuelo en formación forma figuras geométricas, si bien no hay razón para ello más que la propia organizativa. Es comúnmente establecido que el vuelo en formación de un enjambre requiere establecer una serie de reglas generales que tienen el liderazgo como eje común vertebrador. Todo grupo de enjambres que forman un enjambre, volando en formación o no, tienen un líder. Para el caso de vuelo en formación, esta se desplaza como un único agente en lo que respecta a navegación y notificación de posición. La separación entre RPAs en vuelo debe definirse de tal modo que jamás pueda producirse ninguna colisión entre los RPAs. Tampoco podrá producirse choque con elementos ajenos al propio enjambre. Dos o más RPAs vuelan en formación cuando de forma planificada realizan maniobras como si fueran uno solo, siguiendo las instrucciones del líder de la formación, por lo cual la labor de liderazgo es esencial al ser el responsable de la toma de decisiones. Asimismo, la sucesión en el liderazgo es primordial, lo que lleva implícito que siempre debe existir un líder pero solo uno. Dos líderes, no resulta admisible y se elimina un líder o surgen dos formaciones. Indefectiblemente deben existir líderes de reemplazo que puedan sustituir al líder en caso de pérdida. 41 Capítulo 4. Colisiones entre RPAs Craig Reynolds es un científico norteamericano el cual es considerado el primero en dictaminar las reglas básicas que deben cumplir las simulaciones de enjambres. Reynolds partió del estudio de aves para saltar posteriormente a los peces, las manadas de animales con patas, patrones de tráfico, flujo de automóviles, etc. Reynolds estudió los enjambres desde el punto de vista de los pájaros analizando las configuraciones de pájaros si bien en un comienzo los vio como formas rígidas únicamente, ya que Reynolds únicamente estaba interesado en el aspecto abstracto del enjambre como un movimiento agregado, no colisionante, independiente del movimiento interno, cambios de forma y articulación de los agentes. De esta forma, se identifica el movimiento de los individuos del enjambre, sin tener en cuenta cualquier animación interna de los propios agentes. Reynolds establece que los enjambres naturales brotan como resultado de dos comportamientos opuestos: por un lado, permanecer en las proximidades del enjambre mayora la energía del enjambre y por otro, se deben evitar las colisiones con los otros elementos del enjambre. En la naturaleza, la motivación para la primera reflexión se supone basada en la protección contra los depredadores, obteniendo como beneficio una mayor cobertura en la búsqueda de alimentos lo que trae consigo una mejora en la vida en sociedad y el apareamiento. Reynolds concluye a lo largo de su investigación que no hay límite de tamaño para los enjambres siendo un ejemplo las migraciones de arenques en su camino hacia el desove donde estos enjambres pueden alcanzar diecisiete millas con millones de peces. Las conocidas como reglas de Reynolds de regularización de un enjambre, se enumeran a continuación en orden de precedencia [42]: 1. “No colisionar con miembros del enjambre próximos.” 2. “Igualar la velocidad con miembros del enjambre próximos.” 3. “Permanecer cerca de miembros del enjambre próximos desplazándose hacia su posición promedio.” Adicionalmente, Reynolds añade las siguientes directrices: 42 Capítulo 4. Colisiones entre RPAs • Las simulaciones de enjambres deben parecerse lo máximo posible a los enjambres reales donde los miembros de estos enjambres tengan capacidad para eludir obstáculos. • Las fuerzas que gobiernan el enjambre deben catalogarse de alguna forma de una forma priorizada y no pueden adicionarse. Por ejemplo, un enjambre en medio de una ciudad circulando por una calle, al llegar a una intersección debe elegir qué parte del enjambre vuela en una dirección Norte y que parte vuela en otra dirección Oeste. Adicionar Norte y Oeste sería Noroeste, lo cual es inaceptable. • Las leyes de control que describen los modelos de enjambre deben dejar claro la cercanía con otros elementos del enjambre. Tradicionalmente Reynolds interpreta la vecindad de un agente como una región esférica centrada en la posición del propio agente con una sensibilidad que usualmente se describe como el exponencial inverso de la distancia. Finalmente, la vecindad se describe con el radio y el exponente, aunque también podría depender de la dirección del avance y de la velocidad del RPA. • Establecer los conceptos de atracción y repulsión proporcionales a las distancias no son realistas. Es más intuitivo emplear el cuadrado inverso de las distancias como la fuerza de gravedad o de Coulomb entre cargas eléctricas. • El enjambre se mueve especificando una dirección global o un punto de destino hacia la que todos los miembros del enjambre deberían dirigirse. Este dato podría ser conocido por todos los agentes o únicamente por el líder (para lo cual es necesario tener un protocolo de transferencia de líderes en caso de pérdida del líder principal). • Reynolds emplea dos tipos de mecanismos para evitar colisiones. El primero se basa en el concepto de campo de fuerza de repulsión y el otro en el de variar el rumbo para evitar la colisión. Así, una fuerza de repulsión virtual se genera por los obstáculos y si no fuera suficiente, el segundo procedimiento entra en funcionamiento haciendo desviar a los agentes al acercarse. Este procedimiento funciona bien en la mayoría de las situaciones fallando en raras ocasiones. 43 Capítulo 4. Colisiones entre RPAs Olfati-Saber amplió las teorías de Reynolds, a los que habría que sumar los trabajos desarrollados por Vicsek, Fax y Murray, Leonard y Fiorelli, Olfati-Saber y Murray que introdujeron las funciones potenciales para el control de la formación, y por otra parte, Khatig, Rimon y Koditschek añadieron los potenciales artificiales para evitar obstáculos [42]. Olfati-Saber analizó el problema considerando que los agentes se comportan como partículas puntuales y los enjambres se desplazan en formación describiendo figuras geométricas. Asimismo, Olfati-Saber introduce un potencial de un campo de fuerza que rodea cada RPA para evitar las colisiones. En la medida que se aumenta el número de RPAs que componen un enjambre aparecen los primeros problemas tales que a más agentes mayor será la capacidad de los computadores para procesar tantos RPAs. Por otra parte, el segundo problema es que cuantos más RPAs se tengan en vuelo mayor será el riesgo de colisión. Evidentemente esto obliga a una topología física del enjambre cada vez más compleja y enrevesada al igual que la red de comunicaciones que debe controlar y coordinar el propio enjambre [64]. Qué duda cabe que las líneas de investigación se orientan a que los RPAs del enjambre adquieran, en primer lugar, capacidad autónoma/semi-autónoma que permitan actuar al RPA en caso de caída del enlace con la GCS. En segundo lugar, estos agentes deberán aprender a cooperar entre ellos de forma sinérgica de tal modo que exista una reciprocidad entre agentes, donde cada RPA actúa de forma individual pero optimizando la aptitud colectiva e inteligente del enjambre. Esta cuestión no es en absoluta trivial, habida cuenta de los problemas a afrontar, como las colisiones entre estos vehículos, el derribo de agentes durante la misión, y el número mínimo de RPAs necesarios para cumplir la misión con éxito, lo cual configura un caldo de cultivo para alcanzar la meta pretendida en este trabajo: integrar un grupo de RPAs, colaborando entre ellos de manera sinérgica bajo el paraguas de la inteligencia artificial. No debe perderse de vista que el concepto de enjambre no tiene tamaño específico de RPA, si bien tradicionalmente se ha pensado en una concepción de enjambre como un conjunto de agentes de tamaño más bien pequeño (categoría nano, micro o mini: peso inferior a 20 kg), por varias razones, bien por la dificultad de interceptación de RPAs de 44 Capítulo 4. Colisiones entre RPAs pequeño tamaño, maniobrabilidad, más fáciles de camuflar, difíciles de interceptar, silenciosos, baja firma radar/infrarroja, furtivos y una reducida velocidad, a lo que se suma lo antieconómico que resultan los aviones de gran tamaño. Baratos y fáciles de fabricar en serie, muchas veces con impresoras 3D, se almacenan con contenedores y pueden actuar no solo en el exterior sino también dentro de construcciones. Figura 5.1. Topologías elementales de enjambre de vuelo en formación (malla, anillo, estrella). Una cuestión esencial para los miembros del enjambre es evitar el choque con edificios u otro tipo de objetos. Respecto a esto la tecnología quizás más conocida es la Sense & Avoid aunque actualmente aún requiere mucho tiempo de desarrollo. Sense se encarga de obtener información del posible objeto intrusor, para que la Avoid realice los cometidos de análisis y procesamiento y catalogue al entrometido como de riesgo de impacto. Entonces, el Avoid informará al piloto, situado en la GCS, y le propondrá una acción evasiva o bien el RPA actuará en modo autónomo, si el piloto no se encontrara a cargo del aparato, por una caída del enlace o cualquier otra anomalía. Indudablemente es necesario disponer de sensores lo suficientemente avanzados para que alerten de la presencia de intrusos así como computadores lo suficientemente potentes, bien a bordo de la aeronave, o mediante una suma distribuida de los microprocesadores que se encuentren a bordo del resto de RPAS del enjambre, concepto conocido como ultraswarm [15] [86], donde todos estos microprocesadores se combinarán para realizar cálculos complejos. Otra opción es emplear computadores situados en tierra si esto fuera posible por ancho de banda de las comunicaciones, seguridad en la transmisión, velocidad del enlace,... Una primera catalogación de los sistemas S&A son los denominados cooperativos, como aquellos en los que las aeronaves intercambian información voluntariamente 45 Capítulo 4. Colisiones entre RPAs (Sense), bien por sí mismas o empleando como transpondedor una estación en tierra intermediaria. No obstante, cada agente debe ser capaz de detectar y localizar, sin medios ajenos, elementos intrusos, otras aeronaves, construcciones,… además de sus parámetros de vuelo y desplazamiento si se quiere que el Avoid emita la correspondiente respuesta, lo cual requiere de tecnologías avanzadas como, por ejemplo, el radar, EO, DIC (Digital Image Correlation), el LIDAR (Laser/Light Imaging Detection And Ranging), sistemas acústicos, IR, etc., no descartándose la combinación de varias al unísono que aumente la fiabilidad del conjunto. No obstante, no debe perderse de vista que este tipo de dispositivos tecnológicos requieren de características funcionales elevadas como el peso, volúmenes, consumos eléctricos, antenas,… lo cual presenta el inconveniente de que solo puede ser instalado en RPAs de gran tamaño. En el caso de los de tamaño reducido se barajan otro tipo de soluciones en que cada RPA conozca la posición del resto de agentes del enjambre espacialmente y efectúe maniobras autónomas para evitar colisionar con los más cercanos, teniendo en cuenta al enjambre como grupo descentralizado. Muy reveladora ha sido la investigación del KAIST (Korea Advanced Institute of Science and Technology), cuyas investigaciones se centraron en la simulación del comportamiento de un enjambre analizando las distancias entre cada agente con el resto de RPAs, concluyendo que cada agente debe disponer de una región de seguridad, con un tamaño promedio que abarque entre 5 y 15 veces la dimensión típica del RPA [9], siendo suficiente margen para impedir las colisiones en su mayor parte, conservando la cohesión del enjambre (“Multiple Aerial Vehicle Formation Using Swarm Intelligence”). Esta cuestión ha sido corroborada en este trabajo mediante los algoritmos de cálculo desarrollados. También se debe destacar un segundo resultado obtenido por el KAIST, el cual analizó la navegación proporcional NP [94], empleada en misiles [37], como base de un algoritmo de evitación de colisiones entre RPAs, y mediante ecuaciones matemáticas concretaron una condición de elusión a través de un vector de colisión-anulación. A este respecto, en la referencia [26] se ha realizado un exhaustivo análisis muy detallado acerca de la aplicación de la ley NP [28] [30] a la elusión de colisiones en un 46 Capítulo 4. Colisiones entre RPAs enjambre de RPAs, habiéndose constatado que este tipo de tecnología es mucho más apropiada para el vuelo en formación que para misiones operativas. Otra cuestión es el impacto con edificios o construcciones, o también elementos que sean ajenos al enjambre como otras aeronaves, lo cual demanda información relativa a parámetros de vuelo o posicionamiento de todos estos elementos, siendo necesario para esto que el enjambre disponga de sensores avanzados. El objeto de estas tecnologías se escapa de los objetivos del presente trabajo; no obstante, en las referencias [26] y [27] se puede consultar un análisis más detallado empleando tecnologías de análisis estadístico de tratamiento de imágenes mediante las cuales se puede identificar un intruso y evitar su colisión. Figura 5.2. Separaciones entre RPAs de 5-15 veces su dimensión media impide las colisiones. Volviendo a los modelos de comportamiento de enjambres MS/VC, estos estarían constituidos por un agente máster actuando de líder del resto del enjambre. Una posibilidad es que el máster fuera pilotado desde una GCS, situada bien en tierra o en otra aeronave, con la consiguiente ventaja de que el problema relativo al impacto con edificaciones u otros elementos ajenos al enjambre estarías resuelto. Este enjambre estaría definido, de una forma preliminar, por el master, la topología del enjambre (la cual se alteraría para acometer misiones de diferente índole) así como la separación entre agentes marcada por el KAIST. Volviendo al máster, cierto número de 47 Capítulo 4. Colisiones entre RPAs investigadores reclaman un máster mayor y con capacidades superiores que se sitúa en un lugar a salvo en la retaguardia, lo cual conlleva el problema de disponer de másteres sustitutos que actuarían en el caso del que el máster principal sufriera algún accidente. Otro grupo de investigadores considera que el enjambre estaría integrado por agentes iguales y uno de ellos haría las funciones de máster, si bien debe tenerse en cuenta que la función máster debería poder transferirse, acorde a algún protocolo, dependiendo del devenir de la misión en concreto que se trate. Figura 5.3. RPA Black Hornet. En el caso de los RPAs de reducido tamaño, el control y coordinación de estos enjambres requiere de una malla de comunicaciones que permita a todos los agentes comunicarse entre ellos, transmitiendo la información VC que permita evitar los impactos. Esta información deberá contener, entre otras cuestiones, datos acerca de la posición espacial del resto de agentes, al objeto de que se mantenga con el resto de RPAs la distancia de seguridad dentro de los márgenes indicados previamente. La forma de acometer este objetivo sería mediante una estrategia donde cada agente enviaría una señal discreta de coordinación y control al resto de RPAs del enjambre, con el inconveniente que el número de señales enviadas sería N*(N-1), con N el número de RPAs, si bien esta estrategia conlleva un enorme trabajo de procesado computacional por parte de las CPUs (Central Processing Unit) de los vehículos 48 Capítulo 4. Colisiones entre RPAs remotos en la medida que el número de agentes crece. Como se ha indicado anteriormente, lo habitual es que el concepto de enjambre se focalice en los RPAs de tamaño reducido, con el inconveniente asociado de que estos vehículos remotos no permiten ubicar microprocesadores potentes, por falta de espacio, lo cual conlleva una baja capacidad de procesado y en consecuencia una lentitud en los cálculos a efectuar. Como resulta evidente, en fases ulteriores del desarrollo será necesario tener una mayor capacidad de procesado y computación. Dentro de estos modelos, el Agl es aquel con capacidad de inteligencia artificial que le predispone para tomar algunas decisiones autónomas. En este orden de cosas, el modelo CC es mucho más avanzado que el Agl, habiéndose basado su implementación en un enjambre real de insectos, donde estos individuos conjuntan sus habilidades individuales en la idea de alcanzar un comportamiento colectivo; no obstante, este modelo es tan complejo que únicamente se han alcanzado soluciones parciales siendo la más conocida la CC. Técnicas de estimación ToA (Time TDoA (Time Difference AoA (Angle of RSSI (Received Signal de distancias of Arrival) of Arrival) Arrival) Strenght Indicator) Técnicas de estimación de posición Técnicas de GNSS (Global localización Navigation basadas en Satellite distancias System) Técnicas de localización libres de distancias Trilateración Cricket Triangulación Multilateración Proximidad MDS-MAP AHLoS (Ad-Hoc RADAR (IEEE APS (Ad-hoc N-Hop Localization 802.11 Positioning Multila- System) WaveLAN) System) teration (MultiDimenSional Scaling) Intersección Localización Fingerprinting APIT (Approximate Point Intersección rectangular amorfa (Huella Digital) In Triangulation) hexagonal Tabla 5.1. Técnicas de localización. Para que estos RPAs consigan controlarse y coordinarse resulta imprescindible la malla de comunicaciones que los enlace. Obviamente, estas comunicaciones son esenciales para el enjambre. Así, el enjambre podría “sobrevivir” sin comunicaciones durante un corto periodo de tiempo confiando en la capacidad autónoma de cada agente; sin embargo, las comunicaciones deben funcionar aunque sea de forma aperiódica en ciertos momentos de muestreo no periódicos. Así, estas comunicaciones son esenciales, incluso mucho más que con la GCS, siendo deseable un amplio ancho de banda además de capacidad de procesado y computación con el objeto de anticipar un 49 Capítulo 4. Colisiones entre RPAs posible impacto y recalcular la trayectoria de cada agente del enjambre, y por supuesto ser capaz de tomar ciertas decisiones en un área de conflicto, contra amenazas, apoyado por la inteligencia artificial. Qué duda cabe que se presentan ciertos inconvenientes, como es el hackeo de la señal por el enemigo o bien el spoofing del GPS, al igual que la pérdida de conexión con la GCS, problemas asociados a estas aeronaves lo que obliga indefectiblemente a disponer de capacidad autónoma en estas situaciones. Asimismo, el vuelo en formación exige que se defina una topología del enjambre (estrella, anillo, malla) así como mantener las distancias dentro del margen de seguridad especificado anteriormente para evitar las colisiones. Desde un punto de vista tecnológico, para que una plataforma aérea sea autónoma durante su vuelo son necesarios, al menos, los siguientes elementos: un controlador responsable de elusión de impactos, un piloto automático, un sistema de vuelo en formación o/y seguimiento del terreno y finalmente un elemento discriminador entre estos elementos. Adicionalmente a este tipo de configuraciones, en el caso de RPAs con espacio interno limitado, algunos de estos elementos pueden situarse en la GCS y actuar directamente sobre el RPA líder. Figura 5.4. Precisión de las técnicas de localización. 50 Capítulo 4. Colisiones entre RPAs En el caso de emplear tecnologías donde se requiere conocer la posición del conjunto de agentes del enjambre al objeto de no impactar con ellos, es esencial la aplicación de las conocidas como técnicas de localización [25], donde los más demandados son los componentes satelitales GNSS, si bien requieren módulos SAASM anti-spoofing. Otro problema de este tipo de técnicas es que no suelen ser útiles, salvo alguna excepción, dentro de construcciones, por la atenuación de la señal en interiores, por lo que se está estudiando el Wi-Fi, telefonía móvil 5G, ADS-B, Bluetooth, GSM, o también los sensores inalámbricos; no obstante, no debe perderse de vista la precisión de estas tecnologías dependiendo de la misión a acometer [57]. 51 Capítulo 4. Colisiones entre RPAs 52 Capítulo 5. Tratamiento físico-matemático de un RPA En cuanto a la modelización física de cada RPA, partiendo de los postulados de OlfatiSaber, se asume la hipótesis de partida en que los agentes se comportan como partículas puntuales, de masa cuasi-constante, con tres grados de libertad bajo la acción de diversas fuerzas, donde la componente z se encuentra relajada como se verá posteriormente. Las magnitudes físicas características de este movimiento se encuentran definidas por la velocidad, posición y la masa del agente; donde el vehículo ⃗ T , la remoto se encuentra sujeto a una fuerza compuesta por la fuerza propulsiva F ⃗ A y la gravedad mg fuerza aerodinámica F ⃗. Partiendo de un sistema inercial de referencia, las ecuaciones del movimiento son: dr = ⃗VRPA dt m ⃗ RPA dV = ⃗FA + ⃗FT + mg ⃗ dt (5.1) (5.2) ⃗ RPA la velocidad absoluta del vehículo y Donde t es el tiempo, r el vector de posición, V ⃗ RPA se acometen m la masa del vehículo. Dado que las derivadas de los vectores r y V respecto al sistema inercial de referencia, a continuación se expone el sistema formado por seis ecuaciones diferenciales ordinarias (tres relativas a las componentes del vector de posición y las tres del vector velocidad). Conociendo la planta motriz del agente y la aerodinámica se obtienen las fuerzas ⃗FA y ⃗FT [39]. 53 Capítulo 5. Tratamiento físico-matemático de un RPA Respecto a un sistema de referencia no inercial de ejes fijos respecto a Tierra, se hace necesario emplear la velocidad relativa respecto a la superficie terrestre en lugar de la velocidad absoluta y la velocidad angular de la Tierra respecto al sistema inercial, con lo que queda finalmente, aplicando las transformaciones correspondientes: dr = ⃗VRPA dt m ⃗ RPA dV = ⃗FA + ⃗FT + mg ⃗ − 2mω ⃗⃗ × ⃗VRPA − mω ⃗⃗ × (ω ⃗⃗ × r) dt (5.1) (5.3) ⃗ RPA y mω Los términos 2mω ⃗⃗ × V ⃗⃗ × (ω ⃗⃗ × r) se corresponden con las aceleraciones de Coriolis y centrífuga, respectivamente, correspondientes a la rotación de la Tierra. Efectuando los órdenes de magnitud de estos dos términos, estas fuerzas de inercia son despreciables comparadas con la fuerza gravitatoria en vuelo a baja altitud y baja velocidad, que se corresponde con los problemas estudiados habitualmente, como es el caso del problema analizado en este trabajo. Ciertamente, el orden de magnitud de ambos términos, comparados con la gravedad, es aproximadamente 10−3, por lo que finalmente se terminan despreciando como hipótesis de trabajo. Asimismo, se va a asumir como hipótesis de trabajo que la gravedad es constante e igual a su valor al nivel del mar, dado que las variaciones de gravedad para el vuelo a baja altitud pueden despreciarse. En otro orden de cosas, como hipótesis plenamente justificada, en vuelos de corto recorrido se puede considerar la hipótesis de Tierra plana y el sistema de referencia fijo a esta superficie se considera inercial con el plano xy (plano horizontal), y el eje z formando un triedro a derechas. La atmósfera se asume en calma (no hay viento) lo cual resulta aceptable dado que el viento constituye un factor distorsionador que dificulta los cálculos al enmascarar los resultados y conclusiones importantes sin añadir valor añadido. En primera aproximación, el movimiento del enjambre se va a implementar en planos horizontales paralelos al suelo, con el movimiento en el eje z un infinitésimo comparado con los ejes x e y. Esta hipótesis no resulta descabellada dado que las misiones operativas se acometen a una cierta altura en el teatro de operaciones con 54 Capítulo 5. Tratamiento físico-matemático de un RPA variaciones débiles en altura [10]. De este modo, VRPAz ≪ VRPAx , VRPAy , con lo que VRPAz ≅ ϵ, muy pequeño, y VRPAx ~VRPAy . Introduciendo las aproximaciones y desarrollando las ecuaciones dinámicas, se tiene dz = VRPAz dt dx = VRPAx dt (5.1) dy = VRPAy dt m ⃗ RPAz dV = ⃗FAz + ⃗FTz + mg ⃗z dt m ⃗ RPAx dV = ⃗FAx + ⃗FTx + mg ⃗x dt m ⃗ RPAy dV = ⃗FAy + ⃗FTy + mg ⃗y dt (5.4) Con lo que se tiene que ⃗ Az + F ⃗ Tz + mg 0 ≈ mϵ = F ⃗z m ⃗ RPAx dV = ⃗FAx + ⃗FTx + mg ⃗x dt m ⃗ RPAy dV = ⃗FAy + ⃗FTy + mg ⃗y dt (5.5) Diferenciando los casos de agentes con ala fija y multirrotores, se tiene que para el ala ⃗ Tz ≪ F ⃗ Az + mg fija 0 ≈ F ⃗ z ; sin embargo, en el caso de helicópteros multirrotores, la fuerza propulsiva resulta del mismo orden de magnitud que el resto de términos de la ecuación. En el caso de las otras dos ecuaciones dinámicas, la propulsión se consigue primordialmente con el motor; es decir, ⃗FAx + ⃗FTx ≫ mg ⃗ x y ⃗FAy + ⃗FTy ≫ mg ⃗ y . Así, la ⃗ Az está generalmente asociada a la sustentación y las fuerzas F ⃗ Ax y F ⃗ Ay a la fuerza F resistencia aerodinámica. Si no hubiera propulsión, el agente se decelera por resistencia aerodinámica que frena el vehículo. Los helicópteros multirrotores [4] requieren propulsión para mantenerse en vuelo debido a que la sustentación es muy 55 Capítulo 5. Tratamiento físico-matemático de un RPA pequeña, dado que la velocidad de desplazamiento es tan baja que no produce sustentación. Finalmente dz ≈0 dt dx = VRPAx dt (5.7) dy = VRPAy dt m m ⃗ RPAx dV = ⃗FAx + ⃗FTx dt (5.8) ⃗ RPAy dV = ⃗FAy + ⃗FTy dt Téngase en cuenta que los vehículos aéreos tienen tendencia a una velocidad de crucero (velocidad uniforme y constante que puede llevar una aeronave en condiciones normales de presión y temperatura cuando no está sujeta a perturbaciones o variaciones) por lo que el sistema de control que equipa cada RPA intenta mantener esta velocidad. En el caso de que el RPA se viera obligado a decelerarse, como se analizará posteriormente en este trabajo, por alguna razón como es el caso de evitar un choque, se va a asumir la hipótesis de que esta deceleración es un valor constante obtenido de la mecánica del vuelo del RPA. Por otra parte, en el caso de que el agente, por alguna circunstancia, se decelere a una velocidad inferior a la de crucero, el sistema de control acelerará al RPA (si no hay ninguna razón que lo impida como impacto con un objeto) con una aceleración constante obtenida de la mecánica del vuelo del RPA, hasta alcanzar la velocidad de crucero. Asimismo, el sistema de control del agente no permitirá que su velocidad disminuya de la velocidad de entrada en pérdida o velocidad mínima a la que el RPA es capaz de mantenerse en vuelo (sustentación igual al peso). En el caso de helicópteros multirrotores, por razones obvias la velocidad de entrada en pérdida es nula. Finalmente, con estas hipótesis aquí definidas es posible desarrollar un modelo para cada RPA individual, acorde a la realidad y sin requerir un gran costo de procesado 56 Capítulo 5. Tratamiento físico-matemático de un RPA computacional, con lo cual se adelanta que se va a disponer de unos recursos de cálculo y procesado remanentes que permiten lanzar un proceso de desarrollo de un algoritmo del tipo inteligencia de enjambre. Otra cuestión a analizar es el peso en los RPAs en la mecánica de vuelo de cada aeronave remota, lo cual requiere en primer lugar identificar el grupo motopropulsor. Actualmente no existen motores específicos para RPAs debido esencialmente al coste que estas iniciativas implica, por lo que la fuente de obtención de plantas propulsoras para este tipo de vehículos es la aviación no remotamente tripulada en el caso de los grandes o bien los aeromodelos en el caso de los pequeños. Descendiendo a la categoría de los RPAs, se puede comenzar la clasificación partiendo de los de combustión interna (gasolina, gasoil, algún tipo de gas como el gas natural o el gas licuado del petróleo,…), para pasar a las turbinas de gas y finalmente los eléctricos donde esta fuente de energía puede provenir de baterías, paneles solares, celdas de combustible,… En el caso de los de clase I, peso inferior a 20 kg, actualmente la propulsión eléctrica no tiene parangón debido a su baja emisión de residuos, indetectabilidad, alta eficiencia, bajo nivel de mantenimiento, baja contaminación, etc. No cabe duda de que el concepto enjambre puede aplicarse a diferentes tipos de RPAs; sin embargo, actualmente esta tecnología está prácticamente dirigida a los tipo nano, micro o mini (donde el peso es inferior a 20 kg) por razones de diferente índole como sus pequeñas dimensiones, silenciosos, maniobrables, baja señal radar o infrarroja, a lo que habría que sumar su reducida velocidad lo que los hace elementos furtivos, lo cual, en un teatro de operaciones resulta primordial. En el caso de los motores eléctricos de los RPAs con baterías recargables [35], estas se pueden clasificar en varios niveles, de menor a mayor nivel de complejidad, partiendo de las de NiMH (Hidruro metálico de níquel) con una excelente capacidad de carga por unidad de volumen. Incrementando en la complejidad, se tienen las de ion litio, de mayor precio pero sin efecto memoria con mayor capacidad que las primeras. A continuación, se encuadraría las de litio-polímero (LIPO) por su mayor capacidad pero con el inconveniente de que son algo frágiles lo que las hace limitables en su uso. Finalmente, las de aire Zinc se encuentran mejor posicionadas con muchas ventajas con respecto a las anteriores pero se encuentran en desarrollo y evolución. 57 Capítulo 5. Tratamiento físico-matemático de un RPA En definitiva, un agente con planta propulsora eléctrica y fuente de alimentación de baterías, pierde una cantidad tan pequeña de masa debido a la reacción química en la cual la energía química de las baterías se convierte en energía eléctrica. No obstante, esta pérdida de masa de la batería se puede evaluar, dependiendo de la propia batería, en un valor conservativo de un 0.5% en todo el proceso de descarga, lo cual conduce a un valor final de dm/dt ≈ 0, confirmando de este modo la hipótesis indicada al inicio del capítulo de masa constante. 58 Capítulo 5. Tratamiento físico-matemático de un RPA 59 Capítulo 6. Técnica de evitación de colisiones entre RPAs A modo de resumen, según las conclusiones extraídas del capítulo anterior, las hipótesis de partida son atmósfera en calma, Tierra plana, movimiento de los RPAs del enjambre en planos horizontales, paralelos al suelo, donde el movimiento en la dirección del eje z se considera un infinitésimo comparado con los ejes x e y. De este modo, estas hipótesis son admisibles en las misiones operativas objeto de este trabajo y que han sido plenamente documentadas previamente, las cuales ocurren a una cierta altura sobre la zona de conflicto, con variaciones suaves en altura, debido esencialmente a que los RPAs al acercarse al teatro de operaciones con la misión de saturar los radares enemigos confundiendo y decepcionando, la tendencia es volar a una altura cuasi-constante sin realizar cambios bruscos de altura en las inmediaciones del suelo. Por otra parte, y según lo indicado anteriormente, la masa de cada RPA se asume constante. Resulta obvio que para que no se produzcan choques con edificios u objetos se necesita algún tipo de tecnología especializada. Inicialmente, la primera tecnología de este tipo que nos viene a la mentes es la Sense & Avoid si bien aún está en desarrollo y demanda una serie de sensores de alta capacidad tipo radar, acústica, DIC, LIDAR, EO, IR,… además de sobrados recursos de procesado y cálculo computacional. Evidentemente, esto conduce a la necesidad de alojar grandes equipos pesados que exigen consumos excesivos y antenas enormes, por lo que este tipo de tecnologías solo son aplicables a RPAs de gran tamaño. 60 Capítulo 6. Técnica de evitación de colisiones entre RPAs Anteriormente ya se ha introducido que generalmente los enjambres se componen de RPAs de pequeño tamaño (nano, micro o mini), donde la tecnología Sense & Avoid no es de aplicación, como se ha justificado en el párrafo anterior, por lo que otro tipo de soluciones deben ser abordadas como que cada RPA tenga conocimiento de la posición espacial del resto de agentes del enjambre y efectúe maniobras autónomas, de tal modo que se evite chocar con los más próximos, comportándose el enjambre como un grupo descentralizado. Para llevar a buen fin esto, es preceptivo que todos los vehículos remotos del enjambre transmitan información entre ellos, del tipo VC, donde dentro del paquete VC es fundamental la información que evite las colisiones. De modo sustancial, cada RPA recibirá información de diversa índole, aunque la más importante de todas, a efectos de elusión de colisiones, es aquella que contiene la posición espacial del resto de los agentes del enjambre de tal manera que la distancia de seguridad entre RPAs se mantenga dentro de los márgenes indicados en capítulos previos. Obviamente, esto sería fácil de implementar si cada vehículo remoto transmite una señal discreta de coordinación y control al resto del enjambre. Rememorando la investigación del KAIST mencionada en capítulos anteriores, cada agente del enjambre tiene que mantener una distancia de seguridad con los otros RPAs, siendo la distancia requerida, entre 5 y 15 veces la magnitud promedio del agente [9], lo cual es suficiente para evitar los choques así como mantener la cohesión e integridad del enjambre. De esta forma, se supone, tal y como se ha expuesto previamente, todo agente está dotado de algún componente técnico que le hace conocer la posición del resto de agentes del enjambre y maniobrar de manera autónoma para eludir colisionar con los más próximos. Por otra parte, en cuanto a los impactos de los RPAs del enjambre con edificios u otros entes ajenos al propio enjambre, esta cuestión es más compleja y resulta evidente que necesita algo más que el simple dato de la posición del resto de los otros agentes del enjambre, como información suministrada desde el exterior por sensores especializados. La resolución de esta cuestión no resulta fácil de responder y aunque no constituye el objeto primordial de este trabajo, en las referencias [26] y [27] puede encontrarse un interesante análisis de investigación donde empleando 61 Capítulo 6. Técnica de evitación de colisiones entre RPAs tecnologías de tratamiento estadístico de imágenes podría identificarse un obstáculo y prevenir la colisión. Finalmente, es necesario establecer como hipótesis de cálculo adicional en este trabajo que los agentes enjambre solo pueden chocar con otros RPAs del propio enjambre, no habiendo ningún otro tipo de objeto con el que puedan impactar. Bien, conocida por cada RPA la posición del resto de agentes del enjambre, es necesario diseñar un algoritmo de cálculo que permita al RPA maniobrar de manera autónoma y evitar colisionar con los más próximos, siendo una de las aportaciones de este trabajo. Para lo cual, se monta un bucle computacional para todos los agentes y se calculan las distancias al resto de RPAs del enjambre, anexando a cada RPA la mínima distancia al agente más próximo así como el identificador de dicho RPA. Cuando esta distancia baja de un umbral, que se ha llamado factdecv*tam (factor de decisión factdecv por el tamaño promedio del RPA), el RPA gira conforme a la velocidad angular de viraje (ξ̇), obtenida de la mecánica del vuelo del RPA, para no chocar. Para cada paso de tiempo (Δt), el RPA gira una velocidad ξmax = ξ̇ ∙ Δt. Para lo cual, es necesario tomar una referencia angular y calcular dos ángulos para cada agente del enjambre. El que forma el vector (A) y el vector velocidad (V) con respecto a la referencia angular escogida. El vector A es aquel que partiendo del agente en cuestión (origen) apunta al RPA más próximo. Para que este RPA, mencionado, se aleje del agente más próximo, el ángulo entre el vector V y el vector A tiene que aumentar pero sin sobrepasar los 180º (ángulos sexagesimales). De una forma simbólica se tiene [26] [29]: if abs(angulo VECTOR V–angulo VECTOR A)<180º { nuevo ángulo VECTOR V=ángulo VECTOR V+signo(VECTOR V–VECTOR A)*ξmax } else 62 Capítulo 6. Técnica de evitación de colisiones entre RPAs { ## abs(ángulo VECTOR V–ángulo VECTOR A)≥180º nuevo ángulo VECTOR V=ángulo VECTOR V-signo(VECTOR V–VECTOR A)*ξmax } Figura 6.1. Esquema de ángulos para dos RPAs que se acercan. Por otra parte, como continuación de lo introducido en el párrafo anterior, si incluso girando el RPA a la velocidad angular de viraje, entrambos agentes continúan aproximándose con riesgo de choque, interviene el siguiente filtro tipo algoritmo que decelera el agente con una deceleración constante extraída de la mecánica del vuelo del RPA, lo cual se ejecutará cuando la distancia baje de un nuevo umbral diferente al anterior (obviamente debe de ser más pequeño): factdeca*tam (factor de decisión factdeca por el tamaño promedio del RPA). Efectuadas numerosas simulaciones empleando los dos algoritmos filtros expuestos previamente, los resultados han sido satisfactorios evitando los impactos excepto por un detalle. Este nuevo problema detectado es que el enjambre se dispersa y disgrega. Es por lo que ha sido necesario introducir un nuevo factor de decisión que se ha venido en llamar factMmmm*tam, que lo que provoca es que el RPA, al alejarse por encima de este nuevo factor, gire conforme a la velocidad angular de viraje (ξ̇) introducida previamente, retornando hacia el enjambre, concretamente hacia un nuevo punto que 63 Capítulo 6. Técnica de evitación de colisiones entre RPAs se ha denominado centroide del enjambre, y que será motivo de una amplia explicación posteriormente en este trabajo. Por tanto, se monta un nuevo bucle computacional para todos los agentes calculando las distancias de todos los RPAs al centroide del enjambre. Cuando esta distancia supera el valor factMmmm*tam, el RPA gira conforme a la velocidad angular de viraje (ξ̇), obtenida de la mecánica del vuelo del RPA y ya introducida antes, con lo que se dirige al centroide del enjambre. En este sentido, el centroide del enjambre es un punto que se puede considerar representativo del enjambre alrededor del cual se desplazan todos los agentes. Qué duda cabe que este nuevo punto guarda cierta similitud con el centro de masas de un sistema másico; no obstante, el centroide no es tan limitante sino más bien es un punto identificativo del enjambre, el cual una vez conocido permite conocer la posición de todos los agentes del enjambre. Así, cuando el piloto (ya sea humano desde la GCS o bien controlado mediante una inteligencia artificial) tome el control del enjambre como ente completo, un número alto de RPAs hace imposible que un piloto humano pueda tomar el control de cada uno de los vehículos remotos de forma individual, lo cual hace que este centroide sea un elemento especialmente útil ya que el piloto si podría pilotar este centroide, muy apropiado en diverso tipo de misiones como las ISR. Obviamente, por la propia definición de estos factores de decisión se tiene que cumplir que factMmmm≥factdecv≥factdeca [29]. Para lo cual, es necesario tomar una referencia angular y a partir de ahí, calcular dos ángulos para cada agente. Uno de ellos es el formado entre el vector velocidad (V) y el que forma el vector (B) con respecto a la referencia angular indicada antes. Por otra parte, el vector B es aquel que parte del agente (origen) y se dirige al centroide. Resulta lógico que para que el RPA se aproxime al centroide, el ángulo formado entre el vector V y el vector B debe disminuir. Considerando una forma simbólica: if abs(ángulo VECTOR V–ángulo VECTOR B)<180º { 64 Capítulo 6. Técnica de evitación de colisiones entre RPAs nuevo ángulo VECTOR V=ángulo VECTOR V-signo(VECTOR V–VECTOR B)*ξmax } else { ## abs(ángulo VECTOR V–ángulo VECTOR B)≥180º nuevo ángulo VECTOR V=ángulo VECTOR V+signo(VECTOR V–VECTOR B)*ξmax } Figura 6.2. Esquema de ángulos para un RPA que se aleja del centroide. Volviendo por un momento al concepto de liderazgo del enjambre, todo enjambre requiere un líder siendo la labor de liderazgo esencial al ser el responsable, en la práctica, de la toma de decisiones. Asimismo, la sucesión en el liderazgo es primordial, lo que lleva implícito que siempre debe existir un líder pero solo uno. Dos líderes, no resulta admisible y se elimina un líder o surgen dos enjambres. Indefectiblemente deben existir líderes de reemplazo que puedan sustituir al líder en caso de pérdida. Obviamente debe diseñarse para ello un protocolo de transferencia de la función de liderazgo. Aunque resulte repetitivo, la separación entre los agentes que forman el enjambre debe ser tal que bajo ninguna circunstancia se puedan producir choques, manteniendo 65 Capítulo 6. Técnica de evitación de colisiones entre RPAs la cohesión del enjambre al mismo tiempo. El enjambre también debe evitar impactar con elementos externos no pertenecientes al enjambre. En cuanto al liderazgo de un enjambre se tienen las siguientes reglas adicionalmente a las establecidas por Reynolds sin prejuicio de las teorías de Olfati-Saber. 1. El líder de un enjambre requiere disponer de líderes de reemplazo por si el primer líder sufriera algún accidente o percance de algún tipo. Inicialmente se tienen dos opciones, todos los agentes del enjambre son del mismo tipo e iguales con lo que todo agente puede ser un líder, o bien la función de liderazgo es un atributo matemático propio de una clase diferenciada de agentes en el propio enjambre, con lo que la transferencia de la función liderazgo solo puede realizarse a otro RPA de la misma clase. 2. Matemáticamente, este concepto de liderazgo se manifiesta como un valor lógico L que va asociado a cada RPA, de forma que en todo momento se sabe que RPA actúa como líder y cual no. 3. De acuerdo a la investigación efectuada por el KAIST, para impedir los choques, cada RPA debe mantener una distancia de seguridad con los otros agentes, siendo la dimensión de esta distancia entre 5 y 15 veces el tamaño promedio de un vehículo remoto [9]. Para el caso de vuelo en formación: 4. El modus operandi consistiría en que cada cierto paso de tiempo (δt), cada agente comprueba si delante de él hay otros RPAs del enjambre original a una cierta distancia definida d, menor que 15 veces el tamaño promedio de un RPA. Si los hay no es el líder. 5. Respecto a la cuestión de que se entiende por delante del RPA, para hablar de “delante” del agente se debe tener en cuenta la dirección del vector velocidad del RPA propiamente dicho. 6. Para lo cual, se traza un semiángulo α/2 a cada lado del vector velocidad. Este valor dependerá esencialmente del problema a abordar aunque en una primera aproximación se puede tomar α=120º. 66 Capítulo 6. Técnica de evitación de colisiones entre RPAs 7. Si delante del RPA, a una distancia inferior al valor d, hay más de un agente, se elegirá el más próximo con el que seguir conservando las distancias definidas por el KAIST para no impactar con él. 8. En el caso de que delante del RPA, a una distancia d, no haya líder, este agente es el líder y cambia su valor lógico L a líder. De esta forma, si todos los agentes delanteros desaparecen (por la razón que sea, son derribados o sufren algún problema), el agente en cuestión pasa a ser un líder, cambiando su valor lógico. 9. Indudablemente, en un enjambre puede haber varios líderes debido a que se han constituido varios subenjambres. Esto puede acontecer cuando parte del enjambre se separa del enjambre original, por cualquier razón, y no es capaz de volver a él. 10. Cada cierto paso de tiempo Δt (Δt>δt), el RPA que ostenta el rol de liderazgo busca a otros líderes, y si el segundo líder está a una distancia inferior a la distancia d del primero, inducirá una serie de pequeños movimientos, dentro de la capacidad que disponga físicamente el agente; o lo que es lo mismo, induciendo la máxima velocidad angular de viraje del agente y la aceleración del RPA, pero sin sobrepasar la velocidad de crucero, con la idea de que el primer enjambre alcance al segundo y se unan constituyendo un único enjambre. No obstante, y volviendo al concepto de centroide, una nueva aproximación podría realizarse si el líder del enjambre fuera virtual y no real. De este modo, el sistema cognitivo del enjambre o inteligencia artificial, considera al líder como un RPA posicionado donde se encuentra el centroide, tomándolo como un agente más del enjambre. Obviamente, todo el enjambre, comunicado a través de la malla de comunicaciones que coordina y controla todo el enjambre, tendría conocimiento de quien es el líder, que este se sitúa en la posición del centroide, y que es virtual y no real. Indudablemente, esta nueva aproximación presenta importantes ventajas, como que el líder existe siempre mientras el enjambre tenga al menos un RPA en vuelo, no es necesario ningún tipo de protocolo de transferencia de la función líder, simplemente el enjambre actualiza el conocimiento del máster en la medida que la 67 Capítulo 6. Técnica de evitación de colisiones entre RPAs malla de comunicaciones transmite la información en los instantes de muestreo, cuestión que es innata al propio máster, pase lo que pase, y aunque el líder fuera real y no virtual. Por otra parte, según se ha referenciado previamente, entre las hipótesis de cálculo extras el sistema de control de cada agente tiene por misión mantener una velocidad de crucero constante (velocidad que es estable, uniforme y constante que puede llevar una aeronave en condiciones generales sin variación o perturbación). De este modo, en el caso de que no haya riesgo de impacto, el algoritmo valora la velocidad en cada paso de tiempo y si es menor a su velocidad de crucero, el agente se acelera con una aceleración constante obtenida de la mecánica del vuelo del RPA, pero obviamente sin sobrepasar la velocidad de crucero. No obstante, el agente no puede disminuir su velocidad de la de entrada en pérdida. A modo de conclusión, todas las hipótesis relatadas hasta el momento permitirán desarrollar un modelo, conforme a la realidad, de elusión de colisiones, como una de las aportaciones de este trabajo, con el objeto de no emplear excesivos recursos de procesado computacionales, con el fin de dedicar mayores recursos de cálculo computacionales al desarrollo de un algoritmo de inteligencia de enjambre. Los códigos computacionales empleados en este trabajo se han implementado en lenguaje de programación r-project. r-project es un lenguaje y entorno de programación libre, diseñado inicialmente para el análisis estadístico aunque actualmente tiene amplísimas capacidades en muchísimas ramas de la ciencia y la técnica. Fue diseñado en el software libre del lenguaje S aunque con soporte de alcance estático [90]. Es un entorno de programación ampliamente empleado por la comunidad científica en investigación estadística, inicialmente, aunque también se ha usado en otras disciplinas como bioinformática, investigación biomédica, minería de datos o/y matemáticas financieras. Muy importante es su imponente capacidad de carga de una ingente cantidad de bibliotecas o paquetes con funcionalidades de cálculo que a lo largo y ancho del mundo, numerosos investigadores han ido colgado en servidores [49] [97]. 68 Capítulo 6. Técnica de evitación de colisiones entre RPAs Descendiendo a un nivel más técnico, r-project es parte del sistema GNU y se distribuye bajo licencia GNU GPL, para los sistemas operativos Windows, Macintosh, Unix y GNU/Linux, ofreciendo una gran cantidad de herramientas estadísticas (modelos lineales/no lineales, algoritmos de clasificación/agrupamiento, test estadísticos, series temporales,…), graficación, resolución de ecuaciones diferenciales, etc [49] [97]. Como se ha dicho antes, al estar derivado de S, es un lenguaje de programación, lo cual permite a cualquier operador crear sus propias funciones. Así, aunque la mayor parte de las funciones de r-project/R están escritas desde el propio R, también es posible encontrar programas de cálculo muchos más complejos, como aquellas librerías muy “famosas” y conocidas, desarrolladas originalmente en C, C++ o Fortran, que se cargan de manera dinámica [24]. Asimismo, aquellos programadores con un nivel de adiestramiento suficiente pueden manipular los objetos de R, modificándolos, o bien trasladándolos desde código desarrollado en otros lenguajes de programación tipo C. Como no podía ser de otra forma, R hereda de S su orientación de programación orientada a objetos. También se puede extender R dada su política lexical scoping. Asimismo, R también puede hacer uso de múltiples bibliotecas y databases, así como otros objetos extraídos de lenguajes de programación interpretados como Python y Perl. A R también se le ha dotado mediante diferente librerías de una impresionante capacidad gráfica de con alta calidad. Por otra parte, R dispone de su propio formato para la documentación basado en LaTeX. Otra capacidad plenamente aceptada de R es su utilización como herramienta de cálculo numérico, donde puede ser tan eficaz como GNU Octave y MATLAB. También dispone de un interfaz RWeka7 para interactuar con Weka, el cual permite leer y escribir ficheros en formato arff y complementar a R con los algoritmos de minería de datos. El origen de R fue un proyecto con dos características esenciales: es abierto y colaborativo. Todo el que quiera puede confeccionar paquetes y publicarlos, existiendo un repositorio oficial de paquetes, cuyo número superaba los 2000 en 2009. 69 Capítulo 6. Técnica de evitación de colisiones entre RPAs Todos estos paquetes están clasificados en vistas o temas, lo cual permite establecer una agrupación según su naturaleza y función. Volviendo al objeto principal objeto de este trabajo, en el momento de seleccionar el número de RPAs que forman un enjambre, o bien un subenjambre, se va asumir en este trabajo una postura conservativa con únicamente ocho agentes por subenjambre. Para ello, se van a organizar los enjambres en subenjambres. La principal razón de esto es que cuanto mayor sea el número de RPAs que formen parte del enjambre, mayor es la necesidad de recursos de procesado computacional, los cuales se destinarán única y exclusivamente al cálculo de la mecánica del vuelo de los agentes del enjambre. En un primer paso de este trabajo, se va a preferir reservar los recursos de cálculo al desarrollo y configuración del algoritmo que analiza la inteligencia del enjambre. Posteriormente, y una vez constatado la eficacia del algoritmo que proporcione cierta inteligencia al enjambre, se abordará una segunda parte a este trabajo, que consiste en gestionar a un número elevado de RPAs dividiéndolos en subenjambres, donde a cada subenjambre se le dote de un algoritmo de inteligencia de enjambre de tal forma que estos subenjambres actúen de manera organizada y coordinada en el desempeño de una misión operativa. Del mismo modo que un grupo de Fuerzas Aéreas se organiza en escuadrones, donde cada escuadrón ejecuta una misión, cada subenjambre actuará de forma separada pero a la vez coordinándose con el resto de subenjambres que constituyen el enjambre. Esta forma de organización permitirá, por una parte, que con los actuales recursos computacionales, se dote de la indispensable modelización de la mecánica de vuelo de cada RPA, y por otra parte, que cada subenjambre disponga de un algoritmo de inteligencia de enjambre, y finalmente que todos los subenjambres actúen de manera controlada y coordinada en pos de un enjambre con un gran número de RPAs. Recuérdese el enjambre de 103 micro-RPAs Perdix (comentado anteriormente), desplegado desde tres cazas F/A-18 Super-Hornet, desarrollado por el Departamento de Defensa Norteamericano, de tal modo que el objetivo del presente trabajo es la coordinación y control de un enjambre de varios cientos de RPAs. Así, cada subenjambre constará de ocho RPAs, según se ha explicitado anteriormente, de 70 Capítulo 6. Técnica de evitación de colisiones entre RPAs tal modo que esta solución es una solución conservativa que, como se podrá observar a lo largo de este trabajo en las simulaciones realizadas, no supone limitación alguna en el concepto de enjambre [34]. Respecto a la configuración inicial del enjambre (o bien subenjambre), se ha supuesto que el enjambre se desplaza en formación hasta el teatro de operaciones, donde en el tiempo t=0 inicia la maniobra operativa. La geometría adoptada para el enjambre en vuelo en formación ha sido una elipse, en el plano horizontal a una cierta altura sobre el terreno, como puede observarse en la figura. Figura 6.3. Posición inicial del enjambre. El centroide se ha posicionado en el centro geométrico del enjambre (o subenjambre) como se puede ver en la figura. En cuanto a las velocidades iniciales de los agentes del enjambre, se debe tener en cuenta que el objetivo que se va a implementar posteriormente, es definir la entropía con la suficiente precisión como para, mediante la aplicación de algoritmos avanzados metaheurísticos, encontrar el máximo, según se verá a continuación; no obstante, hay que tener en cuenta que la configuración inicial, en cuanto a la dirección de los vectores velocidad de los RPAs, supedita el tiempo necesario para que la entropía evolucione hacia el máximo, y a los efectos de investigación y desarrollo en este trabajo se ha estimado más apropiado que la entropía tarde en evolucionar un tiempo corto, hasta alcanzar el óptimo, lo cual se verá en detalle a posteriori. Dado el elevado número de simulaciones efectuadas en 71 Capítulo 6. Técnica de evitación de colisiones entre RPAs este trabajo, finalmente se ha estimado una configuración inicial de vectores de velocidad unitarios, los cuales multiplicados por un escalar alcanzan la velocidad definitiva, con los que se ha calculado cómo conseguir la entropía de trabajo en un tiempo corto, según puede verse en la figura adjunta. A continuación se exponen las trayectorias de todos los RPAs del enjambre en el plano horizontal. Figura 6.4. Esquema de velocidades iniciales del enjambre. A partir de aquí se van a exponer algunas de las simulaciones realizadas aplicando el entorno r-project, donde los códigos de cálculo más emblemáticos se han anexado al final del presente documento en los Apéndices. Los parámetros de cálculo empleados, obtenidos de la mecánica del vuelo de RPAs, se muestran a continuación: 72 • tamaño promedio de los RPAs=1 metro • aceleración=5 m/s2 • deceleración=1.5 m/s2 • tiempo de la trayectoria completa=60 segundos • paso de tiempo=0.2 segundos • velocidad de crucero=velcru (m/s) • velocidad de pérdida=velper (m/s) • velocidad angular de viraje=velang (grados sexagesimales/segundo) • factdeca • factdecv • factMmmm Capítulo 6. Técnica de evitación de colisiones entre RPAs Simulación para 4 m/s: Figura 6.5. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15. Con respecto a esta simulación, se ha calculado la secuencia de tiempos: Figura 6.6. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=2 seg. Figura 6.7. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=4 seg. 73 Capítulo 6. Técnica de evitación de colisiones entre RPAs Figura 6.8. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=6 seg. Figura 6.9. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=8 seg. Figura 6.10. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=10 seg. 74 Capítulo 6. Técnica de evitación de colisiones entre RPAs Figura 6.11. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=20 seg. Figura 6.12. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=30 seg. Figura 6.13. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=40 seg. 75 Capítulo 6. Técnica de evitación de colisiones entre RPAs Figura 6.14. velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, tiempo=50 seg. Incrementando la velocidad a 10 m/s: Figura 6.15. velcru=10, velper=3, velang=15, factdeca=7, factdecv=10, factMmmm=15. Con velocidad a 15 m/s, variando la velocidad angular de viraje y factMmmm: Figura 6.16. velcru=15, velper=6, velang=15, factdeca=7, factdecv=10, factMmmm=15. 76 Capítulo 6. Técnica de evitación de colisiones entre RPAs Figura 6.17. velcru=15, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=12. Figura 6.18. velcru=15, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Figura 6.19. velcru=15, velper=6, velang=20, factdeca=7, factdecv=10, factMmmm=15. Simulación para 17 m/s: 77 Capítulo 6. Técnica de evitación de colisiones entre RPAs Figura 6.20. velcru=17, velper=6, velang=10, factdeca=7, factdecv=10, factMmmm=15. Figura 6.21. velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Con velocidad a 18 m/s, variando la velocidad angular de viraje y factMmmm: Figura 6.22. velcru=18, velper=6, velang=15, factdeca=7, factdecv=10, factMmmm=15. 78 Capítulo 6. Técnica de evitación de colisiones entre RPAs Figura 6.23. velcru=18, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=12. Figura 6.24. velcru=18, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Figura 6.25. velcru=18, velper=6, velang=20, factdeca=7, factdecv=10, factMmmm=15. 79 Capítulo 6. Técnica de evitación de colisiones entre RPAs Considerando el área barrida por el vector de posición de todos los RPAs del enjambre durante el tiempo en el que se ha calculado la simulación, o de trayectoria completa, permite especificar un área barrida por el enjambre (ABE), parámetro que puede ser muy útil en el caso de misiones operativas. A tenor de la información obtenida previamente de los gráficos confeccionados, se puede concluir que ABE se incrementa al aumentar la velocidad de crucero, incrementar el factor factMmmm o bien al reducir la velocidad angular de viraje, no siendo muy sensible a los factores de decisión factdeca y factdecv. Figura 6.26. Área barrida por el enjambre. A este respecto, con las simulaciones obtenidas haciendo uso de los algoritmos desarrollados a lo largo de este trabajo, se ha calculado la distancia mínima entre cada par de agentes del enjambre en sucesivas simulaciones, obteniendo un dato del orden de 3,9 el tamaño promedio del agente, lo cual estaría bastante bien alineado con el valor inferior que concluyó el KAIST. En lo que respecta al valor superior de 15 calculado por el KAIST, este dato se aprecia más apropiado para impedir que el enjambre se disgregue y disperse perdiendo sinergia, en lugar de para impedir las colisiones entre RPAs. 80 Capítulo 6. Técnica de evitación de colisiones entre RPAs 81 Capítulo 7. Entropía del enjambre La ciencia más común donde la entropía comenzó a ser conocida es la termodinámica, donde la entropía se concibe como una magnitud física empleada en un sistema termodinámico en equilibrio, que mide el número de microestados compatibles con el macroestado de equilibrio, aunque de una forma más común esta magnitud mide el grado de organización del sistema, o bien el grado de desorden de todo aquello que es sistematizado. Inicialmente la entropía definía la capacidad de un sistema termodinámico para incrementar su energía en forma de calor sin variar su temperatura, si bien esa energía no puede emplearse en realizar un trabajo útil por el sistema. Finalmente, se comprendió que esta imposibilidad era debido al desorden de las moléculas del sistema. O también puede definirse como el grado de irreversibilidad que se consigue después de un proceso asociado a la transformación de energía. La entropía de formación es la diferencia de entropía o desorden en el proceso de formación de sustancias partiendo de sus elementos constituyentes. Entropía de Kolmogórov es el objeto o bien la dimensión en física y matemáticas a partir de las homotecias (un tipo de transformación geométrica) [48]. Por otra parte, en teoría de la información, la entropía de la información o de Shannon calcula la incertidumbre o complejidad de un grupo de mensajes de una fuente de información. Otra definición es la cantidad de información promedio que es posible extraer de un conjunto de símbolos empleados en la transmisión de la información. De este modo, aquellos símbolos con probabilidad más baja son los que poseen mayor información. En el caso de que los símbolos son equiprobables, todos suministrarían idéntica información y por tanto la entropía es máxima. Así, la criptografía transforma unos mensajes en otros con menos sentido pero con entropía incrementada. 82 Capítulo 7. Entropía del enjambre Aunque en termodinámica la primera acepción que recibe el lector acerca de la entropía es una medida del desorden del sistema, la realidad es que para la termodinámica la entropía es una medida del incremento de la energía en forma de calor a temperatura constante, siendo necesario acudir a la mecánica estadística para establecer esta concepción matemática de desorden, ya que la termodinámica no se preocupa por los estados microscópicos. Diferentes ramas de la física como la termodinámica, la mecánica estadística y la teoría de la información hacen uso del término entropía, dado que todas estas acepciones tienen algo en común, y es que miden el desorden del sistema. Esta entropía puede interpretarse análogamente como una forma de medir y evaluar la incertidumbre, y también la información necesaria para, en un cierto proceso, medir el grado de desorden. Pero ciertamente, para enfocar correctamente el concepto de entropía, se debe hablar de cuestión de opciones disponibles a escoger que producen el máximo número de posibilidades. Olvidando un poco el mundo infinitesimal, la entropía puede encontrarse a cualquier escala macroscópica o microscópica; no obstante, la idea del desorden hace perder la perspectiva, por lo que resulta más apropiado redefinir estadísticamente la entropía de un sistema como una magnitud física que se calcularía a través de una función proporcional al número de estados posibles. Volviendo al mundo de los enjambres desempeñando misiones operativas, surge la cuestión de cómo este enjambre producirá el mayor efecto degradativo, saturador, y neutralizante en el sistema de defensa aérea enemigo potenciando la confusión, la decepción, el desconcierto y el colapso. Indudablemente, este tipo de efecto es mortífero en las misiones operativas de la Air Combat Cloud, como pueden ser AWAC, ISTAR, EW, CAS, ISR, SEAD,… Sin profundizar en este tipo de misiones, que no es objeto de este trabajo, lo que si queda claro es que la metodología de estas plataformas remotas sería análoga, destacando como representativas de todas ellas por su mayor riesgo las misiones de saturación de defensas e ISR, aunque bien podría emplearse a otro tipo de misiones. De este modo, un elevado número de RPAs generará más confusión que un número bajo. Pero aunque el número de RPAs fuera elevado, es obvio que si todos los agentes tuvieran la misma velocidad en módulo y dirección, es evidente que el desconcierto y el caos generado sería muy parecido a un único RPA. De 83 Capítulo 7. Entropía del enjambre este modo, obviamente, un enjambre de agentes desconcertará, abrumará y sorprenderá, mucho más, aumentando el efecto neutralizante, saturador, degradativo abrumando en mayor medida, cuanto más RPAs se encuentren volando al unísono sobre el espacio aéreo enemigo, con velocidades muy diferentes, tanto en vector como en módulo. Con lo que, parece claro que cuantos más RPAs haya volando, cada uno de ellos en una dirección diferente, mucho más trabajo tendrá el sistema enemigo de defensa aérea, al requerir más recursos para localizar y monitorizar tanto objeto volante en múltiples direcciones y velocidad. Resulta evidente que este concepto tiene cierta similitud con la definición estadística de entropía, en relación al número de estados posible, que en el caso de enjambres será el número de RPAs con velocidades diferentes tanto en módulo como en dirección. Para su cálculo se procederá del siguiente modo [26] [29]: 1. Para cada dimensión espacial del problema, se toma el menor y el mayor valor de la componente correspondiente de la velocidad de todos los agentes del enjambre. Dado que VRPAz ≪ VRPAx , VRPAy , se van a considerar únicamente las componentes x e y. Así, estos son VRPAxmenor y VRPAxmayor, así como VRPAymenor y VRPAymayor. El resto de las componentes VRPAix y VRPAiy estarán comprendidas entre VRPAxmenor < VRPAix < VRPAxmayor y VRPAymenor < VRPAiy < VRPAymayor. 2. A continuación, se define una separación entre VRPAxmenor y VRPAxmayor , así como VRPAymenor y VRPAymayor , función del número de agentes que componen el enjambre: dRPAx = (VRPAxmayor − VRPAxmenor )/númeroRPAS y dRPAy = (VRPAymayor − VRPAymenor )/númeroRPAS. 3. Definiendo los intervalos [VRPAxmenor, VRPAxmenor + 1 · dRPAx [ [VRPAxmenor + 1 · dRPAx , VRPAxmenor + 2 · dRPAx [ [VRPAxmenor + 2 · dRPAx , VRPAxmenor + 3 · dRPAx [ … [VRPAymenor, VRPAymenor + 1 · dRPAy [ [VRPAymenor + 1 · dRPAy VRPAymenor + 2 · dRPAy [ , [VRPAymenor + 2 · dRPAy VRPAymenor + 3 · dRPAy [ , … 84 (7.1) Capítulo 7. Entropía del enjambre Se contabilizan el número de agentes cuya velocidad correspondiente pertenece a cada intervalo. Se define la función Índice de Entropía de cada Intervalo (IEI), la cual toma el valor 1 si al menos la velocidad de un RPA pertenece a dicho intervalo y toma el valor 0 si no existe RPA alguno cuya velocidad pertenezca al intervalo correspondiente. Evidentemente, el número de intervalos será 2 veces el número de agentes (1 vez por la componente x y otra vez por la componente y). Sumando para todos los intervalos que son 2 veces el número de agentes, la función IEI, se obtiene la función Entropía del Enjambre (EE): EE = ∑2∙número de RPAS IEI. Por su propia definición 0 ≤ EE ≤ 2 · número de RPAS, definiendo el factor de Entropía del Enjambre como fEE = EE/(2 · número de RPAS), con lo que 0 ≤ fEE ≤ 1. En los cálculos realizados en este trabajo, este desarrollo del concepto de entropía efectuado previamente se ha denominado Entropía A, EEA. Por otra parte, también se ha definido otro tipo de entropía denominada Entropía B, la cual se ha concretado como: EEB = ∑número de RPAS módulo de velocidad RPASi . Por su propia definición, 0 ≤ EEB ≤ número de RPAS · velocidad de crucero, definiendo el factor de Entropía del Enjambre como fEEB = EEB/(número de RPAS · velocidad de crucero), con lo que 0 ≤ fEEB ≤ 1. Figura 7.1. Entropía fEEB, velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15. 85 Capítulo 7. Entropía del enjambre Por conveniencia, se ha invertido y se va a comenzar el análisis por la Entropía B, concretamente fEEB. Los análisis realizados con esta entropía no han sido muy relevantes. Para 4 m/s (velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, 8 RPAs) se tiene: El número de ciclos, introducido en las gráficas, es una medida computacional adoptada por comodidad, que se corresponde con el tiempo de la trayectoria/paso de tiempo en segundos, que en el momento final es el tiempo de la trayectoria completa/paso de tiempo=300 ciclos para 60 segundos. Aumentando la velocidad a 10 m/s (velcru=10, velper=3, velang=15, factdeca=7, factdecv=10, factMmmm=15, 8 RPAs) y 17 m/s (velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 8 RPAs) respectivamente, se tiene: Figura 7.2. Entropía fEEB, velcru=10, velper=3, velang=15, factdeca=7, factdecv=10, factMmmm=15. Figura 7.3. Entropía fEEB, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. 86 Capítulo 7. Entropía del enjambre Esta entropía que se ha llamado fEEB, presenta un perfil más bien uniforme con pocas variaciones y altibajos, más al aumentar la velocidad de crucero. Esto se debe a que, como se ha indicado anteriormente, los agentes del enjambre tienen tendencia a mantener la velocidad de crucero, como habitualmente ocurre en la realidad, exceptuando ciertas situaciones puntuales de toneles, ascensos, virajes cerrados, etc. De esta forma, esta definición de entropía no aporta información relevante dado que el número de estados posible se mantiene muy estable y constante durante la mayor parte del tiempo de trayectoria completo, con lo que en esta entropía el desconcierto y la confusión generada por el enjambre es muy similar a un único RPA. En el caso de la entropía fEEA, para 4 m/s se tiene: Figura 7.4. Entropía fEEA, velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15. Incrementando la velocidad a 10 m/s y 17 m/s respectivamente: Figura 7.5. Entropía fEEA, velcru=10, velper=3, velang=15, factdeca=7, factdecv=10, factMmmm=15. 87 Capítulo 7. Entropía del enjambre Figura 7.6. Entropía fEEA, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. De estas gráficas, se puede concluir que el fEEA se sitúa entre 0.4 y 0.9 aunque los valores más frecuentes son 0.7; o sea, el 70% del enjambre presenta vectores de velocidad distintos. Sin embargo, un inconveniente es como conectar el concepto de entropía en un algoritmo de optimización, como función a optimizar y maximizar, lo cual se tratará en los siguientes capítulos. Tras desarrollar este concepto de entropía en este capítulo como aportación de este trabajo, posteriormente se verá al aplicar el algoritmo de optimización que es necesario buscar otros conceptos diferentes de entropía donde el algoritmo de optimización trabaje mejor de tal modo que alcance el óptimo más fácilmente. Esto podría conseguirse aumentando el peso de la entropía, lo cual se consigue explorando otro concepto de entropía como un sumatorio de la función EEA para el tiempo de vuelo completo (300 ciclos para 60 segundos), donde pequeñas diferencias en cada ciclo, al final del tiempo de la trayectoria completa, proporcionan grandes diferencias en el proceso de optimización. Esta es la entropía que se empleará cuando se introduzca el algoritmo de optimización y que se ha denominado entropía global del enjambre, entropía G, o bien EEG. 88 Capítulo 7. Entropía del enjambre 89 Capítulo 8. Análisis estadístico modal El objeto de este capítulo es el de recopilar, explorar y presentar el gran volumen de información obtenido en los capítulos previos para descubrir nueva información, patrones y tendencias implícitas [48]. Como se verá a continuación, este análisis estadístico revelará un movimiento que muestra un comportamiento repetitivo de ciertas magnitudes del enjambre, lo cual permite afirmar acerca de la aparición de un patrón de oscilación del enjambre como ente completo, lo cual se manifiesta a través de una frecuencia de oscilación del enjambre, que únicamente depende de la velocidad de crucero de los RPAs, y como consecuencia un modo de oscilación [67]. Estas conclusiones constituyen una importante aportación, de este trabajo, a la teoría de enjambres de RPAs. Para 4 m/s (velcru=4, velper=1, velang=15, factdeca=7, factdecv=10, factMmmm=15, 8 RPAs) se tiene: Figura 8.1. Evolución temporal de la media aritmética de la posición x e y de todos los RPAs del enjambre. 90 Capítulo 8. Análisis estadístico modal En primer lugar se ha representado en el plano horizontal xy la evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre, así como la media aritmética de la posición y de todos los RPAs del enjambre, destacando su pequeño movimiento. A continuación se ha representado en el plano horizontal xy la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre, así como la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.2. Evolución temporal de la desviación típica de la posición x e y de todos los RPAs del enjambre. A efectos ilustrativos, se muestra la combinación de los dos anteriores: media aritmética y desviación típica de la posición de todos los RPAs del enjambre. Figura 8.3. Evolución temporal de la media/desviación de la posición x e y de todos los RPAs del enjambre. 91 Capítulo 8. Análisis estadístico modal Ahora se ha representado en el plano horizontal xy la evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre, así como la media aritmética de la velocidad y de todos los RPAs del enjambre, comprobando la concentración de valores, debido a que el sistema de control del enjambre tiende a mantener la velocidad de crucero de todos los vehículos remotos. Figura 8.4. Evolución temporal de la media aritmética de la velocidad x e y de todos los RPAs del enjambre. A continuación se ha representado en el plano horizontal xy la evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre, así como la desviación típica de la velocidad y de todos los RPAs del enjambre, comprobando la concentración de valores. Figura 8.5. Evolución temporal de la desviación típica de la velocidad x e y de todos los RPAs del enjambre. 92 Capítulo 8. Análisis estadístico modal A efectos ilustrativos, se muestra la combinación de los dos anteriores: media aritmética y desviación típica de la velocidad de todos los RPAs del enjambre. Figura 8.6. Evolución temporal de la media/desviación de la velocidad x e y de todos los RPAs del enjambre. Seguidamente se va a representar la evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre con respecto al tiempo. Para ello se ha introducido el número de ciclos como una medida computacional adoptada por comodidad, que se corresponde con el tiempo de la trayectoria/paso de tiempo en segundos, que en el momento final es el tiempo de la trayectoria completa/paso de tiempo=300 ciclos (300 ciclos para 60 segundos). Figura 8.7. Evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre con respecto al tiempo. 93 Capítulo 8. Análisis estadístico modal Figura 8.8. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Ahora se va a representar la evolución temporal de la media aritmética de la posición y de todos los RPAs del enjambre con respecto al tiempo. Figura 8.9. Evolución temporal de la media aritmética de la posición y de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre con respecto al tiempo. 94 Capítulo 8. Análisis estadístico modal Figura 8.10. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Seguidamente se va a representar la evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre con respecto al tiempo. Figura 8.11. Evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre con respecto al tiempo. 95 Capítulo 8. Análisis estadístico modal Figura 8.12. Evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre. Ahora se va a representar la evolución temporal de la media aritmética de la velocidad y de todos los RPAs del enjambre con respecto al tiempo. Figura 8.13. Evolución temporal de la media aritmética de la velocidad y de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la velocidad y de todos los RPAs del enjambre con respecto al tiempo. 96 Capítulo 8. Análisis estadístico modal Figura 8.14. Evolución temporal de la desviación típica de la velocidad y de todos los RPAs del enjambre. A continuación se representa la evolución temporal de la norma euclidea de las gráficas de media aritmética de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. Figura 8.15. Evolución temporal de la norma euclidea de las gráficas de media aritmética de la posición. Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. 97 Capítulo 8. Análisis estadístico modal Figura 8.16. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Representación de la evolución temporal de la norma euclidea de las gráficas de media aritmética de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. Figura 8.17. Evolución temporal de la norma euclidea de las gráficas de media aritmética de la velocidad. Representación de la norma euclidea de las gráficas de la desviación típica de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. Se debe hacer significar que esta gráfica muestra una extraordinaria similitud con la entropía B definida previamente. 98 Capítulo 8. Análisis estadístico modal Figura 8.18. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la velocidad. A continuación se representa la media aritmética de la norma euclidea de la posición, de todos los RPAs del enjambre, con respecto al tiempo. Figura 8.19. Evolución temporal de la media aritmética de la norma euclidea de la posición. Representación de la norma euclidea de la desviación típica de la posición, de todos los RPAs del enjambre, con respecto al tiempo. 99 Capítulo 8. Análisis estadístico modal Figura 8.20. Evolución temporal de la norma euclidea de la desviación típica de la posición. Representación de la media aritmética de la norma euclidea de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. Se debe hacer significar que esta gráfica muestra una extraordinaria similitud con la entropía B definida previamente. Figura 8.21. Evolución temporal de la media aritmética de la norma euclidea de la velocidad. Representación de la norma euclidea de la desviación típica de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. 100 Capítulo 8. Análisis estadístico modal Figura 8.22. Evolución temporal de la norma euclidea de la desviación típica de la velocidad. A modo de conclusión, se han localizado dos gráficos con una fuerte similitud con la entropía B definida previamente, de forma que la entropía B podría haberse extraído inicialmente a partir de ellos. A saber, estos gráficos son: • Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la velocidad x e y, de todos los RPAs del enjambre. • Representación de la media aritmética de la norma euclidea de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. En cuanto a la frecuencia de oscilación del enjambre comentada al inicio del capítulo, relativa a la manifestación de un patrón de oscilación del enjambre como ente completo, se analizará en detalle posteriormente. Para 10 m/s (velcru=10, velper=3, velang=15, factdeca=7, factdecv=10, factMmmm=15, 8 RPAs) se tiene: En primer lugar se ha representado en el plano horizontal xy la evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre, así como la media aritmética de la posición y de todos los RPAs del enjambre, destacando su pequeño movimiento. 101 Capítulo 8. Análisis estadístico modal Figura 8.23. Evolución temporal de la media aritmética de la posición x e y de todos los RPAs del enjambre. A continuación se ha representado en el plano horizontal xy la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre, así como la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.24. Evolución temporal de la desviación típica de la posición x e y de todos los RPAs del enjambre. A efectos ilustrativos, se muestra la combinación de los dos anteriores: media aritmética y desviación típica de la posición de todos los RPAs del enjambre. 102 Capítulo 8. Análisis estadístico modal Figura 8.25. Evolución temporal de la media/desviación de la posición x e y de todos los RPAs del enjambre. Ahora se ha representado en el plano horizontal xy la evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre, así como la media aritmética de la velocidad y de todos los RPAs del enjambre, comprobando la concentración de valores, debido a que el sistema de control del enjambre tiende a mantener la velocidad de crucero de todos los vehículos remotos. Figura 8.26. Evolución temporal de la media aritmética de la velocidad x e y de todos los RPAs del enjambre. A continuación se ha representado en el plano horizontal xy la evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre, así como la desviación típica de la velocidad y de todos los RPAs del enjambre, comprobando la concentración de valores. 103 Capítulo 8. Análisis estadístico modal Figura 8.27. Evolución temporal de la desviación típica de la velocidad x e y de todos los RPAs del enjambre. A efectos ilustrativos, se muestra la combinación de los dos anteriores: media aritmética y desviación típica de la velocidad de todos los RPAs del enjambre. Figura 8.28. Evolución temporal de la media/desviación de la velocidad x e y de todos los RPAs del enjambre. Seguidamente se va a representar la evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre con respecto al tiempo. Para ello se ha introducido el número de ciclos como una medida computacional adoptada por comodidad, que se corresponde con el tiempo de la trayectoria/paso de tiempo en segundos, que en el momento final es el tiempo de la trayectoria completa/paso de tiempo=300 ciclos (300 ciclos para 60 segundos). 104 Capítulo 8. Análisis estadístico modal Figura 8.29. Evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre con respecto al tiempo. Figura 8.30. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Ahora se va a representar la evolución temporal de la media aritmética de la posición y de todos los RPAs del enjambre con respecto al tiempo. 105 Capítulo 8. Análisis estadístico modal Figura 8.31. Evolución temporal de la media aritmética de la posición y de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre con respecto al tiempo. Figura 8.32. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Seguidamente se va a representar la evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre con respecto al tiempo. 106 Capítulo 8. Análisis estadístico modal Figura 8.33. Evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre con respecto al tiempo. Figura 8.34. Evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre. Ahora se va a representar la evolución temporal de la media aritmética de la velocidad y de todos los RPAs del enjambre con respecto al tiempo. 107 Capítulo 8. Análisis estadístico modal Figura 8.35. Evolución temporal de la media aritmética de la velocidad y de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la velocidad y de todos los RPAs del enjambre con respecto al tiempo. Figura 8.36. Evolución temporal de la desviación típica de la velocidad y de todos los RPAs del enjambre. A continuación se representa la evolución temporal de la norma euclidea de las gráficas de media aritmética de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. 108 Capítulo 8. Análisis estadístico modal Figura 8.37. Evolución temporal de la norma euclidea de las gráficas de media aritmética de la posición. Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. Figura 8.38. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Representación de la evolución temporal de la norma euclidea de las gráficas de media aritmética de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. 109 Capítulo 8. Análisis estadístico modal Figura 8.39. Evolución temporal de la norma euclidea de las gráficas de media aritmética de la velocidad. Representación de la norma euclidea de las gráficas de la desviación típica de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. Se debe hacer significar que esta gráfica muestra una extraordinaria similitud con la entropía B definida previamente. Figura 8.40. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la velocidad. A continuación se representa la media aritmética de la norma euclidea de la posición, de todos los RPAs del enjambre, con respecto al tiempo. 110 Capítulo 8. Análisis estadístico modal Figura 8.41. Evolución temporal de la media aritmética de la norma euclidea de la posición. Representación de la norma euclidea de la desviación típica de la posición, de todos los RPAs del enjambre, con respecto al tiempo. Figura 8.42. Evolución temporal de la norma euclidea de la desviación típica de la posición. Representación de la media aritmética de la norma euclidea de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. Se debe hacer significar que esta gráfica muestra una extraordinaria similitud con la entropía B definida previamente. 111 Capítulo 8. Análisis estadístico modal Figura 8.43. Evolución temporal de la media aritmética de la norma euclidea de la velocidad. Representación de la norma euclidea de la desviación típica de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. Figura 8.44. Evolución temporal de la norma euclidea de la desviación típica de la velocidad. A modo de conclusión, se han localizado dos gráficos con una fuerte similitud con la entropía B definida previamente, de forma que la entropía B podría haberse extraído inicialmente a partir de ellos. A saber, estos gráficos son: • Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la velocidad x e y, de todos los RPAs del enjambre. • Representación de la media aritmética de la norma euclidea de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. 112 Capítulo 8. Análisis estadístico modal En cuanto a la frecuencia de oscilación del enjambre comentada al inicio del capítulo, relativa a la manifestación de un patrón de oscilación del enjambre como ente completo, este análisis estadístico ha revelado un movimiento que muestra un comportamiento repetitivo de ciertas magnitudes del enjambre. Esto permite afirmar que existe un patrón de oscilación del enjambre, como ente completo, lo cual se manifiesta a través de una frecuencia de oscilación del enjambre, y como consecuencia un modo de vibración. Los gráficos que mejor muestran esta hipótesis son: • Representación de la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la norma euclidea de las gráficas de media aritmética de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la evolución temporal de la norma euclidea de las gráficas de media aritmética de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la norma euclidea de las gráficas de la desviación típica de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la media aritmética de la norma euclidea de la posición, de todos los RPAs del enjambre, con respecto al tiempo. • Representación de la norma euclidea de la desviación típica de la posición, de todos los RPAs del enjambre, con respecto al tiempo. • Representación de la media aritmética de la norma euclidea de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. • Representación de la norma euclidea de la desviación típica de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. 113 Capítulo 8. Análisis estadístico modal En determinadas gráficas el patrón de oscilación es muy claro, siendo el resto de armónicos de la serie de Fourier muy pequeños. En otras gráficas, los armónicos no son tan pequeños y distorsionan la forma de la onda, si bien el primer armónico fundamental presenta la frecuencia de oscilación mencionada del enjambre. El periodo de tiempo de este movimiento oscilatorio (intervalo de duración entre dos crestas de una onda) es de 24 segundos aproximadamente, con lo que la frecuencia de oscilación es 0,042 s-1. Para 17 m/s (velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 8 RPAs) se tiene: En primer lugar se ha representado en el plano horizontal xy la evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre, así como la media aritmética de la posición y de todos los RPAs del enjambre, destacando su pequeño movimiento. Figura 8.45. Evolución temporal de la media aritmética de la posición x e y de todos los RPAs del enjambre. A continuación se ha representado en el plano horizontal xy la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre, así como la desviación típica de la posición y de todos los RPAs del enjambre. 114 Capítulo 8. Análisis estadístico modal Figura 8.46. Evolución temporal de la desviación típica de la posición x e y de todos los RPAs del enjambre. A efectos ilustrativos, se muestra la combinación de los dos anteriores: media aritmética y desviación típica de la posición de todos los RPAs del enjambre. Figura 8.47. Evolución temporal de la media/desviación de la posición x e y de todos los RPAs del enjambre. Ahora se ha representado en el plano horizontal xy la evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre, así como la media aritmética de la velocidad y de todos los RPAs del enjambre, comprobando la concentración de valores, debido a que el sistema de control del enjambre tiende a mantener la velocidad de crucero de todos los vehículos remotos. 115 Capítulo 8. Análisis estadístico modal Figura 8.48. Evolución temporal de la media aritmética de la velocidad x e y de todos los RPAs del enjambre. A continuación se ha representado en el plano horizontal xy la evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre, así como la desviación típica de la velocidad y de todos los RPAs del enjambre, comprobando la concentración de valores. Figura 8.49. Evolución temporal de la desviación típica de la velocidad x e y de todos los RPAs del enjambre. A efectos ilustrativos, se muestra la combinación de los dos anteriores: media aritmética y desviación típica de la velocidad de todos los RPAs del enjambre. 116 Capítulo 8. Análisis estadístico modal Figura 8.50. Evolución temporal de la media/desviación de la velocidad x e y de todos los RPAs del enjambre. Seguidamente se va a representar la evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre con respecto al tiempo. Para ello se ha introducido el número de ciclos como una medida computacional adoptada por comodidad, que se corresponde con el tiempo de la trayectoria/paso de tiempo en segundos, que en el momento final es el tiempo de la trayectoria completa/paso de tiempo=300 ciclos (300 ciclos para 60 segundos). Figura 8.51. Evolución temporal de la media aritmética de la posición x de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre con respecto al tiempo. 117 Capítulo 8. Análisis estadístico modal Figura 8.52. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Ahora se va a representar la evolución temporal de la media aritmética de la posición y de todos los RPAs del enjambre con respecto al tiempo. Figura 8.53. Evolución temporal de la media aritmética de la posición y de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre con respecto al tiempo. 118 Capítulo 8. Análisis estadístico modal Figura 8.54. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Seguidamente se va a representar la evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre con respecto al tiempo. Figura 8.55. Evolución temporal de la media aritmética de la velocidad x de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre con respecto al tiempo. 119 Capítulo 8. Análisis estadístico modal Figura 8.56. Evolución temporal de la desviación típica de la velocidad x de todos los RPAs del enjambre. Ahora se va a representar la evolución temporal de la media aritmética de la velocidad y de todos los RPAs del enjambre con respecto al tiempo. Figura 8.57. Evolución temporal de la media aritmética de la velocidad y de todos los RPAs del enjambre. Representación de la evolución temporal de la desviación típica de la velocidad y de todos los RPAs del enjambre con respecto al tiempo. 120 Capítulo 8. Análisis estadístico modal Figura 8.58. Evolución temporal de la desviación típica de la velocidad y de todos los RPAs del enjambre. A continuación se representa la evolución temporal de la norma euclidea de las gráficas de media aritmética de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. Figura 8.59. Evolución temporal de la norma euclidea de las gráficas de media aritmética de la posición. Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. 121 Capítulo 8. Análisis estadístico modal Figura 8.60. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Representación de la evolución temporal de la norma euclidea de las gráficas de media aritmética de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. Figura 8.61. Evolución temporal de la norma euclidea de las gráficas de media aritmética de la velocidad. Representación de la norma euclidea de las gráficas de la desviación típica de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. Se debe hacer significar que esta gráfica muestra una extraordinaria similitud con la entropía B definida previamente. 122 Capítulo 8. Análisis estadístico modal Figura 8.62. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la velocidad. A continuación se representa la media aritmética de la norma euclidea de la posición, de todos los RPAs del enjambre, con respecto al tiempo. Figura 8.63. Evolución temporal de la media aritmética de la norma euclidea de la posición. Representación de la norma euclidea de la desviación típica de la posición, de todos los RPAs del enjambre, con respecto al tiempo. 123 Capítulo 8. Análisis estadístico modal Figura 8.64. Evolución temporal de la norma euclidea de la desviación típica de la posición. Representación de la media aritmética de la norma euclidea de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. Se debe hacer significar que esta gráfica muestra una extraordinaria similitud con la entropía B definida previamente. Figura 8.65. Evolución temporal de la media aritmética de la norma euclidea de la velocidad. Representación de la norma euclidea de la desviación típica de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. 124 Capítulo 8. Análisis estadístico modal Figura 8.66. Evolución temporal de la norma euclidea de la desviación típica de la velocidad. A modo de conclusión, se han localizado dos gráficos con una fuerte similitud con la entropía B definida previamente, de forma que la entropía B podría haberse extraído inicialmente a partir de ellos. A saber, estos gráficos son: • Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la velocidad x e y (||σ||), de todos los RPAs del enjambre. • Representación de la media aritmética de la norma euclidea de la velocidad (||μ||), de todos los RPAs del enjambre, con respecto al tiempo. A continuación va a explicarse esta interesante coincidencia. Considerando las fórmulas de media aritmética N 1 μ = ∑ vi N (8.1) i=1 Y desviación típica N 1 σ = √ ∑(vi − μ)2 N (8.2) i=1 Se tiene 125 Capítulo 8. Análisis estadístico modal N 1 σx = √ ∑(vxi − μx )2 N (8.3) i=1 N 1 σy = √ ∑(vyi − μy )2 N (8.4) ‖σ‖ = √σ2x + σ2y (8.5) i=1 Por otra parte N 1 ‖μ‖ = ∑ √v2xi + v2yi N (8.6) i=1 En cuanto a la Entropía B: EEB = ∑número de RPAS módulo de velocidad RPASi . Por su propia definición, 0 ≤ EEB ≤ número de RPAS · velocidad de crucero, definiendo el factor de Entropía del Enjambre como fEEB = EEB/(número de RPAS · velocidad de crucero), con lo que 0 ≤ fEEB ≤ 1. Así, fEEB=||μ||*velocidad de crucero, quedando demostrada la primera coincidencia. Continuando con el análisis, escribiendo se tiene N N 1 1 ‖σ‖ = √ ∑(vxi − μx )2 + ∑(vyi − μy )2 N N i=1 (8.7) i=1 Desarrollando esta última expresión se tiene N N 1 1 ‖σ‖ = √ ∑(v2xi + μ2x − 2μx vxi ) + ∑(v2yi + μ2y − 2μy vyi ) N N i=1 126 i=1 (8.8) Capítulo 8. Análisis estadístico modal N N 1 1 ‖σ‖ = √ ∑ v2xi − μ2x + ∑ v2yi − μ2y N N i=1 (8.9) i=1 N 1 ‖σ‖ = √ ∑(v2xi + v2yi ) − μ2x − μ2y N (8.10) i=1 De las gráficas implementadas previamente, se pueden realizar las siguientes aproximaciones conformes a la realidad: μx, μx<<vxi, vyi Renombrando 2 2 α2i = (vxi + vyi ) N (8.11) N N μ2x + μ2y 1 1 1 √ ‖σ‖ = √ ∑ α2i − μ2x − μ2y = √ ∑ α2i (1 − ) ≈ ∑ α2i 2 N N N αi i=1 i=1 (8.12) i=1 Y por otra parte N N N 1 1 1 ‖μ‖ = ∑ √v2xi + v2yi = ∑ √α2i = ∑ αi N N N i=1 i=1 (8.13) i=1 Los αi no tienen por qué ser iguales, pero escribiendo αi = ‖μ‖ + ϵi (8.14) α2i = ‖μ‖2 + ϵ2i + 2‖μ‖ϵi (8.15) Haciendo la hipótesis de que ϵi es pequeño, se tiene que α2i ≈ ‖μ‖2 + 2‖μ‖ϵi = ‖μ‖2 (1 + 2 ϵi ) ‖μ‖ (8.16) Con lo que 127 Capítulo 8. Análisis estadístico modal N N 1 2 ‖σ‖ ≈ √ ∑ α2i = √‖μ‖2 + ‖μ‖ ∑ ϵi ≈ ‖μ‖ N N i=1 (8.17) i=1 Así, ambas gráficas se parecen en la medida que se cumplen las hipótesis de partida. En cuanto a la frecuencia de oscilación del enjambre comentada al inicio del capítulo, relativa a la manifestación de un patrón de oscilación del enjambre como ente completo, este análisis estadístico ha revelado un movimiento que muestra un comportamiento repetitivo de ciertas magnitudes del enjambre. Esto permite afirmar que existe un patrón de oscilación del enjambre, como ente completo, lo cual se manifiesta a través de una frecuencia de oscilación del enjambre, y como consecuencia un modo de vibración. Los gráficos que mejor muestran esta hipótesis son: • Representación de la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la norma euclidea de las gráficas de media aritmética de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la evolución temporal de la norma euclidea de las gráficas de media aritmética de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la norma euclidea de las gráficas de la desviación típica de la velocidad x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la media aritmética de la norma euclidea de la posición, de todos los RPAs del enjambre, con respecto al tiempo. • Representación de la norma euclidea de la desviación típica de la posición, de todos los RPAs del enjambre, con respecto al tiempo. 128 Capítulo 8. Análisis estadístico modal • Representación de la media aritmética de la norma euclidea de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. • Representación de la norma euclidea de la desviación típica de la velocidad, de todos los RPAs del enjambre, con respecto al tiempo. En determinadas gráficas el patrón de oscilación es muy claro, siendo el resto de armónicos de la serie de Fourier muy pequeños. En otras gráficas los armónicos no son tan pequeños presentando una forma de onda algo más distorsionada, si bien el primer armónico fundamental presenta la frecuencia de oscilación mencionada del enjambre. El periodo de tiempo de este movimiento oscilatorio (intervalo de duración entre dos crestas de una onda) es de 20 segundos aproximadamente, con lo que la frecuencia de oscilación es 0,05 s-1. Volviendo al caso 4 m/s, si se realiza el análisis a partir de los casos 17 m/s y 10 m/s y se efectúa una interpolación lineal se espera que para 4 m/s el periodo se situé en 30 m/s; no obstante, a partir del resultado completo realizado anteriormente para 4 m/s, buscando un comportamiento repetitivo de ciertas magnitudes del enjambre o análogamente un patrón de oscilación del enjambre como ente completo, el periodo de tiempo de este movimiento oscilatorio se sitúa más acertadamente en 40 segundos aproximadamente, con lo que la frecuencia de oscilación sería 0,025 s-1. Representando la frecuencia de oscilación del enjambre en función de la velocidad de crucero de los RPAs del enjambre: Se han obtenido una gran cantidad de simulaciones aplicando los algoritmos desarrollados para este trabajo, variando sucesivamente los diferentes parámetros que caracterizan al enjambre, sin que estos hayan producido ningún efecto en la relación entre la frecuencia de oscilación del enjambre y la velocidad de crucero de los RPAs del enjambre, pudiendo concluir que el enjambre muestra un patrón de oscilación del enjambre como ente completo, de una forma similar a una frecuencia de oscilación del enjambre asociada a una forma modal de vibración, que únicamente depende de la velocidad de crucero de los RPAs. Estas conclusiones constituyen una importante aportación, de este trabajo, a la teoría de enjambres de RPAs. 129 Velocidad de crucero de los RPAs (m/s) Capítulo 8. Análisis estadístico modal 18 y = 0,9412e57,463x R² = 0,9979 16 14 12 10 8 6 4 2 0,02 0,025 0,03 0,035 0,04 0,045 0,05 0,055 Frecuencia de oscilación del enjambre (s-1) Figura 8.67. Frecuencia de oscilación del enjambre en función de la velocidad de crucero de los RPAs. A continuación va a explicarse una interesante coincidencia que ha aparecido previamente. Ciertamente, a partir de las siguientes gráficas: • Representación de la evolución temporal de la desviación típica de la posición x (σx) de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la desviación típica de la posición y (σy) de todos los RPAs del enjambre con respecto al tiempo. Se ha obtenido la siguiente gráfica: • Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición x e y (||σ||), de todos los RPAs del enjambre, obtenidas anteriormente. Sin embargo, esta gráfica muestra un extraordinario parecido con la siguiente gráfica: • Representación de la media aritmética de la norma euclidea de la posición (||μ||), de todos los RPAs del enjambre, con respecto al tiempo. Considerando las fórmulas de media aritmética N 1 μ = ∑ xi N i=1 Y desviación típica 130 (8.18) Capítulo 8. Análisis estadístico modal N 1 σ = √ ∑(xi − μ)2 N (8.19) i=1 Se tiene N 1 σx = √ ∑(xi − μx )2 N (8.20) i=1 N 1 σy = √ ∑(yi − μy )2 N (8.21) ‖σ‖ = √σ2x + σ2y (8.22) i=1 Por otra parte N 1 ‖μ‖ = ∑ √x2i + y2i N (8.23) i=1 Escribiendo se tiene N N 1 1 ‖σ‖ = √ ∑(xi − μx )2 + ∑(yi − μy )2 N N i=1 (8.24) i=1 Desarrollando esta última expresión se tiene N N 1 1 ‖σ‖ = √ ∑(x2i + μ2x − 2μx xi ) + ∑(y2i + μ2y − 2μy yi ) N N i=1 (8.25) i=1 N N 1 1 ‖σ‖ = √ ∑ x2i − μ2x + ∑ y2i − μ2y N N i=1 (8.26) i=1 131 Capítulo 8. Análisis estadístico modal N 1 ‖σ‖ = √ ∑(x2i + y2i ) − μ2x − μ2y N (8.27) i=1 De las gráficas implementadas previamente, se pueden realizar las siguientes aproximaciones conformes a la realidad: μx, μx<<xi, yi Renombrando α2i = (xi2 + yi2 ) N (8.28) N N μ2x + μ2y 1 1 1 2 2 2 2 √ √ √ ‖σ‖ = ∑ αi − μ x − μ y = ∑ αi (1 − ) ≈ ∑ α2i N N N α2i i=1 i=1 (8.29) i=1 Y por otra parte N N N 1 1 1 ‖μ‖ = ∑ √x2i + y2i = ∑ √α2i = ∑ αi N N N i=1 i=1 (8.30) i=1 Los αi no tienen por qué ser iguales pero escribiendo αi = ‖μ‖ + ϵi (8.31) α2i = ‖μ‖2 + ϵ2i + 2‖μ‖ϵi (8.32) Haciendo la hipótesis de que ϵi es pequeño, se tiene que α2i ≈ ‖μ‖2 + 2‖μ‖ϵi = ‖μ‖2 (1 + 2 ϵi ) ‖μ‖ (8.33) Con lo que N N 1 2 ‖σ‖ ≈ √ ∑ α2i = √‖μ‖2 + ‖μ‖ ∑ ϵi ≈ ‖μ‖ N N i=1 (8.34) i=1 Así, ambas gráficas coinciden en la medida que se cumplen las hipótesis de partida. 132 Capítulo 8. Análisis estadístico modal En este punto surge la cuestión de cómo afectaría el número de RPAs, que componen el enjambre, a la frecuencia de oscilación del enjambre. Para 17 m/s (velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15) se van a analizar las gráficas más emblemáticas, según se ha determinado previamente, a saber: • Representación de la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la media aritmética de la norma euclidea de la posición, de todos los RPAs del enjambre, con respecto al tiempo. Anteriormente, el análisis efectuado se ha implementado para un enjambre de 8 RPAs. A continuación se va a ir disminuyendo el número de RPAs que componen el enjambre y analizando cada una de las gráficas obtenidas. No se han representado las trayectorias de los RPAs del enjambre debido a que esto se realizará en un capítulo posterior, aquí únicamente se representaran las gráficas referenciadas en el párrafo previo. Para 7 RPAs: Figura 8.68. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. 133 Capítulo 8. Análisis estadístico modal Figura 8.69. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.70. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 8.71. Evolución temporal de la media aritmética de la norma euclidea de la posición. Para 6 RPAs: 134 Capítulo 8. Análisis estadístico modal Figura 8.72. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 8.73. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.74. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. 135 Capítulo 8. Análisis estadístico modal Figura 8.75. Evolución temporal de la media aritmética de la norma euclidea de la posición. Para 5 RPAs: Figura 8.76. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 8.77. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. 136 Capítulo 8. Análisis estadístico modal Figura 8.78. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 8.79. Evolución temporal de la media aritmética de la norma euclidea de la posición. Para 4 RPAs: Figura 8.80. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. 137 Capítulo 8. Análisis estadístico modal Figura 8.81. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.82. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 8.83. Evolución temporal de la media aritmética de la norma euclidea de la posición. Para 3 RPAs: 138 Capítulo 8. Análisis estadístico modal Figura 8.84. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 8.85. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.86. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. 139 Capítulo 8. Análisis estadístico modal Figura 8.87. Evolución temporal de la media aritmética de la norma euclidea de la posición. Para 2 RPAs: Figura 8.88. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 8.89. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. 140 Capítulo 8. Análisis estadístico modal Figura 8.90. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 8.91. Evolución temporal de la media aritmética de la norma euclidea de la posición. Al disminuir el número de RPAs, se puede afirmar que la frecuencia de oscilación del enjambre no varía, aunque cuando el número de RPAs es muy pequeño la forma de onda se distorsiona y aunque el primer armónico fundamental de la serie de Fourier presenta la frecuencia de oscilación del enjambre, el resto de armónicos de la serie distorsiona la forma de onda. Este resultado ya se preveía dado que un enjambre con dos o tres agentes pierde el concepto de enjambre y el enjambre se convierte en la suma de unos cuantos RPAs que van moviéndose en bucle oscilatorio con lo que la forma de las ondas presenta irregularidades asimétricas. Para completar el análisis, se va a aumentar el número de RPAs que componen el enjambre, a partir de 8 hasta 16, analizando cada una de las gráficas obtenidas. No se representan aquí las trayectorias de los RPAs del enjambre, sino que esto se hará 141 Capítulo 8. Análisis estadístico modal posteriormente en otro capítulo. Aquí únicamente se representaran las gráficas referenciadas anteriormente en el análisis. Respecto a la configuración inicial del enjambre de 16 agentes, la geometría elíptica adoptada anteriormente para el enjambre en vuelo en formación ha presentado problemas. Ello es debido a la que las velocidades iniciales, empleadas al inicio de este trabajo, de los agentes del enjambre, implementada para alcanzar la entropía máxima en un tiempo corto, ha dado problemas en la salida inicial (tiempo cero) por la concentración de RPAs al comienzo distorsionando el enjambre. Para paliar esta situación se ha adoptado una configuración inicial bielíptica que no quita ninguna notoriedad al trabajo, a grandes distancias del centroide del enjambre no se aprecia tal diferencia, y evita el problema de la salida inicial indicado previamente. El centroide se ha posicionado en el centro geométrico de ambas elipses cómo se puede ver en la figura. Para 10 RPAs: Figura 8.92. Posición inicial del enjambre en configuración bielítica. 142 Capítulo 8. Análisis estadístico modal Figura 8.93. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 8.94. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.95. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. 143 Capítulo 8. Análisis estadístico modal Figura 8.96. Evolución temporal de la media aritmética de la norma euclidea de la posición. Para 12 RPAs: Figura 8.97. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 8.98. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. 144 Capítulo 8. Análisis estadístico modal Figura 8.99. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 8.100. Evolución temporal de la media aritmética de la norma euclidea de la posición. Para 14 RPAs: Figura 8.101. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. 145 Capítulo 8. Análisis estadístico modal Figura 8.102. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.103. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 8.104. Evolución temporal de la media aritmética de la norma euclidea de la posición. Para 16 RPAs: 146 Capítulo 8. Análisis estadístico modal Figura 8.105. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 8.106. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 8.107. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. 147 Capítulo 8. Análisis estadístico modal Figura 8.108. Evolución temporal de la media aritmética de la norma euclidea de la posición. Cuando se aumenta el número de agentes del enjambre, el primer efecto que se observa es una pequeña distorsión de la forma de onda, achacable a que un número tan grande de agentes se interfieren entre ellos, incrementándose el número de RPAs, y al aplicar el algoritmo de elusión de colisiones se provoca un aumento del área barrida por el enjambre, ocasionando una ligera distorsión de la forma de onda. Por otra parte, la frecuencia de oscilación del enjambre no varía apreciablemente y el primer armónico fundamental de la serie de Fourier presenta la frecuencia de oscilación del enjambre, el resto de armónicos de la serie distorsiona ligeramente forma de onda como se ha indicado en el párrafo anterior. Finalmente, se puede concluir que ciertamente el enjambre muestra un patrón de oscilación del enjambre como ente completo, de una forma similar a una frecuencia de oscilación del enjambre asociada a una forma modal de vibración, que únicamente depende de la velocidad de crucero de los RPAs. Estas conclusiones constituyen una importante aportación, de este trabajo, a la teoría de enjambres de RPAs. 148 Capítulo 8. Análisis estadístico modal 149 Capítulo 9. Interferencia entre enjambres En los cálculos posteriores a realizar en este trabajo va a requerirse determinar qué ocurre matemáticamente cuando dos enjambres (o subenjambres), que inicialmente se encontraban separados, se encuentran volando en el espacio e interfieren entre ellos. Para el análisis se va a continuar con la estructura de trabajo seguida hasta ahora, asumiendo dos subenjambres de ocho RPAs cada uno. Ambos subenjambres se desplazan por el espacio y se acercan mutuamente. A lo largo de este trabajo se ha asumido una postura conservativa con únicamente ocho agentes por subenjambre. De este modo, cuanto mayor sea el número de RPAs que formen parte del subenjambre, mayor es la necesidad de recursos de procesado computacional, los cuales se destinarán única y exclusivamente al cálculo de la mecánica del vuelo de los agentes del subenjambre. Inicialmente, la intención en este trabajo es reservar los recursos de cálculo al desarrollo y configuración del algoritmo que analiza la inteligencia del enjambre. A continuación, una vez alcanzado el objetivo de que el algoritmo proporcione cierta inteligencia al enjambre, se acometerá la segunda fase, consistente en organizar a un alto número de RPAs en subenjambres, dotando a cada subenjambre del algoritmo de inteligencia de enjambre, y que actúen estos subenjambres organizada y coordinadamente en el desempeño de una misión operativa. Análogamente a una Unidad militar, que se subdivide a su vez en entidades inferiores, donde cada escuadrón ejecuta una misión concreta, cada subenjambre actuará de forma separada pero a la vez coordinándose con el resto de subenjambres que constituyen el enjambre. Esta forma de organización va a permitir, por una parte, que con los actuales recursos computacionales se dote de la indispensable modelización de la mecánica de vuelo de cada RPA, y por otra parte, que cada 150 Capítulo 9. Interferencia entre enjambres subenjambre disponga de un algoritmo de inteligencia de enjambre, y finalmente que todos los subenjambres actúen de manera controlada y coordinada en pos de un enjambre con un gran número de RPAs, haciendo uso para ello de la teoría de juegos. De este modo, un enjambre formado por varios subenjambres se desplazará por el espacio, donde cada subenjambre dispondrá de un algoritmo de inteligencia de enjambre, pero para ello una cuestión que surge es que ocurre cuando dos de estos subenjambres se acercan mutuamente. Dos primeras cuestiones surgen en esta situación. Primera, el algoritmo de elusión de colisiones diseñado en un capítulo previo debe actuar sobre los dos subenjambres que se aproximan, conociendo cada RPA de cada subenjambre la posición espacial del resto de agentes de cada subenjambre y efectúe maniobras autónomas, de tal modo que se evite colisionar con los más próximos, comportándose ambos subenjambres como un grupo descentralizado. Para alcanzar este objetivo, se requiere que todos los vehículos remotos de ambos subenjambres se comuniquen entre ellos transmitiendo información, del tipo VC, donde dentro de los datos del paquete VC es esencial la información que evite las colisiones. Así, cada agente recibirá información de diversa índole, aunque la más importante de todas, a efectos de elusión de colisiones, es aquella que contiene la posición espacial del resto de los agentes de ambos subenjambres, de tal modo que la distancia de seguridad entre RPAs se mantenga dentro de los márgenes indicados anteriormente. Obviamente, esto sería fácil de implementar si cada vehículo remoto transmite una señal discreta de coordinación y control al resto de subenjambres. Para ello es necesario recordar la investigación del KAIST mencionada en capítulos anteriores, donde cada RPA tiene que mantener una distancia de seguridad con los otros RPAs de enjambre/subenjambre, siendo la distancia requerida, entre 5 y 15 veces la magnitud promedio del agente, lo cual es suficiente para evitar los choques así como mantener la cohesión e integridad del enjambre/subenjambre [9]. De esta forma, se supone, tal y como se ha expuesto anteriormente, que todo agente está dotado de algún dispositivo que le permite conocer la posición del resto de agentes del enjambre y maniobrar autónomamente para eludir colisionar con los más próximos. Para concluir, conocida por cada RPA la posición del resto de agentes del 151 Capítulo 9. Interferencia entre enjambres ambos subenjambres, se requiere un algoritmo de cálculo que permita al RPA maniobrar de manera autónoma y evitar chocar con los más próximos. Para ello, se va a hacer uso del algoritmo diseñado previamente, basado en los factores de decisión factdecv, factdeca y factMmmm, pero abarcando a todos los RPAs de ambos subenjambres, lo cual permitirá a cada RPA evadir la colisión con los agentes de su subenjambre y del otro subenjambre también. Obviamente habrá dos centroides, cada uno para cada subenjambre. Respecto a la configuración inicial de ambos subenjambres, estos se sitúan a una cierta distancia, la cual se irá variando a lo largo del capítulo comprobando los resultados obtenidos. La geometría inicial adoptada en el tiempo inicial ha sido una elipse (como la que se adoptó en capítulos previos) en el plano horizontal, a una cierta altura sobre el terreno, como puede observarse en la figura. Figura 9.1. Posición inicial del enjambre. Continuando con la iniciativa en cuanto a cálculos realizados en capítulos previos, el centroide se posiciona en el centro geométrico de cada subenjambre (ver figura). En cuanto a las velocidades iniciales de los agentes de los subenjambres, se han tomado las mismas que las que se definieron en el capítulo previo, las cuales fueron definidas para que la entropía alcance el máximo rápidamente. En el instante inicial, las diferentes direcciones de los vectores velocidad de los RPAs, determina considerablemente el tiempo que la entropía invierte en desarrollarse y llegar al máximo, y a los efectos de investigación y desarrollo en este trabajo se ha estimado más apropiado que la entropía tarde en evolucionar un tiempo corto, hasta alcanzar el 152 Capítulo 9. Interferencia entre enjambres óptimo. Dado el elevado número de simulaciones efectuadas en este trabajo, finalmente se ha estimado una configuración inicial de vectores de velocidad unitarios, los cuales multiplicados por un escalar alcanzan la velocidad definitiva, con los que se ha calculado cómo conseguir la entropía de trabajo en un tiempo corto. Figura 9.2. Esquema de velocidades iniciales del enjambre. En cuanto a la segunda cuestión, parece que ambos subenjambres sufren un deterioro al acercarse a muy corta distancia. Para evaluar si ciertamente esto es finalmente cierto, se necesita una magnitud mesurable que permita medir este presunto deterioro del comportamiento del enjambre, formado por dos subenjambres, cuando estos se acercan o se alejan. Para esta magnitud evaluadora se va a hacer uso de la entropía G definida anteriormente. A continuación se exponen las trayectorias de todos los RPAs en el plano horizontal. Este análisis se ha efectuado para 17 m/s (velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 8 RPAs por subenjambre). Para la distancia de separación entre enjambres de 300 metros (dist), se obtiene la siguiente simulación: Figura 9.3. dist=300, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. 153 Capítulo 9. Interferencia entre enjambres Para la distancia de separación entre enjambres de 250 metros: Figura 9.4. dist=250, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la distancia de separación entre enjambres de 210 metros: Figura 9.5. dist=210, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la distancia de separación entre enjambres de 200 metros: Figura 9.6. dist=200, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. 154 Capítulo 9. Interferencia entre enjambres Para la distancia de separación entre enjambres de 150 metros: Figura 9.7. dist=150, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la distancia de separación entre enjambres de 100 metros: Figura 9.8. dist=100, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la distancia de separación entre enjambres de 50 metros: 155 Capítulo 9. Interferencia entre enjambres Figura 9.9. dist=50, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. A medida que ambos subenjambres se aproximan, se produce una mayor interferencia entre subenjambres lo cual se va a evaluar mediante la entropía G EEG. Para cada distancia entre subenjambres se ha calculado la entropía G, EEG, de ambos subenjambres conjuntamente. Asimismo, a fin de evaluar la disminución de la entropía G a medida que los subenjambres se aproximan, se ha definido el factor de Entropía del Enjambre G como la relación entre ambos subenjambres combinados y ambos subenjambres separados una distancia infinita, sin interferencia entre ellos, según la fEEG = EEG(subenjambres conjuntos) /EEG(subenjambres separados), función con lo que 0 ≤ fEEG ≤ 1. Adjunto se pueden ver los resultados obtenidos para la entropía EEG y fEEG de ambos subenjambres en función de la distancia de separación. 6600 y = 2,2991x + 5851 R² = 0,8725 6500 Entropía EEG 6400 6300 6200 6100 6000 5900 0 50 100 150 200 250 300 350 Distancia entre enjambres (m) Figura 9.10. Entropía EEG de ambos subenjambres en función de la distancia de separación. 156 Capítulo 9. Interferencia entre enjambres 1,02 1,01 y = 0,0004x + 0,9043 R² = 0,8725 1 Entropía fEEG 0,99 0,98 0,97 0,96 0,95 0,94 0,93 0,92 0,91 0 50 100 150 200 250 300 350 Distancia entre enjambres (m) Figura 9.11. Entropía fEEG de ambos subenjambres en función de la distancia de separación. Como ha podido comprobarse, al acercarse los dos subenjambres se produce un deterioro, lo cual se evalúa mediante la apreciable disminución de la entropía G. Como podrá comprobarse posteriormente, este efecto de disminución de la entropía sería similar a una disminución de entropía ocasionada por la pérdida de algunos RPAs en la zona de conflicto. Paradójicamente, al aproximarse los dos subenjambres se interfieren entre ellos al incrementarse el número de RPAs, y al aplicar el algoritmo de elusión de colisiones se provoca un aumento del área barrida por el enjambre formado por los dos subenjambres. Este aumento del área barrida provoca una disminución del número de estados posibles en enjambres, o lo que es lo mismo, del número de RPAs con velocidades diferentes, y en definitiva de la entropía, constituyendo este resultado una aportación de este trabajo. Qué duda cabe que el algoritmo de elusión de colisiones así como el de cálculo de la entropía tienen que aplicarse al enjambre completo formado por los dos subenjambres al acercarse ambos subenjambres. Esto ocasiona un esfuerzo computacional de cálculo adicional, ya que no es lo mismo efectuar el cálculo completo de bucles y funcionales con ocho RPAs que con dieciséis RPAs. Por tanto, esto esfuerzo computacional debe retrasarse en la medida de lo posible hasta que ambos subenjambres se encuentran lo suficientemente cerca. 157 Capítulo 9. Interferencia entre enjambres Para realizar este cálculo es necesario tener una estimación del área barrida del enjambre y más concretamente del radio de acción. A partir de todas las simulaciones efectuadas a lo largo de este trabajo se ha determinado que este radio de acción tiene una fuerte dependencia de la velocidad de crucero velcru (m/s), velocidad angular de viraje velang (grados sexagesimales/segundo) y poca dependencia en los factores de decisión, incluso en factMmmm, habiéndose obtenido mediante un ajuste por mínimos cuadrados la siguiente fórmula estimativa del radio de acción del enjambre en metros: radio de acción=5,25*velcru-8,26*velang+180,33. Para poder aplicar la fórmula anterior, es necesario obtener la entropía fEEG de ambos subenjambres en función de la distancia de separación adimensionalizada con dos veces el radio de acción obtenido con la fórmula calculada en el párrafo anterior. 1,02 1,01 y = 0,0859x + 0,9043 R² = 0,8725 1 Entropía fEEG 0,99 0,98 0,97 0,96 0,95 0,94 0,93 0,92 0,91 0 0,2 0,4 0,6 0,8 1 1,2 1,4 Distancia adimensional entre enjambres Figura 9.12. Entropía fEEG de ambos subenjambres en función de la distancia de separación adimensional. Esta gráfica muestra que la caída de la entropía fEEG, al acercarse ambos subenjambres, disminuye cuando la distancia adimensional entre enjambres baja de la unidad. 158 Capítulo 9. Interferencia entre enjambres 159 Capítulo 10. Enjambre en movimiento En cálculos posteriores a implementar en este trabajo se verá que va a requerirse conocer que le ocurre al enjambre cuando este se desplaza. Este concepto de desplazamiento ocurre cuando el centroide cambia de posición con una velocidad de centroide inferior a la velocidad de crucero de los RPAs del enjambre en un cierto orden de magnitud como se verá a continuación, dado que estos agentes evolucionan tomando como punto de referencia el propio centroide. Para el análisis se va a continuar con la estructura de trabajo seguida hasta ahora, asumiendo un enjambre/subenjambre de ocho RPAs. Qué duda cabe que esta postura resulta conservativa, con únicamente ocho agentes por subenjambre, pero esta postura tiene su fundamento. Así, cuanto mayor sea el número de RPAs que formen parte del subenjambre, mayor es la necesidad de recursos computacionales, los cuales se destinarán única y exclusivamente al cálculo de la mecánica del vuelo de los agentes del subenjambre. Inicialmente, la intención en este trabajo ha sido reservar los recursos de cálculo al desarrollo y configuración del algoritmo que analiza la inteligencia del enjambre. A continuación, y una vez constatada la eficacia del algoritmo que proporciona cierta inteligencia al enjambre, se acometerá una segunda fase, que consiste en organizar a un número elevado de RPAs en subenjambres, donde a cada subenjambre se le va a dotar de un algoritmo de inteligencia de enjambre, y de este modo, estos subenjambres adquieran un comportamiento organizado y coordinado en el desarrollo de una misión operativa. Análogamente a una Unidad militar organizada, cada subenjambre actuará de forma separada pero a la vez coordinándose con el resto de subenjambres que constituyen el enjambre. Esta forma de organización permitirá, por una parte, que con los actuales recursos 160 Capítulo 10. Enjambre en movimiento computacionales se dote de la indispensable modelización de la mecánica de vuelo de cada RPA, y por otra parte, que cada subenjambre disponga de un algoritmo de inteligencia de enjambre, y finalmente que todos los subenjambres actúen de manera controlada y coordinada en pos de un enjambre con un gran número de RPAs, haciendo uso, para ello, de la teoría de juegos. De esta manera, un enjambre formado por varios subenjambres se desplazará por el espacio, donde cada subenjambre dispondrá de un algoritmo de inteligencia de enjambre, pero para ello una cuestión importante a tratar es cómo afecta a esta subenjambre cuando el centroide se desplaza a una cierta velocidad. Obviamente el algoritmo de elusión de colisiones diseñado en un capítulo previo funciona análogamente con la misma eficacia cuando el centroide del subenjambre se desplaza. En cuanto a la simulación matemática a tratar en este capítulo, se ha asumido una configuración inicial de subenjambre con una geometría tipo elipse (como la que se adoptó en capítulos previos) en el plano horizontal, a una cierta altura sobre el terreno. El centroide se posiciona en el centro geométrico del subenjambre como ya se hizo en capítulos previos. Con respecto a las velocidades iniciales de los agentes del subenjambre, se han tomado las mismas que las que se especificaron en capítulos anteriores, las cuales fueron definidas para que la entropía alcance el máximo rápidamente. En el instante inicial, las diferentes direcciones de los vectores velocidad de los RPAs, determina considerablemente el tiempo que la entropía invierte en desarrollarse y llegar al máximo, y a los efectos de investigación y desarrollo, en este trabajo se ha estimado más apropiado que la entropía tarde en evolucionar un tiempo corto, hasta alcanzar el óptimo. Dado el elevado número de simulaciones efectuadas en este trabajo, finalmente se ha estimado una configuración inicial de vectores de velocidad unitarios, los cuales multiplicados por un escalar alcanzan la velocidad definitiva, con los que se ha calculado como conseguir la entropía de trabajo en un tiempo corto. Como se verá posteriormente, da la impresión que el enjambre/subenjambre sufre un deterioro al desplazarse por el espacio a una cierta velocidad del centroide, y este presunto deterioro es más acusado en la medida que la velocidad del centroide se 161 Capítulo 10. Enjambre en movimiento incrementa. Para evaluar si ciertamente esto es finalmente cierto, se necesita una magnitud mesurable que permita medir este presunto deterioro del comportamiento del enjambre/subenjambre, al desplazarse por el espacio, para lo cual se volverá a hacer uso de la entropía G definida previamente como magnitud evaluadora. A continuación se exponen las trayectorias de todos los RPAs en el plano horizontal. Este análisis se ha efectuado para 17 m/s (velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15). Para la velocidad de centroide vcenx=0, vceny=0, se obtiene la siguiente simulación: Figura 10.1. vcenx=0, vceny=0, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la velocidad de centroide vcenx=1 m/s, vceny=1 m/s, se obtiene la siguiente simulación: Figura 10.2. vcenx=1, vceny=1, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. 162 Capítulo 10. Enjambre en movimiento Para la velocidad de centroide vcenx=2 m/s, vceny=2 m/s, se obtiene la siguiente simulación: Figura 10.3. vcenx=2, vceny=2, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la velocidad de centroide vcenx=3 m/s, vceny=3 m/s, se obtiene la siguiente simulación: Figura 10.4. vcenx=3, vceny=3, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la velocidad de centroide vcenx=4 m/s, vceny=4 m/s, se obtiene la siguiente simulación: 163 Capítulo 10. Enjambre en movimiento Figura 10.5. vcenx=4, vceny=4, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la velocidad de centroide vcenx=5 m/s, vceny=5 m/s, se obtiene la siguiente simulación: Figura 10.6. vcenx=5, vceny=5, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. Para la velocidad de centroide vcenx=6 m/s, vceny=6 m/s, se obtiene la siguiente simulación: 164 Capítulo 10. Enjambre en movimiento Figura 10.7. vcenx=6, vceny=6, velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15. A medida que el enjambre/subenjambre cobra velocidad se aprecia una degradación del propio enjambre, en mayor magnitud al aumentar la velocidad del centroide, lo cual se va a evaluar mediante la entropía G EEG. Así, para cada velocidad del centroide del enjambre se ha calculado la entropía G, EEG, del enjambre/subenjambre. Asimismo, a fin de evaluar la disminución de la entropía G con la velocidad del centroide, se ha definido el factor de Entropía del Enjambre G como la relación entre el enjambre/subenjambre con velocidad de centroide cero y en movimiento, según la función fEEG = EEG(velocidad de centroide nula) /EEG(velocidad de centroide), con lo que 0 ≤ fEEG ≤ 1. Adjunto se pueden ver los resultados obtenidos para la entropía EEG y fEEG en función de la velocidad del centroide. 3300 3200 Entropía EEG 3100 3000 2900 2800 y = -87,107x + 3245,9 R² = 0,9042 2700 2600 2500 2400 0 1 2 3 4 5 6 7 Velocidad del centroide del enjambre (m/s) Figura 10.8. Entropía EEG del enjambre en función de la velocidad del centroide. 165 Capítulo 10. Enjambre en movimiento 1,05 Entropía fEEG 1 0,95 0,9 0,85 y = -0,0269x + 1,0034 R² = 0,9042 0,8 0 1 2 3 4 5 6 7 Velocidad del centroide del enjambre (m/s) Figura 10.9. Entropía fEEG del enjambre en función de la velocidad del centroide. De esta forma, como ha podido comprobarse, en la medida que el enjambre/subenjambre cobra velocidad se produce un deterioro que se ha evaluado mediante una disminución apreciable de la entropía G. Como podrá comprobarse posteriormente, este efecto de disminución de la entropía es similar a una disminución de entropía ocasionada por la pérdida de algunos agentes en la zona de conflicto. La explicación a este fenómeno es que al incrementarse la velocidad del centroide del enjambre, se fuerza al enjambre a desplazarse en la dirección de avance del centroide, y como consecuencia se limita el número de estados posibles en enjambres, o lo que es lo mismo, el número de RPAs con velocidades diferentes, y en definitiva la entropía. Este resultado constituye una aportación de este trabajo. Una cuestión a hacerse en este preciso instante es cómo afecta la velocidad del centroide del enjambre a la frecuencia de oscilación del propio enjambre definida en el capítulo de análisis estadístico modal. Qué duda cabe que debe existir algún tipo de relación, habida cuenta que ya se concluyó que la velocidad de crucero de los RPAs del enjambre era la única variable que afectaba a la frecuencia de oscilación del enjambre asociada a su forma modal de vibración. Indudablemente, al imponer una velocidad al centroide del enjambre, ya se ha visto que la primera consecuencia es un deterioro del propio enjambre que se ha constatado como una disminución de la entropía G. Esto es debido que la velocidad del centroide afecta al campo de velocidades de los RPAs integrantes del propio enjambre ya que estos agentes no pueden sobrepasar la velocidad de crucero del propio RPA (ni bajar de la velocidad de pérdida), lo cual 166 Capítulo 10. Enjambre en movimiento ocasiona una deformación de las trayectorias del enjambre dependiendo de donde se encuentren los agentes, si a favor de la velocidad del centroide o bien en sentido opuesto. Para ello, dependiendo de la velocidad del centroide, se van a analizar las gráficas más emblemáticas, según se determinó previamente en el capítulo de análisis modal. Para 17 m/s (velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15) se procede a analizar las gráficas más emblemáticas, a saber: • Representación de la evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre con respecto al tiempo. • Representación de la evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición x e y, de todos los RPAs del enjambre, obtenidas anteriormente. • Representación de la norma euclidea de la media aritmética de la posición, de todos los RPAs del enjambre, con respecto al tiempo. Anteriormente, el análisis efectuado se ha implementado para una velocidad Para la velocidad de centroide vcenx=0, vceny=0. A continuación se va a ir aumentando la velocidad del centroide del enjambre y analizando cada una de las gráficas obtenidas. Para la velocidad del centroide vcenx=1 m/s, vceny=1 m/s, la forma de onda sufre un pequeño deterioro: Figura 10.10. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. 167 Capítulo 10. Enjambre en movimiento Figura 10.11. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 10.12. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 10.13. Evolución temporal de la norma euclidea de la media aritmética de la posición. Para la velocidad del centroide vcenx=2 m/s, vceny=2 m/s, la forma de onda sufre un pequeño deterioro más acusado: 168 Capítulo 10. Enjambre en movimiento Figura 10.14. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 10.15. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 10.16. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. 169 Capítulo 10. Enjambre en movimiento Figura 10.17. Evolución temporal de la norma euclidea de la media aritmética de la posición. Para la velocidad del centroide vcenx=3 m/s, vceny=3 m/s, la forma de onda se deteriora aún más: Figura 10.18. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 10.19. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. 170 Capítulo 10. Enjambre en movimiento Figura 10.20. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 10.21. Evolución temporal de la norma euclidea de la media aritmética de la posición. Para la velocidad del centroide vcenx=4 m/s, vceny=4 m/s, la forma de onda se deteriora aún más: Figura 10.22. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. 171 Capítulo 10. Enjambre en movimiento Figura 10.23. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 10.24. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. Figura 10.25. Evolución temporal de la norma euclidea de la media aritmética de la posición. Para la velocidad del centroide vcenx=5 m/s, vceny=5 m/s, la forma de onda se deteriora mucho más: 172 Capítulo 10. Enjambre en movimiento Figura 10.26. Evolución temporal de la desviación típica de la posición x de todos los RPAs del enjambre. Figura 10.27. Evolución temporal de la desviación típica de la posición y de todos los RPAs del enjambre. Figura 10.28. Evolución temporal de la norma euclidea de las gráficas de la desviación típica de la posición. 173 Capítulo 10. Enjambre en movimiento Figura 10.29. Evolución temporal de la norma euclidea de la media aritmética de la posición. Como ya se ha apreciado anteriormente, a medida que el enjambre/subenjambre cobra velocidad se aprecia una degradación del propio enjambre, en mayor magnitud al aumentar la velocidad del centroide, lo cual se observa en primera aproximación mediante un deterioro de la forma de onda. No obstante, se sigue observando un patrón oscilatorio, siendo el resto de armónicos de la serie de Fourier de la onda no tan pequeños pero si distorsionadores de la forma de onda, si bien el primer armónico fundamental presenta la frecuencia de oscilación del enjambre. Calculando el periodo de tiempo de estos movimientos oscilatorios (intervalo de duración entre dos crestas de una onda), se obtiene la frecuencia de oscilación, que para todas las velocidades de centroide se representa a continuación: Frecuencia de oscilación (s-1) 0,08 y = 0,0043x + 0,051 R² = 0,9643 0,07 0,06 0,05 0,04 0,03 0,02 0,01 0 0 1 2 3 4 5 6 Velocidad del centroide del enjambre (m/s) Figura 10.30. Frecuencia de oscilación del enjambre en función de la velocidad del centroide del enjambre. 174 Capítulo 10. Enjambre en movimiento Para que esta gráfica, así obtenida, pueda ser de aplicación a diferentes tipos de enjambres, con diferentes velocidades, se va dibujar la frecuencia oscilatoria del enjambre como función de la velocidad del centroide del enjambre, adimensionalizada con la velocidad de crucero de los RPAs. Frecuencia de oscilación (s-1) 0,08 y = 0,0729x + 0,051 R² = 0,9643 0,07 0,06 0,05 0,04 0,03 0,02 0,01 0 0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 Velocidad adimensional del centroide del enjambre Figura 10.31. Frecuencia de oscilación en función de la velocidad del centroide del enjambre adimensionalizada. A modo de conclusión, en la medida que el enjambre/subenjambre cobra velocidad se aprecia una degradación del comportamiento del propio enjambre, en mayor magnitud al aumentar la velocidad del centroide, lo cual se ha observado mediante un deterioro de la forma de onda. A la vista de la gráfica anterior, frecuencia de oscilación en función de la velocidad del centroide del enjambre adimensionalizada, se observa que la velocidad del centroide no puede aumentar indefinidamente, habiéndose determinado un valor conservativo que no distorsionará la forma de onda ni la efectividad del enjambre en el desempeño de las misiones operativos, que ha sido de un 20% la velocidad de crucero de los RPAs aproximadamente. Es decir, el enjambre admite velocidades de centroide no superiores a 0,2*velocidad de crucero para continuar operando como enjambre sin grandes inconvenientes ni menoscabos en el desarrollo de la operación. Finalmente, se puede concluir que ciertamente el enjambre muestra un patrón de oscilación del enjambre como ente completo, de una forma similar a una frecuencia de oscilación del enjambre asociada a una forma modal de vibración, que únicamente 175 Capítulo 10. Enjambre en movimiento depende de la velocidad de los RPAs. Estas conclusiones constituyen una importante aportación, de este trabajo, a la teoría de enjambres de RPAs. 176 Capítulo 10. Enjambre en movimiento 177 Capítulo 11. El enjambre como juego cooperativo La Teoría de Juegos es una parte de la matemática aplicada que estudia interacciones en sistemas estructurales de incentivos. El objetivo esencial en esta teoría es esquematizar el comportamiento humano en la toma de decisiones en ciertas disciplinas como la teoría económica, donde los investigadores buscan estrategias óptimas que maximicen la utilidad para cada jugador, donde la estrategia dominante es aquella que proporciona la mayor utilidad al jugador independientemente de la estrategia del otro jugador. Esta teoría fue originalmente fundada por von Neumann (1928), si bien otros matemáticos anticiparon algunas conclusiones previamente, como Zermelo (1913) o Borel (1921). No obstante, se considera esencial el tratado “Theory of Games and Economic Behavior” (1944) de von Neumann y el economista Morgenstern, donde se marcan las bases esenciales de la denominada Teoría de Juegos clásica. Posteriormente el premio Nobel John Forbes Nash extendió la Teoría de Juegos aún más, como se verá posteriormente, para, en los setenta, científicos como Harsanyi y Selten profundizan en estos conceptos, esencialmente en economía, aunque otras disciplinas se benefician de ellos como la sociología, biología o las ciencias políticas. La Teoría de Juegos se divide en juegos cooperativos y no cooperativos o competitivos. En los juegos cooperativos, los jugadores cooperan y constituyen coaliciones que les permiten llegar a acuerdos antes de iniciar el juego, con el objetivo de obtener mayores beneficios. Es decir, la estrategia es compartida por todos los jugadores que forman la coalición y el principal problema a resolver en este tipo de juegos es que 178 Capítulo 11. El enjambre como juego cooperativo criterio aplicar a la hora de repartir los beneficios, o dicho de otra forma, se va a pagar por lo que ha trabajado cada jugador o atendiendo a otro criterio. O dicho de otra forma, el pago de esta coalición o los beneficios que la coalición obtendrá del juego, será función de la coalición, y deberá ser repartido al finalizar el juego entre los jugadores que forman la coalición de alguna forma. Una coalición puede estar formada por cualquier grupo de jugadores de cualquier tamaño. Cuando no hay limitación en el reparto de beneficios entre los jugadores, este juego se llama con Utilidad Transferible (UT) o TU (Transferable Utility) [60] [63]. Por el contrario, en los juegos no cooperativos, cada jugador juega sus cartas para maximizar su beneficio no existiendo acuerdo previo entre jugadores, en principio, aunque siempre existe la posibilidad de establecer coaliciones entre los jugadores. Esta rama de la Teoría de Juegos formula distintas estrategias a emplear por cada uno de los jugadores, las cuales estarán condicionadas a lo que hagan el resto de jugadores, existiendo una función de pagos asociada a cada jugador, la cual dependerá de las estrategias empleadas. Un juego cooperativo con utilidad transferible, en forma coalicional o en forma de función característica, es un par (N, v) formado por un conjunto finito N={1,2,...,n}, que es el conjunto de jugadores, y una función v:2N→ℝ, que asigna a cada subconjunto S (coalición) de N un número real v(S), con la condición v(∅)=0 [3]. La coalición S⊂N se refiere a que los miembros de S accedieron a cooperar haciendo posible la formación de la coalición y v(S) es lo que pueden obtener al trabajar conjuntamente, que es el pago que reciben los jugadores de la coalición S. N se denomina gran coalición. Los jugadores de la coalición S actúan buscando el mayor beneficio posible para la coalición y una importante cuestión es el reparto entre los jugadores que forman la coalición. Varias cosas, se dice que un juego (N, v) es superaditivo si ∀ S, T⊆N, con S∩T=∅, se verifica que v(S)+v(T)≤v(S∪T), o lo que es lo mismo, si dos coaliciones disjuntas se unen para constituir una coalición mayor, el beneficio de la coalición nueva será igual o superior que la suma de los beneficios de las coaliciones de partida. 179 Capítulo 11. El enjambre como juego cooperativo Si la desigualdad anterior ocurre en sentido opuesto se dice que el juego es subaditivo. Es decir, un juego (N, v) es subaditivo si ∀ S, T⊆N, con S∩T=∅, se verifica que v(S)+v(T)≥v(S∪T). Un juego (N, v) es convexo si ∀ S, T⊆N se verifica que v(S)+v(T)≤v(S∪T)+v(S∩T), o lo que es lo mismo v(S∪T)≥v(S)+v(T)-v(S∩T). Si la desigualdad anterior ocurre en sentido opuesto se dice que el juego es cóncavo: v(S∪T)≤v(S)+v(T)-v(S∩T). Se dice que un juego (N, v) es 0-normalizado si se verifica que v{(i)}=0 ∀ i∈N. En los juegos 0-normalizados, los jugadores se ven obligados a cooperar entre ellos porque solo obtendrán un beneficio nulo. Se dice que un juego (N, v) es (0,1)-normalizado si se verifica que v{(i)}=0 ∀ i∈N y v(N)=1. Un juego (N, v) es un juego simple si es monótono y v(S) sólo toma valores en el conjunto {0,1}, para toda coalición S⊆N. Los juegos simples es un caso particular de los juegos cooperativos de utilidad transferible. Un juego (N, v) simple se denomina propio si no existen coaliciones S, T⊆N, con S∩T=∅, que verifiquen v(S)=v(T)=1. Tradicionalmente se denota por ΓN al conjunto de todos los juegos cooperativos de utilidad transferible sobre N: ΓN={(N, v): v:2N→ℝ, v(∅)=0} En este conjunto ΓN se definen las siguientes operaciones: +: ΓNxΓN→ΓN, (v, w)→v+w (11.1) ·: ℝxΓN→ΓN, (α, w)→α·w Definidas para cualquier S⊆N por (v+w)(S)=v(S)+ w(S) (11.2) (α·v)(S)=α·v(S) Con respecto a estas operaciones, la terna (ΓN, +, ·) constituye un espacio vectorial (2n1) dimensional. Una base de este espacio vectorial está formada por el conjunto {uT∈ΓN: T⊆N, T≠∅} Donde, para cada S⊆N, uT(S) definido por: 180 (11.3) Capítulo 11. El enjambre como juego cooperativo uT(S)={1, si T⊆N (11.4) uT(S)={0, en otro caso Los juegos uT se denominan juegos de unanimidad. Los juegos de unanimidad no constituyen la única base del espacio vectorial ΓN, siendo otra base la formada por los llamados juegos de identidad, que son aquellos para cada T⊆N, T≠∅, δT y definidos, para cada S⊆N, por δT(S)={1, si S=T (11.5) uT(S)={0, en otro caso Qué duda cabe que el conocimiento de las diferentes estrategias aportadas por los distintos jugadores es esencial para poder averiguar el beneficio de cada jugador dependiendo de la coalición que constituya con otros jugadores. Indudablemente, este problema es extremadamente complejo dado que muchos factores intervienen en el proceso de toma de decisiones. Primeramente, debe efectuarse un reparto del pago total v(N) entre los jugadores. El pago a cada jugador puede representarse mediante una función x que a cada jugador del conjunto N le asigne un número real que representa el pago que obtendrá ese jugador en el juego. Esta función configura el vector de pagos x=(x1, x2,…,xn). Es claro que para que los jugadores acepten la distribución de beneficios propuesta por el vector de pagos, tienen que recibir un pago superior al que recibirían si jugasen solos, también llamado principio de individualidad racional: xi≥v({i}) ∀ i=1…n. Una coalición que pudiese obtener un cierto pago cooperando, también exigirá un vector de pagos con un beneficio mayor al que obtendría formando la coalición. Esto es la condición de racionalidad de grupo o, también llamada condición de optimalidad de Pareto ∑ xi = x(S) ≥ v(S) (11.6) i∈S En el supuesto que todos los jugadores lleguen a un acuerdo y formen la gran coalición N, el beneficio total de esa gran coalición se representa por v(N). Si finalizado el juego, 181 Capítulo 11. El enjambre como juego cooperativo reciben el vector de pagos x=(x1, x2,…,xn), este vector de pagos cumple el principio de eficiencia cuando ∑ xi = v(N) (11.7) i∈N Así, si se cumple el principio de eficiencia y se forma gran coalición N, el beneficio de la misma se reparte en su totalidad por lo miembros que la forman. Aquellos vectores x∈ℝN que cumplen con el principio de eficiencia se denominan vectores de pagos eficientes o preimputaciones para el juego (N, v), definiendo el conjunto de preimputaciones de (N, v) como el conjunto de vectores de distribución de pagos PI(N, v)={(x1, x2,…,xn)∈ℝN: x(N)=v(N)} con x(N) = ∑i∈N xi . Cuando los vectores de pago cumplen el principio de individualidad racional así como el principio de eficiencia, se logra las imputaciones de un juego I(N, v)={(x1, x2,…,xn)∈PI(N, v)N: xi≥v({i}) ∀ i=1…n}={(x1, x2,…,xn)∈ℝN: x(N)=v(N), xi≥v({i}) ∀ i=1…n}. En el caso de que I(N, v)≠∅ el juego (N, v) es esencial. Desde un punto de vista general, se pueden encontrar dos diferentes tipos de soluciones, los tipo conjunto, donde se imponen una serie de restricciones al exigir condiciones; y los de tipo puntual, que seleccionan uno entre todos los posibles vectores de pago. El core es un tipo de solución de conjunto mientras que los valores de Shapley y de Banzhaf son dos soluciones de tipo puntual muy utilizadas. Cuando el vector de pagos cumple el principio de eficiencia, el conjunto de posibles soluciones queda reducido al conjunto de preimputaciones. Así, en las soluciones del tipo conjunto se define una solución sobre una colección no vacía de juegos como una aplicación ψ que asocia a cada juego cooperativo (N, v) un subconjunto ψ(v) del conjunto de preimputaciones. En cuanto al core, considérese un juego cooperativo (N, v) con N={1,2,...,n} y v la función característica que describe el juego. A continuación se extrae un subconjunto, del conjunto de preimputaciones, de vectores de pagos que los jugadores estén dispuestos a aceptar. Si a los vectores de pago se le pide que cumplan el principio de eficiencia y el principio de racionalidad individual, se extrae un subconjunto de vectores del conjunto de imputaciones I. Si se aumenta el principio de racionalidad 182 Capítulo 11. El enjambre como juego cooperativo individual al principio de racionalidad coalicional, se llega al concepto de core de un juego cooperativo. El core de un juego (N, v) es el conjunto de vectores de pagos C(N, v)={(x1, x2,…,xn)∈ℝN: x(N)=v(N), x(S)≥v(S), ∀ S⊆N}. De este modo, el core es el conjunto de vectores de pagos que a cada coalición que puede formarse sobre N le asigna un beneficio, el cual es, al menos, igual que el que esta coalición puede conseguir por sí misma. El conjunto C(N, v) es cerrado, acotado y convexo. Dado un juego (N, v), una colección{S1, S2,…, Sm} de subconjuntos de N, distintos y no vacíos, se dice que es equilibrada sobre N si existen números positivos α 1, α2,…, αm, denominados pesos, tales que, para todo i∈N, ∑{j,i∈Sj} αj = 1 Si, para cualquier colección equilibrada sobre N, se verifica que ∑m j=1 αj v(Sj ) ≤ v(N), entonces el juego (N, v) es equilibrado. Bondareva y Shapley demostraron que la clase de juegos con core no vacío coinciden con la clase de juegos equilibrados. Para los cores no vacíos no se puede obtener un vector de pagos en la que todos los jugadores o posibles coaliciones se beneficien. Un juego (N, v) se dice totalmente equilibrado si los subjuegos inducidos (S, v S) son equilibrados para toda S⊆N, S≠∅. Un subjuego inducido (S, vS) es aquel cuya función característica viene determinada por vS(T)=V(T), para toda T⊆S. Obsérvese que el core delimita las posibles soluciones a un conjunto de vectores de pago que cumplen una serie de restricciones, mientras en ciertas ocasiones es de interés obtener una solución concreta relativa a la regla de repartos que permita realizar el reparto de pagos de una función característica v. Las dos más empleadas son el valor de Shapley y el valor de Banzhaf [91], lo cual requiere definir el concepto de solución en soluciones de tipo puntual y algunas propiedades asociadas a las distintas soluciones de un juego UT. Una solución sobre ΓN es una aplicación f: ΓN→ℝn que a cada juego (N, v)∈ΓN le hace corresponder un vector de ℝn, donde la componente i-ésima del vector representa el pago que recibe el jugador i. Algunas propiedades que puede cumplir una solución son [60] [78]: 183 Capítulo 11. El enjambre como juego cooperativo • Eficiencia. Una solución f: ΓN→ℝn es eficiente si para todo juego (N, v)∈ΓN, se tiene que ∑ni=1 fi (N, v) = v(N). Los pagos que reciben los jugadores deben sumar v(N). • Poder Total. Una solución f: ΓN→ℝn satisface la propiedad de poder total si para todo juego (N, v)∈ΓN, se tiene que ∑ni=1 fi (N, v) = (1⁄2n−1 ) ∑ni=1 ∑S⊆N/i[v(S ∪ {i}) − v(S)]. El pago total obtenido por los jugadores es la suma de las medias de las contribuciones marginales de todos los jugadores. En poder total se establece que el pago total obtenido por los jugadores es la suma de las medias de las contribuciones marginales de todos los jugadores. Resulta evidente que si una solución es eficiente entonces no puede cumplir la propiedad de poder total. • Simetría. Se dice que dos jugadores i, j∈N son simétricos si v(S∪{i})=v(S∪{j}) para cualquier coalición S⊆N\{i, j}. Una solución f: ΓN→ℝn es simétrica si para todo juego (N, v)∈ΓN y para todo par de jugadores i, j∈N, simétricos en (N, v), se tiene que fi(N, v)=fj(N, v). Si dos jugadores contribuyen de igual manera a cada coalición, deben recibir el mismo pago. • Jugador nulo. Se dice que i∈N es un jugador nulo si v(S∪{i})=v(S), para cualquier coalición S⊆N\{i}. Una solución f: ΓN→ℝn satisface la propiedad de jugador nulo si para todo juego (N, v)∈ΓN y para todo jugador nulo en (N, v), i∈N, se tiene que fi(N, v)=0. Si la contribución de un jugador a cualquier coalición es nula, la solución deberá darle un pago nulo. • Aditividad. Una solución f: ΓN→ℝn es aditiva si para todo par de juegos (N, v)∈ΓN y (N, w)∈ΓN, se tiene que f(N, v+w)=f(N, v)+f(N, w). La solución de la suma de dos juegos debe ser la suma de las soluciones de dichos juegos. 11.1. El valor de Shapley Se va a comenzar con el valor de Shapley, el cual podría considerarse la solución más utilizada en juegos cooperativos de utilidad transferible. Shapley analizó los juegos cooperativos intentando contestar a la siguiente cuestión: dada la función característica de un juego, ¿cuál es el pago esperado para un jugador determinado? Shapley (1953) partió de cuatro axiomas o suposiciones que, según él, debería cumplir 184 Capítulo 11. El enjambre como juego cooperativo el reparto de pagos óptimo, y demostró que sólo una asignación de pagos cumplía todos los axiomas, siendo esta asignación el valor de Shapley. Es importante destacar que el valor de Shapley es un concepto de solución independiente del core, y al no exigirle que cumpla el principio de racionalidad coalicional, no siempre es una solución que pertenezca al core [51] [59]. Sin embargo, para los juegos convexos, el valor de Shapley sí pertenece al core del juego. La única solución f definida en ΓN que satisface las propiedades de aditividad, jugador nulo, simetría y eficiencia es el valor de Shapley [66] [81]. Dado un juego (N, v), esta solución asigna a cada jugador i∈N el número real: ϕi (N, v) = ∑ q(S)(v(S) − v(S{I})) (11.8) S⊆N:i∈S Donde q(S) = (S−1)!(n−s)! n! y s=|S|, n=|N| representan el número de jugadores que hay en las coaliciones S y N [3] [44]. La demostración de este teorema se omite por su extensión. Una primera apreciación es que el valor de Shapley está definido por la función característica del juego. En cuanto a interpretaciones, el valor de Shapley puede interpretarse como la contribución marginal esperada de cada jugador al entrar en una coalición al azar. Así, el factor v(S)-v(S\{I}) es la contribución marginal efectiva de i al incorporarse a S\{i}, mientras que el factor q(s) es la probabilidad de que a se incorpore a S\{I} y no a otra coalición [88]. Shapley justificó este valor en el supuesto de que un jugador se uniría a una coalición de tamaño s, con distintos tamaños equiprobables, y una vez fijado un cierto tamaño, se uniría a una coalición determinada de ese tamaño de manera equiprobable. El factor q(S) es el que implementa esa suposición en la expresión del valor de Shapley. También puede interpretarse el valor de Shapley suponiendo que los jugadores forman la gran coalición incorporándose uno a uno, de forma aleatoria, consiguiendo cada jugador el monto con el que contribuye a la coalición ya formada cuando se incorpora [87]. El valor de Shapley distribuye a cada jugador la cantidad esperada, suponiendo que la gran coalición de n jugadores puede formarse de manera equiprobable. 185 Capítulo 11. El enjambre como juego cooperativo Volviendo al campo de los enjambres que nos ocupa, previamente se ha efectuado un amplio análisis para un enjambre de 8 RPAs. A continuación se va a ir disminuyendo el número de RPAs que componen el enjambre y analizar cómo evoluciona la entropía del enjambre G EEG. Asimismo, se van a representar las trayectorias de los RPAs del enjambre. Para 17 m/s (velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15), se procede a analizar las trayectorias: Para 7 RPAs: Figura 11.1. velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 7 RPAs. Para 6 RPAs: Figura 11.2. velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 6 RPAs. Para 5 RPAs: 186 Capítulo 11. El enjambre como juego cooperativo Figura 11.3. velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 5 RPAs. Para 4 RPAs: Figura 11.4. velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 4 RPAs. Para 3 RPAs: Figura 11.5. velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 3 RPAs. 187 Capítulo 11. El enjambre como juego cooperativo Para 2 RPAs: Figura 11.6. velcru=17, velper=6, velang=18, factdeca=7, factdecv=10, factMmmm=15, 2 RPAs. Para cada número de RPAs, a medida que van variando estos, se ha calculado la entropía G, EEG, del enjambre. Asimismo, a fin de evaluar la caída de la entropía G, a medida que el número de RPAs disminuye, se ha definido el factor de Entropía del Enjambre G como la relación entre el enjambre formado por n RPAs y el enjambre formado por 8 RPAs, según la función fEEG = EEG(n RPAs) /EEG(8 RPAs), con lo que 0 ≤ fEEG ≤ 1. Adjunto se pueden ver los resultados obtenidos para la entropía EEG y fEEG en función de la velocidad del centroide. 3500 y = 344,57x + 376,43 R² = 0,9861 3000 Entropía EEG 2500 2000 1500 1000 500 0 0 1 2 3 4 5 6 7 8 Número de RPAs del enjambre Figura 11.7. Entropía EEG del enjambre en función del número de RPAs del enjambre. 188 9 Capítulo 11. El enjambre como juego cooperativo 1,2 Entropía fEEG 1 y = 0,1065x + 0,1164 R² = 0,9861 0,8 0,6 0,4 0,2 0 0 1 2 3 4 5 6 7 8 9 Número de RPAs del enjambre Figura 11.8. Entropía fEEG del enjambre en función del número de RPAs del enjambre. Así, en la medida que el enjambre va perdiendo agentes se produce un deterioro del propio enjambre, lo cual se ha evaluado mediante una disminución de la entropía G. Esto se fundamenta esencialmente por la reducción del número de estados posibles en enjambres, o lo que es lo mismo, del número de RPAs (con velocidades diferentes). De lo gráficos implementados previamente, obtenidos mediante los algoritmos de cálculo desarrollados para este trabajo, se concluye que a medida que aumenta el número de RPAs que componen el enjambre, la ganancia de entropía G es prácticamente lineal, o lo que es lo mismo, la entropía podría repartirse de forma equitativa entre cada uno de los RPAs que componen el enjambre. Es decir, cada RPA del enjambre aporta una entropía igual a la del resto de RPAs. Esto se puede ver en el coeficiente de determinación, denominado R², que es un estadístico usado en modelos estadísticos que evalúa la calidad del modelo para reproducir resultados y la diferencia explicativa en estos resultados. El coeficiente de correlación lineal puede interpretarse como una medida del ajuste del modelo lineal. Así, un valor del coeficiente igual a 1 o -1 indica dependencia lineal exacta, en cuyo caso el ajuste es perfecto. Sin embargo, para cuantificar la bondad del ajuste de un modelo, lineal o no, se emplea el coeficiente de determinación lineal R2. 189 Capítulo 11. El enjambre como juego cooperativo El coeficiente de determinación toma valores comprendidos entre 0 y 1, y cuanto más se aproxima a 1 mejor será el ajuste, y por lo tanto mayor la fiabilidad de las predicciones. Este coeficiente muestra qué proporción de la variable dependiente es ciertamente explicada por el modelo de regresión. Existen varias definiciones diferentes para R² que son en muchas ocasiones equivalentes. Las más habituales se refieren a la regresión lineal. En este caso, el R² es simplemente el cuadrado del coeficiente de correlación de Pearson R²=r2, lo cual es únicamente cierto para la regresión lineal simple. Evidentemente si el coeficiente de correlación lineal r es iguala 1 ó -1 entonces R2=1 y por lo tanto el ajuste lineal es perfecto. El coeficiente de correlación de Pearson se define como: r 2 = Cov(X, Y)2 ⁄[Var(X) ∗ Var(Y)]. En este caso concreto, R2=0.9861. Así, si se considera la definición relativa a que R² es sencillamente el cuadrado del coeficiente de correlación de Pearson, r=0,993. Este valor supone una correlación muy alta (positiva a la vista del gráfico) o relación lineal fuerte. De hecho, podría ser incluso mejor prescindiendo del punto número de agentes=2 que, como puede verse, distorsiona algo la curva, lo cual sería hasta cierto punto lógico ya que un enjambre de dos RPAs es poco probable. La nueva aproximación a esta situación es que un enjambre puede modelarse mediante un juego cooperativo, donde los RPAs del enjambre conforman una estrategia evolutiva dentro del propio enjambre, el cual, como se recordará, se encuentra perfectamente definido por un conjunto de parámetros, ya explicitados anteriormente. Estos RPAs se pueden considerar jugadores en un juego, que buscan en su evolución el máximo beneficio o utilidad, con una coalición constituida por todos los RPAs del enjambre, con una estrategia compartida donde todos los RPAs cooperan entre sí. El valor de Shapley ofrece una posible respuesta al reparto de pagos, beneficio o utilidad. En este punto, el beneficio/utilidad será la ganancia de entropía G, EEG, donde, como hemos visto anteriormente, atendiendo al carácter lineal fuerte entre el número de RPAs del enjambre y la entropía EEG, puede interpretarse que cada RPA aporta una parte de entropía G al enjambre, igual a la del resto de agentes; o lo que es lo mismo, la entropía G del enjambre en su totalidad, se prorratea 190 Capítulo 11. El enjambre como juego cooperativo equitativamente entre todos los RPAs del enjambre. N={1,…,n}, con n=8 en este caso particular. v({i})=α ∀ i∈N (11.9) v({i, j})=2α ∀ i, j∈N con i≠j (11.10) v({i, j, k})=3α ∀ i, j, k∈N con i≠j≠k (11.11) Siendo nα=EEG. … Y así sucesivamente. El juego así definido presenta una serie de propiedades de interés: eficiencia, dado que los pagos que reciben los jugadores suman v(N); simetría, si dos jugadores contribuyen de igual manera, deben recibir el mismo pago; jugador nulo, si la contribución de un jugador es nula, se le da un pago nulo; y aditividad, la solución de la suma de dos juegos debe ser la suma de las soluciones de dichos juegos. Este conjunto de propiedades permite afirmar que estamos en presencia de un valor de Shapley [75]. El conjunto 2N es: 2N={∅,{1},…,{n},{1,2},…,{n-1,n},…,{1,…,n}]. Las coaliciones a las que pertenece cada jugador son S{1}={{1},{1,i},{1,i,j},{1,…,n}}, S{2}={{2},{2,i},{2,i,j},{1,…,n}},…, S{n}={{n},{n,i},{n,i,j},{1,…,n}} ∀ i, j,…∈N con i≠j≠… Los coeficientes q(s) valdrán q(i)=1/α ∀ i=1…n. El pago esperado para cada jugador es: Φi(N, v)=α ∀ i=1…n, siendo el valor de Shapley Φ(N, v)={Φ1(N, v),…, Φn(N, v)} y ∑i∈N Φi (N, v) = EEG (propiedad de eficiencia). El valor de Shapley no cumple la propiedad de poder total puesto que el pago total obtenido por los jugadores no es la suma de las medias de las contribuciones marginales de todos los jugadores. Resulta evidente que si una solución es eficiente entonces no puede cumplir la propiedad de poder total. Si EEGi=i*α y se define el conjunto {EEG}={EEGi: i∈lN} con las siguientes operaciones: +: {EEG}x{EEG}→{EEG}, (EEGi, EEGj)→EEGi,+EEGj (11.12) 191 Capítulo 11. El enjambre como juego cooperativo ·: lNx{EEG}→{EEG}, (k, EEGi)→k·EEGi Con respecto a estas operaciones, la terna ({EEG}, +, ·) constituye un espacio vectorial. 11.2. El valor de Banzhaf El valor de Banzhaf es otro de los conceptos de solución puntual más importantes en juegos cooperativos. Presentado en 1965, se han obtenido varias caracterizaciones axiomáticas, destacando la de Feltkamp (1995), presentada aquí por su similitud con el valor de Shapley [87]. La única solución f definida en ΓN que satisface las propiedades de aditividad, jugador nulo, simetría y poder total es el valor de Banzhaf [44] [59]. Dado un juego (N, v), esta solución asigna a cada jugador i∈N el número real: βi (N, v) = ∑ S⊆N\i 1 2n−1 (v(S ∪ {i}) − v(S)) (11.13) Es obvio que ambas caracterizaciones se diferencian únicamente en una propiedad. Mientras que el valor de Shapley verifica eficiencia, el valor de Banzhaf verifica poder total [66]. Comparativamente se puede ver que ambas caracterizaciones asignan a cada jugador una suma ponderada de las contribuciones marginales que el jugador hace a todas las coaliciones a las que se une. No obstante, el valor de Shapley asigna unos pesos a cada coalición que dependen de su tamaño y del número de coaliciones de ese tamaño concreto que puedan formarse, mientras que el valor de Banzhaf considera que todas las coaliciones son equiprobables. Volviendo al enjambre de RPAs, de nuevo, de la misma forma que el valor de Shapley, mediante un acto de abstracción es posible modelar el enjambre en cuestión como un juego, el cual conforma una estrategia evolutiva dentro del propio enjambre. Este enjambre se encuentra perfectamente definido por un conjunto de parámetros, ya especificados anteriormente. Estos RPAs se pueden considerar jugadores en un juego, que buscan en su evolución el máximo beneficio o utilidad, con una coalición constituida por todos los RPAs del enjambre, con una estrategia compartida donde todos los RPAs cooperan entre sí. El valor de Banzhaf ofrece una posible respuesta al reparto de pagos, beneficio o utilidad. En este punto, el beneficio/utilidad será la 192 Capítulo 11. El enjambre como juego cooperativo ganancia de entropía G, EEG, donde, como hemos visto anteriormente, atendiendo al carácter lineal fuerte entre el número de RPAs del enjambre y la entropía EEG, puede interpretarse que cada RPA aporta una parte de entropía G al enjambre, igual a la del resto de agentes; o lo que es lo mismo, la entropía G del enjambre en su totalidad, se distribuye equitativamente entre todos los RPAs del enjambre. N={1,…,n}, con n=8 en este caso particular. v({i})=α ∀ i∈N (11.14) v({i, j})=2α ∀ i, j∈N con i≠j (11.15) v({i, j, k})=3α ∀ i, j, k∈N con i≠j≠k (11.16) Siendo nα=EEG. … Y así sucesivamente. El juego así definido presenta una serie de propiedades de interés: simetría, si dos jugadores contribuyen de igual manera, deben recibir el mismo pago; jugador nulo, si la contribución de un jugador es nula, se le da un pago nulo; aditividad, la solución de la suma de dos juegos debe ser la suma de las soluciones de dichos juegos; y poder total, dado que el pago total obtenido por los jugadores es la suma de las medias de las contribuciones marginales de todos los jugadores. Este conjunto de propiedades permite afirmar que estamos en presencia de un valor de Banzhaf [75]. El conjunto 2N es: 2N={∅,{1},…,{n},{1,2},…,{n-1,n},…,{1,…,n}]. Las coaliciones a las que pertenece cada jugador son S{1}={{1},{1,i},{1,i,j},{1,…,n}}, S{2}={{2},{2,i},{2,i,j},{1,…,n}},…, S{n}={{n},{n,i},{n,i,j},{1,…,n}} ∀ i, j,…∈N con i≠j≠… Atendiendo a la expresión de Banzhaf, el reparto de pagos entre los jugadores es: β i(N, v)=α ∀ i=1…n, siendo el valor de Banzhaf β(N, v)={β1(N, v),…, βn(N, v)}. El valor de Banzhaf no cumple la propiedad de eficiencia, puesto que la suma del pago esperado para todos los jugadores no tiene por qué coincidir con el valor de la coalición total. El valor de Banzhaf asigna a cada jugador la suma de las contribuciones marginales que dicho jugador hace a todas las coaliciones a las que se une, 193 Capítulo 11. El enjambre como juego cooperativo normalizado por el número de coaliciones a la que el jugador puede unirse. Desde el punto de vista de un único jugador, es un pago justo, puesto que es una medida de lo que él aporta a todas las coaliciones. Como se puede apreciar, existen diferentes conceptos de solución para juegos UT. No sólo las hay que restringen un conjunto concreto y otras de tipo puntual, sino que incluso en las que limitan un sólo punto, hay varias soluciones que limitan puntos distintos. Dentro de los dos valores estudiados, es importante destacar que no hay una solución mejor que otra. Será el contexto, el tipo de juego que se pretenda estudiar, el que sea más adecuado para el valor de Shapley o para el valor de Banzhaf. En ocasiones, la propiedad de eficiencia parece natural, por ejemplo cuando el propósito del juego es distribuir costes o repartir beneficios. En ese caso, el valor de Shapley es más adecuado como concepto de solución. En otras ocasiones, por ejemplo en el contexto de situaciones de votaciones modeladas como juegos UT, no existe un beneficio a repartir, por lo que algunos autores establecen que en estos casos no tiene sentido la propiedad de eficiencia, ya que la finalidad del juego es medir el poder, no distribuirlo. Como puede verse, sólo hay una propiedad que diferencie las dos caracterizaciones que hemos visto, la del valor de Shapley y la del valor de Banzhaf: mientras que el valor de Shapley verifica eficiencia, el valor de Banzhaf verifica poder total. A la vista de las expresiones proporcionadas para ambos valores, se ve que los dos asignan a cada jugador una suma ponderada de las contribuciones marginales que dicho jugador hace a todas las coaliciones a las que se une [70]. Pero mientras que el valor de Shapley asigna unos pesos a cada coalición que dependen de su tamaño y del número de coaliciones de ese tamaño que puedan formarse, el valor de Banzhaf considera que todas las coaliciones son equiprobables [98]. Así, se pueden encontrar diferentes conceptos de solución para juegos UT. Aunque la propiedad de eficiencia es más intuitiva cuando la finalidad del juego es repartir beneficios, en otros juegos no existe el beneficio como tal, por ejemplo en el contexto de situaciones de votación modelados como juegos UT, por lo que en estos casos la eficiencia es poco útil, siendo la finalidad del juego medir el poder y no repartirlo. 194 Capítulo 11. El enjambre como juego cooperativo Podría pensarse que por casualidad, en el juego planteado en este trabajo, debido a su concepto simplificado inicial, el valor de Shapley y Banzhaf coinciden. Esta circunstancia tiene su explicación y ocurre cuando la selección de una coalición sea equiprobable para todas ellas, y cada jugador pueda elegir con igual probabilidad. Esto es la base de la definición del valor de Banzhaf normalizado que consiste en lugar de representar el juego de forma exacta, aproximarlo por la mejor función lineal, empleando como criterio de optimalidad el análisis de la regresión; o lo que viene a ser lo mismo, el criterio de mínimos cuadrados ponderados, debido a que lo que se está haciendo es minimizar la distancia entre dos funciones. Así, la diferencia más apreciable entre ambos valores es que Banzhaf considera que las coaliciones ganadoras de distinto tamaño tienen la misma probabilidad de formarse. Dada la simetría encontrada en los coeficientes q(s), el valor de Shapley no diferenciará entre los diferentes tamaños de coaliciones, considerando todas las coaliciones de manera equiprobable. Dado que precisamente ésta era la diferencia más representativa entre los valores de Shapley y Banzhaf, era de esperar la coincidencia entre ambos valores. Este resultado constituye una aportación de este trabajo. Aunque en este capítulo se habla de enjambres, posteriormente se verá como un enjambre se organiza en subenjambres y a cada subenjambre se le aplica la teoría de juegos cooperativos calculando los valores de Shapley y Banzhaf, mientras que los subenjambres que constituyen el enjambre se constituirán como un juego no cooperativo. 195 Capítulo 11. El enjambre como juego cooperativo 196 Capítulo 12. Optimización La optimización matemática aglutina un conjunto de algoritmos matemáticos, deterministas y no deterministas, cuyo objeto principal es encontrar el óptimo global de cualquier problema por complejo que sea, donde es difícil obtener una solución exacta aplicando algoritmos deterministas. Una cuestión primordial es la convergencia hacia el óptimo global, cuestión que no está garantizado en modo alguno. En este sentido, las técnicas convencionales solo permiten encontrar óptimos locales lo cual es un importante hándicap que ha conducido en las actuales circunstancias al desarrollo de la optimización no lineal. Sin embargo, y desafortunadamente estas técnicas no garantizan la convergencia hacia el óptimo general, a no ser que se empleen algún tipo de técnicas exhaustivas o tiempos de cálculo prolongados con ordenadores muy capaces en cuanto a capacidad de procesado. De hecho, es francamente difícil distinguir entre un óptimo local que se encuentre muy cercano al global. La primera idea que viene a la cabeza acerca del término heurístico está relacionada con la tarea de resolver inteligentemente problemas reales usando el conocimiento disponible en cada momento. El término heurístico se basa en la palabra griega heuriskein con el significado asociado al concepto de encontrar al ser muy similar su pronunciación a la exclamación eureka de Arquímedes al descubrir su famoso principio. De esta forma, un algoritmo heurístico constituye una metodología de localización de soluciones cuasióptimas, cercanas al óptimo, con un coste de procesado computacional razonable y no muy exigente, pero sin que se pueda saber lo buena que es esta solución (optimalidad) ni conocer a qué distancia se encuentra el óptimo global. Esto es debido a que en ciencias computacionales se buscan algoritmos 197 Capítulo 12. Optimización con dos características esenciales: tiempos de ejecución buenos y soluciones óptimas. Una heurística no tiene por qué satisfacer ambas acepciones ya que es fácil encontrar buenas soluciones, mediante un simple procedimiento de prueba y error, pero no se puede asegurar que sea la óptima o se encuentra una solución muy rápidamente sin que se pueda garantizar estos cortos tiempos en cada iteración. Básicamente, estas técnicas son muy útiles para tratar problemas complejos de una forma estimada, son muy flexibles y permiten encontrar soluciones de calidad buena en tiempos computacionales razonablemente aceptables. La tecnología actual demanda soluciones rápidas a problemas de alto nivel, de los cuales usualmente tampoco se tiene una información exhaustiva, lo que ha impulsado este tipo de procedimientos de resolución de problemas combinatorios. Sin embargo, estos problemas de optimización combinatoria también suponen un importante reto computacional debido a su complejidad matemática, ya que esta aumenta exponencialmente al incrementar el tamaño del problema. El concepto heurístico está siendo encaminado a la tarea de resolver de una forma inteligente problemas reales usando las tecnologías disponibles. Esta concepción en inteligencia artificial considera el término heurístico como una acepción en la que empleando un conocimiento del problema en cuestión y de las técnicas aplicables, tratan de aportar soluciones viables acercándose a ellas, usando una cantidad de recursos razonable. Asimismo, en un problema de optimización, aparte de las condiciones que deben cumplir las soluciones factibles del problema, es de interés la mejor, u óptima, según algún criterio previo comparativo entre ellas. En Investigación Operativa, se da una vuelta de tuerca adicional en cuanto al término heurístico, es aquel en el que se tiene un alto grado de confianza en que se localicen soluciones de alta calidad a un coste computacional razonable, acercándose lo máximo posible, pero sin decir cuánto. El calificativo heurístico, se contrapone a exacto, en el sentido de que encuentra una solución sobre la que se confía que es óptima y factible, o bien se proponen mejoras que afectan al rendimiento en su comportamiento. Las técnicas heurísticas específicas deben ser diseñadas exprofeso para cada problema concreto, utilizando toda la información disponible y análisis teóricos específicos. 198 Capítulo 12. Optimización El término metaheurística se obtiene anteponiendo a heurística el sufijo meta que significa "más allá" o "a un nivel superior". Las metaheurísticas son estrategias inteligentes para mejorar procedimientos heurísticos consiguiendo un alto rendimiento. Fred Glover fue el primero en proponer el término metaheurística en 1986. Realmente se trata de consensuar diferentes técnicas que exploren el espacio de soluciones, como bien describieron Osman y Kelly (1995) "Los procedimientos metaheurísticos son un tipo de métodos aproximados diseñados para resolver problemas difíciles de optimización combinatoria, en los que los heurísticos clásicos no son eficientes ni efectivos. Los metaheurísticos establecen un inicio para crear nuevos algoritmos híbridos combinando diferentes conceptos derivados de la estadística, evolución biológica e inteligencia artificial”. Figura 12.1. Función con múltiples óptimos. De una forma preliminar, estas técnicas tratan de combinar búsquedas intensivas, mediante movimientos óptimos que a la larga mejoran la solución, y además, aceptando ciertas soluciones peores pero que articulan mecanismos de evasión de óptimos locales para centrarse en la búsqueda del óptimo global. La razón principal de 199 Capítulo 12. Optimización esto es que la mayor parte de los problemas reales tienen un espacio de soluciones tan grande que resulta virtualmente imposible de explorar en detalle, por lo que estas técnicas segregan los óptimos locales para no quedar atrapados en ellos, y de esta forma emprender la búsqueda del óptimo global [79] [80]. Asimismo, el imparable incremento del número de variables, de los que dependen las funciones objetivo de optimización, hace inviable la aplicación de los procedimientos deterministas de optimización. En estas circunstancias, los algoritmos heurísticos constituyen una alternativa viable, que aunque se conforman con una exactitud degradada, esta se alcanza en un tiempo razonable. Básicamente, un problema de optimización se formula del siguiente modo: min{f(x)∕x∈X,X⊆S} (9.1) Siendo S el espacio de soluciones, X la región factible, x una solución factible y f una función real. Si S es un conjunto finito, el problema se denomina de optimización combinatoria, mientras que si S=IRn se llama de optimización continua. Un problema de optimización se representa por el par (S, f), donde S es el espacio de soluciones y f la función objetivo. Los problemas muy complejos, llamados “difíciles de resolver“, pueden designarse de diferentes formas, como problemas NP, clasificándose en las denominadas clases de complejidad (L, NL, P, P Completo, NP, NP-Completo, NP Duro, etc.). En teoría de la complejidad, la gran mayoría de los problemas se refieren a la clase NP, tales que no se conoce algoritmo alguno de resolución que pueda resolverlos exactamente, y tienen complejidad polinomial; es decir, el tiempo de resolución crece polinomialmente con el tamaño del problema. En este tipo de problemas, los métodos heurísticos se plantean como técnicas muy innovadoras, eficientes para obtener soluciones relativamente cercanas al valor óptimo de la función objetivo, en un tiempo razonable. Este tipo de algoritmos heurísticos son útiles en las siguientes situaciones: • No se conoce un método exacto de resolución, o bien éste requiere un enorme esfuerzo computacional. • En las circunstancias actuales, no se necesita obtener la solución óptima global del problema, siendo suficiente una solución cercana a dicho óptimo. 200 Capítulo 12. Optimización • Se prefiere resolver aproximadamente un modelo realista que resolver exactamente un modelo aproximado a la realidad, aunque el tiempo de resolución sea parecido. • No se dispone de un conocimiento detallado del problema como para diseñar un método exacto de resolución, o bien el tiempo que requeriría esta acción es inaceptable. Las principales ventajas son: • Gran flexibilidad en el control y conducción de las características del problema, permitiendo incorporar, de un modo fácil, condiciones difíciles de modelizar. • Generalmente se dispone de varias soluciones alternativas siendo posible una adecuada elección de la misma. • Es más intuitivo de entender la fundamentación de las heurísticas que los complejos métodos matemáticos exactos diferenciales (muchas variables, fuerte no linealidad,…). Y en cuanto a las desventajas: • Casi nunca es posible conocer la bondad de la solución obtenida, siendo esencial las acotaciones con relajaciones, o bien generar varias soluciones y compararlas con la obtenida. • Dependencia de la estructura del sistema de resolución empleado y falta de destreza para adaptarse a situaciones nuevas o modificaciones al problema original de partida. Para resolver la segunda desventaja, se recomienda disponer de procedimientos heurísticos, flexibles y adaptables, que puedan utilizarse para resolver una gran variedad de problemas. Finalmente, las técnicas metaheurísticas deberían cumplir un conjunto de características: 1. Adaptabilidad a los diferentes entornos de resolución y a otro tipo de problemas. 2. Autonomía para facilitar un proceso automático de resolución, cuyos parámetros de funcionamiento se ajusten automáticamente. 201 Capítulo 12. Optimización 3. Coherencia en la característica que los sintetizan de tal modo que surjan de manera natural de los principios originales que los inspiran. 4. Multiplicidad y diversidad, lo cual confiere soluciones alternativas de alta calidad seleccionables por el operador. 5. Eficacia; según lo cual se acerquen a las soluciones óptimas en todas las situaciones. 6. Eficiencia en el sentido de aprovechar las capacidades de procesamiento, memoria y paralelismo y computacional. 7. Facilidad y factibilidad optimizando el número de parámetros modificables. 8. Generalidad al abarcar diferentes procedimientos para optimizar el aprovechamiento y el rendimiento en múltiples situaciones y problemas. 9. Independencia del computador o elemento tecnológico en el que se vaya a implementar. 10. Interactividad en la manera en que el usuario interactúa, siendo este más un soporte externo optimizante en el ciclo de resolución dado su mayor conocimiento y experiencia. 11. Robustez, siendo poco dependiente de las alteraciones y perturbaciones del modelo y a la vez permitir una amplia variedad de aplicaciones. 12. Simplicidad y facilidad de comprender e implementar. 13. Concreción y determinismo en las diferentes fases del proceso. 202 Capítulo 12. Optimización 203 Capítulo 13. Algoritmo Memético En el proceso de evolución de las especies, el mecanismo podría describirse brevemente como una recombinación de los cromosomas de individuos, con una muy pequeña mutación de los mismos, a lo que habría que añadir la presión selectiva del entorno, lo cual ha provocado que los seres vivos se vayan adaptando, optimizando su evolución. El biólogo Richard Dawkins (1976) concluyó que la esencia de la vida es sobrevivir conservando su material genético, donde los seres inteligentes van más allá mediante el intercambio de información comunicándose. Este conocimiento, en forma de ideas, lo introdujo Dawkins denominándolo memes por su analogía con los genes: las ideas innovadoras se transmiten, permanecen y se mejoran, mientras que las malas se pierden en el olvido, de forma similar a los genes. Los Algoritmos Meméticos (MA, Memetic Algorithm) recogen ese concepto [6] y le adicionan un proceso evolutivo de mejoramiento de la población análogamente a como el conocimiento formado por memes, donde la información se transmite entre elementos de la población más allá de las generaciones, buscando una solución mejor. A continuación se adjunta una descripción de las técnicas metaheurísticas evolutivas. Los Algoritmos Evolutivos o Computación Evolutiva son técnicas de aprendizaje que tratan de imitar los procesos de la Naturaleza para aplicarlos a la resolución de problemas de optimización y que parten del concepto poblacional. Un algoritmo evolutivo tiene, al menos, los siguientes elementos: una codificación de las soluciones siendo cada solución un individuo, una o varias poblaciones con un conjunto de soluciones candidatas que constituyen una representación de la población de 204 Capítulo 13. Algoritmo Memético individuos, una función de aptitud o fitness, un operador de selección y reemplazo y una transformación que convierte soluciones candidatas en otras nuevas [23]. A partir de aquí, surgen los algoritmos genéticos, los cuales son métodos de búsqueda y optimización basados en procesos genéticos [47] [55]. Está fundamentado en los postulados de Darwin, los cuales parten de la selección que utiliza la naturaleza, donde los individuos más aptos de una población sobreviven frente a los más débiles, al ser capaces de adaptarse más fácilmente a los cambios del entorno. Indudablemente, todo surge en los genes de los seres vivos, que es la unidad básica de codificación, y sus características más capaces son transmitidas a sus descendientes en la reproducción sexual [19]. Los algoritmos genéticos surgieron a finales de los cincuenta y principios de los sesenta, impulsados por biólogos evolutivos que buscaban modelos que explicitaran modelos de evolución natural. En 1962, algunos investigadores como Friedman, Box, Bremermann y Bledsoe trabajaron de forma independiente en este tipo de algoritmos para optimización de funciones, pero sus trabajos no fueron muy apreciados hasta que Rechenberg de la Universidad Técnica de Berlín (1965) introdujo una técnica evolutiva. En esta técnica no había población ni cruce sino que un individuo mutaba para producir un descendiente, eligiendo el más apto de los dos, comenzando una nueva ronda. A partir de aquí, el siguiente paso fue la introducción de la población. En 1966, Walsh, Fogel y Owens elaboraron una técnica de programación evolutiva, donde las soluciones candidatas para los problemas se representaban como entes de codificación finitas, donde mutaban aleatoriamente y se conservaba la mejor de las dos. Aún no aparece el cruce. Por otra parte, Holland (1962) fue el primero en proponer el operador cruce así como otros operadores de recombinación. Esencialmente, los algoritmos genéticos parten de una población de individuos, cada uno de los cuales constituye una solución factible del problema. Cada individuo tiene asignado un valor o puntuación (fitness), relacionado con la adaptación del individuo al problema (mayor fitness), de tal forma que mayor puntuación implica mayor probabilidad de ser seleccionado para 205 Capítulo 13. Algoritmo Memético reproducirse, cruzando su material genético con otro individuo seleccionado análogamente. Este cruce produce nuevos individuos descendientes, los cuales comparten algunos atributos de sus progenitores. Si un individuo presenta una baja puntuación, su adaptación es baja y la probabilidad de que dicho individuo sea seleccionado para reproducirse también lo es, y por tanto su material genético no se propaga en sucesivas generaciones [7]. Esto produce una nueva población de posibles soluciones, la cual sustituye a la población precedente y contendrá una mayor adaptación en comparación con la población anterior. Con el paso del tiempo, las buenas características se propagan dentro de la población, favoreciendo a los mejor adaptados. De cualquier modo, para evitar quedar atrapados en óptimos locales se introduce el operador mutación en algunos individuos. Básicamente, el algoritmo genético se compone de: codificación como representación de los individuos de la población siendo esta información una cadena llamada cromosoma (bien binaria, bien entera o decimal) y los símbolos que forman la cadena son llamados genes y las cadenas de dígitos es el genotipo. A continuación, se tienen los operadores, los cuales permiten el cambio de individuos generando nuevas poblaciones. Entre los operadores está el de selección, que escoge el individuo que cederá su material genético a las nuevas generaciones, así como aquellos que desaparecen de la población para dar paso a individuos mejorados. La selección de individuos a reemplazar se puede efectuar de forma aleatoria, dentro de un porcentaje de la población de los individuos (ruleta), o bien sustituyendo los peores individuos (torneo). El operador cruce recombina el material genético de aquellos individuos más adaptados, donde una sección del cromosoma se intercambia entre individuos para generar un nuevo individuo. Este operador generalmente actúa función de una probabilidad explicita. Escogiendo un punto aleatorio en la cadena cromosómica, se realiza el intercambio con otro cromosoma (cruce monopunto). Cuando se seleccionan segmentos separadamente de la cadena cromosómica se tiene un cruce multipunto. 206 Capítulo 13. Algoritmo Memético El operador mutación es muy importante en la evolución biológica de las especies. A raíz de una probabilidad establecida, se mutará algún gen o bit del cromosoma. Este operador evita que el algoritmo se estanque en zonas de óptimos locales [7]. La presión selectiva se define como el grado en que se favorece a los individuos más adaptados en el proceso de selección, de tal modo que si la diversidad poblacional disminuye, aparecen las convergencias prematuras. La función de aptitud o fitness es la que proporciona un valor de aptitud de los individuos. Los algoritmos meméticos son metaheurísticas que unifican conceptos de diferentes técnicas de resolución, como son los algoritmos evolutivos y los algoritmos de búsqueda local. La primera mención fue realizada por Brady (1985) pero fue Moscato quien profundizó impulsándolo. La hibridación de la búsqueda evolutiva con algoritmos de búsqueda local proviene, de que los primeros son buenos en exploración global, consiguiendo una buena diversificación evitando los óptimos locales mientras que los segundos son buenos en el plano local [68]. En los algoritmos meméticos, los individuos pueden estar compuestos de unidades de información adicional sobre el estado del problema, por lo que se les suele llamar agentes (Cotta, 2007). Un algoritmo híbrido es memético cuando la búsqueda local se encuentra dentro del proceso evolutivo [12] [50]. Así pues, los algoritmos meméticos son una evolución desde los algoritmos evolutivos con la adopción de metaheurísticas estocásticas de búsqueda global. La hibridación tiene el objetivo de acelerar la convergencia del algoritmo y mejorar la exactitud de las soluciones alcanzadas [6]. El algoritmo memético está fundamentado por una elevada velocidad de cálculo frente a otras técnicas metaheurísticas. Es de destacar que existen algoritmos que alcanzan una mayor precisión; sin embargo, en cuanto a rapidez las técnicas meméticas no tienen parangón. Otras técnicas metaheurísticas como el recocido simulado (SA, Simulated Annealing), en determinadas circunstancias favorables, es mucho más preciso que el algoritmo memético, si bien requiere de una labor de determinación (y por tanto de prueba y error) muy exhaustiva de ciertos parámetros. También podría resultar de aplicación el empleo del algoritmo de optimización por colonia de hormigas 207 Capítulo 13. Algoritmo Memético (ACO, Ant Colony Optimization) [8] [93], si bien este algoritmo presenta los mismos inconvenientes que el recocido simulado. Los experimentos muestran que, aunque el ACO alcanza una mayor cantidad de soluciones no dominadas, todas estas, a su vez son dominadas por las soluciones obtenidas por el algoritmo genético; no obstante, el ACO requiere un tiempo cuatro veces superior. Inicialmente, estas aplicaciones eran esencialmente teóricas; no obstante, al avanzar la investigación, los algoritmos meméticos se fueron aplicando a diferentes sectores en la medida que los ordenadores incrementaban su potencia de cálculo. Los algoritmos meméticos son métodos adaptativos [21] basados en la evolución y la búsqueda local. A lo largo de sucesivas generaciones, las poblaciones van evolucionando en la naturaleza, de acuerdo con los principios de la selección natural y supervivencia de los más capaces, postulados por Darwin, donde los mejor adaptados tienen mucha mayor posibilidad de reproducirse. Por imitación a este proceso, los algoritmos genéticos van generando soluciones para problemas del mundo real. Dado un problema concreto a resolver, entran en el algoritmo genético un conjunto de soluciones a ese problema, codificadas de alguna forma, y una métrica denominada función de aptitud que evalúa cuantitativamente a cada solución potencial candidata. Estas candidatas pueden obtenerse, mediante algún tipo de técnica o simplemente estocásticamente. Además, a los algoritmos meméticos se le añade un mecanismo accesorio de búsqueda local. Respecto a los algoritmos genéticos, se evalúa cada candidata conforme a la función de aptitud. Del conjunto de candidatas, que pueden haber sido generadas aleatoriamente, la mayoría no funcionarán, y serán eliminadas por el algoritmo. Empero, algunas pueden ser interesantes o pueden mostrar actividad potencial, aunque sea actividad endeble e imperfecta. Estas candidatas que muestran características prometedoras se conservan y serán las que tengan descendencia. Estas candidatas tan extraordinarias prevalecen sobre el resto aunque se hicieran múltiples copias pero no exactamente iguales sino con pequeñas modificaciones aleatorias. A continuación, esta descendencia digital continua en la siguiente generación, formando un nuevo grupo de soluciones candidatas, que son sometidas a una ronda de 208 Capítulo 13. Algoritmo Memético evaluaciones de aptitud. Las candidatas que no mejoran al ser modificadas se eliminan; sin embargo, estas variaciones aleatorias incrustadas en la población pueden haber mostrado mejoras en algunos agentes, convirtiéndolas en nuevas y mejores soluciones del problema, mucho más eficientes. De nuevo, se escogen y copian estos agentes victoriosos sobresalientes, hacia la siguiente generación con cambios aleatorios adicionales, y el proceso se repite una y otra vez. Se espera que la aptitud media de la población se mejore en cada ronda y, por tanto, repitiendo este procedimiento cientos o miles de rondas, pueden encontrarse soluciones muy buenas. Al proceso anterior se añade una búsqueda local, basada en el estudio de soluciones de vecindario o entorno de la solución. Esta técnica escoge los agentes mejor dotados con el objetivo de ir mejorando la especie en cada generación. Sin embargo, generalmente las búsquedas locales sólo modifican la solución mediante una mejora en su propio ámbito de influencia. El principal inconveniente de estas búsquedas es que quedan atrapadas en un óptimo local, por lo que es aquí donde el algoritmo genético aporta la salida del óptimo local para acometer la búsqueda de la solución global, como se verá posteriormente. Aunque no hay garantía de que el algoritmo memético encuentre la solución óptima, soluciones de un nivel aceptable son encontradas en un tiempo competitivo comparado con otras técnicas metaheurísticas. Una particularidad de este tipo de tecnologías es que trabajan de forma paralela [22]. Otros algoritmos trabajan en serie y sólo pueden explorar el espacio de soluciones en una dirección al mismo tiempo, y si la solución que encuentran es subóptima, se abandona la estrategia y se empieza de nuevo. Sin embargo, dado que los algoritmos genéticos tienen descendencia múltiple, pueden explorar el espacio de soluciones en muchas direcciones a la vez. Si una estrategia direccional es poco eficiente, se elimina y se continúa en otras direcciones. Esta idea puede verse desde otra visión alternativa. Considérese el concepto de esquema o patrón que describe un grupo de cromosomas, donde un agente binario se compone de unos y ceros. Cada esquema representa el conjunto de cromosomas que contienen los unos y ceros en la misma posición que se localizan en el esquema y 209 Capítulo 13. Algoritmo Memético cualquier valor en la posición de los asteriscos. Considérese todas las cadenas binarias (cadenas formadas por ceros y unos) de n dígitos que conforman un espacio de búsqueda, representados como ******** (donde * significa 1 ó 0). La cadena 0110101010 es un miembro de este espacio, pero también es un elemento del espacio 0*********, del espacio 01********, del espacio 0********0, del espacio 0*1*1*1*1*, del espacio 01*01****0, etc. Tanteando esta cadena concreta, un algoritmo memético exploraría cada espacio a los que pertenece. Tras múltiples evaluaciones, iría alcanzando un valor más y más preciso de la aptitud media de cada espacio, cada una de las cuales contiene muchos elementos. Por tanto, un algoritmo memético que valore explícitamente un número de agentes pequeños, ciertamente está evaluando implícitamente un grupo numeroso de agentes. Este concepto se conoce habitualmente como teorema del esquema en algoritmos evolutivos. Obsérvese que estos algoritmos evalúan numerosos esquemas al mismo tiempo (paralelismo), lo cual hace que estas técnicas sean especialmente útiles resolviendo problemas cuyo espacio de soluciones potenciales es muy amplio [22]. La mayoría de los problemas que caen en esta categoría se conocen como no lineales. En un problema lineal, la aptitud de cada componente es independiente, por lo que cualquier mejora en alguna parte dará como resultado una mejora en el sistema completo. La no linealidad es más habitual en la vida real, donde cambiar una componente puede tener efectos en todo el sistema, y donde cambios múltiples que por separado son perjudiciales, en combinación pueden conducir hacia mejoras en la aptitud. Los algoritmos meméticos son especialmente útiles en problemas con un paisaje adaptativo complejo [21], aquéllos en los que la función de aptitud es discontinua, ruidosa, que cambia con el tiempo, o tiene muchos óptimos locales. La mayoría de los problemas reales tienen un espacio de soluciones enorme que es imposible de explorar exhaustivamente. En este caso, se deben tener herramientas que sean capaces de obviar los óptimos locales y no quedar atrapados en ellos, para acometer la búsqueda del óptimo global. 210 Capítulo 13. Algoritmo Memético El cruce es el operador fundamental en la componente genética de los algoritmos meméticos ya que sin este operador, los distintos agentes viajan por el espacio de espacio de búsqueda de la función sin más información que la suya propia pero sin recabar información de otros agentes que se encuentran en otras zonas del espacio de búsqueda [83] [99]. En ciertos problemas se necesita modelizar un problema con múltiples objetivos. Los algoritmos meméticos presentan una estructura robusta que se adapta muy bien a este tipo de problemas donde una solución optimiza un cierto parámetro y otra optimiza otro completamente diferente. Cuando una solución concreta obtenida como solución a un problema, el cual tiene variados objetivos, optimiza un parámetro concreto, y ese parámetro no puede mejorarse sin provocar una pérdida de calidad en otro parámetro, esa solución se designa como óptimo paretiano o no dominado. Al diseñar un algoritmo memético se debe efectuar una representación del problema. Existen diferentes formas de hacer esto; no obstante, lo más común es definir a los agentes como cadenas de números binarios, enteros o bien reales; donde cada número representa algún aspecto concreto de la solución. En el caso de que los agentes sean cadenas binarias, un 1 ó 0 podría significar la presencia o ausencia de una cierta particularidad. En el caso de listas de números, estos números podrían representar otro tipo de acepciones. En el caso de la mutación, esta implica cambiar estos números, cambiar bits, o bien sumar o restar valores aleatorios. Por otra parte, la definición de lo que es la función de aptitud debe ser detallada diligentemente para alcanzar un progreso en la resolución del problema. Si se elige inapropiadamente la función de aptitud o se define de manera tergiversada, el algoritmo memético no será capaz de encontrar una solución al problema, o puede terminar resolviendo un problema descaminado. El algoritmo memético únicamente maximiza; sin embargo, la minimización puede realizarse fácilmente colocando el signo menos a la función maximizante. Otro tipo de parámetros deben elegirse cuidadosamente en un algoritmo memético. A saber, el tamaño de la población de búsqueda, la cadencia de la mutación, el tipo de 211 Capítulo 13. Algoritmo Memético selección y por supuesto el cruce. Si el tamaño de la población se elige demasiado pequeño, el algoritmo memético no explorará adecuadamente el espacio de soluciones para encontrar buenas soluciones. Si el ritmo de cambio memético es demasiado elevado o el sistema de selección se escoge inapropiadamente, puede perturbar la mejora de esquemas beneficiosos y la población pasar de un extremo a otro demasiado deprisa antes de que la selección consiga finalmente producir la convergencia. Si se selecciona una población pequeña, los ritmos de mutación son muy elevados o la presión selectiva muy fuerte (una situación así se ha dado en la historia debido a cambios ambientales radicales), la especie podría llegar a extinguirse. La mayoría de los seres vivos tiene la habilidad con el tiempo de corregir errores, a nivel celular, durante la replicación del ADN, manteniendo su cadencia de mutación a unos niveles no demasiados altos. En otro orden de cosas; en tiempos de fuerte presión ambiental, algunas bacterias pasan a un estado de hipermutación en el que el ritmo replicación de errores en el ADN aumenta radicalmente, incrementando la probabilidad de que se alcance una mutación compensatoria. Un problema que puede surgir con un algoritmo memético conocido como convergencia prematura, o bien deriva genética, acontece cuando un agente, mucho más apto que la mayor parte de sus competidores, surge muy rápido durante la implementación del algoritmo, se reproduce tan copiosamente que merma la diversidad de la población muy pronto, induciendo que el algoritmo converja hacia el óptimo local que representa ese agente, en lugar de viajar por todo el espacio de búsqueda explorando para encontrar el óptimo global. Esto se produce con cierta frecuencia en las poblaciones pequeñas, donde incluso un cambio aleatorio en la cadencia de reproducción puede provocar que un genotipo se haga dominante sobre los otros. La solución a este problema barajado por los investigadores involucra vigilar la fuerza selectiva para no facilitar tanta ventaja a los agentes desmedidamente aptos. La selección escalada, por torneo o bien por rango, son algunos de los métodos principales para alcanzar este objetivo. El escalado sigma es un método de selección 212 Capítulo 13. Algoritmo Memético en el que la reproducción se fundamenta en una comparación estadística entre la aptitud media poblacional y la selección lograda mediante la función de Boltzmann, en la que la fuerza selectiva se acrecienta durante la implementación, controlando de una manera análoga a como lo hace la variable temperatura en el algoritmo de recocido simulado [69]. El primer paso en el proceso de ejecución del algoritmo memético es la codificación de los agentes (soluciones potenciales del problema), los cuales están formados como un grupo de parámetros (denominados genes), los cuales al agruparse forman un conjunto de valores (a menudo referida como cromosoma). El conjunto completo de material genético se denomina genoma. La evolución es un proceso que opera a nivel de cromosomas y no a nivel de agentes. Cada agente es codificado como un conjunto de cromosomas por lo que se necesita un método que permita codificar las soluciones potenciales del problema, de forma que un ordenador pueda procesarlos. Un enfoque consiste en codificar las soluciones como cadenas binarias: secuencias de 1s y 0s, donde el dígito de cada posición representa el valor de algún aspecto de la solución. Otro método parecido consiste en codificar las soluciones como cadenas de enteros o números decimales [54], donde cada posición, representa algún aspecto exclusivo de la solución. Este método permite una mayor precisión y complejidad que el método muy limitado de utilizar sólo números binarios, y a menudo está mucho más cerca del espacio del problema; no obstante, la teoría en la que se fundamentan los algoritmos meméticos se comprende mejor desde un punto de vista binario. Un tercer método consiste en representar a los agentes como cadenas de letras y/o símbolos, donde cada letra, representa un aspecto específico de la solución. Esta técnica se usa frecuentemente en redes neuronales. Estos tres métodos favorecen la definición de los operadores que provocan los cambios aleatorios en los candidatos seleccionados: cambiar un 0 por un 1 o viceversa, sumar o restar al valor de un cierto valor numérico una cantidad elegida al azar, o cambiar una letra por otra. Otra estrategia, atribuida a Koza y denominada programación genética, representa a los programas como estructuras arbóreas de 213 Capítulo 13. Algoritmo Memético datos, donde los cambios generados aleatoriamente se obtienen a partir de un cambio de operador o cambiando un nodo del árbol. Desde un punto de vista biológica, el conjunto de parámetros representando un cromosoma particular se denomina fenotipo. El fenotipo contiene la información requerida para construir un organismo, el cual se refiere como genotipo. La adaptación al problema de un determinado agente viene influenciado por la evaluación del genotipo que puede obtenerse a partir del fenotipo. La función de adaptación hay que elegirla para cada problema de manera específica. Dado un cromosoma concreto, la función de adaptación le asigna un cierto número real, que se supone refleja el nivel de adaptación al problema del agente representado por ese cromosoma. En la fase reproductiva se seleccionan los agentes de la población para cruzarse y producir descendientes, que podrán mutarse o no, y a partir de aquí surge la siguiente generación de agentes. Seleccionados los agentes (generalmente dos), sus cromosomas se adicionan utilizando habitualmente los operadores de cruce y mutación. Un algoritmo memético puede utilizar diferentes técnicas para seleccionar a los agentes que se copiaran hacia la siguiente generación, indicándose abajo algunos de los más comunes. Algunos de estas técnicas son mutuamente exclusivas, pero otras pueden utilizarse en combinación. Selección elitista. Se escogen a los agentes más aptos de cada generación (no se suele utilizar elitismo puro, sino que se suele usar una forma alterada para que el agente mejor, o algunos de los mejores, se copien hacia la siguiente generación, a no ser que se introduzca otro operador). Esta técnica tiene el inconveniente de que no permite al algoritmo salir de óptimos locales para acometer la búsqueda de óptimos globales. Selección proporcional a la aptitud. Los agentes más aptos tienen mayor probabilidad de ser seleccionados. Selección por rueda de ruleta. Esta forma de selección es proporcional a la aptitud donde la probabilidad de que un agente sea seleccionado es proporcional a la 214 Capítulo 13. Algoritmo Memético diferencia entre su aptitud y la de sus competidores. Esto puede representarse como un juego de ruleta, donde cada agente tiene asignada una sección de la ruleta, pero los más aptos tienen secciones mayores que las de los menos aptos. Luego la ruleta rueda y cada vez se elige el agente que posea la sección en la que se para la ruleta. Selección escalada. Al incrementarse la aptitud media de la población, la fuerza de la presión selectiva también aumenta y la función de aptitud intensifica su poder discriminador. La técnica propuesta por Goldberg traza una recta entre el menor valor de aptitud y el mayor valor de aptitud de la población, y luego la prolonga o corta los valores de aptitud de cada agente al valor de la recta correspondiente. Este método es útil al final del proceso de cálculo, cuando todos los agentes tienen una aptitud relativamente alta y es necesario diferenciar sutilezas. Selección por torneo. Se seleccionan subgrupos de agentes de la población al azar, y los agentes de cada subgrupo compiten entre ellos en una especie de torneo del que resultará ganador el que tenga la mejor aptitud. Sólo se puede elegir a un agente de cada subgrupo para la reproducción. Selección por rango. A cada agente de la población se le asigna un rango numérico función de su aptitud y la selección se basa en este ranking, en lugar de las diferencias absolutas de aptitud. La ventaja de este método es que retrasa a los agentes muy aptos, lo que a la postre reduciría la diversidad genética de la población y podría frenar la búsqueda de una solución aceptable. Selección generacional. La descendencia de los agentes seleccionados de cada generación pasa en su conjunto a la siguiente generación, sin conservarse agentes entre generaciones. Selección por estado estacionario. La descendencia de los agentes seleccionados en cada generación se introduce en la población sustituyendo a los agentes menos aptos de la siguiente generación, conservándose agentes entre generaciones. Selección jerárquica. Los agentes sufren múltiples rondas de selección en cada generación. Al principio, se eliminan a los agentes menos aptos mediante selecciones 215 Capítulo 13. Algoritmo Memético rápidas y poco discriminatorias, mientras que los que sobreviven se les aplica una evaluación mucho más exigente. Como ya se ha comentado previamente, una dificultad en el comportamiento del algoritmo memético es la existencia de gran cantidad de óptimos locales, donde se encuentra el óptimo global. Obviamente, un problema en las ejecuciones de los algoritmos meméticos surge debido a la velocidad con la que el algoritmo converge. En ciertas ocasiones, la convergencia es muy rápida lo que se ha venido en llamar convergencia prematura, donde el algoritmo converge hacia óptimos locales mientras que en otros casos el problema es justo el contrario; o sea, se produce una convergencia muy lenta del algoritmo [83] [99]. El problema de la convergencia prematura aparece cuando la selección de agentes se realiza por algún método proporcional a su función objetivo, con lo que algunos agentes presentan una adaptación al problema muy superior al resto, que a medida que el algoritmo avanza temporalmente tienden a controlar la población y así terminar con la diversidad genética del problema. Obviamente, esto es muy perjudicial y es necesario implementar mecanismos para que estos superagentes no acaben dominando a la población o lo que es lo mismo, salir del óptimo local para merodear por otros óptimos y de este modo encontrar el óptimo global. Como se ha comentado previamente, la función de selección de progenitores más empleada es la llamada función de selección proporcional a la función objetivo, en la cual cada agente tiene una probabilidad de ser escogido como progenitor. Evidentemente, los agentes con un valor más alto de la función objetivo tienen más probabilidad de ser seleccionados para el operador. Sea E a la función objetivo y λ el número de agentes que forman la población, la probabilidad de que el agente j sea escogido como progenitor es: pj = Ej ∑λj=1 Ej (13.1) Esta función de selección es invariante ante cambios de escala pero no ante traslaciones. 216 Capítulo 13. Algoritmo Memético La anterior función de selección puede producir una veloz convergencia de los llamados superagentes, lo cual conduce a un problema de deriva genética. Esto puede subsanarse mediante una selección proporcional al rango del agente, produciendo una repartición más uniforme de la probabilidad de selección. Los agentes de la población se ordenan de menor a mayor; o sea, al peor agente se le asigna el rango uno y al agente con mejor función objetivo el rango el número de agentes de la población, siendo la probabilidad de que un agente sea escogido como progenitor proporcional al rango del agente, valga la redundancia, siendo la función pj = rango(Ej ) λ (λ + 1)⁄2 (13.2) Evidentemente, la suma de los rangos, λ(λ+1)⁄2, es una constante de normalización. Esta función de selección es invariante frente a cambios de escala y translaciones. En ocasiones las probabilidades de selección varían de generación a generación (por ejemplo, este es el caso de la selección proporcional a la función objetivo), denominándose métodos dinámicos de selección frente a los estáticos, en los cuales dichas probabilidades son constantes (por ejemplo, en la selección basada en rangos). Otra posible mejora es el modelo de selección del valor esperado, el cual requiere un ̂(t) siendo E ̂(t) el valor promedio de la función contador cj, el cual se inicia en Ej ⁄E objetivo en la generación t. Así, cuando el agente es seleccionado para el cruce, dicho contador mengua en una cantidad Δc, con Δc∈[0.1,0.5], valor ajustable. El agente no es escogido cuando su contador sea negativo. Obviamente la dificultad de este procedimiento es la elección del valor Δc que podría seleccionarse diferente de unos agentes a otros. Cuando es posible asegurar que todos los agentes tienen fijada una probabilidad de selección diferente de cero, el método de selección se llama preservativo, siendo extintivo el resto de casos. El siguiente paso ocurre cuando la selección ha designado a los agentes más aptos, y consiste en alterar aleatoriamente a estos agentes con la idea de mejorar su aptitud en la siguiente generación. Una forma de acometer esto es la mutación. En la naturaleza, 217 Capítulo 13. Algoritmo Memético una mutación no es un suceso frecuente. De hecho, suele ocurrir un promedio de una por cada mil replicaciones. Generalmente las mutaciones son mortíferas, pero suelen contribuir a la diversidad genética de la especie. Suele consistir en un cambio en uno de los genes de un cromosoma elegido al azar. En el caso de emplear representaciones binarias, cada bit se reemplaza por su complemento (un uno cambio en cero y contrariamente). Este tipo de operadores permite introducir nuevo material cromosómico en la población de agentes. En un algoritmo memético, una mutación produce pequeñas alteraciones en puntos precisos del código de los agentes. El operador mutación se aplica a los descendientes aunque con una baja probabilidad de ocurrencia y consiste en la alteración aleatoria de cada gen componente del cromosoma [19]. La mutación provoca que los cromosomas descendientes sufran modificaciones respecto a los progenitores, si bien este tipo de cambios en la estructura cromosómica puede ser beneficiosa o no, en el caso de que fuera beneficiosa incrementará la aptitud del agente y esta característica pervivirá en la especie, pero en caso contrario empeorará la aptitud del agente y terminará desapareciendo [99]. fenotipo genotipo gen mutado ↓ Descendiente 1 0 1 0 0 1 0 0 164 Descendiente mutado 1 0 1 0 1 1 0 0 172 Figura 13.1. Mutación. La mutación es un operador generador de diversidad que puede proporcionar una salida cuando un algoritmo memético se estanca en un óptimo local, convirtiendo el algoritmo memético en una búsqueda estocástica local, donde el vecino candidato puede sustituir a la solución actual. Es decir, al principio la generación de la población inicial, selección y posterior cruce, realiza una tarea de exploración al comienzo del 218 Capítulo 13. Algoritmo Memético algoritmo para pasar a estancarse en alguno de los óptimos locales, al ser dominada la población por los agentes más aptos, convirtiéndose el algoritmo memético en un algoritmo de búsqueda local, siendo necesario algún operador, como es el caso de la mutación [71], que acometa el salto y escape de ese óptimo local, prosiguiendo la exploración por el espacio de búsqueda, lo cual conducirá, en estadios avanzados del proceso de cálculo, a una explotación final entre los óptimos locales localizados en pos de la búsqueda del óptimo global. Un abuso de este operador disminuirá la eficiencia generando agentes poco aptos que desaparecerán perdiendo generaciones sin un sentido claro por lo que generalmente es más conveniente emplear otros mecanismos de generación de diversidad tales como aumentar el tamaño de la población o inducir una aleatoriedad garantizada en la población inicial [7]. Análogamente al cruce, la mutación requiere de un porcentaje el cual indica con qué frecuencia se producirá, aunque esto sucede de forma más ocasional (el porcentaje de cruce es regularmente superior al 60% mientras que el de mutación no suele ser mayor que el 5%). Asimismo, se pueden pensar en diferentes técnicas de mutación dependiendo de si la mutación afecta a un único bit, un conjunto de bits, a un gen concreto o a una serie de genes: Mutación de bit. Solo se considera una única probabilidad de que se produzca una mutación de algún bit. Mutación multibit. Cada uno de los bits tiene una probabilidad específica de mutar que se calcula por el operador de mutación multibit. Mutación de gen. Análogamente a la mutación de bit, solo que, en vez de cambiar un bit, cambia un gen completo. Puede adicionar un valor aleatorio, un factor constante o embutir un gen aleatorio nuevo. Mutación multigen. Análogamente a la mutación multibit, solo que, en vez de cambiar un conjunto de bits, cambia un conjunto de genes. Mutación de intercambio. Se tiene una probabilidad de producir una mutación de tal forma que cuando se produce, dos bits/genes escogidos aleatoriamente se intercambian. 219 Capítulo 13. Algoritmo Memético Mutación baraja. Existe una probabilidad de producir una mutación, de tal modo que en caso de producirse, toma dos bits o dos genes estocásticamente y baraja aleatoriamente los bits o genes. Un segundo método de variación aleatoria es el cruce e implica seleccionar a dos agentes y que intercambien segmentos de su código, engendrando una descendencia cuyos agentes son combinación de sus progenitores. Este proceso simula la recombinación entre cromosomas durante la reproducción sexual. Habitualmente, las formas frecuentes de cruce son el cruzamiento de un punto, en el que existe un punto de intercambio en un lugar aleatorio del genoma de dos agentes y uno de los agentes apoya con su código anterior a ese punto y el otro agente aporta su código a partir de ese punto en el futuro descendiente. El cruzamiento uniforme ocurre cuando el valor de una posición dada en el genoma del descendiente se corresponde con el valor en esa posición del genoma de uno de los progenitores o el valor de esa posición del genoma del otro progenitor, todos ellos seleccionados probabilísticamente. Generalmente se tiene tendencia a emparejar dos descendientes de los mismos progenitores debido a que ambos tienen muy buenas cualidades, garantizando la perpetuación de un agente con buenas características (esto se aplica con frecuencia en la cría del ganado y cuyo objeto es potenciar ciertas características). Empero, si esto ocurre demasiado a menudo puede crear problemas, y toda la población ser dominada por los descendientes de algún gen que podría ocurrir tuviera caracteres no deseados. En optimización esto se corresponde con un estancamiento en un mínimo local. Sea el operador de cruce basado en un punto, se toman dos progenitores escogidos y se cortan sus ristras de cromosomas en una posición elegida al azar para producir dos subristras iniciales y dos subristras finales. Después se intercambian las subristras finales originando dos nuevos cromosomas completos. Ambos descendientes han recibido por herencia genes de cada uno de los progenitores. Sea el ejemplo anterior, pero ahora contemplado desde el punto de vista del genotipo, se tiene un descendiente a partir de dos progenitores: 220 Capítulo 13. Algoritmo Memético 255=Rnd1·241+Rnd2·47 fenotipo (13.3) genotipo fenotipo genotipo punto cruce↓ punto cruce↓ 1 1 1 1 0 0 0 1 241 0 0 1 0 1 1 1 1 47 Descendientes 1 1 1 1 1 1 1 1 255 0 0 1 0 0 0 0 1 33 Progenitores Figura 13.2. Operador cruce basado en un punto. Siendo Rnd1 y Rnd2 números generados aleatoriamente entre 0 y 1. Es indudable que se pueden encontrar dos valores Rnd1 y Rnd2 que cumplan la relación anterior. Más limitado sería 255=Rnd·241+(1-Rnd)·47 fenotipo genotipo punto cruce↓ Progenitores ↓ (13.4) fenotipo punto cruce↓ genotipo ↓ 1 0 1 0 0 0 1 1 1 0 654 0 0 1 1 0 1 0 0 1 0 210 Descendientes 1 0 1 0 0 1 0 1 1 0 662 0 0 1 1 0 0 1 0 1 0 202 Figura 13.3. Operador cruce basado en dos puntos. Existen otros operadores de cruce, que podrían tener más de un punto con más de dos progenitores. El investigador De Jong investigó la conducta del operador cruce basado en múltiples puntos, llegando a la conclusión que el cruce basado en dos puntos significaba una mejora, mientras incorporar más puntos de cruce no beneficiaba el comportamiento del algoritmo. La ventaja de elegir más de un punto de cruce reside en que el espacio de búsqueda se explora más fácilmente siendo la principal desventaja que podrían romperse estructuras aptas con más probabilidad. 221 Capítulo 13. Algoritmo Memético Desde el punto de vista del genotipo; se llega a un descendiente a partir de dos progenitores: 662=Rnd·654+(1-Rnd)·210 (13.5) Máscara de cruce 1 0 0 1 0 0 1 Progenitor 1 1 1 0 1 1 0 1 ↓ Descendiente ↓ ↓ 1 0 0 1 1 1 1 ↑ ↑ Progenitor 2 ↑ ↑ 0 0 0 1 1 1 0 Figura 13.4. Operador cruce basado en una máscara de cruce. Existe un operador de cruce uniforme, denominado de Syswerda, donde cada gen, en la descendencia se origina copiando el correspondiente gen de uno de los dos progenitores, seleccionado conforme a una máscara de cruce generada estocásticamente. Cuando existe un 1 en la máscara de cruce, el gen es copiado del primer progenitor, mientras que cuando exista un 0, el gen se copia del segundo progenitor. La máscara de cruce tiene diversas variantes como incorporar el concepto de probabilidad de herencia función de diversos parámetros. Si esta probabilidad es alta se heredan mayores características de los progenitores. Inicialmente, se tiende a pensar que el operador cruce es más importante que el operador mutación, ya que el primero explora rápidamente el espacio de búsqueda; no obstante, investigaciones más refinadas permiten afirmar que este último es esencial, al adicionar un pequeño elemento de aleatoriedad en la vecindad de los agentes de la población. En primera instancia, se acepta que el operador cruce es el encargado de efectuar la búsqueda a lo largo del espacio de soluciones; sin embargo, investigadores destacados en este campo opinan que el operador mutación cobra 222 Capítulo 13. Algoritmo Memético importancia a medida que la población va convergiendo. Así, mediante la denominada evolución primitiva, en la cual el proceso evolutivo consta únicamente de mutación y selección, Schaffer descubrió que esta evolución primitiva supera sustancialmente a una evolución basada exclusivamente en selección y cruce. En un algoritmo memético, la población evoluciona a lo largo de generaciones sucesivas de tal forma que la adaptación promedio de todos los agentes de la población, así como la adaptación del mejor agente van aumentando el óptimo global. En una primera aproximación, el concepto de convergencia está relacionado con el avance hacia una población en la cual todos los agentes son similares; es decir, un gen converge hacia el óptimo cuando un alto porcentaje de los agentes de la población comparten el mismo valor para dicho gen y la población converge cuando todos los genes han convergido (convergencia de De Jong). Generalmente el cruce se utiliza en el algoritmo memético de acuerdo a un porcentaje que indica la frecuencia de ocurrencia, lo cual viene a decir que no todas las parejas de cromosomas se cruzarán, sino algunas pasaran a la siguiente generación intactas. Así, la técnica de elitismo declara que el agente más apto a lo largo de generaciones no se cruza con nadie y se mantiene intacto hasta que otro agente más capaz lo desplaza. Una vez que se tienen los agentes descendientes en una generación, entra en liza el proceso de reducción donde se debe seleccionar la nueva población en la generación eligiendo los descendientes que permanecerán así como los progenitores que no se eliminarán. Aquí se tienen diferentes planteamientos a este respecto. En la reducción simple, los agentes generados reemplazan a sus progenitores de tal forma que los descendientes no conviven con sus progenitores. En una política elitista, los agentes menos aptos se reemplazan por agentes mejores en toda la población sin discriminar entre descendientes y progenitores. Sin embargo, si no se introducen perturbaciones periódicas, pueden aparecer problemas de deriva genética siendo una opción reemplazar una tasa de población o incluso otras. 223 Capítulo 13. Algoritmo Memético El concepto de reducción está íntimamente relacionado con el de tasa de reemplazamiento generacional; o sea, el porcentaje de descendientes con respecto del tamaño de la población. En cuanto al tamaño de población, aquí también hay variaciones desde considerar un tamaño fijo de población o incluso aumentar su tamaño o una reducción si las circunstancias así lo favorecen pudiendo llegar a extinguirse la población. Otra cuestión a tener en cuenta es el tamaño óptimo de población. Las poblaciones pequeñas presentan el inconveniente de no cubrir adecuadamente el espacio de búsqueda mientras que las poblaciones de gran tamaño suponen un alto costo de procesado computacional. Goldberg realizó un amplio estudio teórico llegando a la conclusión de que el tamaño óptimo de población para agentes con ristras de longitud dada y codificación binaria, crece exponencialmente al aumentar el tamaño de la ristra. Evidentemente, esto conllevaría un tamaño enorme de la población con lo que la aplicabilidad de este tipo de algoritmos en problemas reales quedaría muy limitada. Por otra parte, otro investigador, Alander, basándose en resultados empíricos refiere como tamaño de población aceptable, no superior a 21 agentes, siendo esto suficiente para atacar con éxito este tipo de problemas combinatorios. Las poblaciones iniciales se tienden a escoger con algún tipo de artificio que produzca agentes provenientes de información estocástica, pudiendo contener cada gen un posible valor del alfabeto, con probabilidad uniforme. Mediante sucesivas simulaciones efectuadas, si los agentes se obtienen a partir de alguna técnica no aleatoria, aunque la convergencia podría acelerarse en ciertas situaciones, la desventaja resulta ser la prematura convergencia o lo que es lo mismo la convergencia hacia óptimos locales. Habitualmente, y a modo de conclusión, salvo ciertas poblaciones anómalas realmente degeneradas en las que el operador mutación resulta esencial, la convergencia es poco perceptiva a la población inicial cuando esta se elige aleatoriamente y esta es lo suficientemente grande. 224 Capítulo 13. Algoritmo Memético En cuanto a la finalización del algoritmo, esto ocurre cuando el algoritmo converge hacia una solución estable o bien cuando se llega a un número prefijado de generaciones. Como el algoritmo memético trabaja con una población en cada iteración, usualmente es esperado que la convergencia se produzca cuando la población sea muy similar y en el infinito se reduzca a un único agente. En el caso de cadenas binarias, se ha desarrollado una compleja teoría para demostrar la convergencia de estos algoritmos. Esencialmente, esta teoría se basa en considerar que una cadena es un representante de una clase de equivalencia o esquema, de tal manera que la demostración se focaliza en esquemas en lugar de cadenas. A partir de este resultado, el teorema de esquemas demuestra que la población converge a unos esquemas que en cada paso cada vez son más parecidos y en el límite teórico infinito se tiene una única cadena. Las cadenas no binarias es un concepto mucho más difícil que el de las binarias, y aunque aún no está completamente resuelto, se necesita introducir los conceptos generalizados de esquema (forma y conjunto de similitud). Si se parte de la hipótesis de que cruzando dos cadenas de la misma clase se obtiene otra de esa misma clase, y considerando la selección de los progenitores, es posible demostrar la convergencia del algoritmo. Generalmente, la curva de convergencia presenta una convergencia rápida al comienzo y luego se estanca. Esto es debido a que el algoritmo memético es muy bueno descartando subespacios malos. Así, cada cierto tiempo, la población da un salto evolutivo y la velocidad de convergencia aumenta. Esto es debido a que algunas veces aparece una mutación realmente beneficiosa, o un superagente, que tiende a propagar las características de los más aptos. Ciertamente, el algoritmo efectúa un proceso de exploración al principio para tender a la explotación al final. Se van a proponer tres condiciones de parada que detienen el algoritmo si se cumple alguna de ellas. Condición 1. La solución no ha mejorado, tras K1 series de L pasos, introduciendo un valor definido por ϵ1>0. 225 Capítulo 13. Algoritmo Memético E(K1·L+n)>E(n) (1+ϵ1)⟹FIN (13.6) Condición 2. La convergencia de la población ocurre cuando los agentes de la población son muy parecidos en la medida que avanza el algoritmo, y en el infinito queda limitada a un sólo agente. Para analizar el grado de semejanza de la población se utiliza un análisis estadístico. Cada agente viene codificado como un conjunto de cromosomas. Cada cromosoma viene especificado por un conjunto de parámetros que se denomina fenotipo y a partir del fenotipo se calcula el genotipo, y un agente concreto se representa como un conjunto de genotipos. El análisis posterior es para un genotipo concreto y la condición de parada deberá cumplirse para cada uno de los genotipos que representan un agente. Sea el genotipo de una población especifica formada por N agentes y supóngase que esta población concreta es una muestra extraída estocásticamente de una población madre formada por una colección de genotipos mucho mayor. Partiendo de esta hipótesis, se aplica la teoría de la estimación, y se considera el estadístico media y el estadístico varianza: a= x1 + ⋯ + xn N (x1 − a)2 + ⋯ + (xn − a)2 s = N−1 2 (13.7) (13.8) La condición de parada se alcanza cuando un alto porcentaje de la población se encuentra dentro del intervalo de confianza seleccionado. El intervalo de confianza escogido es del 90%, si bien este estudio puede realizarse para cualquier otro intervalo de confianza. Así, la población converge cuando el 90% de los agentes se encuentran dentro del intervalo de confianza de la distribución. Se considera que la población madre presenta una distribución normal, con lo cual se puede estimar la media. Para una muestra grande (N>30), la media se estima como: 226 Capítulo 13. Algoritmo Memético α = a ± w90 [N(0,1)] α = a ± w90 [N(0,1)] s √N s √N (13.9) Con w90[N(0,1)] el valor que define el intervalo de confianza de la distribución normal N(0,1), de manera que el 90% de los agentes se encuentran dentro del intervalo de confianza de la campana de Gauss. Para una pequeña muestra (N<30): α = a ± w90 [t N−1 ] s √N (13.10) Con w90(tN-1) el valor que define el intervalo de confianza de la distribución t de Student con N-1 grados de libertad, de tal modo que el 90% de los agentes se encuentran dentro del intervalo de confianza de la distribución. Obsérvese que este criterio de parada lo que pretende es una medida del agrupamiento a fin de proporcionar un criterio de parada del algoritmo que sea coherente. Esta condición se examinará tras K2 series consecutivas de L pasos. Condición 3. Cuando el número de iteraciones alcanza un valor superior al valor máximo establecido M. En cuanto a los resultados obtenidos, se ha implementado el algoritmo memético en cien ocasiones obteniendo una nube de puntos que se usaran posteriormente como datos de aprendizaje en los algoritmos de aprendizaje automático. La cantidad cien ha sido la seleccionada inicialmente aunque podría haber sido cualquier otra y estribará en el tiempo de que se disponga durante la misión para generar las simulaciones de aprendizaje. Comprensiblemente, cuantas más simulaciones se disponga, mejores resultados se alcanzaran, pero esto va a depender de del tiempo disponible para ejecutar las simulaciones simulaciones. En segundo lugar, esta nube de puntos es un conjunto de óptimos locales que se encuentran en las proximidades del óptimo global, 227 Capítulo 13. Algoritmo Memético si bien esto no es lo más relevante, dado que lo que se pretende es que la entropía alcance valores muy altos con el objetivo de que el efecto neutralizante, degradativo y saturador en el sistema defensivo del enemigo refuerce la decepción, la confusión, el colapso y el desconcierto. Anteriormente ya se comentó acerca de la necesidad de aumentar el peso de la entropía, al efecto de enlazar este concepto con el algoritmo de optimización, como función a optimizar y maximizar. Así, al aplicar el algoritmo de optimización, es necesario incrementar el peso de la entropía para que el algoritmo de optimización trabaje mejor y consiga alcanzar el óptimo más fácilmente. Para ello, ya se definió anteriormente el concepto de entropía global, la cual consiste en un sumatorio de EEA para el tiempo de vuelo completo (300 ciclos para 60 segundos) donde pequeñas variaciones en cada ciclo del proceso, al llegar al tiempo final de la trayectoria completa, alcanzan una variación elevada en el proceso de optimización, lo cual conduce finalmente a la entropía global del enjambre, entropía G, o bien EEG. Asimismo, se hace significar que a los objetos de mejorar los resultados, se ha introducido un potente conjunto de filtrado donde la desigualdad factMmmm≥factdecv≥factdeca se ha implementado a efectos prácticos en sentido estricto factMmmm>factdecv>factdeca, introduciendo un factor ajustable δ>0 pequeño tal que |factMmmm-factdecv|>δ y |factdecv-factdeca|>δ. Ordenando las simulaciones obtenidas en función de la entropía global EEG, de forma creciente, para facilitar la visualización: 228 Capítulo 13. Algoritmo Memético 3320 y = 1,3001x + 3164,3 3300 3280 Entropía 3260 3240 3220 3200 3180 3160 3140 0 10 20 30 40 50 60 70 80 90 100 Número de simulación Figura 13.5. Entropía global. Análogamente, se obtienen los factores de decisión factMmmm, factdecv y factdeca: 27,000000 y = 0,0795x + 17,057 factMmmm 25,000000 23,000000 21,000000 19,000000 17,000000 15,000000 0 10 20 30 40 50 60 70 80 90 100 Número de simulación Figura 13.6. factMmmm. 229 Capítulo 13. Algoritmo Memético 14,000000 factdecv y = -0,0028x + 10,871 12,000000 10,000000 8,000000 6,000000 0 10 20 30 40 50 60 70 80 90 100 Número de simulación factdeca Figura 13.7. factdecv. 9,000000 8,000000 7,000000 6,000000 5,000000 4,000000 y = 0,0085x + 5,5931 0 10 20 30 40 50 60 70 80 90 100 Número de simulación Figura 13.8. factdeca. 30,000000 y = 0,0795x + 17,057 25,000000 fact 20,000000 15,000000 y = -0,0028x + 10,871 10,000000 5,000000 y = 0,0085x + 5,5931 0,000000 0 10 20 30 40 50 60 70 80 90 100 Número de simulación Figura 13.9. Factores de decisión factMmmm, factdecv y factdeca. Quizás más interesante sea representar los factores de decisión factMmmm, factdecv y factdeca en función de la entropía: 230 Capítulo 13. Algoritmo Memético 27,000000 y = 0,0609x - 175,54 factMmmm 25,000000 23,000000 21,000000 19,000000 17,000000 15,000000 3150 3170 3190 3210 3230 3250 3270 3290 Entropía Figura 13.10. factMmmm función de la entropía. factdecv 14,000000 y = -0,0022x + 17,811 12,000000 10,000000 8,000000 6,000000 3150 3170 3190 3210 3230 3250 3270 3290 Entropía factdeca Figura 13.11. factdecv función de la entropía. 8,000000 6,000000 4,000000 3150 y = 0,0063x - 14,211 3170 3190 3210 3230 3250 3270 3290 Entropía Figura 13.12. factdeca función de la entropía. 231 Capítulo 13. Algoritmo Memético 30,000000 y = 0,0609x - 175,54 25,000000 fact 20,000000 15,000000 y = -0,0022x + 17,811 10,000000 5,000000 y = 0,0063x - 14,211 0,000000 3150 3170 3190 3210 3230 3250 3270 3290 Entropía Figura 13.13. Factores de decisión factMmmm, factdecv y factdeca función de la entropía. 232 Capítulo 13. Algoritmo Memético 233 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre Los primeros computadores empezaron a desarrollarse durante la década de los 40, para los que los desarrolladores escribieron programas que realizaban tareas elementales de razonamiento. En esa época era frecuente testear el nivel alcanzado en este tipo de aplicaciones mediante el desarrollo de programas que jugaban al ajedrez o a las damas por lo que los investigadores se referían a estos jugadores artificiales como autómatas y a este tipo de teorías las denominaban de igual forma. Decepcionado por la constante alusión al término autómatas, el investigador John McCarthy fue el primero en mencionar el concepto de Inteligencia Artificial (AI, Artificial Intelligence) en una conferencia en 1956 como "...la ciencia e ingenio de hacer máquinas inteligentes, especialmente programas de cómputo inteligentes". Unos cuantos años antes, Alan Turing, uno de los fundadores de la informática, se planteaba una interesante cuestión acerca de si las máquinas pueden pensar. Turing enseguida vio la necesidad de formular esta pregunta en términos de evidencia empírica, por lo que propuso el llamado Test de Turing para poder afirmar si una máquina es capaz de pensar. Este test consiste en una prueba de habilidad donde se averigua si una máquina muestra un comportamiento inteligente parecido al de un ser humano. La cuestión de si los computadores pueden pensar va a depender de cómo se definan los términos máquina y pensar. Desde un punto de vista preliminar, una inteligencia artificial contempla una serie de algoritmos estructurados en programas 234 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre computacionales, que pueden ejecutarse desde un entorno de programación hardware, y cuyo objeto final es imitar de alguna forma el funcionamiento del cerebro humano. De esta forma, una inteligencia artificial percibe el entorno con sensores de diversos tipos, procesa esta información con algún tipo de tecnología de tratamiento de datos, y correlaciona estos datos, conectándose a enciclopedias, bibliotecas virtuales, databases,… almacenadas tanto en unidades de memoria física, como en la nube o en internet. Posteriormente, mediante tecnologías avanzadas de adquisición, clasificación, gestión, tratamiento y análisis de datos, emite conclusiones propias que no le han sido programadas. Este ingente volumen de datos constituye una nueva tecnología, el “Big Data”, que se apoya en cuatro puntales: volumen de datos, variedad en la fuente de obtención de la información, velocidad en la toma de datos y veracidad de la información. Asimismo, una nueva concepción, denominada “Smart Data”, da un paso más y extiende el “Big Data” en un quinto pilar: el aumento del valor de los datos de cara al proceso de toma de decisiones. De este modo, el “Smart Data” deja en un segundo plano la cantidad de datos almacenados, para centrarse en su tratamiento y análisis para ofrecer una respuesta más eficaz e inteligente. A este respecto, la inteligencia artificial puede definirse de diferentes formas pero el investigador Bruno Takeyas lo hace de la siguiente manera “el estudio de modelos computacionales capaces de realizar actividades propias de los seres humanos en base a dos de sus características primordiales: el razonamiento y la conducta”. Empero, algunos investigadores opinan que las máquinas inteligentes tendrían que ser tan complejas, y requerirían una experiencia tan amplía de interacción con el entorno u otros entes, que estas máquinas no podrán construirse nunca. Así, aún no se ha conseguido crear una inteligencia artificial del tipo generalista, aunque se han conseguido importantes logros en inteligencias artificiales especializadas. Esta desavenencia se debe a distintas razones, siendo necesario indicar que los computadores actuales no son lo suficientemente potentes para la gran cantidad de cálculo demandado por la inteligencia artificial general. Sin embargo, se espera que la computación cuántica propicie un avance espectacular en esta área y permita la ejecución de los cálculos necesarios para la inteligencia artificial general. También es 235 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre necesario mejorar el concepto de desarrollo de los softwares actuales, expandiéndolo hasta la definición, combinación y configuración, desarrollando nuevos sistemas operativos, lenguajes de programación de alto nivel, interfaces, teoremas y algoritmos. Una cuestión de importancia es cómo medir el grado de avance experimentado por la inteligencia artificial, siendo una de estas formas la de los programas computacionales jugadores de ajedrez, donde a un computador muy potente se le instala un software suficientemente sofisticado para que esta máquina se le dote de una inteligencia artificial y pueda jugar al ajedrez enfrentándose a una persona o a otra computadora. Claude Shannon estableció, allá por 1950, las dos posibles formas de abordar el problema, a las que designó como de “tipo A”, y de “tipo B”. Los programas “tipo A” son aplicaciones basadas en “fuerza bruta", donde el algoritmo explora todas y cada una de las posibles opciones, de forma similar a un árbol de decisión, donde cada rama es estudiada usando técnicas específicas. Por otra parte, los programas de “tipo B” se enfocan en analizar las diferentes opciones mediante alguna inteligencia artificial específica que imitan la forma en que las personas abordan los problemas. Para un profano, la primera idea es que los de “tipo B” son superiores a los de “tipo A”; sin embargo, la cuestión no es tan trivial ya que los de “tipo B” presentan el inconveniente de tener que escoger entre varias líneas diferentes y realizar un análisis con alguna inteligencia artificial específica en alguna de ellas. La Association for Computing Machinery (ACM) organizó el primer torneo para computadores jugadores de ajedrez, llamado North American Computer Chess Championship, en 1970, donde la Universidad de Northwestern, comenzó ganando estas competiciones con soluciones “tipo B”, pero en 1973 abandonó estas estrategias pasándose a los de “tipo A”, ganando de nuevo este torneo durante cinco años consecutivos. Los programas “tipo B” presentan el inconveniente de que imitan el cerebro humano con lo que los grandes maestros se enfrentaban a un jugador imitador de personas y por tanto predecible por humanos; no obstante, actualmente los de “tipo A” emplean una estrategia completamente diferente donde ya no intentan imitar el cerebro humano empleando en su lugar técnicas avanzadas de búsqueda, las cuales enfocan la resolución del problema hacia la búsqueda de estrategias maestras inteligentes de 236 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre búsqueda y poda profunda. Así, los programas de ajedrez actuales persiguen alcanzar lo mejor de la fuerza bruta, a la vez que hacer uso de estrategias maestras inteligentes, siendo el resultado una combinación de esfuerzos que explotan aquello donde las computadoras son muy eficaces: calculando con gran velocidad y precisión. No obstante, a finales de los 90, las tecnologías “tipo B” han experimentado tal avance que vuelven a entrar en competición con fuerza, aunque se debe decir que estos programas combinan tanto inteligencia artificial como fuerza bruta en un equilibrio extraordinariamente eficaz. En otro orden de cosas, los sistemas expertos emplean un conocimiento específico en un área de aplicación compleja presentándose en la solución llave en mano como un consultor experto. Los sistemas expertos emplean normas o estructuras que contienen conocimiento y experiencias de expertos especializados, deducción lógica de conclusiones, capacidad para interpretar datos ambiguos, y manipulación de conocimientos afectados por probabilidades. Estos sistemas emiten soluciones a áreas muy concretas siendo capaces de formular deducciones que imitan el razonamiento lógico formal humano, donde una parte muy importante de la información se obtiene de consultas a unidades de memoria física, en la nube o en internet. Para Nils John Nilsson, uno de los padres de inteligencia artificial, los cuatro pilares básicos en los que se apoya la inteligencia artificial, son [84]: • Búsqueda del estado requerido dentro de un conjunto de estados analizados con el propósito de encontrar un estado final con las estipulaciones buscadas. • Algoritmos evolutivos, métodos de optimización y búsqueda de soluciones basados en los postulados de la evolución biológica y su base genéticomolecular (mutaciones, recombinaciones genéticas y selección de agentes), siendo algunos ejemplos de ello los algoritmos genéticos, la programación evolutiva, la neuroevolución, etc. [85]. • Aprendizaje automático (ML, Machine Learning), consistente en una metodología consistente en técnicas avanzadas que permitan a las computadoras aprender (redes neuronales artificiales, máquinas de vectores soporte, redes bayesianas, árboles de decisión, deep learning,…). 237 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre • Razonamiento mediante una lógica formal, donde partiendo de uno o más juicios, se deriva otro juicio distinto, análogo al pensamiento abstracto humano. Tradicionalmente, la inteligencia artificial ha sido proyectada a partir de redes neuronales artificiales, en el cual máquinas y algoritmos tratan de imitar el comportamiento de las neuronas del cerebro humano; sin embargo, una pregunta surge en la mente de los investigadores acerca de si este es el enfoque apropiado. La cuestión es que si las máquinas son bastante diferentes de los humanos, entonces por qué se las obliga a pensar imitando el pensamiento lógico formal de los humanos? La estrategia debería ser diametralmente diferente, desarrollando nuevas estrategias de aprendizaje automático, partiendo de la información suministrada por sensores exteriores y generando conductas empleando aquello que los computadores mejor saben hacer, calcular rápidamente y con gran precisión. Resulta evidente que la inteligencia artificial se ha hecho indispensable en nuestras vidas, aunque solo sea en tareas muy concretas, como es el caso del programa táctil con el cual escribimos a mano alzada en nuestros teléfonos móviles y el propio aparato es capaz de identificar los trazos aunque hayan sido escritos por diferentes personas. También es de destacar los sistemas de atención telefónica automáticos tipo chatbox que nos solicitan respuestas, en una forma similar a un árbol de fallos, para encaminar nuestras llamadas a un operario dependiendo del problema en cuestión. Sin olvidar el reconocimiento de patrones para identificación de usuarios atendiendo a diversas cualidades como estructura facial, pulsaciones en teclado, imagen retiniana,… o por otra parte la visión artificial empleada por los robots. Actualmente un problema de gran importancia, que podría acometerse mediante la inteligencia artificial, es la congestión del tráfico aéreo. Notoriamente, disminuir la saturación del espacio aéreo se relajaría volando más juntos, pero ello supondría rebajar la seguridad en vuelo, lo cual resulta inaceptable. La inteligencia artificial propone la consecución de métricas mejoradas, calculando trayectorias más saturadas, y optimizando su capacidad ajustando la separación entre aeronaves, haciendo uso de sistemas multiagentes que permitan a las aeronaves negociar entre ellas en un 238 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre proceso que se mueve entre lo cooperativo y lo competitivo, centralizado desde el controlador aéreo, sin reducir la seguridad en vuelo. Con la mira puesta en el desarrollo de tecnologías de inteligencia artificial aplicables al Futuro Sistema de Combate Aéreo europeo NGWS/FCAS, la Dirección General de Armamento Francesa ha lanzado el programa “Man Machine Teaming”, cuyo objetivo es que el proceso de toma de decisiones por parte de los pilotos sea más eficiente y rápido. Dassault Aviation es el contratista principal para el sistema de combate aéreo, mientras que Thales se ha hecho cargo del interfaz HMI y los sensores [32]. El programa explora nuevas tecnologías tales como la especificación y definición de cabinas inteligentes avanzadas, donde aparece la figura de un sistema cognitivo consistente en un asistente virtual que interactúa con las tripulaciones (pilotos de combate u operadores de aeronaves remotamente tripuladas), encargándose de funciones de bajo nivel pero cognitivamente costosas, dando lugar a que los pilotos se dediquen plenamente a funciones de alto nivel como la gestión táctica de la misión, potenciando el binomio hombre-máquina. Asimismo, la cabina inteligente de “Man Machine Teaming” dispondrá de información del estado de la tripulación (fisiológico, mental,…), la cual será analizada junto al contexto situacional (meteorología, riesgo táctico,…), para evaluar la capacidad para afrontar las distintas partes de la misión, adaptando la cabina y optimizándola para aumentar el rendimiento del interfaz HMI, preservando los recursos mentales y físicos de las tripulaciones para las situaciones que así lo demanden. Este análisis también dispone de aprendizaje automático de los hábitos de los pilotos, donde se tiene en consideración el estado físico-mental, la experiencia en este u otros Sistemas de Armas, para anticiparse a la propia tripulación, sugiriendo potenciales acciones. Actualmente la USAF está estudiando como la inteligencia artificial mejorará el entrenamiento de sus pilotos. Actualmente, esta Fuerza Aérea no dispone de suficientes pilotos por lo que se ha lanzado el programa “Pilot Training Next” con la intención de acelerar la formación de los aviadores en menos tiempo y a un coste inferior [32]. En concurso público entre varias empresas tecnológicamente especializadas en la educación y el sector aeroespacial, la tecnología Neurotracker resultó ganadora con soluciones consistentes en la validación científica de la 239 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre evaluación cognitiva de alto rendimiento. Hasta la fecha se han alcanzado importantes hitos en la potenciación de la efectividad y velocidad del aprendizaje del cerebro humano, al combinar tecnologías tipo inteligencia artificial, realidad aumentada y virtual, supercomputación, biometría, tratamiento de datos, y simulación en entornos tridimensionales hiperrealistas. Cuando un piloto acomete una maniobra en el simulador, la inteligencia artificial del “Pilot Training Next” monitoriza el comportamiento del piloto, evaluando parámetros como neuroplasticidad y cognitividad, mostrando desviaciones y errores cometidos en un entorno sensorial adaptativo. Función de estas desviaciones, la inteligencia artificial altera la metodología de aprendizaje, potenciando aquellos aspectos que el piloto debe mejorar. Esta inteligencia artificial muestra como el piloto aprende personalizando el adiestramiento para cada alumno concreto. Figura 14.1. Recreación artística del programa “Skyborg”. Por otra parte, la AFRL de la USAF se encuentra trabajando en el programa “Skyborg”, un RPA de combate (UCAV) semi-autónomo/autónomo, inteligente, que acompañará a los cazas F-35 o/y F-15EX como apoyo en cierto tipo de misiones. Este concepto está basado en el “loyal wingman” que está en fase de desarrollo entre Boeing y el gobierno Australiano, donde estos RPAs escoltarán a los cazas, enlazados mediante una red de comunicaciones, donde estos vehículos remotos podrán ser controlados, tanto desde estaciones en tierra como desde los propios cazas. Se espera disponer de un prototipo combat-ready para finales del 2023, cuya misión primaria será ISR y EW, 240 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre aunque también se espera que estos RPAs puedan transportar armamento y afrontar otro tipo de misiones en el futuro. Estas plataformas remotas volarán por delante de los cazas, provocando las defensas enemigas, detectando a la par que desconcertando sus radares y misiles. La propia USAF ha mencionado el “Skyborg” con una inteligencia artificial que ayudaría a los pilotos humanos en un rol parecido al del droide R2-D2 de la película “Star Wars” [32]. Para el “Skyborg”, se disponen de varios RPAs existentes en la actualidad, al objeto de disminuir costes, tales como el demostrador “stealth” XQ-58 Valkyrie de la empresa Kratos, el blanco aéreo BQM-74 Chukar de Northrop Grumman o el QF-16 de Lockheed Martin. Este avión remoto deberá cumplir con una serie de especificaciones tales como un aparato reutilizable, modular, con bajo de mantenimiento, y software abierto, que pueda penetrar una zona de operaciones, y cuya inteligencia artificial pueda hacer frente a múltiples adversarios. Figura 14.2. UCAV “stealth” XQ-58 Valkyrie. Inteligencia de enjambre es una parte de la Inteligencia artificial que estudia y analiza el comportamiento colectivo de sistemas autónomos, autoorganizados, descentralizados, ya sean naturales o artificiales. Este concepto aparece por primera vez en 1989 en los trabajos de Gerardo Beni y Wang Jing, donde un grupo de agentes 241 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre (sensores, robots, RPAs,…) interactúa entre ellos y con el entorno, promoviendo un comportamiento que se ha venido en denominar colectivamente inteligente. Inspirados por sistemas biológicos de los que se encuentran habitualmente en la naturaleza, los sistemas de inteligencia de enjambre están normalmente constituidos por un conjunto de agentes primarios elementales que interaccionan con el medio y con ellos mismos [77]. Una colonia de abejas u hormigas es el ejemplo más característico que se puede encontrar en la naturaleza. Cada agente (insecto en este caso) muestra individualmente, poca inteligencia, equivocándose repetidamente, como cuando tienen que encontrar un camino hacia el alimento. Sin embargo, estos agentes se comunican entre ellos de alguna forma (danza en las abejas, feromona en las hormigas,…) [8] [93], de tal manera que el enjambre es capaz de encontrar la mejor solución al problema; es decir, el camino más corto hacia la comida. Así, la inteligencia de enjambre surge de interacciones múltiples, entre muchos agentes que suman sus capacidades cognitivas, discriminando la alternativa óptima entre muchas otras soluciones menos eficientes [46]. La inteligencia de enjambre se caracteriza porque los elementos individuales están distribuidos y son autónomos, y aunque puede existir una autoridad central que dicte órdenes al enjambre (como podría ser un piloto humano desde la GCS), no es un requisito esencial y de hecho en los enjambres reales no suele ocurrir. Los agentes del enjambre, equipados con sensores que perciben el entorno, se comunican entre ellos, distribuyéndose la toma de decisiones del grupo entre varias plataformas y dispositivos [65]. 242 Capítulo 14. Inteligencia Artificial. Inteligencia de enjambre 243 Capítulo 15. Aprendizaje Automático (Machine Learning) El aprendizaje automático es una disciplina de las ciencias de la computación cuyo objeto es que una máquina sea capaz de sintetizar experiencias previas en forma de agrupaciones de datos para plantear una estrategia de resolución de un problema. De esta forma, un computador es una máquina que puede realizar de forma automática este tipo de tareas de aprendizaje. Ello requiere crear un esquema donde se especifique donde aprender, qué hacer con los datos de aprendizaje y que se quiere conseguir. En estos momentos, se dispone de la tecnología suficiente como para entrenar a un ordenador en varios tipos de tareas aplicables a varios grados de complejidad. El aprendizaje consiste en crear algoritmos que sistematicen conductas y reconozcan patrones a partir de una información suministrada, cuyo fin último es desarrollar técnicas y estructuras que permitan a las computadoras aprender en un proceso parecido a como lo hacen los humanos. Más concretamente hablando, los programas desarrollados bajo esta idea deben ser capaces de sistematizar conductas a partir de un conjunto de información suministrada a partir de ejemplos iniciales de una forma similar a un proceso de inducción del conocimiento. El aprendizaje automático, más conocido como "Machine Learning", se desarrolla en los años cincuenta como una forma compleja de tratar datos. En 1956, Arthur Samuel, que trabajaba en IBM entrena a un ordenador IBM 701 para jugar a las damas siendo este el primer ejemplo de aprendizaje automático. Empero, el aprendizaje automático se basa en otros métodos como la “ciencia de datos" que puede definirse como un 244 Capítulo 15. Aprendizaje Automático (Machine Learning) conjunto de patrones, análisis, estadísticas, sistematizaciones, teoremas, cálculos y algoritmos, cuyo objeto es extraer información y conclusiones de bases de datos y conjuntos numéricos. Bajando a un nivel más técnico, Arthur Samuel define el aprendizaje automático como "un área de estudio que permite a las computadoras aprender sin estar programadas manifiestamente para ello". Otra definición para este concepto es también conocida coloquialmente como "máquinas de entrenamiento", una parte de la inteligencia artificial que proyecta algoritmos a partir de serie y bases de datos, elabora análisis predictivos y correlaciona diferentes circunstancias sin que tenga que existir una relación aparente a priori. En la primera etapa de la fase de aprendizaje se analizan los datos de entrada para en la segunda fase de "comprobación" chequear un segundo grupo de datos. Desde un punto de vista preliminar, una primera tipificación diferencia entre aprendizaje supervisado y aprendizaje no supervisado. El primer caso confecciona un modelo de correlación entre las variables de entrada y salida del sistema, siendo los resultados que se quieren obtener del modelo, conocidos previamente, y utilizados a modo de guía en el entrenamiento. Este entrenamiento hace uso de técnicas de clasificación y regresión, generando pronósticos razonables como respuesta a datos nuevos. Los modelos de clasificación etiquetan los datos de entrada en categorías (máquinas de vectores soporte, árboles de decisión, clasificadores bayesianos, regresión logística,…), mientras que las técnicas de regresión predicen respuestas continuas (regresión por pasos, redes neuronales o aprendizaje neuro difuso adaptativo,…). Por el contrario, el aprendizaje no supervisado solamente considera las entradas al sistema y el resultado deseado no se emplea durante el entrenamiento, y en la mayoría de los casos tampoco se conoce anteriormente, siendo descubierto durante el proceso aprendizaje. Así, el aprendizaje no supervisado permite extraer estructuras intrínsecas en los datos que presentan altas correlaciones, siendo la técnica más común el clustering (agrupación), la cual se basa en la exploración de datos con objeto de encontrar patrones subyacentes. El aprendizaje automático se aplica en múltiples tareas cotidianas como los asistentes virtuales de voz de atención al cliente tipo chatbots, el reconocimiento de patrones 245 Capítulo 15. Aprendizaje Automático (Machine Learning) para identificación de usuarios atendiendo a características como estructura facial, pulsaciones en teclado o imagen retiniana, vehículos autónomos, segmentación analítica de clientes en múltiples negocios, etc. A su vez, como un caso particular del machine learning, destaca un grupo de técnicas conocidas con el nombre de deep learning o aprendizaje profundo. Estas técnicas podrían considerarse modelos abstractos de alto nivel donde el denominador común son arquitecturas compuestas por un elevado número de capas de transformaciones de diversa índole, tanto lineales como no lineales. Ciñéndonos únicamente a las redes neuronales artificiales (RNA), una idea inspirada en la forma de trabajar del cerebro humano, si bien mientras las redes neuronales tradicionales solo contienen dos o tres capas, las redes profundas pueden tener actualmente algo más de cien. La gran aportación de las técnicas de deep learning [2] se encuentra en entrenar arquitecturas funcionales profundas (modelos complejos con un gran número de capas), donde las técnicas tradicionales fallan debido al bajo gradiente en la adaptación de los pesos de las capas más internas. Por otra parte, estas técnicas son precursoras en su escalabilidad respecto a la cantidad de datos de entrada; es decir, cuantos más datos de entrada existen, mejor es su comportamiento al utilizar técnicas macroscópicas. Las técnicas de aprendizaje profundo se están aplicando a la conducción autónoma con el objeto de detectar viandantes, señales de tráfico o semáforos. La investigación médica es otro campo de aplicación en la lucha contra el cáncer detectando células cancerígenas, o en la identificación y reconocimiento de patrones en imágenes capturadas por satélites, procesado del lenguaje natural, etc. Básicamente, la forma de abordar el aprendizaje profundo, mediante redes naturales artificiales, es entrenar una red neuronal desde cero, con la problemática de que son necesarios muchos datos para entrenar la red, lo que demanda periodos de tiempo prolongados. O bien reutilizar una red entrenada previamente (Transfer Learning) para aprender nuevos patrones, modificando los pesos de las capas de la red. Este último enfoque es más rápido y sencillo que el entrenamiento desde cero, y es más útil cuando no se disponen de muchos datos para entrenar, ya que dispone de características ya aprendidas. 246 Capítulo 15. Aprendizaje Automático (Machine Learning) 15.1. Máquinas de vectores soporte Existen múltiples algoritmos de aprendizaje automático pero en este apartado el objeto es profundizar en las máquinas de vectores soporte (SVM, Support Vector Machine). Una máquina de vectores soporte es un procedimiento de aprendizaje automático que toma datos de entrada y los clasifica en dos categorías distintas. Esta máquina toma los datos de entrada en un espacio multidimensional, para a continuación, usando técnicas de regresión busca un hiperplano o hipersuperficie ndimensional que divida el espacio en dos semiespacios, separando las dos clases de datos en cada uno de los semiespacios. Una vez definida la máquina de vectores soporte, analiza los nuevos inputs con respecto a la hipersuperficie y los clasifica adecuadamente en una de las categorías. Principalmente, las máquinas de vectores soporte fueron desarrolladas en los comienzos como una técnica de aprendizaje supervisado, idóneas para resolver problemas de clasificación, aunque actualmente el número de aplicaciones es innumerable como regresión, multiclasificación, agrupación, etc., habiéndose aplicado con éxito en visión artificial machine visión, reconocimiento de objetos y patrones, categorización automática de textos, análisis de series temporales,… [100] Aunque es reconocido que las máquinas de vectores soporte son estrategias muy eficientes, presentan ventajas y desventajas. Entre las ventajas, se tiene: • Alta capacidad de generalización con nuevos datos cuando el modelo ha sido correctamente parametrizado. • El modelo final es simple al consistir en una combinación de unos cuantos vectores soporte. • El proceso de entrenamiento es independiente del número de atributos. • Emplea una serie de puntos de entrenamiento óptimos en la función de decisión (vectores soporte), por lo que también es eficiente en memoria. • Es un problema de optimización convexo cuadrático, lo que quiere decir que el mínimo es único. 247 Capítulo 15. Aprendizaje Automático (Machine Learning) • La función de decisión se esquematiza mediante unas funciones específicas denominadas kernels lo que proporciona una alta versatilidad para resolver problemas diversos. • Los modelos dependen de un conjunto de parámetros no muy extenso. • Los vectores soporte (pesos de entrenamiento de la función de decisión) se optimizan en el proceso. • Muy eficaz cuando el número de muestras es inferior al número de dimensiones. • Muy potente en altas dimensiones. En cuanto a los kernels, son funciones matemáticas específicas donde los datos iniciales se redimensionan al objeto de alcanzar una separabilidad, convirtiendo un problema de clasificación no lineal en el espacio dimensional original, en un problema más simple, pero a costa de incrementar el número de dimensiones no referenciado linealmente con el espacio origen. Otro método teórico alternativo de gran popularidad son las redes neuronales artificiales, pudiendo resolver problemas difíciles de una forma mucho más simple que con otros métodos. Sin embargo, a pesar de presentar cierta similitud con las máquinas de vectores soporte, estos últimos, teóricamente hablando, se encuentran más consolidados y permiten una mejor extrapolación. Las RNA buscan imitar a los cerebros biológicos con un modelo muy similar a un conjunto de neuronas simples artificiales; empero, no se tiene muy claro, por parte de los investigadores, si imitar a los cerebros biológicos sea lo más conveniente para que una máquina alcance algún día el reto de pensar como los humanos o podría existir otra forma más eficiente de acometer la resolución de un problema haciendo aquello que las máquinas hacen muy bien: calcular rápidamente y con gran precisión. Las máquinas de vectores soporte surgen a partir de la teoría de aprendizaje estadístico de Vapnik (1998), que fue desarrollada en sus inicios para resolver problemas de clasificación binaria, aunque en la actualidad se utiliza para resolver otros tipos de problemas (multiclasificación, agrupamiento, regresión,…). Las máquinas de vectores soporte pertenecen a la categoría de clasificadores lineales [5] 248 Capítulo 15. Aprendizaje Automático (Machine Learning) que hacen uso de separadores lineales o hiperplanos, bien en el espacio original de las entradas o bien en un espacio transformado (espacio de características) en el caso de que las entradas no pudieran separarse linealmente en el espacio origen. El hecho de transformar el espacio persigue disminuir la complejidad en el propio espacio origen pero a costa de incrementar el número dimensiones donde el hiperplano de separación se define mediante un conjunto de funciones matemáticas denominadas kernels. Habitualmente la mayoría de los métodos de aprendizaje se centran en minimizar los errores que genera el modelo formado a partir de los datos de entrenamiento (error empírico), si bien las máquinas de vectores soporte minimizan el riesgo estructural, creando un hiperplano de separación que se coloca equidistante de los datos más cercanos de cada tipo para conseguir maximizar el margen a cada lado del hiperplano. En la especificación de este hiperplano, únicamente se consideran los datos de entrenamiento posicionados justamente en la frontera, siendo estos datos en sí los llamados vectores soporte. Este hiperplano de margen máximo presenta buenos resultados en la comunidad científica minimizando el problema de sobreajuste de los datos de entrenamiento. Desde un punto de vista mucho más teórico, la optimización del margen geométrico es un problema encuadrado en la optimización cuadrática con restricciones lineales, el cual puede ser abordado con éxito mediante técnicas de programación cuadrática. La convexidad necesaria para su resolución garantiza la existencia y unicidad de la solución encontrada, mientras que en una RNA no se dispone de esa garantía de unicidad. La aplicación de máquinas de vectores soporte a los problemas no lineales ha sido recibida con éxito entre científicos e ingenieros, debido a que las máquinas de vectores soporte están basadas en el principio de minimización del riesgo estructural (SRM, Structural Risk Minimization), según lo reflejado en la teoría de aprendizaje estadístico de Vapnik. Este principio es mucho mejor que el principio de minimización del riesgo empírico (ERM, Empirical Risk Minimization) utilizado por las RNA. Las ventajas que tienen las máquinas de vectores soporte se pueden resumir en minimización del riesgo estructurado y pocos parámetros a ajustar. 249 Capítulo 15. Aprendizaje Automático (Machine Learning) Figura 15.1. Hiperplano de separación en un espacio bidimensional con dos clases separables. En definitiva, las máquinas de vectores soporte definen y construyen un hiperplano como superficie de decisión que clasifica una población en función de la partición en subespacios de un conjunto de variables, con margen máximo de separación entre las dos clases de los datos. De esta forma, los vectores soporte se alinean con las observaciones de entrenamiento a modo de soporte para posicionar de forma óptima la superficie de decisión. Las máquinas de vectores soporte surgen de la teoría de aprendizaje probabilístico y minimización de riesgo estructural donde la tasa de error de generalización está limitada por la suma del error de entrenamiento. La fase de entrenamiento de los clasificadores máquinas de vectores soporte [5] comienzan transformando los input en un espacio de dimensiones incrementadas, donde cada unidad de información se descompone en un descriptor, especificando un kernel para resolver un problema de optimización cuadrática que ajusta el hiperplano óptimo donde cada una de sus componentes pertenecerá a uno de los dos semiespacios con el número de características concretado por el número de vectores soporte. El origen de las máquinas de vectores soporte es una función Φ implícita que transforma los datos de entrada en un espacio de características de altas dimensiones definido por alguna función kernel; por ejemplo, una función definida como producto interno 〈Φ(x),Φ(x´)〉 de las imágenes de dos puntos de datos x, x´, en el espacio de 250 Capítulo 15. Aprendizaje Automático (Machine Learning) características, donde se realiza el aprendizaje. De este modo, usando la aplicación de transformación no lineal Φ:X→H, el producto escalar 〈Φ(x),Φ(x´)〉 se puede representar como una función kernel k [62]: (15.1) k(x, x´) = 〈Φ(x), Φ(x´)〉 Una propiedad especialmente interesante de las máquinas de vectores soporte o bien otros sistemas basado en kernels es que, una vez que se ha seleccionado una función kernel válida, se puede operar en espacios de cualquier dimensión con poco costo de procesado computacional. Una ventaja añadida a las máquinas de vectores soporte y los kernel es que se puede definir un kernel concreto para un problema específico que podría aplicarse directamente a los datos sin un proceso de extracción. Esto puede resultar una propiedad fundamental en ciertos problemas donde el proceso de extracción pierde parte de la estructura de los propios datos. En clasificación, las máquinas de vectores soporte separan las distintas clases de datos con un hiperplano [1] 〈w, Φ(x)〉 + b = 0 (15.2) Correspondiente a la función de decisión f(x) = signo(〈w, Φ(x)〉 + b) (15.3) Se puede demostrar matemáticamente que el óptimo es aquel que tiene el margen máximo de separación entre las dos clases (Vapnik 1998), cuya solución se obtiene resolviendo un problema de optimización cuadrático con restricciones y toma la forma w = ∑i αi Φ(xi ), función de un subconjunto de patrones de entrenamiento posicionados en el propio margen. Estos patrones de entrenamiento, llamados vectores soporte, tienen toda la información relevante del problema de clasificación, a modo de una base. En el caso de clasificación con márgenes débiles, el problema de optimización toma la forma: m 1 C minimizar t(w, ξ) = ‖w‖2 + ∑ ξi 2 m (15.4) i=1 251 Capítulo 15. Aprendizaje Automático (Machine Learning) yi (〈Φ(xi ), w〉 + b) ≥ 1 − ξi (i = 1 … m) ξi ≥ 0 (i = 1 … m) Con ‖ ‖ el operador norma L2, m el número de patrones de entrenamiento y ξi ≥ 0 y yi = ±1. Se puede demostrar que la solución w tiene una forma del tipo m w = ∑ αi yi Φ(xi ) (15.5) i=1 Donde los coeficientes de los vectores soporte son no nulos cuando un punto (xi, yi) se sitúa en la restricción. Asimismo, los coeficientes αi se obtienen resolviendo el siguiente problema de programación cuadrática dual: m m i=1 i,j=1 1 maximizar W(α) = ∑ αi − ∑ αi αj yi yj k(xi , xj ) 2 0 ≤ αi ≤ C (i = 1 … m) m (15.6) m ∑ αi yi = 0 i,j=1 El cual es un problema cuadrático típico de la forma: 1 minimizar c T x + x T H 2 (15.7) b ≤ Ax ≤ b + r l≤x≤u Con HЄℝmxn, Hij=yiyj k(xi,xj), c=(1,…,1)Єℝm, u=(C,…,C)Єℝm, l=(0,…,0)Єℝm, A=(y1,…,ym)Єℝm, b=0, r=0. Indudablemente, este problema puede resolverse con técnicas clásicas de programación cuadrática. El parámetro de costo c controla lo que paga el algoritmo SVM al clasificar erróneamente un punto de entrenamiento y la función de predicción. Un valor c alto obliga a las máquinas de vectores soporte a crear una función de predicción lo suficientemente complicada como para clasificar los puntos de entrenamiento, mientras que un parámetro c más bajo hará que la función de predicción sea más simple. De esta forma, estas máquinas de vectores soporte se llaman C-SVM. Una formulación similar de clasificación es emplear un parámetro 252 Capítulo 15. Aprendizaje Automático (Machine Learning) similar al C, la ν-SVMs donde el parámetro ν es un límite superior en el error de entrenamiento y un límite inferior para los vectores soporte establecerá un control acerca de la complejidad de la función de clasificación. Para los problemas de detección (o clasificación de una clase), la máquinas de vectores soporte detectan valores extraños en un conjunto de datos, estableciendo un límite de decisión esférico alrededor de un conjunto de puntos datos empleando un conjunto de vectores soporte que calculan el límite de la esfera. m 1 1 minimizar t(w, ξ, ρ) = ‖w‖2 − ρ + ∑ ξi 2 mν i=1 (15.8) 〈Φ(xi ), w〉 + b ≥ ρ − ξi (i = 1 … m) ξi ≥ 0 (i = 1 … m) El parámetro ν controla el volumen de la esfera y, por tanto, el número de valores extraños encontrados. El valor de ν establece un límite superior en la fracción de valores extraños encontrados en los datos. Las máquinas de vectores soporte pueden adaptarse para resolver problemas de regresión denominados SVR (Support Vector Regression) [43]. A partir de unos datos de entrenamiento, es posible cuasi-ajustarlos mediante una función definida por unos parámetros w que explicitan dicha función [100] f(x) = 〈w, Φ(x)〉 + b = 0 (15.9) En el caso de regresión se define una función de pérdida de tal manera que esta función no considera los errores menores de un umbral Є>0 permitiendo cierta dispersión en la solución. Dado lo difícil que es que los datos de entrenamiento se ajusten al modelo con un error nulo, se emplea un modelo débil introduciendo dos − variables de holgura, ξ+ i y ξi , con lo cual se estima dicho error. m 1 C − minimizar t(w, ξ) = ‖w‖2 + ∑(ξ+ i + ξi ) 2 m i=1 (〈Φ(xi ), w〉 + b)−yi − ϵ − ξ+ i (15.10) ≤0 yi − (〈Φ(xi ), w〉 + b) − ϵ − ξ− i ≤0 253 Capítulo 15. Aprendizaje Automático (Machine Learning) − ξ+ i , ξi ≥ 0 (i = 1 … m) Las funciones kernel son funciones que consiguen ejecutar un cálculo simplificado y más rápido mediante la transformación del espacio de datos de tal forma que estos sean linealmente separables en alguna dimensión superior. Estas funciones deben cumplir, al menos, tres propiedades fundamentales: continuas, simétricas y positivas, los cuales son los requerimientos mínimos para poder expresarse como un producto interno entre dos puntos en un espacio de características, convirtiendo el problema original en un sencillo problema de clasificación lineal en un espacio dimensional mayor con una importante reducción del costo de procesado computacional. Los kernels más habituales son [1] • kernel lineal (15.11) k(x, x´) = 〈x, x´〉 • función de base radial Gaussiana (RBF, Gaussian Radial Basis Function) k(x, x´) = exp (−σ‖x − x´‖2 ) σ > 0 • (15.12) kernel polinomial k(x, x´) = (escala ∙ 〈x, x´〉 + offset)n • (15.13) kernel tangente hiperbólica o sigmoidal k(x, x´) = tanh(escala ∙ 〈x, x´〉 + offset) • función de Bessel de primera especie k(x, x´) = • Besseln(ν+1) (σ‖x − x´‖) (15.15) (‖x − x´‖)−n(ν+1) función de base radial de Laplace (15.16) k(x, x´) = exp (−σ‖x − x´‖) • (15.14) kernel de base radial ANOVA d n k k 2 k(x, x´) = (∑ exp (−σ(x − x´ ) )) (15.17) k=1 • kernel de splines lineales en una dimensión k(x, x´) = 1 + xx´min (x, x´) − 254 x + x´ min(x, x´)3 min(x, x´) + 2 3 (15.18) Capítulo 15. Aprendizaje Automático (Machine Learning) k(x, x´) = 1 + xx´min (x, x´) − x + x´ min(x, x´)3 min(x, x´) + 2 3 o para el caso multidimensional n k(x, x´) = ∏ k(x k , x´k ) (15.19) k=1 Los kernels Gaussianos, Laplacianos y Besselianos son generalistas, empleados cuando no se tiene más información. El kernel polinomial se suele emplear en el procesamiento de imágenes y los kernels ANOVA y de splines tienen su campo de aplicación en los análisis de regresión. Desde un punto de vista constructivo de menor complejidad a mayor, se puede simplificar la ecuación 〈w, Φ(x)〉 + b = 0 en la forma separable 〈w, x〉 + b = 0 con w y b coeficientes reales. El hiperplano de separación tiene que cumplir las siguientes restricciones para todo xi=(x1,…,xm)Єℝm, sin error alguno 〈w, x〉 + b = 0 (15.20) 〈w, xi 〉 + b ≥ 0 si yi = +1 (15.21) 〈w, xi 〉 + b ≤ 0 si yi = −1 (i = 1 … m) (15.22) También se puede escribir yi (〈w, xi 〉 + b) ≥ 0 (i = 1 … m) (15.23) Llegando a una forma atenuada yi D(xi ) ≥ 0 (i = 1 … m) (15.24) Obviamente el hiperplano separador no es único sino que existen infinitos hiperplanos que cumplen las restricciones. La cuestión es si de entre este conjunto infinito de hiperplanos se pude encontrar uno que sea óptimo. Para ello, se define el margen del hiperplano de separación, llamado τ, como la mínima distancia entre dicho hiperplano y el dato más cercano de cualquiera de ambas clases. Un hiperplano de separación es óptimo cuando su margen es máximo. Evidentemente, el hiperplano de separación óptimo es aquel que equidista del dato más cercano de cada clase. Esto se puede ver mediante una sencilla demostración por reducción al absurdo. Supóngase que la distancia del hiperplano óptimo al dato más 255 Capítulo 15. Aprendizaje Automático (Machine Learning) próximo de la clase +1 fuera inferior al correspondiente al dato más cercano de la clase −1. Esto quiere decir que el hiperplano se puede alejar del valor de la clase +1 una distancia tal que la distancia del hiperplano a dicho dato sea superior a la anterior y, a su vez, siga siendo inferior a la distancia al dato más cercano de la clase −1. De esta forma, se llega al absurdo de que se puede aumentar el tamaño del margen cuando inicialmente se había partido de que este era máximo (hiperplano óptimo). Así, se aplica un razonamiento similar en el caso de suponer que la distancia del hiperplano óptimo al dato más próximo de la clase −1 fuese inferior al correspondiente al dato más cercano de la clase +1. Por geometría, se estima que la distancia entre un hiperplano de separación D(x) y un dato x´ viene dada por D(x´) ‖w‖ (15.25) El vector w y el parámetro b definen el hiperplano D(x) y este vector es perpendicular al hiperplano. Como yi D(xi ) ≥ 0 todos los datos de entrenamiento cumplirán que yi D(xi ) ‖w‖ ≥ τ (i = 1 … m) (15.26) De la ecuación anterior, se infiere que encontrar el hiperplano óptimo es equivalente a encontrar el valor de w que maximiza el margen. Sin embargo, existen infinitas soluciones que solo se diferencian en w. Evidentemente, todas las funciones λ(〈w, x〉 + b) con λ∈ℝ constituyen el mismo hiperplano. Para limitar todo este conjunto de soluciones se tiene yi D(xi ) ≥ τ‖w‖ (i = 1 … m) (15.27) Si τ‖w‖ = 1, aumentar el margen es equivalente a disminuir la norma de w τ= 1 ‖w‖ (15.28) Por definición, un hiperplano de separación óptimo es de margen máximo y, por tanto, un valor mínimo de ‖w‖, y tiene que cumplir yi D(xi ) ≥ τ‖w‖ y τ = 1/‖w‖ yi D(xi ) > 1 (i = 1 … m) 256 (15.29) Capítulo 15. Aprendizaje Automático (Machine Learning) Que es equivalente a yi (〈w, xi 〉 + b) ≥ 1 (i = 1 … m) (15.30) A mayor margen, mayor es la distancia de separación que existirá entre ambas clases. Aquellos datos tales que yi (〈w, xi 〉 + b) = 1 son los vectores soporte. Así, el hiperplano óptimo constituye un problema equivalente a encontrar los valores de w y b que minimizan el funcional f(w) = ‖w‖ y cumplen las ligaduras yi (〈w, xi 〉 + b) ≥ 1 quedando el sistema como minimizar f(w) = 1 1 ‖w‖2 = 〈w, w〉 2 2 (15.31) yi (〈w, xi 〉 + b) − 1 ≥ 0 (i = 1 … m) Este sistema constituye un problema de programación cuadrático que puede resolverse mediante la teoría clásica de optimización. Esta teoría define un problema primal con una forma dual si la función a optimizar y las ligaduras son funciones estrictamente convexas. Resolver el problema dual resuelve el problema primal. El problema descrito en este apartado cumple el criterio de convexidad y según lo indicado antes, tiene un dual. Por tanto, es necesario construir un problema de optimización sin restricciones y hacer uso de la Lagrangiana: m 1 L(w, b, α) = 〈w, w〉 − ∑ αi [yi (〈w, xi 〉 + b) − 1] 2 (15.32) i=1 Con αi los multiplicadores de Lagrange. Aplicando la primera condición de KKT (KarushKuhn-Tucker) [100] m ∂L(w ∗ , b∗ , α) = w ∗ − ∑ αi yi xi = 0 (i = 1 … m) ∂w (15.33) i=1 m ∂L(w ∗ , b∗ , α) = ∑ αi yi = 0 (i = 1 … m) ∂b (15.34) i=1 La segunda condición KKT: αi [1 − yi (〈w ∗ , xi 〉 + b∗ )] = 0 (i = 1 … m) (15.35) Quedando 257 Capítulo 15. Aprendizaje Automático (Machine Learning) m ∗ w = ∑ αi yi xi = 0 (i = 1 … m) (15.36) i=1 m ∑ αi yi = 0 (i = 1 … m) (15.37) i=1 Estas ecuaciones definen el problema dual m m m 1 L(w, b, α) = 〈w, w〉 − ∑ αi yi 〈w, xi 〉 − b ∑ αi yi + ∑ αi 2 i=1 i=1 (15.38) i=1 Arreglando la ecuación m m m 1 L(α) = − (∑ αi yi xi ) (∑ αj yj xj ) + ∑ αi 2 i=1 j=1 m (15.39) i=1 m 1 L(α) = ∑ αi − ∑ αi αj yi yj 〈xi , xj 〉 2 i=1 (15.40) i,j=1 Se ha convertido el el problema de minimización primal en su dual maximizante sujeto a las ligaduras de los multiplicadores de Lagrange: m m i=1 i,j=1 1 maximizar L(α) = ∑ αi − ∑ αi αj yi yj 〈xi , xj 〉 2 m (15.41) ∑ αi yi = 0 (i = 1 … m) i=1 αi ≥ 0 (i = 1 … m) Este problema se puede resolver mediante técnicas clásicas de programación cuadrática, igual que el primal, aunque el coste computacional de resolver este problema es inferior que el del primal. De la segunda condición KKT, se deduce que si los αi>0 entonces yi (〈w ∗ , xi 〉 + b∗ ) = 1 (15.42) Cuando la restricción es únicamente igual que, se tienen los vectores soporte, y así puede deducirse que solo los datos con αi>0 son los vectores soporte. De esta forma, 258 Capítulo 15. Aprendizaje Automático (Machine Learning) el hiperplano de separación se define mediante los vectores soporte y el resto de los datos tendrán asociado un αi=0. El parámetro b∗ se calcula a partir del conjunto de vectores soporte Mvs 1 b = ∑ (yvs − 〈w ∗ , xvs 〉) Mvs ∗ (15.43) vs=1 Generalmente los problemas reales están sometidos a algún tipo de ruido distorsionador y por tanto no son linealmente separables. En esta situación, hay errores de clasificación en algunos de los datos de partida que constituyen el conjunto de entrenamiento. De esta forma, se tienen dos tipos de datos. El primero, formado por aquellos que están dentro del margen de la clase correcta, de acuerdo al hiperplano de separación. El segundo, son los datos que caen al otro lado de dicho hiperplano. Estos dos casos son no separables [no cumplen la condición yi (〈w, xi 〉 + b) ≥ 1], pero los primeros están clasificados de forma correcta y los segundos no. No obstante, para poder encontrar un hiperplano óptimo para los datos que si son separables, se define un grupo de variables reales positivas, llamadas variables de holgura ξi (i=1,...,m) yi (〈w, xi 〉 + b) ≥ 1 − ξi (i = 1 … m) (15.44) Para cada par (xi,yi), su variable de holgura ξi constituye una desviación del caso separable, con lo que variables de holgura nulas corresponden a datos separables. Mayores que cero se corresponden con datos no separables y mayores que uno con datos no separables y mal clasificados. Sumando las variables de holgura, se tiene una medida del número de datos no separables. Para no clasificar erróneamente muchos datos, la función a optimizar debe incluir los errores de clasificación del hiperplano de separación m 1 f(w, ξ) = ‖w‖2 + C ∑ ξi 2 (15.45) i=1 C es una constante elegida por el operador que permite controlar el grado de sobreajuste del clasificador y el número de datos no separables. C muy grande 259 Capítulo 15. Aprendizaje Automático (Machine Learning) compensa con ξi pequeños y los datos son más separables. C muy pequeño se contrarresta con ξi grandes y un gran número de datos están mal clasificados. Con lo que el nuevo problema de optimización queda como m 1 minimizar 〈w, w〉 + C ∑ ξi 2 i=1 (15.46) yi (〈w, xi 〉 + b) + ξi − 1 ≥ 0 ξi ≥ 0 (i = 1 … m) Este hiperplano recibe el nombre de hiperplano de separación de margen blando o suave, como contrapartida al perfectamente separable, conocido como hiperplano de margen duro. Correlativamente a como se hizo anteriormente, cuando el problema de optimización se corresponde con un espacio de características de muy alta dimensionalidad, se puede simplificar transformándolo en el dual. De una forma similar a como se hizo antes, se construye la lagrangiana m m i=1 i=1 1 L(w, b, ξ, α, β) = 〈w, w〉 + C ∑ ξi − ∑ αi [yi (〈w, xi 〉 + b) + ξi − 1] 2 m (15.47) − ∑ βi ξi i=1 Aplicando las condiciones de KKT m ∂L = w ∗ − ∑ αi yi xi = 0 ∂w (15.48) i=1 m ∂L = ∑ αi yi = 0 ∂b (15.49) ∂L = C − αi − βi = 0 ∂ξi (15.50) αi [1 − yi (〈w ∗ , xi 〉 + b∗ )−ξi ] = 0 (i = 1 … m) (15.51) βi ∙ ξi = 0 (i = 1 … m) (15.52) i=1 Resolviendo se relacionan las variables del problema primal (w,b,ξ) con las del dual (α,β) 260 Capítulo 15. Aprendizaje Automático (Machine Learning) m m 1 L(α) = ∑ αi − ∑ αi αj yi yj 〈xi , xj 〉 2 i=1 (15.53) i,j=1 El problema dual maximizante queda m m i=1 i,j=1 1 maximizar L(α) = ∑ αi − ∑ αi αj yi yj 〈xi , xj 〉 2 m (15.54) ∑ αi yi = 0 i=1 0 ≤ αi ≤ C (i = 1 … m) De la ecuación C=αi+βi se deduce que si αi=0 entonces C=βi y de βi·ξi=0 se deduce que ξi=0 (datos separables). Para el caso no separable, ξi>0 y de βi·ξi=0 se tiene que βi=0, y de C=αi+βi se llega a αi=C y a [1 − yi (〈w ∗ , xi 〉 + b∗ )−ξi ] = 0 (15.55) Esta ecuación tiene dos alternativas. En la primera, xi es no separable y está bien clasificado (yi (〈w ∗ , xi 〉 + b∗ )−ξi ≥ 0) con lo que ξi = 1 − |yi (〈w ∗ , xi 〉 + b∗ )|. En la segunda xi es no separable y está mal clasificado (yi (〈w ∗ , xi 〉 + b∗ )−ξi < 0) con lo que ξi = 1 + |yi (〈w ∗ , xi 〉 + b∗ )|. Para el caso 0<αi<C, considerando la ligadura C=αi+βi se deduce que βi no puede ser nulo, y de βi·ξi=0 se extrae que ξi=0. Análogamente, para el caso 0<αi<C, de αi [1 − yi (〈w ∗ , xi 〉 + b∗ )−ξi ] = 0 y de ξi=0 se llega a 1 − yi (〈w ∗ , xi 〉 + b∗ ) = 0 (15.56) Así, xi es vector soporte si y solo si 0<αi<C. El parámetro b∗ se calcula a partir de m b = yi − ∑ αi∗ yi 〈xj , xi 〉 (0 < αi < C) ∗ (15.57) j=1 Con αi∗ = 1 … m correspondientes al problema dual. Para datos cuasi-separables (αi∗ ≠ 0) hay dos tipos de datos, los que 0 < α∗i < C y los que α∗i = C (datos no separables que corresponden a vectores soporte acotados). Para concluir se llega al caso en que los datos no son separables/cuasi-separables y es necesario evolucionar de los hiperplanos lineales hacia otro tipo de estructura tipo 261 Capítulo 15. Aprendizaje Automático (Machine Learning) funciones no lineales que definen espacios transformados de alta dimensionalidad en los cuales se buscan los hiperplanos de separación óptimos en dichos espacios transformados (espacio de características). De esta forma, la aplicación de transformación no lineal Φ:X→H hace corresponder a cada dato x con un punto en el espacio de características. Construyendo un hiperplano de separación lineal en el nuevo espacio, la frontera de decisión lineal, obtenida en el espacio de características, será convertida en una frontera no lineal en el espacio original. La función de decisión en el espacio de características viene dada por 〈w, Φ(x)〉 y en dual la función de decisión se obtiene de w ∗ = ∑m i=1 αi yi xi quedando m 〈w, Φ(x)〉 = ∑ α∗i yi K( x, xi ) (15.58) i=1 Siendo la función kernel k(x, x´) = 〈Φ(x), Φ(x´)〉 un producto escalar. El problema dual maximizante queda m m i=1 i,j=1 1 maximizar ∑ αi − ∑ αi αj yi yj 〈xi , xj 〉 2 m (15.59) ∑ αi yi = 0 i=1 0 ≤ αi ≤ C (i = 1 … m) En el caso de regresión se parte de unos datos de entrenamiento y se asume que es posible cuasi-ajustarlos mediante una función lineal a través de unos parámetros w f(x) = 〈w, x〉 + b = 0 (15.60) Tal como se ha comentado previamente se utiliza un modelo blando mediante dos − variables de holgura, ξ+ i y ξi , similar al empleado en el problema de clasificación. La suma de todas las variables de holgura estiman el número de datos con error no nulo. m 1 − minimizar 〈w, w〉 + C ∑(ξ+ i + ξi ) 2 i=1 (〈w, xi 〉 + b)−yi − ϵ − ξ+ i ≤0 yi − (〈w, xi 〉 + b) − ϵ − ξ− i ≤0 262 (15.61) Capítulo 15. Aprendizaje Automático (Machine Learning) ξi+ , ξ− i ≥ 0 (i = 1 … m) Para la transformación al problema dual se necesita calcular la función Lagrangiana L(w, b, ξ+ , ξ− , α+ , α− , β+ , β− ) m m 1 − = 〈w, w〉 + C ∑ ∑(ξ+ i + ξi ) 2 i=1 i=1 m (15.62) + ∑ αi+ [(〈w, xi 〉 + b)−yi − ϵ − ξi+ ] i=1 m + m ∑ αi− [yi i=1 − (〈w, xi 〉 + b) − ϵ − ξ− i ] + + ∑ β+ i ξi i=1 m − − ∑ β− i ξi i=1 Con las condiciones KKT m m ∂L − = w + ∑ α+ i xi − ∑ αi xi = 0 ∂w i=1 (15.63) i=1 m m ∂L = ∑ αi+ − ∑ α− i =0 ∂b (15.64) ∂L + = C − α+ i − βi = 0 ∂ξ+ i (15.65) ∂L − = C − α− i − βi = 0 ∂ξ− i (15.66) + α+ i [(〈w, xi 〉 + b)−yi − ϵ − ξi ] = 0 (15.67) − α− i [yi − (〈w, xi 〉 + b) − ϵ − ξi ] = 0 (15.68) + β+ i ξi = 0 (15.69) − β− i ξi = 0 (15.70) i=1 i=1 Resolviendo se obtiene la formulación del problema dual m + −) L(α , α = m ∑(α− i i=1 − αi+ ) yi m + − ϵ ∑(α− i + αi ) i=1 (15.71) 1 + + − − ∑ (α− i − αi )(αj − αj )〈xi , xj 〉 2 i,j=1 El problema dual maximizante queda 263 Capítulo 15. Aprendizaje Automático (Machine Learning) m maximizar m ∑(α− i i=1 − αi+ ) yi + − ϵ ∑(α− i + αi ) i=1 m − 1 + + − ∑ (α− i − αi )(αj − αj )〈xi , xj 〉 2 i,j=1 (15.72) m − ∑(α+ i − αi ) = 0 i=1 − 0 ≤ α+ i , αi ≤ C (i = 1 … m) El parámetro b∗ se extrae de b∗ = yi − 〈w ∗ , xi 〉 + ϵ (0 < α+ i < C) (15.73) b∗ = yi − 〈w ∗ , xi 〉 + ϵ (0 < α− i < C) (15.74) + − El valor de b∗ siempre es único ya que α+ i ∙ αi = 0. Si se cumple 0 < αi < C entonces α− i = 0 y viceversa. En el caso de que no fuera posible usar una función lineal, se puede emplear un método similar al problema de clasificación no separable linealmente. Los datos del espacio origen se transforman en el espacio de características, donde se puede realizar un análisis lineal. Esta transformación va a depender del kernel concreto. También es necesario seleccionar Є y C. Así, considerando la función lineal m − f(x) = ∑(α+ i − αi ) K(x, xi ) (15.75) i=1 − α+ i y αi se obtienen resolviendo el problema dual m maximizar m ∑(α− i i=1 − α+ i ) yi + − ϵ ∑(α− i + αi ) i=1 m 1 + + − − ∑ (α− i − αi )(αj − αj )K〈xi , xj 〉 2 i,j=1 m − ∑(α+ i − αi ) = 0 i=1 − 0 ≤ α+ i , αi ≤ C (i = 1 … m) 264 (15.76) Capítulo 15. Aprendizaje Automático (Machine Learning) Seguidamente se van a exponer los resultados alcanzados en este trabajo utilizando el paquete e1071 de r-project [13]. La mayor parte del software existente en máquinas de vectores soporte se ha desarrollado para el C++, como el galardonado libsvm (Chang and Lin 2001) el cual ha sido el fundamento para el desarrollo del paquete e1071 (actualmente libsvm de 2019) de r-project [14]. Es cierto que r-project ofrece otros paquetes que implementan las máquinas de vectores soporte en r-project, como kernlab, klaR svmpath y shogun; no obstante, la potencia de cálculo ofrecida por libsvm ha hecho decantar la elección en este trabajo en el paquete e1071. En este sentido, los dos más importantes son e1071 y kernlab, siendo ambos metapaquetes muy similares en capacidades, lo cual permite optimizar modelos mediante ajustes de parámetros. El paquete e1071 es un paquete bastante configurable, con múltiples modelos y funciones especializadas del tipo Naive Bayes, SVM, transformadas de Fourier, máquinas de vectores soporte, etc. entre otras, con un elevado rendimiento, mientras que kernlab presenta una selección de modelos bastante limitada, peculiaridades las cuales han hecho seleccionar finalmente al paquete e1071 para este trabajo. Por otra parte, klaR se basa en el paquete SVMlight y algunas partes del código de klaR son bastante similares al e1071; sin embargo, SVMlight no presenta capacidad de clasificación multiclase ni entorno gráfico, características de las que si dispone el paquete e1071. El rendimiento del paquete svmpath depende en gran medida del valor del parámetro de regularización, el cual es computacionalmente costoso de obtener, requiriendo, como poco, algún conocimiento del resultado esperado, como por ejemplo error de prueba, número de vectores de soporte,... con la limitación de que actualmente svmpath solo admite clasificación binaria. De nuevo se vuelve a emplear R como entorno de programación dado su enfoque al área de la estadística y su potencia como software libre, heredada del lenguaje S. El paquete de r-project usado ha sido el e1071 que presenta un interface a libsvm, heredando así su potencia, aunque también complementado con la posibilidad de localización y visualización de parámetros óptimos con la función tune [14]. Este paquete es fruto de los trabajos del grupo de trabajo liderado por David Meyer (Technische Universität en Wien, Austria), e incluye los kernels más típicos (lineal, 265 Capítulo 15. Aprendizaje Automático (Machine Learning) polinomial, RBF, and sigmoidal), presentando diversas capacidades como multiclasificación y validación cruzada entre otras [26] [33]. Esencialmente, las máquinas de vectores soporte clasifican una población en función de la partición en subespacios de múltiples variables, construyendo un hiperplano óptimo como superficie de decisión, de manera que el margen de separación entre las dos clases en los datos se extiende al máximo. Los vectores soporte se refieren a las observaciones de entrenamiento como base para localizar óptimamente la superficie de decisión. El entrenamiento de una máquinas de vectores soporte consiste en convertir los datos de entrada en un espacio de características de altas dimensiones, definiendo el kernel, para a continuación resolver un problema de optimización cuadrática que ajuste el hiperplano óptimo y clasifique las transformadas características en dos tipos, siendo el número de características definido por el número de vectores de soporte. En otro orden de cosas, y tal como ya se ha explicado anteriormente, se ha ejecutado el algoritmo memético en cien ocasiones obteniendo una nube de puntos que se van a usar como datos de aprendizaje en el algoritmo máquina de vectores soporte. Debido a la filosofía de programación, los datos de partida proceden de una matriz llamada matrizfact, la cual presenta la siguiente estructura de información: entropia<-matrizfact[,1] factMmmm<-matrizfact[,2] factdecv<-matrizfact[,3] factdeca<-matrizfact[,4] La primera tarea es configurar las variables empleando dataframes, una clase de objetos especial en r-project de más alto nivel que las matrices y que van a ser necesarios en la carga de datos del paquete e1071: framematrizfact<-data.frame(entropia,factMmmm,factdecv,factdeca) Se toman los datos de partida, de los cuales se ha asumido el 90% para entrenamiento (training) y el restante 10% para prueba, verificación y/o validación (test). Como se ha indicado previamente, estos datos se encuentran ordenados por la entropía global EEG 266 Capítulo 15. Aprendizaje Automático (Machine Learning) de menor a mayor, donde se ha considerado más apropiado que los datos de entrenamiento sean los de entropía más baja y los de prueba los de entropía más alta, dado que el objetivo que se pretende es realizar el proceso de verificación con las entropías más altas, debido a que, como se ha visto antes, alcanzar entropías más altas se va volviendo cada vez más complejo y difícil en el procedimiento general. Con estos datos se construye una máquina de vectores soporte llamando al paquete e1071. library(e1071) aprendizajematrizfact<-framematrizfact[1:90,] pruebamatrizfact<-framematrizfact[91:100,] Para factMmmm, se parte del aprendizaje: tipo eps-regression kernel="radial" svm_ajustefactMmmm<svm(factMmmm~entropia+factdecv+factdeca,data=aprendizajematrizfact) Con los siguientes parámetros de ajuste: SVM-Type: eps-regression SVM-Kernel: radial cost: 1 gamma: 0.3333333 epsilon: 0.1 Number of Support Vectors: 74 En cuanto a la verificación: svm_prediccionfactMmmm<predict(svm_ajustefactMmmm,newdata=pruebamatrizfact) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: 267 Capítulo 15. Aprendizaje Automático (Machine Learning) errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmsvm_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-0.513055 Se puede repetir este cálculo para otros tipos de kernels: kernel="polynomial" svm_ajustefactMmmm<svm(factMmmm~entropia+factdecv+factdeca,data=aprendizajematrizfact,kernel="pol ynomial") Parámetros: SVM-Type: eps-regression SVM-Kernel: polynomial cost: 1 degree: 3 gamma: 0.3333333 coef.0: 0 epsilon: 0.1 Number of Support Vectors: 80 svm_prediccionfactMmmm<predict(svm_ajustefactMmmm,newdata=pruebamatrizfact) errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmsvm_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-2.382527 kernel="linear" svm_ajustefactMmmm<svm(factMmmm~entropia+factdecv+factdeca,data=aprendizajematrizfact,kernel="line ar") Parámetros: SVM-Type: eps-regression SVM-Kernel: linear 268 Capítulo 15. Aprendizaje Automático (Machine Learning) cost: 1 gamma: 0.3333333 epsilon: 0.1 Number of Support Vectors: 79 svm_prediccionfactMmmm<predict(svm_ajustefactMmmm,newdata=pruebamatrizfact) errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmsvm_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-0.5621577 kernel="sigmoid" svm_ajustefactMmmm<svm(factMmmm~entropia+factdecv+factdeca,data=aprendizajematrizfact,kernel="sig moid") Parámetros: SVM-Type: eps-regression SVM-Kernel: sigmoid cost: 1 gamma: 0.3333333 coef.0: 0 epsilon: 0.1 Number of Support Vectors: 82 svm_prediccionfactMmmm<predict(svm_ajustefactMmmm,newdata=pruebamatrizfact) errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmsvm_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-7.680438 Si se emplea un tipo de nu-regression dentro de los parámetros de la svm, se obtiene: kernel="radial" 269 Capítulo 15. Aprendizaje Automático (Machine Learning) svm_ajustefactMmmm<svm(factMmmm~entropia+factdecv+factdeca,data=aprendizajematrizfact,type="nuregression") Parámetros: SVM-Type: nu-regression SVM-Kernel: radial cost: 1 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 53 svm_prediccionfactMmmm<predict(svm_ajustefactMmmm,newdata=pruebamatrizfact) errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmsvm_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-0.856362 kernel="polynomial" svm_ajustefactMmmm<svm(factMmmm~entropia+factdecv+factdeca,data=aprendizajematrizfact,kernel="pol ynomial",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: polynomial cost: 1 degree: 3 gamma: 0.3333333 coef.0: 0 nu: 0.5 270 Capítulo 15. Aprendizaje Automático (Machine Learning) Number of Support Vectors: 49 svm_prediccionfactMmmm<predict(svm_ajustefactMmmm,newdata=pruebamatrizfact) errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmsvm_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-1.853394 kernel="linear" svm_ajustefactMmmm<svm(factMmmm~entropia+factdecv+factdeca,data=aprendizajematrizfact,kernel="line ar",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: linear cost: 1 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 47 svm_prediccionfactMmmm<predict(svm_ajustefactMmmm,newdata=pruebamatrizfact) errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmsvm_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-0.6805422 kernel="sigmoid" svm_ajustefactMmmm<svm(factMmmm~entropia+factdecv+factdeca,data=aprendizajematrizfact,kernel="sig moid",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: sigmoid 271 Capítulo 15. Aprendizaje Automático (Machine Learning) cost: 1 gamma: 0.3333333 coef.0: 0 nu: 0.5 Number of Support Vectors: 47 svm_prediccionfactMmmm<predict(svm_ajustefactMmmm,newdata=pruebamatrizfact) errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmsvm_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-6.564365 El error más pequeño es para nu-regression y kernel radial aunque seguido de cerca por eps-regression y kernel radial. En el caso de factdecv: tipo eps-regression kernel="radial" svm_ajustefactdecv<svm(factdecv~entropia+factMmmm+factdeca,data=aprendizajematrizfact) Parámetros: SVM-Type: eps-regression SVM-Kernel: radial cost: 1 gamma: 0.3333333 epsilon: 0.1 Number of Support Vectors: 82 svm_prediccionfactdecv<-predict(svm_ajustefactdecv,newdata=pruebamatrizfact) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvsvm_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-1.247499 272 Capítulo 15. Aprendizaje Automático (Machine Learning) Para otros kernels: kernel="polynomial" svm_ajustefactdecv<svm(factdecv~entropia+factMmmm+factdeca,data=aprendizajematrizfact,kernel="pol ynomial") Parámetros: SVM-Type: eps-regression SVM-Kernel: polynomial cost: 1 degree: 3 gamma: 0.3333333 coef.0: 0 epsilon: 0.1 Number of Support Vectors: 80 svm_prediccionfactdecv<-predict(svm_ajustefactdecv,newdata=pruebamatrizfact) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvsvm_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-1.9992021 kernel="linear" svm_ajustefactdecv<svm(factdecv~entropia+factMmmm+factdeca,data=aprendizajematrizfact,kernel="line ar") Parámetros: SVM-Type: eps-regression SVM-Kernel: linear cost: 1 gamma: 0.3333333 273 Capítulo 15. Aprendizaje Automático (Machine Learning) epsilon: 0.1 Number of Support Vectors: 88 svm_prediccionfactdecv<-predict(svm_ajustefactdecv,newdata=pruebamatrizfact) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvsvm_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-0.8440325 kernel="sigmoid" svm_ajustefactdecv<svm(factdecv~entropia+factMmmm+factdeca,data=aprendizajematrizfact,kernel="sig moid") Parámetros: SVM-Type: eps-regression SVM-Kernel: sigmoid cost: 1 gamma: 0.3333333 coef.0: 0 epsilon: 0.1 Number of Support Vectors: 89 svm_prediccionfactdecv<-predict(svm_ajustefactdecv,newdata=pruebamatrizfact) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvsvm_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-4.96416 Si se emplea un tipo de nu-regression dentro de los parámetros de la svm, se obtiene: kernel="radial" svm_ajustefactdecv<svm(factdecv~entropia+factMmmm+factdeca,data=aprendizajematrizfact,type="nuregression") Parámetros: 274 Capítulo 15. Aprendizaje Automático (Machine Learning) SVM-Type: nu-regression SVM-Kernel: radial cost: 1 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 51 svm_prediccionfactdecv<-predict(svm_ajustefactdecv,newdata=pruebamatrizfact) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvsvm_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-1.11684 kernel="polynomial" svm_ajustefactdecv<svm(factdecv~entropia+factMmmm+factdeca,data=aprendizajematrizfact, kernel="polynomial",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: polynomial cost: 1 degree: 3 gamma: 0.3333333 coef.0: 0 nu: 0.5 Number of Support Vectors: 49 svm_prediccionfactdecv<-predict(svm_ajustefactdecv,newdata=pruebamatrizfact) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvsvm_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-1.9824514 kernel="linear" 275 Capítulo 15. Aprendizaje Automático (Machine Learning) svm_ajustefactdecv<svm(factdecv~entropia+factMmmm+factdeca,data=aprendizajematrizfact, kernel="linear",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: linear cost: 1 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 47 svm_prediccionfactdecv<-predict(svm_ajustefactdecv,newdata=pruebamatrizfact) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvsvm_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-0.7945581 kernel="sigmoid" svm_ajustefactdecv<svm(factdecv~entropia+factMmmm+factdeca,data=aprendizajematrizfact, kernel="sigmoid",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: sigmoid cost: 1 gamma: 0.3333333 coef.0: 0 nu: 0.5 Number of Support Vectors: 46 svm_prediccionfactdecv<-predict(svm_ajustefactdecv,newdata=pruebamatrizfact) 276 Capítulo 15. Aprendizaje Automático (Machine Learning) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvsvm_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-2.873564 El error más pequeño es para nu-regression y kernel linear y a una diferencia mínima se tienen dos valores muy similares: nu-regression y kernel radial, y eps-regression y kernel linear, para concluir con una diferencia mínima respecto a los anteriores y epsregression y kernel radial. En el caso de factdeca: tipo eps-regression kernel="radial" svm_ajustefactdeca<svm(factdeca~entropia+factMmmm+factdecv,data=aprendizajematrizfact) Parámetros: SVM-Type: eps-regression SVM-Kernel: radial cost: 1 gamma: 0.3333333 epsilon: 0.1 Number of Support Vectors: 84 svm_prediccionfactdeca<-predict(svm_ajustefactdeca,newdata=pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecasvm_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.219604 Para otros kernels: kernel="polynomial" svm_ajustefactdeca<svm(factdeca~entropia+factMmmm+factdecv,data=aprendizajematrizfact,kernel="pol ynomial") Parámetros: 277 Capítulo 15. Aprendizaje Automático (Machine Learning) SVM-Type: eps-regression SVM-Kernel: polynomial cost: 1 degree: 3 gamma: 0.3333333 coef.0: 0 epsilon: 0.1 Number of Support Vectors: 79 svm_prediccionfactdeca<-predict(svm_ajustefactdeca,newdata=pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecasvm_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.250924 kernel="linear" svm_ajustefactdeca<svm(factdeca~entropia+factMmmm+factdecv,data=aprendizajematrizfact,kernel="line ar") Parámetros: SVM-Type: eps-regression SVM-Kernel: linear cost: 1 gamma: 0.3333333 epsilon: 0.1 Number of Support Vectors: 85 svm_prediccionfactdeca<-predict(svm_ajustefactdeca,newdata=pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecasvm_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.242205 kernel="sigmoid" 278 Capítulo 15. Aprendizaje Automático (Machine Learning) svm_ajustefactdeca<svm(factdeca~entropia+factMmmm+factdecv,data=aprendizajematrizfact,kernel="sig moid") Parámetros: SVM-Type: eps-regression SVM-Kernel: sigmoid cost: 1 gamma: 0.3333333 coef.0: 0 epsilon: 0.1 Number of Support Vectors: 89 svm_prediccionfactdeca<-predict(svm_ajustefactdeca,newdata=pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecasvm_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-4.275917 Si se emplea un tipo de nu-regression dentro de los parámetros de la svm, se obtiene: kernel="radial" svm_ajustefactdeca<svm(factdeca~entropia+factMmmm+factdecv,data=aprendizajematrizfact,type="nuregression") Parámetros: SVM-Type: nu-regression SVM-Kernel: radial cost: 1 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 51 279 Capítulo 15. Aprendizaje Automático (Machine Learning) svm_prediccionfactdeca<-predict(svm_ajustefactdeca,newdata=pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecasvm_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.171613 kernel="polynomial" svm_ajustefactdeca<svm(factdeca~entropia+factMmmm+factdecv,data=aprendizajematrizfact,kernel="pol ynomial",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: polynomial cost: 1 degree: 3 gamma: 0.3333333 coef.0: 0 nu: 0.5 Number of Support Vectors: 49 svm_prediccionfactdeca<-predict(svm_ajustefactdeca,newdata=pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecasvm_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.176038 kernel="linear" svm_ajustefactdeca<svm(factdeca~entropia+factMmmm+factdecv,data=aprendizajematrizfact,kernel="line ar",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: linear 280 Capítulo 15. Aprendizaje Automático (Machine Learning) cost: 1 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 47 svm_prediccionfactdeca<-predict(svm_ajustefactdeca,newdata=pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecasvm_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.101929 kernel="sigmoid" svm_ajustefactdeca<svm(factdeca~entropia+factMmmm+factdecv,data=aprendizajematrizfact,kernel="sig moid",type="nu-regression") Parámetros: SVM-Type: nu-regression SVM-Kernel: sigmoid cost: 1 gamma: 0.3333333 coef.0: 0 nu: 0.5 Number of Support Vectors: 47 svm_prediccionfactdeca<-predict(svm_ajustefactdeca,newdata=pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecasvm_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-2.33386 El error más pequeño es para nu-regression y kernel linear y a una diferencia mínima se tiene nu-regression y kernel radial, y su vez a una distancia también muy pequeña eps-regression y kernel linear, para concluir con una diferencia también pequeña respecto al último eps-regression y kernel radial. 281 Capítulo 15. Aprendizaje Automático (Machine Learning) Un análisis mucho más detallado puede realizarse con el paquete e1071 de r-project, que emplea la función tune() de visualización y localización de parámetros óptimos. Para lo cual, el modelo realiza un análisis de validación cruzada utilizando una búsqueda aleatoria, construyendo seguidamente una serie de splits que serán la base del proceso de entrenamiento. El parámetro cost quiere decir el grado de penalización que permite el modelo; o sea, el algoritmo busca la mejor hipersuperficie que separe los datos y el coste para encontrar ese plano necesita tolerar ciertos datos que afectan a la estimación. La validación cruzada (cross validation) es una técnica empleada con el objeto de evaluar los resultados de un análisis estadístico cuando los datos de partida se desglosan en dos conjuntos: uno para entrenamiento (training) y otro para prueba, verificación y/o validación (test). La validación cruzada chequea si los resultados del análisis son independientes de la partición. El conjunto de entrenamiento se divide en k subconjuntos y, en la fase de entrenamiento cada k subconjunto se utiliza como conjunto de prueba del modelo, mientras que el resto de datos se toma como conjunto de entrenamiento. La forma más simple de realizar la validación cruzada consiste en partiendo de los datos de entrenamiento y test, resolver el modelo con los datos de entrenamiento y probar el modelo estimado en la muestra de test. Así, mediante comparación del resultado obtenido en esta muestra con las observaciones reales nos permite calcular el error (proceso hold-out). Alternativamente, se puede repetir el proceso anterior, seleccionando aleatoriamente diferentes grupos de datos de entrenamiento, y calcular los estadísticos de evaluación a partir del promedio de los valores en cada una de las repeticiones. Este método presenta diversos inconvenientes, como que algunas muestras no se evalúan y otras se evalúan varias veces, o lo que es lo mismo, los subconjuntos de prueba y entrenamiento pueden llegar a solaparse. Una mejora, basado en el método anterior, es la validación cruzada de K iteraciones (Kfold cross-validation). En este método, todos los datos se dividen en k subconjuntos, aplicando el método hold-out k veces, empleando cada vez un subconjunto distinto para validar el modelo entrenado con los otros k-1 subconjuntos. Finalizadas las iteraciones, se calcula la precisión y el error para cada uno de los modelos producidos, 282 Capítulo 15. Aprendizaje Automático (Machine Learning) y para obtener la precisión y el error final se calcula el valor promedio de los k modelos entrenados. El error medio obtenido de los k análisis proporciona el error del método. Una vez se tiene esta precisión promedio para un modelo, se puede repetir entonces el procedimiento k-fold para el resto de modelos de clasificación que se están evaluando, y se seleccionará al final aquel que produzca el mejor valor de precisión y menor error promedio. Entonces, se puede emplear dicho modelo sobre el conjunto de validación generado en la primera parte, al ser este, teóricamente, el que mejor resultado alcanzó durante la fase de entrenamiento. Este análisis se va a efectuar para aquellos casos ya analizados que presentaban el error más pequeño. A saber: • Para factMmmm: o Con eps-regression y kernel radial. o Con nu-regression y kernel radial. • Para factdecv: o Con eps-regression y kernel radial. o Con eps-regression y kernel linear. o Con nu-regression y kernel radial. o Con nu-regression y kernel linear. • Para factdeca: o Con eps-regression y kernel radial. o Con eps-regression y kernel linear. o Con nu-regression y kernel radial. o Con nu-regression y kernel linear. Para factMmmm, con eps-regression y kernel radial, y parámetro gamma en tune, se tiene: tunefactMmmm<tune(svm,factMmmm~entropia+factdecv+factdeca,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9))) 283 Capítulo 15. Aprendizaje Automático (Machine Learning) ranges es una lista con nombre de vectores parámetros que expande el espacio de muestreo y que depende estrechamente de la experiencia del operador. - best parameters: gamma cost 1 4 - best performance: 0.1653918 tunefactMmmm se puede dibujar con plot(tunefactMmmm) con cost y gamma. Figura 15.2. Representación obtenida con tune para cost y gamma. También puede obtenerse información detallada con summary(tunefactMmmm): - best parameters: gamma 1 cost 4 - best performance: 0.1653918 - Detailed performance results: gamma cost error dispersion 1 0.5 4 0.2118044 0.1536441 2 1.0 4 0.1653918 0.1027540 3 2.0 4 0.1706721 0.1291344 284 Capítulo 15. Aprendizaje Automático (Machine Learning) 4 0.5 8 0.2118044 0.1536441 5 1.0 8 0.1653918 0.1027540 6 2.0 8 0.1706721 0.1291344 7 0.5 16 0.2118044 0.1536441 8 1.0 16 0.1653918 0.1027540 9 2.0 16 0.1706721 0.1291344 10 0.5 32 0.2118044 0.1536441 11 1.0 32 0.1653918 0.1027540 12 2.0 32 0.1706721 0.1291344 13 0.5 64 0.2118044 0.1536441 14 1.0 64 0.1653918 0.1027540 15 2.0 64 0.1706721 0.1291344 16 0.5 128 0.2118044 0.1536441 17 1.0 128 0.1653918 0.1027540 18 2.0 128 0.1706721 0.1291344 19 0.5 256 0.2118044 0.1536441 20 1.0 256 0.1653918 0.1027540 21 2.0 256 0.1706721 0.1291344 22 0.5 512 0.2118044 0.1536441 23 1.0 512 0.1653918 0.1027540 24 2.0 512 0.1706721 0.1291344 Una optimización de los resultados se puede conseguir mediante: besttunefactMmmm<best.tune(svm,factMmmm~entropia+factdecv+factdeca,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9))) 285 Capítulo 15. Aprendizaje Automático (Machine Learning) summary(besttunefactMmmm) Parámetros: SVM-Type: eps-regression SVM-Kernel: radial cost: 4 gamma: 1 epsilon: 0.1 Number of Support Vectors: 10 Este mismo resultado se consigue con: besttunefactMmmm<-tunefactMmmm$best.model Realizando la verificación con este nuevo resultado: predictbesttunefactMmmm<-predict(besttunefactMmmm,pruebamatrizfact) Y calculando el error respecto a los datos de partida de nuevo: besterrorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmpredictbesttunefactMmmm)^2))/nrow(pruebamatrizfact))<-0.04119725 Ostensiblemente mejor que el resultado calculado anteriormente sin optimizar (0.513055). Para factMmmm, con eps-regression y kernel radial, y parámetro épsilon en tune, se tiene: tunefactMmmm<tune(svm,factMmmm~entropia+factdecv+factdeca,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9))) - best parameters: epsilon cost 1 4 - best performance: 0.1502963 286 Capítulo 15. Aprendizaje Automático (Machine Learning) Con plot(tunefactMmmm): Figura 15.3. Representación obtenida con tune para cost y epsilon. Con summary(tunefactMmmm): - best parameters: epsilon cost 1 4 - best performance: 0.1502963 - Detailed performance results: gamma cost error dispersion 1 0.0 4 0.3314917 0.2741212 2 0.1 4 0.2974927 0.2455004 3 0.2 4 0.2700189 0.2200286 4 0.3 4 0.2432102 0.1908816 5 0.4 4 0.2216330 0.1614641 6 0.5 4 0.2035210 0.1353994 7 0.6 4 0.1892031 0.1170887 8 0.7 4 0.1762270 0.1042417 9 0.8 4 0.1616873 0.1041715 287 Capítulo 15. Aprendizaje Automático (Machine Learning) 10 0.9 4 0.1537096 0.1082518 11 1.0 4 0.1502963 0.1138791 12 0.0 8 0.2879950 0.2820162 13 0.1 8 0.2751662 0.2500415 14 0.2 8 0.2612595 0.2219045 15 0.3 8 0.2415453 0.1910471 16 0.4 8 0.2216330 0.1614641 17 0.5 8 0.2035210 0.1353994 18 0.6 8 0.1892031 0.1170887 19 0.7 8 0.1762270 0.1042417 20 0.8 8 0.1616873 0.1041715 21 0.9 8 0.1537096 0.1082518 22 1.0 8 0.1502963 0.1138791 23 0.0 16 0.2879950 0.2820162 24 0.1 16 0.2751662 0.2500415 25 0.2 16 0.2612595 0.2219045 26 0.3 16 0.2415453 0.1910471 27 0.4 16 0.2216330 0.1614641 28 0.5 16 0.2035210 0.1353994 29 0.6 16 0.1892031 0.1170887 30 0.7 16 0.1762270 0.1042417 31 0.8 16 0.1616873 0.1041715 32 0.9 16 0.1537096 0.1082518 33 1.0 16 0.1502963 0.1138791 34 0.0 32 0.2879950 0.2820162 288 Capítulo 15. Aprendizaje Automático (Machine Learning) 35 0.1 32 0.2751662 0.2500415 36 0.2 32 0.2612595 0.2219045 37 0.3 32 0.2415453 0.1910471 38 0.4 32 0.2216330 0.1614641 39 0.5 32 0.2035210 0.1353994 40 0.6 32 0.1892031 0.1170887 41 0.7 32 0.1762270 0.1042417 42 0.8 32 0.1616873 0.1041715 43 0.9 32 0.1537096 0.1082518 44 1.0 32 0.1502963 0.1138791 45 0.0 64 0.2879950 0.2820162 46 0.1 64 0.2751662 0.2500415 47 0.2 64 0.2612595 0.2219045 48 0.3 64 0.2415453 0.1910471 49 0.4 64 0.2216330 0.1614641 50 0.5 64 0.2035210 0.1353994 51 0.6 64 0.1892031 0.1170887 52 0.7 64 0.1762270 0.1042417 53 0.8 64 0.1616873 0.1041715 54 0.9 64 0.1537096 0.1082518 55 1.0 64 0.1502963 0.1138791 56 0.0 128 0.2879950 0.2820162 57 0.1 128 0.2751662 0.2500415 58 0.2 128 0.2612595 0.2219045 59 0.3 128 0.2415453 0.1910471 289 Capítulo 15. Aprendizaje Automático (Machine Learning) 60 0.4 128 0.2216330 0.1614641 61 0.5 128 0.2035210 0.1353994 62 0.6 128 0.1892031 0.1170887 63 0.7 128 0.1762270 0.1042417 64 0.8 128 0.1616873 0.1041715 65 0.9 128 0.1537096 0.1082518 66 1.0 128 0.1502963 0.1138791 67 0.0 256 0.2879950 0.2820162 68 0.1 256 0.2751662 0.2500415 69 0.2 256 0.2612595 0.2219045 70 0.3 256 0.2415453 0.1910471 71 0.4 256 0.2216330 0.1614641 72 0.5 256 0.2035210 0.1353994 73 0.6 256 0.1892031 0.1170887 74 0.7 256 0.1762270 0.1042417 75 0.8 256 0.1616873 0.1041715 76 0.9 256 0.1537096 0.1082518 77 1.0 256 0.1502963 0.1138791 78 0.0 512 0.2879950 0.2820162 79 0.1 512 0.2751662 0.2500415 80 0.2 512 0.2612595 0.2219045 81 0.3 512 0.2415453 0.1910471 82 0.4 512 0.2216330 0.1614641 83 0.5 512 0.2035210 0.1353994 84 0.6 512 0.1892031 0.1170887 290 Capítulo 15. Aprendizaje Automático (Machine Learning) 85 0.7 512 0.1762270 0.1042417 86 0.8 512 0.1616873 0.1041715 87 0.9 512 0.1537096 0.1082518 88 1.0 512 0.1502963 0.1138791 Una optimización de los resultados se puede conseguir mediante: besttunefactMmmm<best.tune(svm,factMmmm~entropia+factdecv+factdeca,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9))) summary(besttunefactMmmm) SVM-Type: eps-regression SVM-Kernel: radial cost: 4 gamma: 0.3333333 epsilon: 1 Number of Support Vectors: 6 Este mismo resultado se consigue con: besttunefactMmmm<-tunefactMmmm$best.model Realizando la verificación con este nuevo resultado: predictbesttunefactMmmm<-predict(besttunefactMmmm,pruebamatrizfact) Y calculando el error respecto a los datos de partida de nuevo: besterrorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmpredictbesttunefactMmmm)^2))/nrow(pruebamatrizfact))<-0.3420556 Ostensiblemente mejor que el resultado calculado anteriormente sin optimizar (0.513055). Para factMmmm, con nu-regression y kernel radial, y parámetro gamma en tune, se tiene: 291 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactMmmm<tune(svm,factMmmm~entropia+factdecv+factdeca,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9)),type="nu-regression") - best parameters: gamma cost 1 8 - best performance: 0.1690436 Una optimización de los resultados se puede conseguir mediante: besttunefactMmmm<best.tune(svm,factMmmm~entropia+factdecv+factdeca,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9)),type="nu-regression") summary(besttunefactMmmm) Parámetros: SVM-Type: nu-regression SVM-Kernel: radial cost: 8 gamma: 1 nu: 0.5 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactMmmm<-predict(besttunefactMmmm,pruebamatrizfact) besterrorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmpredictbesttunefactMmmm)^2))/nrow(pruebamatrizfact))<-0.0001603429 Ostensiblemente mejor que el resultado calculado anteriormente sin optimizar (0.586362). Para factMmmm, con nu-regression y kernel radial, y parámetro épsilon en tune, se tiene: 292 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactMmmm<tune(svm,factMmmm~entropia+factdecv+factdeca,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9)),type="nu-regression") - best parameters: epsilon cost 0 4 - best performance: 0.2849777 Una optimización de los resultados se puede conseguir mediante: besttunefactMmmm<best.tune(svm,factMmmm~entropia+factdecv+factdeca,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9)),type="nu-regression") summary(besttunefactMmmm) SVM-Type: nu-regression SVM-Kernel: radial cost: 4 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactMmmm<-predict(besttunefactMmmm,pruebamatrizfact) besterrorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmpredictbesttunefactMmmm)^2))/nrow(pruebamatrizfact))<-0.1074409 Ostensiblemente mejor que el resultado calculado anteriormente sin optimizar (0.586362). Para factdecv, con eps-regression y kernel radial, y parámetro gamma en tune, se tiene: 293 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdecv<tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9))) - best parameters: gamma cost 0.5 4 - best performance: 0.3800176 Una optimización de los resultados se puede conseguir mediante besttunefactdecv<best.tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9))) summary(besttunefactdecv) Parámetros: SVM-Type: eps-regression SVM-Kernel: radial cost: 4 gamma: 0.5 epsilon: 0.1 Number of Support Vectors: 9 Realizando la verificación con este nuevo resultado: predictbesttunefactdecv<-predict(besttunefactdecv,pruebamatrizfact) besterrorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvpredictbesttunefactdecv)^2))/nrow(pruebamatrizfact))<- 0.07759645 Mejor que el resultado calculado anteriormente sin optimizar (1.247499). Para factdecv, con eps-regression y kernel radial, y parámetro épsilon en tune, se tiene: 294 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdecv<tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9))) - best parameters: epsilon cost 0 8 - best performance: 0.2813548 Una optimización de los resultados se puede conseguir mediante besttunefactdecv<best.tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9))) summary(besttunefactdecv) Parámetros: SVM-Type: eps-regression SVM-Kernel: radial cost: 8 gamma: 0.3333333 epsilon: 0 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactdecv<-predict(besttunefactdecv,pruebamatrizfact) besterrorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvpredictbesttunefactdecv)^2))/nrow(pruebamatrizfact))<-0.482961 Mejor que el resultado calculado anteriormente sin optimizar (1.247499). Para factdecv, con eps-regression y kernel linear, y parámetro gamma en tune, se tiene: 295 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdecv<tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9)),kernel="linear") - best parameters: gamma cost 0.5 4 - best performance: 1.258044 Una optimización de los resultados se puede conseguir mediante besttunefactdecv<best.tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9)),kernel="linear") summary(besttunefactdecv) Parámetros: SVM-Type: eps-regression SVM-Kernel: linear cost: 4 gamma: 0.5 epsilon: 0.1 Number of Support Vectors: 9 Realizando la verificación con este nuevo resultado: predictbesttunefactdecv<-predict(besttunefactdecv,pruebamatrizfact) besterrorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvpredictbesttunefactdecv)^2))/nrow(pruebamatrizfact))<-0.5982603 Mejor que el resultado calculado anteriormente sin optimizar (0,8440325). Para factdecv, con eps-regression y kernel linear, y parámetro épsilon en tune, se tiene: 296 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdecv<tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9)),kernel="linear") - best parameters: gamma cost 0.8 512 - best performance: 0.4365172 Una optimización de los resultados se puede conseguir mediante besttunefactdecv<best.tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9)),kernel="linear") summary(besttunefactdecv) Parámetros: SVM-Type: eps-regression SVM-Kernel: linear cost: 512 gamma: 0.3333333 epsilon: 0.8 Number of Support Vectors: 4 Realizando la verificación con este nuevo resultado: predictbesttunefactdecv<-predict(besttunefactdecv,pruebamatrizfact) besterrorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvpredictbesttunefactdecv)^2))/nrow(pruebamatrizfact))<-0.5300908 Mejor que el resultado calculado anteriormente sin optimizar (0.8440325). Para factdecv, con nu-regression y kernel radial, y parámetro gamma en tune, se tiene: 297 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdecv<tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9)),type="nu-regression") - best parameters: gamma cost 0.5 4 - best performance: 0.3352274 Una optimización de los resultados se puede conseguir mediante besttunefactdecv<best.tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9)),type="nu-regression") summary(besttunefactdecv) Parámetros: SVM-Type: nu-regression SVM-Kernel: radial cost: 128 gamma: 0.5 nu: 0.5 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactdecv<-predict(besttunefactdecv,pruebamatrizfact) besterrorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvpredictbesttunefactdecv)^2))/nrow(pruebamatrizfact))<-0.0002745166 Mejor que el resultado calculado anteriormente sin optimizar (1.11684). Para factdecv, con nu-regression y kernel radial, y parámetro épsilon en tune, se tiene: 298 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdecv<tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9)),type="nu-regression") - best parameters: epsilon cost 0 128 - best performance: 0.2815257 Una optimización de los resultados se puede conseguir mediante besttunefactdecv<best.tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9)),type="nu-regression") summary(besttunefactdecv) Parámetros: SVM-Type: nu-regression SVM-Kernel: radial cost: 64 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactdecv<-predict(besttunefactdecv,pruebamatrizfact) besterrorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvpredictbesttunefactdecv)^2))/nrow(pruebamatrizfact))<-0.0002178527 Mejor que el resultado calculado anteriormente sin optimizar (1.11684). Para factdecv, con nu-regression y kernel linear, y parámetro gamma en tune, se tiene: 299 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdecv<tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9)),kernel="linear",type="nu-regression") - best parameters: gamma cost 0.5 32 - best performance: 1.071984 Una optimización de los resultados se puede conseguir mediante besttunefactdecv<best.tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9)),kernel="linear",type="nu-regression") summary(besttunefactdecv) Parámetros: SVM-Type: nu-regression SVM-Kernel: linear cost: 4 gamma: 0.5 nu: 0.5 Number of Support Vectors: 7 Realizando la verificación con este nuevo resultado: predictbesttunefactdecv<-predict(besttunefactdecv,pruebamatrizfact) besterrorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvpredictbesttunefactdecv)^2))/nrow(pruebamatrizfact))<-0.4912312 Mejor que el resultado calculado anteriormente sin optimizar (0.7945581). Para factdecv, con nu-regression y kernel linear, y parámetro épsilon en tune, se tiene: 300 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdecv<tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9)),kernel="linear",type="nu-regression") - best parameters: epsilon cost 0 8 - best performance: 1.07205 Una optimización de los resultados se puede conseguir mediante besttunefactdecv<best.tune(svm,factdecv~entropia+factMmmm+factdeca,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9)),kernel="linear",type="nu-regression") summary(besttunefactdecv) Parámetros: SVM-Type: nu-regression SVM-Kernel: linear cost: 16 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 7 Realizando la verificación con este nuevo resultado: predictbesttunefactdecv<-predict(besttunefactdecv,pruebamatrizfact) besterrorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvpredictbesttunefactdecv)^2))/nrow(pruebamatrizfact))<-0.4912413 Mejor que el resultado calculado anteriormente sin optimizar (0,7945581). Para factdeca, con eps-regression y kernel radial, y parámetro gamma en tune, se tiene: 301 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdeca<tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9))) - best parameters: gamma cost 0.5 4 - best performance: 0.938606 Una optimización de los resultados se puede conseguir mediante besttunefactdeca<best.tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9))) summary(besttunefactdeca) Parámetros: SVM-Type: eps-regression SVM-Kernel: radial cost: 4 gamma: 0.5 epsilon: 0.1 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactdeca<-predict(besttunefactdeca,pruebamatrizfact) besterrorfactdeca<-sqrt((sum((pruebamatrizfact$factdecapredictbesttunefactdeca)^2))/nrow(pruebamatrizfact))<-0.1136958 Mejor que el resultado calculado anteriormente sin optimizar (1,219604). Para factdeca, con eps-regression y kernel radial, y parámetro épsilon en tune, se tiene: 302 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdeca<tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9))) - best parameters: epsilon cost 0 8 - best performance: 0.706091 Una optimización de los resultados se puede conseguir mediante besttunefactdeca<best.tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9))) summary(besttunefactdeca) Parámetros: SVM-Type: eps-regression SVM-Kernel: radial cost: 8 gamma: 0.3333333 epsilon: 0 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactdeca<-predict(besttunefactdeca,pruebamatrizfact) besterrorfactdeca<-sqrt((sum((pruebamatrizfact$factdecapredictbesttunefactdeca)^2))/nrow(pruebamatrizfact))<-0.0002763824 Mejor que el resultado calculado anteriormente sin optimizar (1.219604). Para factdeca, con eps-regression y kernel linear, y parámetro gamma en tune, se tiene: 303 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdeca<tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9)),kernel="linear") - best parameters: gamma cost 0.5 4 - best performance: 3.048688 Una optimización de los resultados se puede conseguir mediante besttunefactdeca<best.tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9)),kernel="linear") summary(besttunefactdeca) Parámetros: SVM-Type: eps-regression SVM-Kernel: linear cost: 4 gamma: 0.5 epsilon: 0.1 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactdeca<-predict(besttunefactdeca,pruebamatrizfact) besterrorfactdeca<-sqrt((sum((pruebamatrizfact$factdecapredictbesttunefactdeca)^2))/nrow(pruebamatrizfact))<-0.9263522 Mejor que el resultado calculado anteriormente sin optimizar (1.242205). Para factdeca, con eps-regression y kernel linear, y parámetro épsilon en tune, se tiene: 304 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdeca<tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9)),kernel="linear") - best parameters: gamma cost 0.7 8 - best performance: 1.855915 Una optimización de los resultados se puede conseguir mediante besttunefactdeca<best.tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9)),kernel="linear") summary(besttunefactdeca) Parámetros: SVM-Type: eps-regression SVM-Kernel: linear cost: 8 gamma: 0.3333333 epsilon: 0.7 Number of Support Vectors: 7 Realizando la verificación con este nuevo resultado: predictbesttunefactdeca<-predict(besttunefactdeca,pruebamatrizfact) besterrorfactdeca<-sqrt((sum((pruebamatrizfact$factdecapredictbesttunefactdeca)^2))/nrow(pruebamatrizfact))<-0.8319026 Mejor que el resultado calculado anteriormente sin optimizar (1.242205). Para factdeca, con nu-regression y kernel radial, y parámetro gamma en tune, se tiene: 305 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdeca<tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9)),type="nu-regression") - best parameters: gamma cost 0.5 64 - best performance: 0.87093 Una optimización de los resultados se puede conseguir mediante besttunefactdeca<best.tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9)),type="nu-regression") summary(besttunefactdeca) Parámetros: SVM-Type: nu-regression SVM-Kernel: radial cost: 512 gamma: 0.5 nu: 0.5 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactdeca<-predict(besttunefactdeca,pruebamatrizfact) besterrorfactdeca<-sqrt((sum((pruebamatrizfact$factdecapredictbesttunefactdeca)^2))/nrow(pruebamatrizfact))<-0.000285634 Mejor que el resultado calculado anteriormente sin optimizar (1.171613). Para factdeca, con nu-regression y kernel radial, y parámetro épsilon en tune, se tiene: 306 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdeca<tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9)),type="nu-regression") - best parameters: epsilon cost 0 64 - best performance: 0.7062837 Una optimización de los resultados se puede conseguir mediante besttunefactdeca<best.tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9)),type="nu-regression") summary(besttunefactdeca) Parámetros: SVM-Type: nu-regression SVM-Kernel: radial cost: 512 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 10 Realizando la verificación con este nuevo resultado: predictbesttunefactdeca<-predict(besttunefactdeca,pruebamatrizfact) besterrorfactdeca<-sqrt((sum((pruebamatrizfact$factdecapredictbesttunefactdeca)^2))/nrow(pruebamatrizfact))<-0.0004419037 Mejor que el resultado calculado anteriormente sin optimizar (1.171613). Para factdeca, con nu-regression y kernel linear, y parámetro gamma en tune, se tiene: 307 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdeca<tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges=list( gamma=2^(-1:1),cost=2^(2:9)),kernel="linear",type="nu-regression") - best parameters: gamma cost 0.5 4 - best performance: 2.89714 Una optimización de los resultados se puede conseguir mediante besttunefactdeca<best.tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges =list(gamma=2^(-1:1),cost=2^(2:9)),kernel="linear",type="nu-regression") summary(besttunefactdeca) Parámetros: SVM-Type: nu-regression SVM-Kernel: linear cost: 4 gamma: 0.5 nu: 0.5 Number of Support Vectors: 8 Realizando la verificación con este nuevo resultado: predictbesttunefactdeca<-predict(besttunefactdeca,pruebamatrizfact) besterrorfactdeca<-sqrt((sum((pruebamatrizfact$factdecapredictbesttunefactdeca)^2))/nrow(pruebamatrizfact))<-0.8357793 Mejor que el resultado calculado anteriormente sin optimizar (1.101929). Para factdeca, con nu-regression y kernel linear, y parámetro épsilon en tune, se tiene: 308 Capítulo 15. Aprendizaje Automático (Machine Learning) tunefactdeca<tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges=list( epsilon=seq(0,1,0.1),cost=2^(2:9)),kernel="linear",type="nu-regression") - best parameters: epsilon cost 0 4 - best performance: 2.896826 Una optimización de los resultados se puede conseguir mediante besttunefactdeca<best.tune(svm,factdeca~entropia+factMmmm+factdecv,data=pruebamatrizfact,ranges =list(epsilon=seq(0,1,0.1),cost=2^(2:9)),kernel="linear",type="nu-regression") summary(besttunefactdeca) Parámetros: SVM-Type: nu-regression SVM-Kernel: linear cost: 4 gamma: 0.3333333 nu: 0.5 Number of Support Vectors: 8 Realizando la verificación con este nuevo resultado: predictbesttunefactdeca<-predict(besttunefactdeca,pruebamatrizfact) besterrorfactdeca<-sqrt((sum((pruebamatrizfact$factdecapredictbesttunefactdeca)^2))/nrow(pruebamatrizfact))<-0.8357793 Mejor que el resultado calculado anteriormente sin optimizar (1.101929). El análisis efectuado empleando técnicas de optimización svm de r-project ha mostrados unas características altamente eficaces en el aprendizaje automático, las 309 Capítulo 15. Aprendizaje Automático (Machine Learning) cuales han contribuido ostensiblemente a las aportaciones de este trabajo, llegando finalmente a un resultado con un error muy pequeño. Asimismo las técnicas de validación cruzada han incrementado la eficacia del método disminuyendo el error aún más. De esta forma, se puede finalizar este capítulo concluyendo que la aplicación de técnicas SVM, concretamente el paquete e1071 de r-project, ha permitido elaborar un procedimiento de cálculo, que partiendo de un conjunto de datos de entrada procedentes de simulaciones, como datos de aprendizaje, para entrenar la SVM permite construir un modelo que predice comportamientos proporcionando una respuesta para una nueva muestra. Se debe resaltar la importante contribución en este análisis de la función tune del paquete e1071 por su importante capacidad de visualización y localización de parámetros óptimos al utilizar técnicas de validación cruzada con búsqueda aleatoria. Se ha realizado la verificación empleando las capacidades de optimización de la función tune, calculando para ello el error respecto a los datos de partida, como se ha visto antes, mostrando como estos errores han sido prácticamente despreciables, mejorando trascendentalmente los errores calculados antes de optimizar con tune. Para terminar se han representado los factores de decisión factMmmm, factdecv y factdeca en función de la entropía EEG de origen, comparando los resultados originales y aquellos optimizados con la función tune que presentaban el error más pequeño (factMmmm, con eps-regression y kernel radial, y parámetro épsilon; factdecv, con nu-regression y kernel radial, y parámetro gamma; y factdeca, con nuregression y kernel radial, y parámetro gamma), mostrando un paralelismo prácticamente coincidente. 310 Capítulo 15. Aprendizaje Automático (Machine Learning) 30,000000 y = 0,0609x - 175,54 25,000000 fact 20,000000 15,000000 y = -0,0022x + 17,811 10,000000 5,000000 y = 0,0063x - 14,211 0,000000 3150 3170 3190 3210 3230 3250 3270 3290 3310 3330 Entropía Figura 15.4. Factores de decisión factMmmm, factdecv y factdeca función de la entropía optimizados con tune. 15.2. Red Neuronal Artificial Las RNA y las SVM constituyen dos estrategias muy populares para el aprendizaje supervisado con lo que en muchas ocasiones aún no está claro qué método es el mejor para un proyecto en particular. Las redes neuronales han tenido tal difusión por los medios de comunicación que son archiconocidas, empero, desde un punto de vista más formal podría considerarse que las SVM son a menudo superiores a las RNAs porque se evitan dos de las principales debilidades de las redes neuronales. En primer lugar, las redes neuronales convergen a mínimos locales en muchas ocasiones en lugar de encontrar mínimos globales. En segundo lugar, las redes neuronales podrían sobrestimar patrones demasiado largos asumiendo el ruido como parte de la señal. Las SVM no sufren estos problemas; no obstante, no resulta claro que las SVM sean el sustituto de las RNAs. En una RNA se tienen un conjunto de capas ocultas dependiendo de la cantidad de características. Por el contrario, una SVM consta de un grupo de vectores soporte, seleccionados en el entrenamiento, con un peso para cada uno de ellos, siendo el caso más extremo aquel en el que el número de vectores soporte es exactamente el número de muestras de entrenamiento. Por otra parte, últimamente ha aparecido el aprendizaje profundo, donde el número de capas de las redes neuronales se ha incrementado drásticamente. 311 Capítulo 15. Aprendizaje Automático (Machine Learning) Centrando el asunto, en su origen las redes neuronales fueron una simulación abstracta de los sistemas nerviosos biológicos, constituidos por un conjunto de neuronas conectadas entre sí para transmitir señales. La información de entrada cruza la red neuronal, ejecutándose diferentes operaciones, produciendo unos valores de salida. El primer modelo, que puede considerarse como una red neuronal, fue propuesto en 1943 Warren McCulloch y Walter Pitts, los cuales plantearon un modelo computacional de redes neuronales binario, donde para cada neurona se disponía de una función escalón o umbral prefijado, denominado lógica umbral, pero cuya base estaba basada en las matemáticas y los algoritmos. Inmediatamente, esta aproximación se bifurco en dos enfoques diferenciados, el primero basado en el estudio de los procesos biológicos en el cerebro, comprenden las redes que tratan de simular los sistemas neuronales biológicos, así como funciones como las auditivas o la visión. Los segundos buscan el empleo de redes neuronales para la inteligencia artificial, donde sus arquitecturas están orientadas a las aplicaciones para las que son diseñadas. El cerebro humano es un sistema altamente complejo, no-lineal y paralelo, que puede realizar muchas operaciones a la vez, a diferencia de los ordenadores comunes que son secuenciales, o sea, realizan una operación a la vez. A este respecto, una neurored es un procesador de información altamente paralelo formado por muchos procesadores denominados neuronas. Estas estructuras adquieren conocimiento mediante el aprendizaje, el cual se almacena en las conexiones interneuronales. Soportan muy bien los fallos, o lo que es lo mismo, pueden sufrir un daño considerable y continuar funcionando y se adaptan bien al funcionamiento no lineal. Un cerebro humano puede contener de cien mil millones de neuronas (10 11) conectadas por 1014 sinapsis. Se estima que cada neurona tiene más de 1000 sinapsis, aproximadamente, conectadas a cada neurona, lo cual resulta clave para el procesado de la información. Un punto débil es el tiempo de conmutación de las neuronas biológicas, unos pocos milisegundos, muchísimo mayor que el tiempo de conmutación en las actuales computadoras; no obstante, el cerebro compensa este inconveniente biológico con la enorme cantidad de interconexiones. 312 Capítulo 15. Aprendizaje Automático (Machine Learning) Las neuronas poseen generalmente una estructura tipo árbol, denominadas dendritas, que reciben información a través de señales de entrada procedentes de otras neuronas que llegan por las sinapsis. Las neuronas consta de tres partes: la neurona como tal, las dendritas y el axón, que conduce la salida de la neurona a las dendritas de otras neuronas. Aunque actualmente no se conoce con exactitud la manera en la que dos neuronas se comunican, dejando de lado que hay muchos tipos de neuronas que se comunican de diferente forma, una neurona envía su salida a otras por su axón, y éste transmite la información mediante diferencias de potencial eléctrico. Para este tipo de procesos se define una función u(), la cual modeliza cada neurona como la recepción de señales por su sinapsis, sumando todas las contribuciones, de tal modo que si la suma de las señales supera un umbral, la neurona envía una señal positiva a otras neuronas por la sinapsis de salida. Las neuronas suelen codificar sus salidas como un conjunto de pulsos periódicos reducidos, denominados potenciales de acción. En esta teoría se modeliza la neurona con la función escalón. Las redes neuronales artificiales tienen una clara influencia de las redes neuronales biológicas, aunque no son exactamente iguales dado que poseen otras funcionalidades y conexiones distintas a las vistas desde la perspectiva biológica. Básicamente, emplean algoritmos de aprendizaje adaptativos y autoorganizativos, procesan de forma no lineal y en paralelo al emplear un elevado número de nodos de procesado con un alto nivel de conectividad. La unidad básica de computación (modelo de neurona) recibe una señal de entrada x i desde otras neuronas o de una fuente externa de datos. Cada entrada tiene un peso sináptico wji que actúa en las dendritas de la neurona yj, que va variando en el proceso de aprendizaje, con lo que la suma de las entradas ponderadas produce una función, siendo el primer índice la neurona hacia donde se dirige la información mientras que el segundo índice de qué neurona procede la información. yj = wji xi (15.77) La neurona se activa si la entrada total supera un cierto umbral haciendo uso de una función de activación tipo yj, que puede ser usualmente una función tipo escalón o 313 Capítulo 15. Aprendizaje Automático (Machine Learning) bien sigmoidea, del tipo tangente hiperbólica. Si la función de activación de una neurona es lineal, se dice que es una neurona lineal. En caso contrario, se dice que es una neurona no lineal. En muchas ocasiones sería interesante variar el umbral, dificultando la activación de la neurona (elevando el umbral) o haciéndolo más fácil (disminuyendo el umbral). Aunque esto puede hacerse de forma manual, resulta más fácil añadir lo que se denomina neuronas de inclinación x0 a la que se le asigna un valor fijo unitario, un peso sináptico wj0 y un umbral fijo cero para la neurona yj. Figura 15.5. Esquema de neurona. Figura 15.6. Función de activación. Las redes neuronales se han usado en múltiples ocasiones en el procesado de señales e imágenes, empleando arquitecturas con procesadores adaptativo paralelo e interconexiones jerárquicas, si bien las redes neuronales convolucionales han supuesto un avance muy superior. 314 Capítulo 15. Aprendizaje Automático (Machine Learning) En redes neuronales, se comienza con la fase de entrenamiento donde se parte de un conjunto de datos de entrada que establecen un patrón de entrenamiento, los cuales ajustaran los pesos o parámetros que definen el modelo de red neuronal. Este proceso es iterativo, conforme a los valores de entrenamiento, con el fin de minimizar el error comparativo entre la salida obtenida por la red neuronal y la salida esperada. En esta primera fase podría ocurrir que el modelo se ajuste demasiado perdiendo capacidad para generalizar este aprendizaje a casos nuevos, por lo que en una segunda fase, es preferible utilizar un grupo de datos diferentes a los de entrenamiento, grupo denominado de validación, que permite ajustar el proceso de aprendizaje. Los pesos óptimos se obtienen optimizando algún funcional, siendo resaltable el llamado entrenamiento supervisado donde se minimiza el error cuadrático medio entre el valor de salida y el valor esperado real. Considerando únicamente sus métodos de entrenamiento, las redes neuronales pueden clasificarse en redes de pesos fijos (sin entrenamiento), redes no supervisadas y redes de entrenamiento supervisado. El entrenamiento supervisado es el más habitual, donde se tienen varios pares de patrones tanto de entrada como de salida. Conocer la salida supone un entrenamiento supervisado total. Partiendo de un nuevo patrón de entrenamiento, en la etapa (m+1) los pesos quedan de la siguiente forma: wijm+1 = wijm + Δwijm (15.78) En el caso de entrenamiento no supervisado, solo se dispone de patrones de entrada con lo que la red aprende a partir de experiencias anteriores. Ejemplos típicos de no supervisado son la regla de aprendizaje de Hebb, y la regla de aprendizaje competitivo. En el caso del aprendizaje de Hebb se refuerza el peso que conecta dos nodos simultáneamente excitados. El neurofisiologo Hebb, en 1949, descubrió que si dos neuronas situadas a ambos lados de la sinapsis estaban activas (o inactivas) simultáneamente, entonces las sinapsis entre ellas se reforzaban, y si se activaban (o desactivaban) asincrónicamente, se debilitaban. En el aprendizaje competitivo puede ocurrir que el patrón nuevo pertenezca a una clase reconocida previamente o no. En el segundo caso, los pesos y estructura de la red neuronal se ajustarán para integrar a la nueva clase. 315 Capítulo 15. Aprendizaje Automático (Machine Learning) Una red neuronal se formula en base a la función de base y la función de activación. Cada nodo constituye una unidad de proceso dando un valor yj a la salida, el cual se difunde por la red a través de conexiones unidireccionales hacia otros nodos de la red. En cada conexión se tiene un peso sináptico {wij}, que define la acción del nodo j-ésimo sobre el nodo i-ésimo. Por otra parte, las entradas al nodo i-ésimo provenientes de los otros nodos se adicionan, y dependiendo del valor umbral θi, al aplicar la función base f, se obtiene ui. Aplicando la función de activación sobre ui se obtiene la salida final yi. La función de base o función de red puede tener dos formas típicas: la función lineal tipo hiperplano donde el valor de red es una combinación lineal de las entradas. n ui (w, x) = ∑ wij xj (15.79) j=1 La otra forma típica es la función radial de tipo hiperesférico, la cual es una función de base de segundo orden no lineal que constituye la distancia a un cierto patrón de referencia. n ui (w, x) = √∑(xj − wij )2 (15.80) j=1 La función de base u(w,x) es transformada mediante una función de activación (función de neurona) no lineal. Entre las funciones de activación más habituales se tienen la función sigmoidal y gausiana: • función sigmoidal f(ui ) = • 1 1 + exp (− ui ) σ2 (15.81) función gaussiana u2i f(ui ) = cexp (− 2 ) σ (15.82) Una red neuronal se define por las neuronas que lo integran y la matriz de pesos. Generalmente, hay tres tipos de capas de neuronas: la capa de entrada, las capas 316 Capítulo 15. Aprendizaje Automático (Machine Learning) ocultas y la capa de salida. En las redes neuronales, las capas ocultas son un par de ellas mientras que en las redes deep learning pueden ser algo más de cien [76]. Figura 15.7. Red neuronal artificial. Entre dos capas de neuronas se encuentra la red de pesos de conexión, las cuales pueden ser de varios tipos: hacia delante, hacia atrás, lateral y de retardo. En las conexiones hacia delante, los valores de las neuronas de una capa inferior son propalados hacia las neuronas de la capa superior a través de las redes de conexiones hacia adelante. En las conexiones hacia atrás, los valores de las neuronas de una capa superior se difunden a otras de la capa inferior. Otro tipo de conexiones son las laterales y las últimas conexiones en clasificarse son las conexiones con retardo donde los componentes de retardo se introducen en las conexiones como modelos dinámicos y temporales. Las conexiones sinápticas pueden estar total o parcialmente interconectadas. Otra cuestión es que puede ocurrir que las redes sean de una única capa con el modelo de pesos hacia atrás o bien el modelo multicapa sea hacia adelante. 317 Capítulo 15. Aprendizaje Automático (Machine Learning) En una red multicapa de propagación hacia delante pueden encontrarse una o más capas ocultas entre las capas de entrada y salida de tal forma que el tamaño de las redes lo estima dependiendo del número de capas y el número de neuronas ocultas en cada capa, lo cual va en proporción directa con las capacidades de la red. En una red multicapa, las capas ocultas siempre son no lineales. De hecho, es fácilmente demostrable que si se construye una red multicapa con capas ocultas lineales, esta arquitectura es equivalente a una red de una sola capa. Cada neurona de una sola capa no requiere de las demás neuronas en su misma capa para trabajar, son capaces de trabajar simultáneamente. Así, una red multicapa permite resolver problemas mucho más complejos, pero su proceso de aprendizaje también es más complicado. En las redes neuronales, los modelos de regresión analizan la relación entre las variables independientes xi y las variables dependientes o de respuesta y, siendo fundamental predecir los valores de y en función de los valores de xi. El modelo más elemental se expresa como: N η = ∑ βi x i (15.83) i=0 Donde η=h(µ), E(y)=η y βi los coeficientes, con N el número de variables independientes y β0 la pendiente. De esta forma, un modelo lineal se puede modelar como una red neuronal simple, con un elemento de sesgo, un input y un output. El input es la variable x siendo el sesgo una constante igual a 1. El output se define como: y2 = y1 w21 + (1,0)w20 (15.84) Figura 15.8. Red neuronal simple. El modelo lo forman tres componentes: 1. Una parte aleatoria de la variable respuesta y con media µ y varianza σ2. 318 Capítulo 15. Aprendizaje Automático (Machine Learning) 2. Un componente relacional entre las variables independientes xi con un predictor lineal η = ∑N i=1 βi xi . 3. Una función relacional entre la media y el predictor lineal η=h(µ). Un caso muy interesante ocurre cuando el componente aleatorio se distribuye de forma normal y la función h(·) se asume que es la identidad, donde el modelo lineal se reduce al modelo de regresión lineal múltiple, quedando el modelo como N yp = β0 + ∑ βi xpi + εp (15.85) j=1 Con εp∼N(0,σ2) y los coeficientes βi aquellos que minimizan el funcional: n N 2 E = ∑ (yp − ∑ βi xpi ) p=1 (15.86) j=1 Puede apreciarse como este problema es equivalente al de una red neuronal de una sola capa con βi los pesos de la misma y función de activación unidad. Muy interesante resulta el perceptron, un ingenio creado por Frank Rosenblatt basado en una neurona artificial que actúa como discriminador lineal, capaz de seleccionar un conjunto de un grupo mayor. El siguiente paso evolutivo es el perceptrón multicapa, una red neuronal artificial constituida por múltiples capas especializadas en resolver problemas no linealmente separables, que el perceptrón simple no es capaz de abordar. Este concepto funcionaría de modo análogo a un aproximador universal de funciones, una red backpropagation con, como mínimo una capa oculta, con las suficientes funciones no lineales para poder aproximar cualquier función continua. Un perceptrón multicapa se compone de una capa de entrada, una capa de salida y una o más capas ocultas, donde para este caso concreto, las conexiones entre neuronas van orientadas siempre hacia delante. Las conexiones parten de las neuronas de una primera capa hacia las neuronas de la siguiente capa, sin existir conexiones laterales ni conexiones hacia atrás. En el funcionamiento, una vez que la red ha sido entrenada, se dispone de un patrón de entrada el cual se transmite a través de sucesivas capas de neuronas hasta la salida. En la fase de entrenamiento o aprendizaje, se ajustan los pesos de la red de modo que 319 Capítulo 15. Aprendizaje Automático (Machine Learning) la diferencia: salida deseada por el usuario con la salida obtenida por la red sea muy pequeña. Analizando el comportamiento más en detalle, cuando se presenta un patrón p de p p p entrada X p : x1 ,…,xi … xN , el cual se transmite desde la capa de entrada hacia la capa oculta ajustándose en función de los pesos wji. Las neuronas de la capa intermedia transforman las señales recibidas empleando una función de activación dando lugar a un valor de salida, el cual se transmite hacia la capa de salida ajustándose según los pesos vkj. Desde un punto de vista matemático, la entrada total o neta que recibe una neurona p oculta j, net j , es: N p net j p (15.87) = ∑ wji xi + θj i=1 p donde θj es el umbral de la neurona. El valor de salida de la neurona oculta j, yj , se obtiene como resultado de aplicar una función f(·) sobre su entrada neta: p p yj = f(net j ) (15.88) p Análogamente, la entrada neta que recibe una neurona de salida k, net k , es: H p net k p = ∑ vkj yj + θk (15.89) j=1 p El valor de salida de la neurona de salida k, yk , es: p p yk = f(net k ) (15.90) En la etapa de aprendizaje, se debe conseguir hacer mínimo el error entre la salida obtenida por la red y la salida deseada por el usuario, dado un conjunto de patrones denominado grupo de entrenamiento. Así, en las redes backpropagation el aprendizaje es de tipo supervisado. La función de error a minimizar para cada patrón p viene dada por: M 1 p p E p = ∑(dk − yk )2 2 k=1 320 (15.91) Capítulo 15. Aprendizaje Automático (Machine Learning) p Siendo dk la salida deseada para la neurona de salida k con un patrón p. Partiendo de esta ecuación se puede calcular el error: P E = ∑ Ep (15.92) p=1 El ajuste de los pesos en la técnica backpropagation se conoce como de gradiente decreciente. Teniendo en cuenta que Ep es función de todos los pesos de la red, el gradiente de Ep es un vector que se calcula como la derivada parcial de Ep respecto a cada uno de los pesos. Así, el gradiente se direcciona hacia el aumento más rápido en el error, mientras que en sentido contrario negativo se obtiene la disminución más rápida en el error, lo que conlleva a que el error puede reducirse optimizando cada peso en la dirección: P −∑ p=1 ∂E p ∂wji (15.93) El método de gradiente decreciente podría presentar el problema consistente en que el aprendizaje converja a un mínimo local lo cual requeriría de técnicas más avanzadas para salir del mínimo local y acometer la búsqueda de otro óptimo. Una forma de alterar los pesos de forma iterativa radica en aplicar la regla de la cadena a la fórmula del gradiente y añadir una tasa de aprendizaje η. De este modo, en una neurona de salida: P ∂E p p p Δvkj (n + 1) = −η = η ∑ δk yk ∂vkj (15.94) p=1 Con p p p p δk = (dk − yk )f´(net k ) (15.95) Siendo n la iteración. En una neurona oculta: P p p Δωji (n + 1) = η ∑ δj yi (15.96) p=1 Donde 321 Capítulo 15. Aprendizaje Automático (Machine Learning) p δj = M p p f(net j ) ∑ δk vkj p=1 (15.97) El error, valor delta, asociado a una neurona oculta j, se calcula sumando los errores que se cometen en las k neuronas de salida que reciben como entrada la salida de esa neurona oculta j. Este hecho es el que condiciona que el algoritmo también se llame propagación del error hacia atrás. El cambio de los pesos al actualizar ocurre después de haber presentado todos los patrones de entrenamiento siendo este planteamiento la manera clásica de proceder, la cual se llama aprendizaje por lotes o batch. En el modo de aprendizaje en serie o modo on line se actualizan los pesos tras la presentación de cada patrón de entrenamiento, lo cual se realiza siguiendo un orden aleatorio. Rumelhart (1986) añadió un factor momento, α, al objeto de acelerar el proceso de convergencia de los pesos, que tiene en cuenta la dirección del incremento de la iteración anterior: P p p Δvkj (n + 1) = η ∑ δk yk + αΔvkj (n) (15.98) p=1 Una red del tipo perceptrón multicapa permite atacar, básicamente, dos tipos de problemas. En primer lugar, problemas de predicción, los cuales estiman una variable continua de salida, obtenidas a partir de un grupo de variables predictoras de entrada (discretas y/o continuas). En segundo lugar, problemas de clasificación, que tienen por objeto la asignación de la categoría de pertenencia de un determinado patrón a raíz de un conjunto de variables predictoras de entrada, ya sean discretas y/o continuas. Para conseguir un funcional óptimo, es necesario seleccionar con mucho cuidado las variables a utilizar tratando de incluir las variables predictoras que ciertamente predigan la variable dependiente o de salida, pero que no tengan relaciones entre sí con el objetivo de evitar que se produzca un sobreajuste innecesario en el modelo. Las variables deben proceder de una distribución normal o uniforme, y el rango de posibles valores debe ser aproximadamente el mismo y deben estar acotadas dentro 322 Capítulo 15. Aprendizaje Automático (Machine Learning) del intervalo de trabajo de la función de activación utilizadas en las capas ocultas y de salida de la red neuronal. Por consiguiente, usualmente las variables de entrada y salida suelen estar acotadas en valores comprendidos entre 0 y 1 ó entre −1 y 1. En el caso de que la variable sea discreta, es común emplear la codificación dummy de varios niveles. En el proceso de elección de los pesos iniciales en el entrenamiento de la red neuronal, lo habitual es comenzar con pesos bajos obtenidos de forma aleatoria, en un rango comprendido entre -0,5 y 0,5 o parecido para luego ajustarlos según el procedimiento de cálculo. En cuanto a la topología de la red, en la mayoría de problemas prácticos suele ser suficiente con emplear una única capa oculta. El número de neuronas de la capa de entrada está determinado por la cantidad de variables predictoras de manera únivoca. El número de neuronas de la capa de salida se calcula empleando el mismo esquema. Para intentar segregar entre dos categorías, es suficiente con emplear una única neurona. En un problema de estimación, se dispondrá de una única neurona que proporcionará la salida del valor de la variable a estimar. La cantidad de neuronas ocultas decide la capacidad de aprendizaje de la red neuronal. Una cuestión que no se debe olvidar es el problema del sobreajuste, para lo cual es imprescindible utilizar el mínimo número de neuronas ocultas, y evaluar el rendimiento de varias topologías en función de los resultados obtenidos con el conjunto de validación. La tasa de aprendizaje (η) gobierna el tamaño de los pesos en cada iteración. Se deben evitar dos circunstancias: una tasa de aprendizaje muy pequeña podría provocar una reducción de la velocidad de convergencia con lo que podría quedar atrapado en un mínimo local. Por otra parte, un ritmo de aprendizaje muy grande puede llevar a inestabilidades en la función de error, lo cual evitará la convergencia debido a que se oscilará alrededor del mínimo sin llegar a alcanzarlo. De este modo, es crucial seleccionar una tasa de aprendizaje lo más grande posible pero sin que aparezcan oscilaciones. La experiencia dicta que esta tasa de aprendizaje 323 Capítulo 15. Aprendizaje Automático (Machine Learning) suele variar entre 0,05 y 0,5. El factor momento (α) acelera la convergencia de los pesos y toma valores cercanos a 1. La función de activación de las neuronas ocultas y de salida suele ser de dos tipos: la función lineal (o identidad) y la función sigmoidal (logística o tangente hiperbólica). No obstante, para aprovechar la capacidad de las redes neuronales de aprender relaciones complejas o no lineales entre variables, es muy recomendable emplear funciones no lineales al menos en las neuronas de la capa oculta. Así, es común utilizar una función sigmoidal como función de activación en las neuronas de la capa oculta. En cuanto a la función de activación en las neuronas de la capa de salida va, a depender de los múltiples factores. En tareas de clasificación, las neuronas generalmente emplean la función de activación sigmoidal; sin embargo, en tareas de predicción o aproximación de una función, las neuronas suelen hacer uso de la función de activación lineal. Una vez que el modelo de red ha sido escogido de modo que se ha conseguido la mejor ejecución ante el conjunto de validación, hay que evaluar la capacidad de generalización de la red aplicando un procedimiento completamente objetivo a partir de un tercer grupo de datos independiente, denominado grupo de test. Para estimar una función, generalmente se emplea la media cuadrática del error para evaluar la ejecución del modelo: MCerror = ∑Pp=1 ∑Pp=1 δpk ykp PM (15.99) En clasificación de patrones se puede hacer uso de la frecuencia de clasificaciones, construyendo una tabla de confusión y calcula los índices de asociación entre el criterio y la decisión que ha tomado la red neuronal. Para interpretar los pesos obtenidos de la red neuronal, el mejor método es el análisis de sensibilidad, el cual está basado en estimar el efecto observado en una salida y k cuando la entrada xi cambia. A mayor efecto sobre la salida, mayor será la sensibilidad respecto a la entrada. Así, puede fijarse el valor de todas las variables de entrada a su valor medio y variar una de ellas a lo largo de todo su rango, registrando el valor de salida de la red. 324 Capítulo 15. Aprendizaje Automático (Machine Learning) Seguidamente se van a exponer los resultados alcanzados en este trabajo utilizando diferentes paquetes de redes naturales artificiales de los que dispone r-project. De nuevo se vuelve a utilizar R como entorno de programación dado su enfoque al área de la estadística y su potencia como software libre, heredada del lenguaje S. Existen innumerables paquetes en r-project orientados a trabajar con redes naturales artificiales. A continuación se hará una revisión inicial de los más destacados. El paquete nnet es un paquete inicial de trabajo con funcionalidades muy interesantes. Quizás de los más populares es el paquete neuralnet, el cual contiene muchas opciones de entrenamiento con capacidad de hacer esquemas de la red que se ha entrenado y de realizar múltiples repeticiones de entrenamiento del modelo. En cuanto al paquete RSNNS es también bastante conocido y similar en capacidades a neuralnet, muy versátil que permite elegir una gran cantidad de algoritmos de entrenamiento y alterar sus parámetros de funcionamiento. Otro paquete, ciertamente desconocido en la bibliografía es el brnn, dada su reciente aparición a finales del 2018, con elevada potencia de cálculo y grandes posibilidades de crecimiento. Como continuación, un paquete bastante potente, con muchísimas funciones pero ciertamente complejo es el caret, a la par que muy reciente (27 de abril de 2019). En un escalón superior se tiene el aprendizaje profundo, donde estos paquetes hacen uso de diversas tecnologías, incluidas las redes neuronales artificiales. Así, dentro del aprendizaje profundo, h2o es un paquete muy sofisticado y complejo, demanda una gran cantidad de memoria, librerías específicas de la última versión de Java y el Java Development Kit, así como generar sesiones de trabajo y cerrarlas al finalizar. Por otra parte el paquete darch requiere el paquete de r gputools, que solo se soporta en Linux y MacOS con las limitaciones que ello conlleva. MXNetR depende de la librería cuDNN, la cual requiere de una licencia previo pago. Para concluir, deepnet es un paquete de trabajo donde su limitación principal es que carece de soporte GPU (graphics processing unit). Como se ha indicado anteriormente, se ha ejecutado el algoritmo memético en cien ocasiones obteniendo una nube de puntos que se van a usar como datos de aprendizaje en el paquete utilizado a continuación. Debido a la filosofía de 325 Capítulo 15. Aprendizaje Automático (Machine Learning) programación, los datos de partida proceden de una matriz llamada matrizfact, la cual presenta la siguiente estructura de información: entropia<-matrizfact[,1] factMmmm<-matrizfact[,2] factdecv<-matrizfact[,3] factdeca<-matrizfact[,4] La primera tarea es configurar las variables empleando dataframes, una clase de objetos especial en r-project, de más alto nivel que las matrices, que van a ser necesarios en algunos de los paquetes que se van a ver a continuación: framematrizfact<-data.frame(entropia,factMmmm,factdecv,factdeca) Se toman los datos de partida, de los cuales se ha asumido el 90% para entrenamiento (training) y el restante 10% para prueba, verificación y/o validación (test). Como se ha indicado antes, estos datos se encuentran ordenados por la entropía global EEG de menor a mayor, donde se ha considerado más apropiado que los datos de entrenamiento sean los de entropía más baja y los de prueba los de entropía más alta, dado que el objetivo que se pretende es realizar el proceso de verificación con las entropías más altas, debido a que, como se ha visto antes, alcanzar entropías más altas se va volviendo cada vez más complejo y difícil en el procedimiento general. aprendizajematrizfact<-framematrizfact[1:90,] pruebamatrizfact<-framematrizfact[91:100,] Se va a comenzar con el paquete neuralnet. library(neuralnet) Para factMmmm, se parte del aprendizaje: rna_ajustefactMmmm<neuralnet(factMmmm~entropia+factdecv+factdeca,aprendizajematrizfact,hidden=200, threshold=0.01) Siendo hidden un vector de enteros que especifica el número de neuronas ocultas en cada capa mientras que threshold es un argumento de error que define el criterio de 326 Capítulo 15. Aprendizaje Automático (Machine Learning) parada. También puede incluirse el argumento rep que define el número de repeticiones en el entrenamiento. En la función neuralnet también se han variado diferentes argumentos como algorithm como “backprop”, “rprop+”, “rprop-”, “sag” o “slr”. “Backprop” se refiere a retrotraerse hacia atrás, “rprop+” y “rprop-” son la propagación de respaldo resistente con y sin retroceso de peso, mientras que ”sag“ y ”slr“ inducen el uso del algoritmo global convergente modificado (grprop). Para concluir, el cambio en estos argumentos no ha experimentado gran variación en el resultado final. Mediante la función plot(rna_ajustefactMmmm) se puede obtener una representación de la red neuronal artificial. Esta representación se ha efectuado únicamente para hidden=10 para facilitar la visualización. Figura 15.9. Representación de la red neuronal artificial neuralnet (hidden=10). En cuanto a la verificación: rna_prediccionfactMmmm<-compute(rna_ajustefactMmmm,pruebamatrizfact) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmrna_prediccionfactMmmm$net.result)^2))/nrow(pruebamatrizfact))<-3.837955 En el caso de factdecv: 327 Capítulo 15. Aprendizaje Automático (Machine Learning) rna_ajustefactdecv<neuralnet(factdecv~entropia+factMmmm+factdeca,aprendizajematrizfact,hidden=200, threshold=0.01). Mediante la función plot(rna_ajustefactdecv) se puede obtener una representación de la red neuronal artificial. Esta representación se ha efectuado únicamente para hidden=10 para facilitar la visualización. Figura 15.10. Representación de la red neuronal artificial neuralnet (hidden=10). En cuanto a la verificación: rna_prediccionfactdecv<-compute(rna_ajustefactdecv,pruebamatrizfact) errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvrna_prediccionfactdecv$net.result)^2))/nrow(pruebamatrizfact))<-0.9534374 En el caso de factdeca: rna_ajustefactdeca<neuralnet(factdeca~entropia+factMmmm+factdecv,aprendizajematrizfact,hidden=10,t hreshold=0.01). Mediante la función plot(rna_ajustefactdeca) se puede obtener una representación de la red neuronal artificial. Esta representación se ha efectuado únicamente para hidden=10 para facilitar la visualización. 328 Capítulo 15. Aprendizaje Automático (Machine Learning) Figura 15.11. Representación de la red neuronal artificial neuralnet (hidden=10). rna_prediccionfactdeca<-compute(rna_ajustefactdeca,pruebamatrizfact) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecarna_prediccionfactdeca$net.result)^2))/nrow(pruebamatrizfact))<-1.292793 Para terminar, se puede concluir que aunque el paquete neuralnet ha obtenido errores pequeños no alcanza los resultados obtenidos con el paquete e1071 de máquinas de vectores soporte. A continuación se va a realizar el análisis empleando el paquete nnet: library(nnet) Para factMmmm, se parte del aprendizaje: rna_ajustefactMmmm<nnet(factMmmm~entropia+factdecv+factdeca,aprendizajematrizfact,size=100,rang=0. 1,decay=5e-2,maxit=5000,linout=T,trace=F) Siendo size el número de unidades en la capa oscura, rang son pesos aleatorios iniciales comprendidos entre [-rang, rang], decay un argumento de peso, maxit el número máximo de iteraciones y linout el argumento para ajuste lineal. El paquete nnet no dispone de entorno gráfico pero se puede obtener una representación de la red neuronal artificial utilizando el paquete library(NeuralNetTools) mediante la función plotnet(rna_ajustefactMmmm). Esta representación se ha efectuado únicamente para size=10 para facilitar la visualización. 329 Capítulo 15. Aprendizaje Automático (Machine Learning) Figura 15.12. Representación de la red neuronal artificial nnet (size=10). En cuanto a la verificación: rna_prediccionfactMmmm<-predict(rna_ajustefactMmmm,pruebamatrizfact) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmrna_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-1.032306 El funcionamiento interno de la función nnet comienza la iteración partiendo del argumento Wts de carácter aleatorio. Para paliar este efecto se ha dotado al paquete nnet de una capa superior, que iterando sucesivamente, va acotando progresivamente el error errorfactMmmm (errorfactdecv, errorfactdeca) hasta hacerlo mínimo, y tras una serie de pasos de iteración sin mejora en errorfactMmmm (errorfactdecv, errorfactdeca) se detiene la iteración. En el caso de factdecv: rna_ajustefactdecv<nnet(factdecv~entropia+factMmmm+factdeca,aprendizajematrizfact,size=100,rang=0. 1,decay=5e-2,maxit=5000,linout=T,trace=T) El paquete nnet no dispone de entorno gráfico pero se puede obtener una representación 330 de la red neuronal artificial utilizando el paquete Capítulo 15. Aprendizaje Automático (Machine Learning) library(NeuralNetTools) mediante la función plotnet(rna_ajustefactdecv). Esta representación se ha efectuado únicamente para size=10 para facilitar la visualización. Figura 15.13. Representación de la red neuronal artificial nnet (size=10). En cuanto a la verificación: rna_prediccionfactdecv<-predict(rna_ajustefactdecv,pruebamatrizfact) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvrna_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-1.319945 En el caso de factdeca: rna_ajustefactdeca<nnet(factdeca~entropia+factMmmm+factdecv,aprendizajematrizfact,size=100,rang=0. 1,decay=5e-2,maxit=5000,linout=T,trace=T) El paquete nnet no dispone de entorno gráfico pero se puede obtener una representación de la red neuronal artificial utilizando el paquete library(NeuralNetTools) mediante la función plotnet(rna_ajustefactdeca). Esta representación se ha efectuado únicamente para size=10 para facilitar la visualización. 331 Capítulo 15. Aprendizaje Automático (Machine Learning) Figura 15.14. Representación de la red neuronal artificial nnet (size=10). En cuanto a la verificación: rna_prediccionfactdeca<-predict(rna_ajustefactdeca,pruebamatrizfact) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecarna_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.226827 Para terminar, se puede concluir que aunque el paquete nnet ha obtenido errores pequeños similares a los obtenidos con el neuralnet, pero no llega a alcanzar los resultados obtenidos con el paquete e1071 de máquinas de vectores soporte. A continuación se va a realizar el análisis empleando el paquete RSNNS: library(RSNNS) Debido a la forma de trabajo del paquete RSNNS, los datos de partida se cargan mediante matrices que se especifican a continuación: aprendizajeentropia<-matrizfact[1:90,1] aprendizajefactMmmm<-matrizfact[1:90,2] aprendizajefactdecv<-matrizfact[1:90,3] aprendizajefactdeca<-matrizfact[1:90,4] pruebaentropia<-matrizfact[91:100,1] 332 Capítulo 15. Aprendizaje Automático (Machine Learning) pruebafactMmmm<-matrizfact[91:100,2] pruebafactdecv<-matrizfact[91:100,3] pruebafactdeca<-matrizfact[91:100,4] Para factMmmm, se parte del aprendizaje: Se especifican las siguientes matrices: aprendizajefact_Mmmm<matrix(c(aprendizajeentropia,aprendizajefactdecv,aprendizajefactdeca),nrow=90,ncol= 3) pruebafact_Mmmm<matrix(c(pruebaentropia,pruebafactdecv,pruebafactdeca),nrow=10,ncol=3) rna_ajustefactMmmm<mlp(aprendizajefact_Mmmm,aprendizajefactMmmm,size=10,learnFuncParams=c(0.1), maxit=100,linOut=TRUE,inputsTest=pruebafact_Mmmm,targetsTest=pruebafactMmm m) Siendo size el número de unidades en la capa oscura, learnFuncParams los parámetros de entrada de la función de aprendizaje, maxit el número máximo de iteraciones y linOut es la función de activación en la salida a lineal o bien logística. El paquete RSNNS no dispone de entorno gráfico pero se puede obtener una representación de la red neuronal artificial utilizando el paquete library(NeuralNetTools) mediante la función plotnet(rna_ajustefactMmmm) similar a la obtenida con el paquete nnet. En cuanto a la verificación: rna_prediccionfactMmmm<-predict(rna_ajustefactMmmm,pruebafact_Mmmm) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmrna_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-0.591042 333 Capítulo 15. Aprendizaje Automático (Machine Learning) El funcionamiento interno de la función mlp comienza la iteración partiendo del argumento initFunc="Randomize_Weights" de carácter aleatorio. Para paliar este efecto se ha dotado al paquete RSNNS de una capa superior, que iterando sucesivamente, va acotando progresivamente el error errorfactMmmm (errorfactdecv, errorfactdeca) hasta hacerlo mínimo, y tras una serie de pasos de iteración sin mejora en errorfactMmmm (errorfactdecv, errorfactdeca) se detiene la iteración. En el caso de factdecv: Se especifican las siguientes matrices: aprendizajefact_decv=matrix(c(aprendizajeentropia,aprendizajefactMmmm,aprendizaj efactdeca),nrow=90,ncol=3) pruebafact_decv=matrix(c(pruebaentropia,pruebafactMmmm,pruebafactdeca),nrow= 10,ncol=3) rna_ajustefactdecv<mlp(aprendizajefact_decv,aprendizajefactdecv,size=20,learnFuncParams=c(0.1),maxit= 100,linOut=TRUE,inputsTest=pruebafact_decv,targetsTest=pruebafactdecv) El paquete RSNNS no dispone de entorno gráfico pero se puede obtener una representación de la red neuronal artificial utilizando el paquete library(NeuralNetTools) mediante la función plotnet(rna_ajustefactdecv) similar a la obtenida con el paquete nnet. En cuanto a la verificación: rna_prediccionfactdecv<-predict(rna_ajustefactdecv,pruebafact_decv) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvrna_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-0.9680308 En el caso de factdeca: Se especifican las siguientes matrices: 334 Capítulo 15. Aprendizaje Automático (Machine Learning) aprendizajefact_deca=matrix(c(aprendizajeentropia,aprendizajefactMmmm,aprendizaj efactdecv),nrow=90,ncol=3) pruebafact_deca=matrix(c(pruebaentropia,pruebafactMmmm,pruebafactdecv),nrow= 10,ncol=3) rna_ajustefactdeca<mlp(aprendizajefact_deca,aprendizajefactdeca,size=20,learnFuncParams=c(0.1),maxit= 100,linOut=TRUE,inputsTest=pruebafact_deca,targetsTest=pruebafactdeca) El paquete RSNNS no dispone de entorno gráfico pero se puede obtener una representación de la red neuronal artificial utilizando el paquete library(NeuralNetTools) mediante la función plotnet(rna_ajustefactdeca) similar a la obtenida con el paquete nnet. En cuanto a la verificación: rna_prediccionfactdeca<-predict(rna_ajustefactdeca,pruebafact_deca) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecarna_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.082916 Para concluir, el paquete RSNNS ha conseguido una buena precisión, con errores pequeños similares a los obtenidos con el neuralnet y nnet, pero sigue sin poder alcanzar los resultados obtenidos con el paquete e1071 de máquinas de vectores soporte. A continuación se va a realizar el análisis empleando el paquete brnn: library(brnn) Para factMmmm, se parte del aprendizaje: rna_ajustefactMmmm<brnn(factMmmm~entropia+factdecv+factdeca,aprendizajematrizfact,neurons=10) Siendo neurons un entero positivo que indica el número de neuronas. El paquete brnn no dispone de entorno gráfico. 335 Capítulo 15. Aprendizaje Automático (Machine Learning) En cuanto a la verificación: rna_prediccionfactMmmm<-predict.brnn(rna_ajustefactMmmm,pruebamatrizfact) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmrna_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-0.6246311 El funcionamiento interno de la función brnn comienza la iteración haciendo uso del procedimiento de Monte Carlo de carácter no determinista [11]. Para paliar este efecto se ha dotado al paquete brnn de una capa superior, que iterando sucesivamente, va acotando progresivamente el error errorfactMmmm (errorfactdecv, errorfactdeca) hasta hacerlo mínimo, y tras una serie de pasos de iteración sin mejora en errorfactMmmm (errorfactdecv, errorfactdeca) se detiene la iteración. En el caso de factdecv: rna_ajustefactdecv<brnn(factdecv~entropia+factMmmm+factdeca,aprendizajematrizfact,neurons=10) En cuanto a la verificación: rna_prediccionfactdecv<- predict.brnn(rna_ajustefactdecv,pruebamatrizfact) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvrna_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-0.9297177 En el caso de factdeca: rna_ajustefactdeca<brnn(factdeca~entropia+factMmmm+factdecv,aprendizajematrizfact,neurons=10) En cuanto a la verificación: rna_prediccionfactdeca<-predict(rna_ajustefactdeca,pruebamatrizfact) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: 336 Capítulo 15. Aprendizaje Automático (Machine Learning) errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecarna_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.076015 Para concluir, el paquete brnn ha conseguido una buena precisión, con errores pequeños similares a los obtenidos con el neuralnet, nnet y RSNNS, pero sigue sin poder alcanzar los resultados obtenidos con el paquete e1071 de máquinas de vectores soporte. A continuación se va a realizar el análisis empleando el paquete caret: library(caret) Debido a la forma de trabajo del paquete caret, los datos de partida se cargan mediante matrices que se especifican a continuación: aprendizajeentropia<-matrizfact[1:90,1] aprendizajefactMmmm<-matrizfact[1:90,2] aprendizajefactdecv<-matrizfact[1:90,3] aprendizajefactdeca<-matrizfact[1:90,4] pruebaentropia<-matrizfact[91:100,1] pruebafactMmmm<-matrizfact[91:100,2] pruebafactdecv<-matrizfact[91:100,3] pruebafactdeca<-matrizfact[91:100,4] Para factMmmm, se parte del aprendizaje: Se especifican las siguientes matrices: aprendizajefact_Mmmm<matrix(c(aprendizajeentropia,aprendizajefactdecv,aprendizajefactdeca),nrow=90,ncol= 3) pruebafact_Mmmm<matrix(c(pruebaentropia,pruebafactdecv,pruebafactdeca),nrow=10,ncol=3) 337 Capítulo 15. Aprendizaje Automático (Machine Learning) Además, el paquete caret requiere un encabezado en las columnas: colnames(aprendizajefact_Mmmm)<c("aprendizajeentropia","aprendizajefactdecv","aprendizajefactdeca") rna_ajustefactMmmm<train(aprendizajefact_Mmmm,aprendizajefactMmmm,method="knn") De todos los métodos disponibles en caret, se ha seleccionado knn por ser el que ha proporcionado los mejores resultados en este trabajo. El algoritmo k-nearest neighbors (KNN) es un método de clasificación y regresión no paramétrico, que predice el resultado de una nueva observación comparándolo con k casos similares en el conjunto de datos de entrenamiento. El paquete caret no dispone de entorno gráfico específico para redes neuronales. En cuanto a la verificación: rna_prediccionfactMmmm<-predict(rna_ajustefactMmmm,aprendizajefact_Mmmm) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmrna_prediccionfactMmmmprueba)^2))/nrow(pruebamatrizfact))<-1.047094 El funcionamiento interno de la función train comienza la iteración partiendo del argumento seeds de carácter aleatorio. Para paliar este efecto se ha dotado al paquete caret de una capa superior, que iterando sucesivamente, va acotando progresivamente el error errorfactMmmm (errorfactdecv, errorfactdeca) hasta hacerlo mínimo, y tras una serie de pasos de iteración sin mejora en errorfactMmmm (errorfactdecv, errorfactdeca) se detiene la iteración. En el caso de factdecv: Se especifican las siguientes matrices: aprendizajefact_decv=matrix(c(aprendizajeentropia,aprendizajefactMmmm,aprendizaj efactdeca),nrow=90,ncol=3) 338 Capítulo 15. Aprendizaje Automático (Machine Learning) pruebafact_decv=matrix(c(pruebaentropia,pruebafactMmmm,pruebafactdeca),nrow= 10,ncol=3) Además, el paquete caret requiere un encabezado en las columnas: colnames(aprendizajefact_decv)<c("aprendizajeentropia","aprendizajefactMmmm","aprendizajefactdeca") rna_ajustefactdecv<-train(aprendizajefact_decv,aprendizajefactdecv,method="knn") El paquete caret no dispone de entorno gráfico específico para redes neuronales. En cuanto a la verificación: rna_prediccionfactdecv<-predict(rna_ajustefactdecv,aprendizajefact_decv) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvrna_prediccionfactdecvprueba)^2))/nrow(pruebamatrizfact))<-0.8285165 En el caso de factdeca: Se especifican las siguientes matrices: aprendizajefact_deca=matrix(c(aprendizajeentropia,aprendizajefactMmmm,aprendizaj efactdecv),nrow=90,ncol=3) pruebafact_deca=matrix(c(pruebaentropia,pruebafactMmmm,pruebafactdecv),nrow= 10,ncol=3) Además, el paquete caret requiere un encabezado en las columnas: colnames(aprendizajefact_deca)<c("aprendizajeentropia","aprendizajefactMmmm","aprendizajefactdecv") rna_ajustefactdeca<-train(aprendizajefact_deca,aprendizajefactdeca,method="knn") El paquete caret no dispone de entorno gráfico específico para redes neuronales. En cuanto a la verificación: rna_prediccionfactdeca<-predict(rna_ajustefactdeca,aprendizajefact_deca) 339 Capítulo 15. Aprendizaje Automático (Machine Learning) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecarna_prediccionfactdecaprueba)^2))/nrow(pruebamatrizfact))<-1.084138 Para concluir, el paquete caret ha conseguido una buena precisión, con errores pequeños similares a los obtenidos con el neuralnet, nnet, RSNNS y brnn, pero sigue sin poder alcanzar los resultados obtenidos con el paquete e1071 de máquinas de vectores soporte. A continuación se va a realizar el análisis empleando el paquete deepnet: library(deepnet) Debido a la forma de trabajo del paquete deepnet, los datos de partida se cargan mediante matrices que se especifican a continuación: aprendizajeentropia<-matrizfact[1:90,1] aprendizajefactMmmm<-matrizfact[1:90,2] aprendizajefactdecv<-matrizfact[1:90,3] aprendizajefactdeca<-matrizfact[1:90,4] pruebaentropia<-matrizfact[91:100,1] pruebafactMmmm<-matrizfact[91:100,2] pruebafactdecv<-matrizfact[91:100,3] pruebafactdeca<-matrizfact[91:100,4] Para factMmmm, se parte del aprendizaje: Se especifican las siguientes matrices: aprendizajefact_Mmmm<matrix(c(aprendizajeentropia,aprendizajefactdecv,aprendizajefactdeca),nrow=90,ncol= 3) pruebafact_Mmmm<matrix(c(pruebaentropia,pruebafactdecv,pruebafactdeca),nrow=10,ncol=3) 340 Capítulo 15. Aprendizaje Automático (Machine Learning) rna_ajustefactMmmm<nn.train(aprendizajefact_Mmmm,aprendizajefactMmmm,hidden=c(5),activationfun="s igm",momentum=0.3,output="linear") Siendo hidden un vector que especifica el número de neuronas ocultas por capa, activationfun la función de activación de la capa oculta, momentum el momento del gradiente de descenso y output la función de salida. El paquete deepnet no dispone de entorno gráfico. En cuanto a la verificación: rna_prediccionfactMmmm<-nn.predict(rna_ajustefactMmmm,pruebafact_Mmmm) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactMmmm<-sqrt((sum((pruebamatrizfact$factMmmmrna_prediccionfactMmmm)^2))/nrow(pruebamatrizfact))<-0.3966118 El funcionamiento interno de la función nn.train comienza la iteración partiendo del argumento initW de carácter aleatorio. Para paliar este efecto se ha dotado al paquete RSNNS de una capa superior, que iterando sucesivamente, va acotando progresivamente el error errorfactMmmm (errorfactdecv, errorfactdeca) hasta hacerlo mínimo, y tras una serie de pasos de iteración sin mejora en errorfactMmmm (errorfactdecv, errorfactdeca) se detiene la iteración. En el caso de factdecv: Se especifican las siguientes matrices: aprendizajefact_decv=matrix(c(aprendizajeentropia,aprendizajefactMmmm,aprendizaj efactdeca),nrow=90,ncol=3) pruebafact_decv=matrix(c(pruebaentropia,pruebafactMmmm,pruebafactdeca),nrow= 10,ncol=3) rna_ajustefactdecv<nn.train(aprendizajefact_decv,aprendizajefactdecv,hidden=c(5),activationfun="sigm", momentum=0.3,output="linear") 341 Capítulo 15. Aprendizaje Automático (Machine Learning) El paquete deepnet no dispone de entorno gráfico. En cuanto a la verificación: rna_prediccionfactdecv<-nn.predict(rna_ajustefactdecv,pruebafact_decv) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdecv<-sqrt((sum((pruebamatrizfact$factdecvrna_prediccionfactdecv)^2))/nrow(pruebamatrizfact))<-0.7653305 En el caso de factdeca: Se especifican las siguientes matrices: aprendizajefact_deca=matrix(c(aprendizajeentropia,aprendizajefactMmmm,aprendizaj efactdecv),nrow=90,ncol=3) pruebafact_deca=matrix(c(pruebaentropia,pruebafactMmmm,pruebafactdecv),nrow= 10,ncol=3) rna_ajustefactdeca<nn.train(aprendizajefact_deca,aprendizajefactdeca,hidden=c(5),activationfun="sigm", momentum=0.3,output="linear") El paquete deepnet no dispone de entorno gráfico. En cuanto a la verificación: rna_prediccionfactdeca<-nn.predict(rna_ajustefactdeca,pruebafact_deca) Una forma rápida de analizar los datos proporcionados por el algoritmo de predicción es calcular el error respecto a los datos de partida: errorfactdeca<-sqrt((sum((pruebamatrizfact$factdecarna_prediccionfactdeca)^2))/nrow(pruebamatrizfact))<-1.084979 Para concluir, el paquete deepnet ha conseguido una buena precisión, con errores pequeños similares a los obtenidos con el neuralnet, nnet, RSNNS, brnn y caret, pero sigue sin poder alcanzar los resultados obtenidos con el paquete e1071 de máquinas de vectores soporte. 342 Capítulo 15. Aprendizaje Automático (Machine Learning) El análisis efectuado empleando técnicas de optimización RNA de r-project ha mostrados unas características eficaces en el aprendizaje automático, las cuales han contribuido notablemente a las aportaciones de este trabajo, llegando finalmente a un resultado con un error pequeño. De esta forma, se puede finalizar este capítulo concluyendo que la aplicación de técnicas RNA, concretamente los paquetes neuralnet, nnet, RSNNS, brnn y caret y deepnet, de r-project, ha permitido elaborar un procedimiento de cálculo, que partiendo de un conjunto de datos de entrada procedentes de simulaciones, como datos de aprendizaje, para entrenar la RNA permite construir un modelo que predice comportamientos proporcionando una respuesta para una nueva muestra. Se ha realizado la verificación empleando las capacidades de optimización de la función tune, calculando para ello el error respecto a los datos de partida, como se ha visto antes, mostrando como estos errores han sido prácticamente despreciables, mejorando trascendentalmente los errores calculados antes de optimizar con tune. Para terminar se han representado los factores de decisión factMmmm, factdecv y factdeca en función de la entropía EEG de origen, comparando los resultados originales y aquellos optimizados con la función tune que presentaban el error más pequeño (factMmmm, con eps-regression y kernel radial, y parámetro épsilon; factdecv, con nu-regression y kernel radial, y parámetro gamma; y factdeca, con nuregression y kernel radial, y parámetro gamma), mostrando un paralelismo prácticamente coincidente. Una vez realizada la verificación empleando los paquetes neuralnet, nnet, RSNNS, brnn y caret y deepnet, se ha calculado el error respecto a los datos de partida, mostrando unos errores pequeños. Lamentablemente ninguno de las técnicas RNA alcanza los resultados obtenidos con el paquete e1071 de máquinas de vectores soporte empleado anteriormente, de tal modo que se puede aseverar que en este problema concreto, planteado en este trabajo, de inteligencia de enjambres, aplicando r-project, las máquinas de vectores soporte se han mostrado superiores a las redes neuronales artificiales. Para terminar se han representado los factores de decisión factMmmm, factdecv y factdeca en función de la entropía EEG de origen, comparando los resultados originales y los obtenidos mediante técnicas RNA. Para ello se ha calculado 343 Capítulo 15. Aprendizaje Automático (Machine Learning) la norma factMmmm2+factdecv2+factdeca2 comparando entre todos los paquetes y representando aquel cuya norma es la más pequeña: deepnet. fact neuralnet nnet RSNNS brnn caret deepnet factMmmm 3,837955 1,032306 0,591042 0,6246311 1,047094 0,3966118 factdecv 0,9534374 1,319945 0,9680308 0,9297177 0,8285165 0,7653305 factdeca 1,292793 1,226827 1,082916 1,076015 1,084138 1,084979 norma 17,3102552 4,31301497 2,45912134 2,41234729 2,95820064 1,92021112 Figura 15.15. Factores de decisión factMmmm, factdecv y factdeca para cada paquete. 30,000000 y = 0,0609x - 175,54 25,000000 fact 20,000000 15,000000 y = -0,0022x + 17,811 10,000000 5,000000 y = 0,0063x - 14,211 0,000000 3150 3170 3190 3210 3230 3250 3270 3290 3310 3330 Entropía Figura 15.16. Factores de decisión factMmmm, factdecv y factdeca función de la entropía con deepnet. 344 Capítulo 15. Aprendizaje Automático (Machine Learning) 345 Capítulo 16. Juegos no cooperativos en masas de enjambres A continuación se van a dar una serie de nociones acerca de la Teoría de Juegos. Esta teoría busca la mejor manera de alcanzar decisiones óptimas que deben tomar diversos jugadores en un conflicto, pudiendo definirse alternativamente como el estudio de modelos matemáticos que describen la cooperación y la negociación entre entes inteligentes dentro del proceso de toma de decisiones. Estas decisiones se consideran estratégicas, o lo que es lo mismo, los jugadores que participan en el juego lo hacen teniendo en cuanta las acciones que toman los demás. En esta parte de la teoría, los jugadores toman decisiones racionales, sin tener que exigirles que sean necesariamente humanos, dado que en la naturaleza se dan numerosos mecanismos de cooperación entre animales por medio de la teoría de juegos. Este grupo de juegos no son únicamente los juegos de mesa sino también los conflictos militares, campañas políticas, situaciones de evolución biológica, competencia entre empresas, etc. El principio fundamental que se debe plantear para encontrar la solución de un juego de decisiones simultáneas, donde los jugadores poseen información completa, es el equilibrio de Nash. En los juegos dinámicos los jugadores toman sus decisiones consecutivamente, empleando el principio de inducción hacia atrás. Para comenzar John Nash (1950) definió un equilibrio, que lleva su nombre, en el que cada jugador tiene incentivos individuales para no cumplir con el acuerdo únicamente 346 Capítulo 16. Juegos no cooperativos en masas de enjambres en el caso de que la estrategia establecida de cada jugador es la mejor respuesta a la dispuesta por los demás, ya que el jugador que no cumple el pacto de forma unilateral corre el riesgo de ganar menos de lo que hubiera ganado si se hubiese mantenido, por lo que no existen incentivos para incumplir. Este equilibrio se conoce habitualmente como equilibrio de Nash [56]. En definitiva, un equilibrio de Nash es una combinación de estrategias tal que la estrategia de cada jugador es la mejor que puede escoger, dada la que elige el otro. Un equilibrio de Nash se alcanza cuando ninguno de los jugadores encuentra incentivos para modificar su estrategia actual. Es decir, la estrategia elegida por cada participante maximiza sus utilidades, dadas las estrategias de sus competidores [20]. Nash empleó funciones de pago determinadas por combinaciones de estrategias puras en un juego finito, de información completa y memoria perfecta. El punto de equilibrio que se obtiene es un punto fijo en el que las expectativas de los jugadores coinciden con respecto a lo que los otros jugadores harán. Nash apuntó en su trabajo que “existen situaciones en política económica e internacional en las cuales los grupos de interés están envueltos en juegos no cooperativos sin ser conscientes de ello; la no conciencia ayuda a hacer la situación verdaderamente no cooperativa”. Un problema con el concepto de equilibrio de Nash es que es posible que existan muchos equilibrios en los juegos no cooperativos, o ninguno en absoluto [38] [53]. El primer punto de partida que se analiza en la teoría de juegos no cooperativos es que los jugadores pueden comunicarse entre sí. Esta capacidad de comunicación permite introducir oportunidades de cooperación entre los jugadores que pueden cambiar el resultado radicalmente. Desde un punto de vista formal, la Teoría de Juegos permite modelar explícitamente el proceso por el que los jugadores se comunican. No obstante, esta modelización no tiene en cuenta consideración alguna de tipo estratégica relativa a la formación de coaliciones y comportamientos cooperativos. Sin embargo, no debe descartarse la posibilidad de comportamientos cooperativos a raíz de la comunicación entre jugadores a la hora de plantear estrategias. Esta etapa de comunicación previa al juego 347 Capítulo 16. Juegos no cooperativos en masas de enjambres propiamente dicho no se modeliza aunque pueden explorarse razonamientos para justificar que deben cumplir las soluciones cuando los jugadores pueden comunicarse. Es indudable que los jugadores pueden intentar coordinarse para producir resultados que les sean mutuamente beneficiosos, siendo el objetivo de comunicarse entre los jugadores para alcanzar un compromiso que permita obtener ganancias derivadas de la cooperación de los jugadores. No obstante, debe tenerse en cuenta que en juegos no cooperativos los acuerdos o compromisos que alcancen los jugadores no tienen fuerza contractual pero estos acuerdos pueden oscilar desde un equilibrio de Nash a otro en estrategias puras en sentido de Pareto. A continuación se van a resumir una serie de conceptos a tener en cuenta. Considérese un juego normal no cooperativo G definido por una terna (N, A, u), donde N={1,2,...,n} es el conjunto de jugadores, A = ∏ni=1 Ai es el conjunto de perfiles de acciones o estrategias (Ai es el conjunto de acciones o estrategias del jugador i), y u=(ui,...,un) es la función de pagos (para cada i∈N, Ui:A→ℝ es una función de utilidad von NeumannMorgenstern). En esta fase se supone que el conjunto A es finito. Dado un conjunto arbitrario B, se denotará por ΔB al conjunto de distribuciones de probabilidad sobre B. IBI se corresponde con la cardinalidad de B (IBI es el número de elementos de B). Los elementos σi del conjunto ΔAi son estrategias mixtas del jugador i, σ ∈ ∏i∈N(ΔAi ) es un perfil de estrategias mixtas. Dado σ ∈ ∏i∈N(ΔAi ), la utilidad esperada del jugador i puede escribirse como: Ui (σ) = ∑ σ1 (a1 ), … , σn (an )ui (a) (16.1) a∈A El concepto de equilibrio empleado habitualmente en juegos no cooperativos es el equilibrio de Nash. Un perfil Dado σ ∈ ∏i∈N(ΔAi ), la utilidad es un equilibrio de Nash si ningún jugador i∈N tiene una estrategia mixta σ´i∈ΔAi tal que Ui(σi,...,σi-1,σ´i, σi+1,...,σn)>Ui(σ). Es decir, en un equilibrio de Nash ningún jugador tiene alicientes para desviarse. El concepto de equilibrio de Nash es un concepto de juegos no cooperativos en la que los jugadores no tienen la oportunidad de comunicarse antes de decidir sus 348 Capítulo 16. Juegos no cooperativos en masas de enjambres estrategias, pero este concepto debe remodelarse cuando los jugadores pueden comunicarse. En juegos repetidos, los jugadores plantean un juego normal durante un número de ocasiones. Dado un juego normal G, se denota por GT el juego repetido en el que los jugadores se van enfrentando a G durante T periodos (T se define como el horizonte del juego y puede ser un numero finito o infinito). En juegos repetidos se supone que los jugadores observan al final de cada periodo, tras cada repetición, las acciones realizadas en cada momento. Sea at = (at1 , … , atn ) el perfil de acciones tomadas por los distintos jugadores en el periodo t. Una historia se define como un vector de perfiles de estrategias que concreta un perfil de estrategias para cada periodo t=0,1,…,T, con h=(a 0,a1,...,aT), donde a0∈A. Considérese una historia h y un periodo t, se nombra h t al vector de acciones seleccionadas en todos los periodos anteriores a t, =(a0,a1,...,at-1). Sea Ht=(A)t el conjunto de todas aquellas posibles historias de t periodos. Así, cada h t∈Ht es una posible historia en el período t. Sea H=Ut≥0Ht todo aquel conjunto de historias posibles en el juego repetido en el inicio de cualquier periodo. De este modo, se define una estrategia pura para un jugador i en el juego GT como una función fi:H→Ai. Por otra parte, sea Fi el conjunto de estrategias puras del jugador i, y sea F = ∏i∈N Fi el conjunto de perfiles de estrategias puras. Así, una estrategia mixta para el jugador i es una distribución de probabilidad sobre el conjunto de estrategias puras, σi∈ΔFi. Con lo cual, para cada historia h∈H, se denota por gh al subjuego que continua la historia h. Con lo cual, dado un perfil de estrategias σ, σh representa la proyección de σ en el subjuego gh. Dado que todos los jugadores observan ht, una estrategia pura fi del jugador i en el juego repetido es un conjunto de funciones (una para cada periodo t) de la serie de historias Ht en el conjunto de acciones Ai. Haciendo la hipótesis de que los jugadores recuerdan las acciones jugadas en todos los periodos, una estrategia mixta σi∈ΔFi del jugador i en el juego repetido GT puede representarse como una serie de funciones σti 349 Capítulo 16. Juegos no cooperativos en masas de enjambres de Ht en ΔAi. De este modo, dados (σ ∈ ∏i∈N(ΔFi ), h∈H), se nombra σ(ht) al perfil de estrategias mixtas inducido por el parámetro σ en el periodo t del juego repetido. Uno de los puntos más importantes en esta teoría es como calcular la utilidad esperada de un jugador derivada de un perfil de estrategias mixtas σ [58]. En juegos repetidos con horizonte finito, lo habitual es considerar la suma (puede ser descontada dependiendo de la situación en sí) de las utilidades esperadas obtenidas en cada periodo. Empero, en juegos con horizonte infinito, es obvio que la suma infinita de las utilidades en cada periodo no está definida y es necesario recurrir a otras alternativas. Si bien, con carácter general puede considerarse la utilidad esperada de un jugador como la suma descontada de las utilidades de cada periodo. Considerando δ<1 el vector denominado como de las tasas de descuento de los jugadores, la utilidad del jugador i se calcula como ∞ Viδ (σ) = (1 − δi ) ∑ δti (∑ Pσ (ht )Ui (σt (ht ))) t=1 (16.2) h∈H Siendo Pσ(ht) la probabilidad de ht cuando los jugadores escogen sus acciones de acuerdo con σ. O sea, escrita una historia ht, σt(ht) indica las acciones en el periodo t. Es claro que cada historia ocurre con una cierta probabilidad de acuerdo a la estrategia σ, siendo el pago la media del pago tras cada historia de acuerdo a su probabilidad. El factor de normalización (1-δi) establece como comparar los pagos del juego repetido (GT) y del juego de etapa (G). Un equilibrio de Nash de un juego repetido se define análogamente a un juego en forma normal: un perfil de estrategias σ es un equilibrio de Nash si no hay individuo alguno que tenga una estrategia alternativa σi∈ΔFi tal que Viδ (σ−i , σ´i ) > Viδ (σ). En un juego repetido, podría darse la circunstancia de que un perfil de estrategias de Nash puede producir una conducta fuera del equilibrio. Aquí hay que señalar el concepto de equilibrio perfecto en subjuegos, lo cual permite distinguir equilibrios de Nash consistentes con un comportamiento racional distanciado de aquellos que no lo son. Un perfil de estrategias σ es equilibrio perfecto en subjuegos SPE, si la conducta que se 350 Capítulo 16. Juegos no cooperativos en masas de enjambres determina en cada subjuego constituye un equilibrio de Nash del subjuego. La definición de SPE implica un nuevo concepto, el requisito de consistencia temporal en el equilibrio. Los juegos repetidos con horizonte infinito se caracteriza por su estructura estacionaria: cada subjuego definido por una historia h t es implícitamente idéntico al juego G∞. Dada una estrategia σ y una historia h, se define V δh(σ) como los pagos de continuación en el subjuego que empieza en t, que concreta el vector de utilidades esperadas de los jugadores en el subjuego que son renormalizadas de tal forma que se actualicen en el periodo t. El pago de continuación de un jugador que recibe un elemento útil por periodo a partir del periodo t es 1. Los juegos con múltiples etapas son similares a los repetidos, pero con la cualidad de que en cada periodo se juega un juego en forma normal diferente. También conviene señalar que ambos tipos de juegos repetidos con horizonte finito son casos especiales de juegos en forma extensiva. Sea GT un juego repetido: 1. Si T=1, entonces σ es un equilibrio Pareto perfecto (PPE) si es un equilibrio de Nash de σ que no está estrictamente dominado por otro equilibrio de Nash de σ. O dicho de otra forma, ninguno de los jugadores afectados puede mejorar su situación sin reducir el bienestar de cualquier otro jugador. 2. Supóngase que PPE ha sido definido para todo GT con T<K. Se dice que σ es un equilibrio Pareto perfecto de GK si a. σ es un equilibrio de Nash de GK y para toda historia h∈H, h≠0, σ es un PPE de gh, y b. no existe σ´ ∈ ∏i∈N(ΔFi ) que satisfaga a. y tal que para todo i∈N, ui(σ)<Ui(σ´). Bernheim y Ray por una parte y Farrell y Maskin por otra, propusieron una extensión de equilibrio a juegos repetidos con horizonte infinito basada en dos hipótesis primordiales: la primera es que la estacionariedad del juego repetido con horizonte infinito debe suponer que el conjunto de equilibrios a prueba de renegociación sea el 351 Capítulo 16. Juegos no cooperativos en masas de enjambres mismo en cada subjuego, o lo que es lo mismo, el concepto de equilibrio debe ser consistente con la estacionariedad del juego. La segunda se refiere a que tras cualquier historia del juego, un acuerdo debe de ser renegociado si y solo si hay disponible un equilibrio a prueba de renegociación que sea Pareto superior. Esto puede expresarse como que los jugadores permanecen en el estatus quo a menos que todos puedan mejorar. El primer paso que debe hacerse es localizar los equilibrios perfectos en subjuegos, denominados débilmente a prueba de renegociación. Un conjunto de equilibrios perfectos en subjuegos es WRP si entre todos los pagos de continuación promovidos por estos equilibrios, no se pueden encontrar dos comparables en sentido de Pareto (no se puede mejorar uno sin empeorar el otro). Así, se debe rechazar como viable un equilibrio que, tras una determinada historia, asigna una continuación que da a los jugadores unos pagos muy pequeños comparados con los que se podrían conseguir, en un equilibrio de este mismo conjunto, en otra continuación probable del juego. Sea P conjunto de equilibrios perfectos en subjuegos del juego G ∞. P es débilmente a prueba de renegociación (WRP) si no existen σ,σ´∈P, h,h´∈H tales que para cada i∈N, se tiene Vi(σh)>Vi(σ´h). En la definición de WRP se requiere que el conjunto de equilibrios tenga consistencia interna. Así, un equilibrio de este conjunto no debe ser Pareto dominado por otro equilibrio del conjunto. Asimismo, si un equilibrio perfecto en subjuegos pertenece a un conjunto WRP, el mismo constituye un conjunto WRP. Un perfil perteneciente a un conjunto de equilibrios WRP no debe ser Pareto dominado por otro perfil perteneciente a algún otro conjunto WRP. Dicho de otra forma, si un equilibrio σ que pertenece a un conjunto WRP puede acomodar en algún subjuego un vector de pagos de continuación que esté Pareto dominado por algún otro vector de pagos debido a un equilibrio σ´ en otro conjunto también WRP. Así, como puede entenderse, jugar de acuerdo con σ si en algún subjuego los jugadores pueden proponer σ´, que es preferido según WRP. Piénsese en un conjunto de equilibrios WRP, ninguno de cuyos equilibrios es Pareto dominado en ningún subjuego 352 Capítulo 16. Juegos no cooperativos en masas de enjambres por algún otro equilibrio de cualquier otro conjunto WRP, es llamado fuertemente a prueba de renegociación (SRP). Mientras que para cada juego, es posible encontrar algún conjunto WRP, no se puede garantizar la existencia de conjuntos SRP. Es posible que no haya un equilibrio WRP Pareto superior, sino dos o más WRP Pareto maximales que se intersectan. Un resultado x es Pareto-dominado por otro resultado denominado y si todos los jugadores prefieren el resultado y, y al menos un jugador prefiere y estrictamente. De otra forma, si el paso del resultado x a un resultado y supone una mejora para algunos jugadores (o todos), sin que ninguno resulte perjudicado, se dirá que x está Pareto-dominado por y. En base a lo anterior, se pueden definir cuestiones intermedias entre WRP y SRP. La primera fue propuesta por Bernheim y Ray, basada en una relación de dominación entre conjuntos de equilibrios. El conjunto de equilibrios P domina directamente al conjunto de equilibrios P´ (P≻P´) si existe algún pago de continuación en P´. Así, se puede afirmar que P domina al P´ (P≻*P´) si P≻P´ o si existe un número finito de conjuntos P1,...,Pn, tales que P≻P1´≻P2≻…≻Pn≻P´. Con esta relación de dominación, Bernheim y Ray definen un conjunto consistente como un conjunto de equilibrios WRP P, de tal modo que para todo otro conjunto de equilibrios WRP P´, se cumple que si P´≻*P entonces P≻*P´. En este sentido, todo juego repetido tiene al menos un conjunto consistente. Farrell y Maskin definen el conjunto de equilibrios fuertemente a prueba de renegociación relativo (RSRP), para lo cual se consideran conjuntos formados por la unión de conjuntos WRP. De entre ellos, se consideran aquellos conjuntos maximales dentro de la clase de conjuntos que tienen la propiedad de que algún conjunto WRP se encuentre completamente en la frontera eficiente. Un conjunto WRP que se encuentre en la frontera eficiente de un conjunto maximal así considerado se denominará RSRP. Es decir, un conjunto es RSRP si es SRP restringido a algún conjunto maximal de SPE, entonces RSRP requiere entonces reducir al mínimo la posibilidad de dominación externa pero sin llegar a excluirla. 353 Capítulo 16. Juegos no cooperativos en masas de enjambres Por otra parte, Pearce propone una definición basada en un concepto diferente. En un tiempo t, los jugadores rehúsan continuar con un equilibrio cuyos pagos a partir de t son menores que los de este mismo equilibrio tras alguna historia, si la única razón para ello es que esto era un requisito necesario para inducir cierta cooperación en el pasado. En cambio, sí estarán dispuestos a continuar, si esta continuación es necesaria como incentivo para acciones futuras. Sea G∞ un juego repetido con horizonte infinito, y sea g un subjuego cualquiera de G∞. Sea un perfil de estrategias σ del juego G∞, Cg(σ) define el conjunto de vectores de pagos de continuación en g generados por la estrategia σ. Un juego es simétrico si todos los jugadores tienen el mismo conjunto de estrategias y si para cada par de jugadores i,j se cumple que ui(σ1,...,σi,…,σj,...,σn)=ui(σ1,...,σj,…,σi,...,σn). Así, un equilibrio es simétrico si ofrece pagos idénticos a todos los jugadores. Sea G∞ un juego repetido simétrico con horizonte infinito. Se dice que σ es un SPE simétrico σ a prueba de renegociación si para todo subjuego g de G∞ y todo x∈Cg(σ) no existe otro SPE simétrico σ' tal que 1. U(σ')>x,y 2. y≥U(σ') para todo y∈Cg(σ) No es necesario que todos los pagos, tras cualquier posible historia, sean no dominados (como en WRP), sino que es suficiente con que no sea posible encontrar en el conjunto de equilibrios a prueba de renegociación ningún otro que evite esos pagos tan bajos. Este concepto de equilibrio lleva implícita la idea de no crear precedentes, con lo que los jugadores no deben creer que pueden evitar una condena tal vez demasiado acusada en el presente comprometiéndose a no caer en él en el futuro. Dividir el conjunto de equilibrios perfectos para subjuegos de un juego repetido y de sus posibles continuaciones en dos subconjuntos A y B, de manera que en A se encuentren los equilibrios creíbles y en B Ios no creíbles. Así, la credibilidad. se basara en que, dentro del conjunto A, ningún equilibrio puede ofrecer pagos Pareto superiores a otro en el propio conjunto A (estabilidad interna de A), y en que para cada pago de equilibrios en B, existe algún equilibrio en A qué ofrece mejores trazas a todos 354 Capítulo 16. Juegos no cooperativos en masas de enjambres los jugadores (estabilidad externa). A es entonces el conjunto estable, el que agrupa los equilibrios a prueba de renegociación al comienzo del juego y tras cada historia. Un sistema abstracto von Neumann-Morgenstern es un par (D≺) donde D es un conjunto y ≺ es un relación binaria, de dominación. Dado f∈D, el dominio de f es el conjunto Δ(f)={d∈Dld≺f}; es decir, Δ(f) contiene todos los elementos de D que f domina de acuerdo con la relación de dominación ≺. Análogamente, dado un subconjunto F⊂D, el dominio de F es el conjunto Δ(F)=U{Δ(f)If∈F}. Un conjunto F⊂D es un conjunto abstracto estable von Neumann-Morgenstern del sistema (D,≺) si F=D\Δ(F). Al definir el equilibrio de Asheim en un juego repetido en forma extensiva, D es el conjunto de pares (gh\σ), donde gh es un subjuego cualquiera (incluido el propio juego), y σ es un SPE de este subjuego. D={(gh,σ)Ih∈H,σ∈SPE(gh)} (16.3) Donde SPE(gh) es el conjunto de SPE de gh. La relación de dominación se puede definir como (gh,σ)≺(gk,ν) si y solo si k∈Hh y uki (σ) = uki (υ) para todo i∈N. Donde Hh es el conjunto de historias que pueden acontecer tras la historia h, y uki (σ) es la utilidad para i de seguir la estrategia σ, evaluada tras la historia h. En el conjunto abstracto (D,≺) asi definido puede ampliarse el concepto de equilibrio Pareto perfecto como sigue. Sea GT un juego repetido con un horizonte finito o infinito. Un perfil de estrategias σ es un equilibrio Pareto perfecto de GT si σ es un equilibrio perfecto en subjuegos de GT, y si existe un conjunto abstracto estable F de (D,≺) tal que (GT,σ)∈F. Esta definición amplia el concepto de equilibrio Pareto perfecto a juegos repetidos con horizonte infinito. Imagínese el caso en que algunos jugadores pudieran comunicarse entre sí, podrían formarse coaliciones que acuerden desviaciones. En juegos con dos jugadores únicamente, no hay coaliciones intermedias, con lo que el concepto de equilibrio a prueba de renegociacion es satisfactorio. 355 Capítulo 16. Juegos no cooperativos en masas de enjambres Sea G=(N, A, u) un juego en forma normal y sea σ=(σ1,...,σn)∈ ∏i∈N ΔAi un perfil de estrategias. Supóngase que cualquier coalición de jugadores S∈2N, S≠0, se desvía. Supóngase que el comportamiento de la coalición complementaria es dado por σ, una desviacion de la coalicion S resultaria en un nuevo perfil de estrategias σ´=(σ´1,...,σ´n) ∈ ∏i∈N ΔAi donde σ´i=σi para cada i∈N\S. Se puede concluir que dado un perfil de estrategias mixtas σ y una coalicion S, se escribe D(σ, S) para designar el conjunto de desviaciones factibles de σ por la coalicion S. Hay que tener en cuenta que σ∈D(σ,S) dado que siempre es factible para una coalicion una conducta conforme al perfil de estrategias planteado. Un perfil σ es un equilibrio fuerte de Nash si no existe coalición alguna S∈2N, S≠0 con una desviación factible σ´∈D(σ, S) tal que para todo i∈S se cumple Ui(σ´)>Ui(σ). Dado que un equilibrio fuerte de Nash tiene que ser inmune a desviaciones de la coalición de todos los jugadores, debe producir un resultado (débilmente) Pareto óptimo. Considerese σ ∈ ∏i∈N ΔAi y S∈2N, S≠0 arbitrarios [58]. El conjunto de desviaciones sostenibles de σ por la coalición S DS(σ, S) viene dado por: 1. Si lSl=1, entonces DS(σ, S)=DS(S, σ) 2. Si lSl>1, entonces DS(σ, S)={σ´∈DS(σ, S)l∃[R∈2S\R≠0,σ´´∈D(σ´,R)] tal que Ui(σ´´)> Ui(σ´), ∀i∈R} El concepto de desviación sostenible da un criterio para determinar si una desviación es viable. Un perfil σ es un equilibrio de Nash a prueba de coaliciones (CPNE) si ninguna coalición S∈2N, S≠0, tiene una desviación sostenible σ´∈D(σ, S) que mejora al resto de elementos. CPNE es el conjunto de equilibrios de Nash que no están Pareto dominados por otros equilibrios de Nash. Así pues, en juegos con dos jugadores siempre existe un CPNE que es equilibrio de Nash. Berheim, Peleg y Whinston instituyen un concepto de CPNE diferente aunque equivalente. Dado σ ∈ ∏i∈N ΔAi y S∈2N, S≠0, se define el juego Glσ-S=(S, (Ai)i∈S (ũi )iϵS ), donde para cada as ∈ ∏i∈S Ai 356 Capítulo 16. Juegos no cooperativos en masas de enjambres ũi (as ) = ∑ ( ∏ σj (aj )) ui (aS , a−S ) a−S ϵA−S (16.4) j∈N\S Glσ-S es el juego al que se enfrenta la coalición S si la coalición complementaria N\S lo hace de acuerdo al perfil σ-S. Los pagos de un perfil de estrategias as son la utilidad esperada que los jugadores de S consiguen cuando la coalición complementaria actúa conforme a σ-S y los jugadores de S eligen as. Sea σ ∈ ∏i∈N ΔAi, 1. Si lNl=1, entonces σ es un equilibrio de Nash a prueba de coaliciones si para todo σ´∈ΔAi, U1(σ)≥U1(σ´). 2. Si el concepto de equilibrio de Nash a prueba de coaliciones se ha definido para juegos con |N|<n, y sea G un juego con |N|=n. Si σ es sostenible en G si para cada coalicion S∈2N, S≠0, σS es un CPNE en el juego G|σ-S. Por otra parte, σ es un CPNE si es sostenible en G y si no existe σ´ sostenible en G tal que u i(σ´)> ui(σ) para todo i∈N. Moreno y Wooders han demostrado que en el caso de que el conjunto de perfiles de estrategias que sobreviven, la eliminación iterativa de estrategias estrictamente dominadas contiene un perfil de estrategias Pareto superior a los otros perfiles de estrategias en este conjunto, entonces dicho perfil de estrategias es un GPNE. Empero, cuando el conjunto de estrategias que sobrevive a la eliminación iterativa de estrategias estrictamente dominadas contiene un único punto, dicha estrategia (único equilibrio de Nash del juego) es un CPNE. Además de la problemática de la no existencia, se han señalado en la literatura otros dos tipos de problemas relacionados con la noción de equilibrio de Nash a prueba de coaliciones. El primero, el criterio acerca de si una desviación es sostenible podría no ser adecuado, pues solo se consideran desviaciones ulteriores de subcoaliciones de la coalición desviante, mientras que la conducta de la coalición complementaria se supone fundamentado por el perfil de estrategias del que la coalición está considerando desviarse. No obstante, es lógico que una desviación sea contrarrestada 357 Capítulo 16. Juegos no cooperativos en masas de enjambres con otra desviación en la que participen elementos de la coalición inicialmente desviante y miembros de la coalición complementaria (que no participaban inicialmente en esta desviación). En segundo lugar, la noción de CPNE no admite la opción de que los jugadores alcancen acuerdos que requieran le selección de sus estrategias. Si los jugadores pueden comunicarse, estos podrían renegociar algún tipo de acuerdo y correlar sus estrategias. Esta opción amplia ostensiblemente el conjunto de acuerdos posibles, y por otra parte el grupo de desviaciones coalicionales que han de considerarse. Moreno y Wooders proponen las nociones de equilibrio correlado a prueba de coaliciones. Dado un juego en forma normal G=(N, A, u), una estrategia correlada μ es una distribución de probabilidad dentro del conjunto de perfiles de acciones A. Cuando los jugadores eligen sus acciones de acuerdo con la estrategia μ∈ΔA, la utilidad esperada de cada jugador es Ui (μ) = ∑a∈A μ(a)ui (a). Este concepto de equilibrio correlado a prueba de coaliciones concede amplias posibilidades de desviación a las coaliciones de jugadores. Dada una estrategia μ, el conjunto de desviaciones factible para una coalición S es el conjunto de todas las estrategias correladas que la coalición puede producir escogiendo las acciones de los componentes de la coalición conforme con una distribución de probabilidad que podría depender de las acciones previas escogidas. De esta forma, la coalición S puede condicionar su desviación (la distribución de probabilidad sobre As que producen las acciones para los componentes de S) a las conductas que los elementos de S habrían de emplear si fuesen a jugar de acuerdo con la estrategia μ. Considérese una estrategia correlada μ y una coalición a S∈2N, S≠0, el conjunto de desviaciones correladas de μ por la coalición S, DC(μ, S) es el conjunto de estrategias correladas μ´∈ΔA tal que para cada aЄA Ui (μ) = ∑ μ(a)ui (a) aϵA 358 (16.5) Capítulo 16. Juegos no cooperativos en masas de enjambres Esta noción de equilibrio correlado a prueba de coaliciones propuesto concede amplias posibilidades de desviación a las coaliciones de jugadores. Dada una estrategia determinada, el conjunto de desviaciones factible para una coalición S se define como el conjunto de todas las estrategias correladas que la coalición puede asumir escogiendo las acciones de los elementos de la coalición en sintonía con una distribución de probabilidad. De esta manera, la coalición S puede condicionar su desviación (la distribución de probabilidad sobre As que producen las acciones para los miembros de S) a las conductas que los miembros de S habrían de emplear si fuesen a jugar de acuerdo con la estrategia μ. Así, dada una estrategia correlada μ y una coalición S∈2N, S≠0, el conjunto de desviaciones correladas de μ por la coalición S, DC(μ, S), es el conjunto de estrategias correladas μ´∈ΔA tal que para cada a∈A μ´(a) = ∑ μ(αS , a−S )ηS (aS |αS ) (16.6) aS ϵAS Donde ηS: AS→ΔAS. Esta situación puede entenderse mejor si se supone que la estrategia correlada es ejecutada por un mediador que selecciona un perfil de comportamiento para los jugadores conforme con la distribución de probabilidad μ, y recomienda a cada jugador, de manera privada, la acción que ha de jugar. Una coalición S puede desviarse de μ, designando un nuevo mediador que recepciona las recomendaciones de los miembros de la coalicion S, as, seleccionando un nuevo perfil de conductas para la coalicion ãS de acuerdo con una distribucion de probabilidad ηS(aS) sobre AS. Este mediador recomienda a cada elemento i∈S la accion ãi que ha de tomar. Resulta obvio que en este esquema se supone que cada elemento i de la coalicion S solo tiene en cuenta la recomendación ãi . Esto evitaría los problemas de transmision de infomación entre jugadores, lo cual supone problemas de compatibilidad con incentivos, y que constituye un nuevo problema, el de juegos con información incompleta. 359 Capítulo 16. Juegos no cooperativos en masas de enjambres Sobre la base de esta noción de desviacion correlada es posible modelar el concepto de equilibrio correlado: una estrategia correlada μЄΔA es un equilibrio correlado si ningún componente iЄN dispone de alguna desviación correlada μ´∈DC(μ,i), tal que Ui(μ´)>Ui(μ). Una estrategia correlada μ, es un equilibrio correlado fuerte (SCE) si ninguna coalicion SЄ2N, S≠0, tiene una desviacion correlada μ´ЄD(μ,S) que mejora a sus componentes. El concepto de equilibrio correlado fuerte (SCE) implica los mismos problemas que el concepto de equilibrio fuerte de Nash (SNE); o sea, para que una estrategia correlada sea un SCE ha de ser inmune a desviaciones correladas que, además, podrían no ser sostenibles. Un perfil de estrategias mixtas es un SNE si ninguna coalición puede desviarse y mejorar a todos sus miembros. Una estrategia correlada μ es un equilibrio correlado a prueba de coaliciones (CPCE) si ninguna coalición SЄ2N, S≠0, tiene una deviación μ´ЄDCS(μ,S) correlada sostenible, tal que para cada iЄS se tiene Ui(μ´)>Ui(μ). En juegos con dos jugadores, CPCE es el conjunto de equilibrios correlados que no son Pareto dominados por otros equilibrios correlados. De este modo, en juegos con dos jugadores la existencia de un equilibrio correlado a prueba de coaliciones está garantizado. Así, como en el caso de CPNE, en juegos con más de dos jugadores no puede garantizarse la existencia de un CPCE. Supóngase el caso en que los acuerdos entre jugadores sean únicamente aquellas que puedan ejecutarse mediante un dispositivo aleatorio exógeno, y el equilibrio correlado a prueba de coaliciones sea un equilibrio de Nash a prueba de coaliciones del juego ampliado por el dispositivo aleatorio. El tratamiento matemático de estos conceptos requiere de la introducción de nuevas nociones como el dispositivo aleatorio y el juego ampliado. Sea C=(N, A, u) un juego normal y sea un dispositivo aleatorio d definido como un par (M, p), donde M = ∏ni=1 Mi es un espacio de mensajes y p una distribucion de probabilidad sobre M. Un dispositivo aleatorio directo es un dispositivo 360 Capítulo 16. Juegos no cooperativos en masas de enjambres aleatorio tal que M=A. En este caso, cada mensaje miЄMi puede considerarse como la estrategia que el dispositivo recomienda al jugador. Dado un juego G y un dispositivo aleatorio d, el juego ampliado Gd es la terna (N, Δ, ud), donde Δ = ∏ni=1 Δi , con Δi={δi|δi:→Ai}, y para cada iЄN, y δ=(δ1,…,δn)ЄΔ udi (δ) = ∑ p(m) mϵM ui(δ (m ), … , δ (m )) 1 1 n n (16.7) Una estrategia δ del juego ampliado Gd induce una estrategia correlada en el juego G, μЄΔA, dada por μ(a) = ∑ p(m) (16.8) mϵδ−1 (a) Una estrategia correlada μ es un equilibrio correlado a prueba de coaliciones (CPCER), definición del Rays, del juego G si existe un dispositivo aleatorio d y un equilibrio de Nash a prueba de coaliciones δ del juego ampliado Gd, tal que δ induce μ. Sea δ un equilibrio de Nash a prueba de coaliciones de un juego ampliado por un dispositivo aleatorio directo, y tal que para cada iЄN, δi es la identidad. La estrategia correlada μ inducida por δ se denomina un equilibrio correlado directo a prueba de coaliciones. Ray ha demostrado que para juegos de dos jugadores, el conjunto de equilibrios correlado directo a prueba de coaliciones contiene al conjunto de equilibrios correlados no Pareto dominados por otros equilibrios correlados. Por tanto, los juegos de dos jugadores poseen un equilibrio correlado directo a prueba de coaliciones. Ray demuestra que todo CPNE es también un CPCER. No obstante, se desconoce si un CPCER existe para juegos de más de dos jugadores. El concepto de equilibrio correlado a prueba de coaliciones propuesto por Ray ha sido criticado. Esto significa que restringir las posibilidades de correlación a aquellas permitidas por un dispositivo aleatorio exógeno no parece lógico. Forges ha conseguido demostrar que en juegos con más de cuatro jugadores donde estos jugadores se comunican con ruido, cualquier dispositivo aleatorio se puede simular como pura conversación. Así, la conversación en sí misma permitiría a los jugadores correlar sus acciones (y sus desviaciones) mucho mejor que un único dispositivo 361 Capítulo 16. Juegos no cooperativos en masas de enjambres aleatorio. En otro orden de cosas, la noción de CPCER no tiene en cuenta la posibilidad de que una coalición desviante organice desviaciones condicionadas a los mensajes recibidos por todos los componentes de la coalición. En el caso de juegos con información incompleta también puede aplicarse los conceptos de equilibrio correlado fuerte y equilibrio correlado a prueba de coaliciones. Para ello es necesario considerar el concepto de desviación factible introducida para juegos con información completa. Estas extensiones dan lugar a conceptos de equilibrio fuerte con comunicación y equilibrio con comunicación y a prueba de coaliciones. La posibilidad de desviaciones coalicionares condicionadas a las recomendaciones recibidas por los componentes de la coalición plantea problemas de incentivos derivados de la transmisión de información entre los componentes de la coalición desviante cuyo tratamiento necesita representar este tipo de situaciones como juegos con información incompleta. En un juego bayesiano, los jugadores tienen incertidumbre o falta de información acerca de las características de los jugadores restantes. Un juego bayesiano requiere concretar acciones, jugadores, funciones de pagos, las características de cada jugador, lo que conoce cada jugador acerca de las características de los demás jugadores (representadas mediante una distribución de probabilidad sobre el conjunto de características de todos los jugadores), etc. Un juego bayesiano Γ viene dado por (N, T, A, p, u), donde N={1,...,n} es el conjunto de jugadores, T = ∏ni=1 Ti , es el conjunto de perfiles de características o tipos de jugadores posibles, A = ∏ni=1 Ai es el conjunto de perfiles de acciones posibles, p=(pi)iЄN es el perfil de creencias de los jugadores, y u=(u1,...,un) es el vector de funciones de utilidad (ui:TxA→R). Cuando los conjuntos Ti contienen un solo elemento, el juego Γ es un juego con información completa. Así, cualquier noción de equilibrio formulada para juegos con información incompleta, lo es también para juegos de información completa. 362 Capítulo 16. Juegos no cooperativos en masas de enjambres Dado un conjunto arbitrario B = ∏i∈N Bi y una coalición S∈2N, S≠0, definimos el conjunto BS = ∏i∈S Bi y B−S = ∏i∈N\S Bi , para cada b∈B y S∈2N, S≠0, con lo que se escribe b=(bS,b-S), donde bS∈BS y bS∈BS (cuando S=N, lo habitual es tomar la convención b=(bS,b-S)=bS. En un juego bayesiano Γ, una estrategia pura para el jugador i es una función s i:Ti→Ai, y una estrategia mixta es una distribución de probabilidad sobre el conjunto de estrategias puras. De esta manera, una estrategia correlada es una función μ:T→ΔA donde los jugadores pueden revelar sus características. Sea C(Γ) el conjunto de estrategias correladas del juego Γ [58]. Dada una estrategia correlada μ, la utilidad esperada de un jugador cuyo tipo es ti viene dada por Ui (μ|t i ) = ∑ ∑ pi (t −i |t i )μ(a|t) ui (a|t) (16.9) t−i ϵT−i aϵA En un juego con información incompleta, una coalición S puede desviarse de una estrategia correlada μ, mostrando características de sus componentes distintas de las verdaderas y tomando acciones diferentes de las producidas por la estrategia μ. Una desviación requiere, que individuos revelan y el que, y que acciones van a realizar los restantes componentes en función de lo revelado. De esta forma, dada una estrategia correlada μ, el conjunto de desviaciones factibles de la coalición S∈2N, S≠0, es el conjunto de estrategias correladas μ´ЄC tal que para cada (a, t)ЄAxT se cumple μ´(a|t) = ∑ ∑ fs (τs |t s )μ(αS , a−S |τs , t −s ) ηs (aS |t S , τs , αs ) (16.10) t−S ϵT−S αS ϵAS Donde fS:TS→ΔTS indica aquello que los componentes de la coalición revelan cómo función de sus verdaderos intereses, y ηS:TSxTSxAS→ΔAS indica cómo se selecciona el perfil de acciones para la coalición función de los propios componentes (t S), las opiniones de los elementos de la coalición (τS), y las recomendaciones dadas por los participantes de la coalición. Dada una estrategia correlada CD(Γ) y una coalición S∈2N, S≠0, se designa a D(μ, S) el conjunto de desviaciones factibles de μ para la coalición S. 363 Capítulo 16. Juegos no cooperativos en masas de enjambres Una estrategia correlada μ es un equilibrio con comunicación (CE) si ningún jugador iЄN tiene una desviación factible μ´ЄD(μ, i) tal que para alguno de ti∈Ti, se tiene Ui(μ´lti)>Ui(μlti). Análogamente, apoyándonos en este concepto de desviación factible puede formularse un concepto de equilibrio fuerte con comunicación. En este caso ninguna coalición debe tener una desviación factible que sea Pareto superior para los miembros de la coalición. No obstante, no es obvia el concepto de Pareto superioridad. Así, la noción (débil) de Pareto superioridad requeriría que todos los componentes de la coalición mejoraran para alguno de sus características (pero no necesariamente para todas). Un concepto fuerte se obtendría requiriendo que todos los miembros de la coalición mejorasen todas las acepciones. Dados S∈2N, S≠0, y μ, μ´ЄC, se dice que μ´ es débilmente Pareto superior μ para la coalición S si 1. Para todo tSЄTS, y todo iЄS: Ui(μ´ltS)≥Ui(μ´ltS), y 2. Existe t̃ S ∈ TS , tal que para todo iЄS: Ui(μ´lt̃ S )>Ui(μ´ltS). Por otra parte, se dice que μ´ es fuertemente Pareto superior a μ para la coalición S si la desigualdad en la primera proposición es estricta. El concepto de Pareto superioridad se emplea para calcular el conjunto de desviaciones frente a las que una estrategia de equilibrio tiene que ser invulnerable. Cada Pareto superioridad da lugar a un concepto de equilibrio fuerte con comunicación. Una estrategia correlada invulnerable frente a desviaciones fuertemente Pareto superiores no es forzosamente un equilibrio con comunicacion. El concepto de Pareto superioridad débil no tiene este inconveniente. Empero, puede documentarse que la disponibilidad de un componente a participar en una desviación que mejora solo a algunas de sus características podría revelar nueva información, lo cual induciría a los participantes en dicha desviación a revisar sus opiniones. Este inconveniente se podría prevenir si cada participante mostrará su disponibilidad a intervenir en cualquier desviación que suponga una mejora. 364 Capítulo 16. Juegos no cooperativos en masas de enjambres Moreno y Wooders introducen un concepto de equilibrio fuerte con comunicacion formulado sobre la base del concepto de Pareto superioridad debil. Una estrategia correlada μ es un equilibrio fuerte con comunicación si ninguna coalición S∈2N, S≠0, tiene una desviación factible μ´ЄD(μ, S) tal que μ´ es débilmente Pareto superior a μ para S. Sea μЄC y S∈2N, S≠0, arbitrarios. El conjunto de desviaciones sostenibles de μ por la coalicion S, DS(μ, S), viene dado por 1. DS(μ, S)=D(μ, S), si lSl=1, y 2. DS(μ, S)={μ´ЄD(μ, S)l∃[R∈2S\S,R≠0, μ´´ЄDS(μ´, R)] tal que μ´´ es débilmente Pareto superior para S}, si lSl>1. Esta nocion de desviacion sostenible permite enunciar un nuevo concepto de equilibrio con comunicación y a prueba de coaliciones, que no es más que una prolongación para juegos con informacion incompleta del concepto de equilibrio correlado a prueba de coaliciones. Una estrategia correlada μ es un equilibrio con comunicación y a prueba de coaliciones si ninguna coalición S∈2N, S≠0, tiene una desviación sostenible μ´ЄDS(μ, S), tal que μ´ es débilmente Pareto superior a μ para S. El conjunto de equilibrios con comunicacion y a prueba de coaliciones de cualquier juego Γ es un subconjunto del conjunto de equilibrios con comunicacion del juego, y contiene al conjunto de equilibrios fuertes con comunicacion. Einy y Peleg formulan una nueva aproximación al tener en cuenta las desviaciones realizadas por las coaliciones, una vez que los jugadores han recibido información de algún tipo a través del concepto de Pareto superioridad fuerte. Supongamos que cada uno de los jugadores de un juego Γ recibe en privado una recomendación, la cual se ha escogido conforme a una estrategia correlada μ. Cualquier coalición que se desvié de dichas recomendaciones se enfrenta a un juego revisado con información incompleta, donde las características de cada uno de los 365 Capítulo 16. Juegos no cooperativos en masas de enjambres componentes de la coalición incluyen las recomendaciones con probabilidad positiva recibidas de μ, además de las características de cada jugador. Un juego bayesiano aumentado con un grupo de jugadores pasivos, que no toman acción, pero cuyas características determinan la utilidad de las demás componentes en el juego. Este juego viene dado por (N∪M, T, A, p, u), donde N es el número de jugadores activos, M el conjunto de jugadores pasivos, T = ∏i∈N∪M Ti , A = ∏i∈N Ai , p=(pi)iЄN, con pi:Ti→ΔT-i, u=(ui)iЄN, y con ui:TxA→R. Cuando el conjunto M es vacío, un juego bayesiano aumentado no deja de ser un juego bayesiano. Una estrategia correlada en estos juegos es una función μ:TN→A. En estos juegos, los jugadores activos solo pueden actuar en el perfil de jugadores activos. Las nociones de equilibrio enunciadas previamente pueden prolongarse a este tipo de juegos limitando las condiciones a las coaliciones que puedan formarse con los jugadores de N. Sea Γ un juego bayesiano aumentado arbitrario, sea μ una estrategia correlada, y sea S una coalición. El juego revisado Γμ,S es el juego bayesiano aumentado (S∪N\S, TxA, A, AS, p̂, û), donde para cada i∈S, p̂i (t −i , a−i|t i , ai ) = pi (t −i|t i )μ(a|t), y (16.11) ûi (αS , t, a) = ui (αS , aN\S , t) En un juego revisado Γμ,S, los jugadores de la coalición complementaria N\S constituyen un papel pasivo, dado que no participan en los acuerdos que los jugadores de la coalición S puedan alcanzar), y su conducta se supone determinada por la estrategia μ. CE(Γ) es el conjunto de equilibrios con comunición de f. Sea Γ un juego bayesiano aumentado, y sea μЄC(Γ), y S∈2N, S≠0, arbitrarios. El conjunto de desviaciones internamente consistentes de μ para la coalición S, DIC(μ,S), viene dado por 1. Si lSl=1, entonces DIC(μ, S)={η∈C(Γμ,S)lμ∈CE(Γμ,S)}, 2. Si lSl>1, entonces DIC(μ, S)={η∈C(Γμ,S)l(1)η∈CE(Γμ,S)}, y (2) ∃R∈S, R≠0, y η´∈C((Γμ,S)η,S\R) tal que η´∈DIS(μ,R) y η´ es Pareto superior a η para la coalición R}. 366 Capítulo 16. Juegos no cooperativos en masas de enjambres Sea Γ un juego bayesiano aumentado. Una estrategia correlada μ es un equilibrio con comunicación y a prueba de coaliciones de Γ, si μ es tal que μ∈CE(Γ), y no existe ninguna coalición S∈2N, S≠0 que tenga una desviación, η∈CE(Γμ,S), tal que η es Pareto superior a μ para la coalición S. Obsérvese que en equilibrio con comunicación y a prueba de coaliciones, la noción de Moreno y Wooders presenta el problema de transmisión de información que ocurriría si los jugadores tuvieran que revelar la acción recomendada en la estrategia correlada de la que la coalición se desvía. Este problema se evita suponiendo que las coaliciones se desvían, para lo cual se nombra un mediador, que actúa recibiendo las recomendaciones y escogiendo un nuevo perfil para los jugadores de la coalición, que es comunicado confidencialmente. Así, este procedimiento no puede manipularse. Por el contrario, según Einy y Peleg, los jugadores de una coalición desviante se enfrentan a un problema de transmisión de información de tal forma que el equilibrio con comunicación y a prueba de coaliciones ignora que una coalición pudiera desviarse. Estas desviaciones pudieran no ser compatibles con los incentivos. Una cuestión adicional es permitir la renegociación y las de desviaciones coalicionales en juegos en forma extensiva. En un juego en forma extensiva los jugadores deciden sus acciones en etapas y a medida que el juego evoluciona, las estrategias de los jugadores se van revelando al resto de jugadores, en forma de distribuciones de probabilidad de cada movimiento. Los juegos repetidos y multietapa con horizonte finito son un caso particular de juegos en forma extensiva, donde al comienzo de cada etapa ningún jugador conoce la acción tomada por los demás jugadores en esa etapa, pero si se conocen las acciones tomadas en las etapas anteriores. En un juego en forma extensiva, una estrategia pura para un jugador conlleva asignar una acción a cada hecho en la que el jugador tiene que decidir. Una estrategia mixta es una distribución de probabilidad sobre el conjunto de las estrategias puras. Un perfil de estrategias produce una distribución sobre los posibles resultados del juego, asignando a cada jugador la utilidad esperada de seguir ese perfil de estrategias. Es por 367 Capítulo 16. Juegos no cooperativos en masas de enjambres lo que a cada juego en forma extensiva se le puede asociar un juego en forma normal definiendo los conjuntos de estrategias y las funciones de utilidad. Algunas veces, un juego en forma extensiva puede separarse en varios subjuegos, en los que cada uno de ellos constituye un juego como tal. El número de etapas de un juego en forma extensiva es el número máximo de subjuegos que se pueden encontrar en el camino. En cuanto al equilibrio apropiado para juegos en forma extensiva con comunicación, se deben tener en cuenta la actitud cambiante de todo proceso renegociador. Para lo cual se define una extensión del concepto de equilibrio de Nash a prueba de coaliciones (CPNE), donde un grupo de jugadores van abandonando la sala aleatoriamente después de llegar a un acuerdo. Un acuerdo que sea un equilibrio de Nash perfectamente a prueba de coaliciones (PCPNE) debe sobrevivir cuando se añade la posibilidad de que, a medida que los jugadores vayan abandonando la sala, se van alcanzando las siguientes etapas del juego. Sea N el conjunto de jugadores y sea A el conjunto de perfiles de estrategias de los jugadores. Considérese Γla-S, el juego al que se enfrenta la coalición S cuando el resto de jugadores (N\S) emplea las estrategias a-S. Sea Γ un juego en forma extensiva con n jugadores y t etapas. 1. Si (n, t)=(1, 1), a*ЄA es un equilibrio de Nash perfectamente a prueba de coaliciones (PCPNE) si a* maximiza la utilidad del jugador. 2. Sea (n, t)=(1,1), y supóngase que se ha definido el concepto de PCPNE para juegos con m jugadores y s etapas, donde (m, s)≤(n, t) y (m, s)≠(n, t). 3. s*ЄS es perfectamente sostenible si para todo SCN, a∗−S es un PCPNE en el juego Γla∗−S , y para cualquier subjuego propio g de Γ, a*(g) es un PCPNE en g. 4. Para cada juego Γ con n jugadores y t etapas, a*ЄA es un PCPNE si es perfectamente sostenible, y si no existe otro vector de estrategias perfectamente sostenible aЄA, tal que ui(a)>ui(a*) para todo iЄN. 368 Capítulo 16. Juegos no cooperativos en masas de enjambres El problema con esta definición es que la condición, a∗−S es un PCPNE en el juego Γla∗−S , fijando las estrategias de la coalición complementaria en todo el juego. No obstante, en el caso de juegos en forma extensiva no es un requerimiento plausible, donde a medida que pasa el tiempo los jugadores pueden conocer acciones pasadas, pudiendo aparecer una reacción ante una desviación observada por alguno de los jugadores de la coalicion complementaria. Ferreira introduce el concepto de equilibrio a prueba de comunicación que tiene en cuenta este aspecto de consistencia temporal, pudiendo los jugadores reaccionar ante desviaciones ocurridas anteriormente. Este tipo de equilibrios se formaliza en el subconjunto de estrategias B⊂A, donde el conjunto de equilibrios a prueba de coaliciones restringido a B (CPNE(B)) se define de manera similar a CPNE. Sea Γ un juego en forma extensiva con t etapas. 1. Si t=1, a* es un equilibrio a prueba de comunicación, si es un CPNE. 2. Sea t>1 y supóngase que este equilibrio a prueba de comunicación ha sido definido para juegos con r<t etapas. ̃), donde Entonces a* es un CPNE(A A = {a ∈ ∏ ΔAi : a induce un equilibrio a prueba i∈N (16.12) de comunicación en subjuegos propios de Γηs } PCPNE y el equilibrio a prueba de comunicación coinciden con PPE en juegos de dos jugadores. En teoría de juegos, el equilibrio de Nash es un concepto que describe la solución de un juego competitivo entre dos o más jugadores, en el que la hipótesis de partida es que cada jugador conoce las tácticas y estrategias de equilibrio de los otros jugadores y no existe incentivo alguno para cambiar la estrategia ya que no ganaría nada. Así, si cada jugador ha escogido una estrategia y ningún jugador se beneficia cambiando estas estrategias mientras que los otros jugadores mantienen la suya sin cambios, 369 Capítulo 16. Juegos no cooperativos en masas de enjambres entonces la actual estrategia y pagos correspondientes constituye un equilibrio de Nash [92]. En los equilibrios de Nash el resultado óptimo de un juego se alcanza cuando ningún jugador tiene un incentivo para desviarse de la estrategia que haya elegido después de evaluar la elección del resto de jugadores. Esta será la mejor opción que un jugador puede tomar, teniendo en cuenta la decisión de los otros jugadores y donde un cambio en la decisión de un jugador sólo puede conducir a un resultado peor si los otros jugadores se suman a su estrategia. Generalmente, un jugador no recibirá ningún tipo de beneficio de las acciones cambiantes, asumiendo que otros jugadores permanecen constantes en sus estrategias. Un juego puede tener varios equilibrios de Nash o ninguno en absoluto, no se puede asegurar nada a priori. Matemáticamente, en un juego G dado en forma estratégica o normal, un perfil estratégico o situación, s# es un “equilibrio de Nash” si ningún jugador puede, unilateralmente actuando, incrementar el pago que le corresponde por s#. Hay unos pocos requisitos relativos a la coherencia que deben tenerse en cuenta cuando se trata de equilibrios de Nash: • Principio de la racionalidad, basado en la capacidad de raciocinio de las personas, en el momento de solucionar problemas, esto quiere decir que, si existen dos posibles soluciones a un problema, se busca tomar la mejor decisión para solucionar el problema. • Principio del conocimiento común de la racionalidad, plantea que una solución a un problema va a ser aceptada y en consecuencia apoyada por el contrario. En este trabajo se plantea un juego hipotético donde se tienen dos jugadores que pueden escoger un único subenjambre, cada jugador, entre los subenjambres que componen el enjambre. En principio se ha dispuesto de 8 subenjambres por simplicidad aunque esta metodología podría adaptarse a cualquier otro número. Así, un jugador elige un subenjambre y el segundo jugador elige otro subenjambre diferente del primero; es decir, el segundo jugador únicamente podrá elegir uno de los 370 Capítulo 16. Juegos no cooperativos en masas de enjambres 7 subenjambres restantes. Como se verá a continuación el orden de elección por parte de los jugadores no es importante al presentar el problema una simetría en la elección. La estrategia de la misión operativa se basa en que dos subenjambres de los 8 que componen el grupo parten de la zona de espera y se dirigen hacia la zona de operaciones de la misión operativa cumpliendo la misión en pareja durante un cierto periodo de tiempo. Este periodo de tiempo está condicionado por el desgaste que sufran ambos subenjambres, lo cual puede estimarse mediante el cálculo de la entropía global G, que sufrirá un fuerte descenso por pérdida de RPAs, o bien por cuestiones táctico-operativas. Este periodo de tiempo que vamos a denominar periodo de tiempo operativo no tiene por qué tener relación alguna con el periodo de tiempo como movimiento oscilatorio del subenjambre descrito previamente. Excedido este periodo de tiempo, estos subenjambres volverán a la zona de espera y otros dos subenjambres egresaran a la zona de operaciones repitiendo el ciclo (ciclo que se ha denominado partida, subjuego o ronda de juego) saliendo de la zona de espera hacia la zona de conflicto y regresando. En principio, hay que tener en cuenta que si una pareja formada por dos subenjambres está ejecutando la misión (partida, subjuego o ronda del juego), no deberían elegirse para la siguiente partida dado que llegar a la zona de conflicto y regresar requerirá de un cierto tiempo además del desgaste táctico que sufrirán estos subenjambres durante el tiempo que se encuentren en zona. Por otra parte es improbable que esto ocurra dado que dos subenjambres que regresan del teatro de operaciones habrán sufrido un fuerte desgaste en zona, perdiendo algún vehículo remoto en la confrontación y por consiguiente su entropía global G habrá disminuido. Asimismo, es de destacar que estos movimientos zigzagueantes producirán desconcierto, confusión, decepción e incertidumbre en el enemigo real. La matriz de pagos del juego se calcula de la siguiente forma. Primeramente, para cada subenjambre se ha calculado una entropía global G. Además, como se ha calculado previamente, cada subenjambre presenta un patrón de oscilación del subenjambre como ente completo, lo cual se manifiesta a través de una frecuencia de oscilación del subenjambre, con lo que para cada periodo de tiempo de este movimiento oscilatorio puede calcularse la entropía global G con bastante precisión. Dicho de otra forma, en 371 Capítulo 16. Juegos no cooperativos en masas de enjambres el instante de evaluación de la entropía global G de cada subenjambre en el juego planteado, este cálculo puede efectuarse durante el tiempo previo de duración igual al periodo de tiempo del movimiento oscilatorio. Como cada subenjambre tiene una entropía global G diferente, esto permite ordenar a los 8 subenjambres de menor a mayor entropía pero en lugar de usar la propia entropía global G, se va a dar un peso de entropía a cada subenjambre de 1 a 8. Es decir, el subenjambre de mayor entropía global tendrá un peso 8 y el de menor entropía un peso de entropía 1. Por otra parte, a cada subenjambre que se encuentre más cerca de la zona de operaciones de la misión operativa se le asigna un peso de distancia de 8 mientras que 1 es para el que se encuentra más alejado, con lo cual se premia al subenjambre que se encuentre más cerca ya que se posicionará en la zona de conflicto en menos tiempo consumiendo menos combustible. Ahora se calcula la contribución a la matriz de pagos del juego mediante el cálculo de una matriz de peso de entropía sumando el peso de la entropía de cada uno de los subenjambres (se debe tener en cuenta que esto es cierto siempre que los dos subenjambres no se acerquen mucho; es decir, la distancia entre los centroides de ambos subenjambres no puede ser inferior a la suma de los radios de acción característicos de ambos subenjambres. De lo contario, la entropía suma de dos subenjambres sufrirá una pérdida adicional a la propia suma, como ya se ha explicado anteriormente. Por tanto, se asume como hipótesis que ambos subenjambres no se acercan demasiado y por tanto se puede asumir la hipótesis de suma de entropías). En cuanto a la distancia, se calcula una segunda matriz de peso de distancias como la suma del peso de la distancia de cada uno de los subenjambres Se ordenan las parejas de subenjambres primeramente por el peso de entropía global G, desde el máximo al mínimo, en una tabla bidimensional, y se hace otro tanto con el peso de la distancia ordenando las parejas de subenjambres. De este modo, se tiene la función de peso de la entropía pentroglo=pentroglo(i 1,j1) donde i1 y j1 son los índices de cada subenjambre (i1=1,…,8; j1=1,…,8). Evidentemente, la función pentroglo no está definida para i1=j1 dado que es el mismo subenjambre. 372 Capítulo 16. Juegos no cooperativos en masas de enjambres Otro tanto se hace para la función del peso de la distancia a la zona de conflicto pedistan=pedistan(i2,j2) con (i2=1,…,8; j2=1,…,8). Análogamente, la función pedistan no está definida para i1=j1 dado que es el mismo subenjambre. A continuación se monta un bucle, hasta encontrar aquellos valores, denominados estrella, que cumplen las condiciones simultaneas i1=i2, j1=j2 y pentroglo(i1,j1)=pedistan(i2,j2), obteniendo así un conjunto de valores i1* j1*, además de I2* j2*, denominados valores estrella. La matriz de pagos del juego se calcula como la suma del peso de la entropía más el peso de la distancia de cada dos subenjambres que cumplen la condición anterior; es decir, de los subenjambres estrella. Esto es pentroglo(i1,j1)+pedistan(i1,j1) para los valores estrella, el resto de los elementos de la matriz de pagos son nulos por definición. Es obvio que tanto pentroglo como pedistan están comprendidos entre 2≤pedistan≤16 y 2≤pentroglo≤16. RPA entropia proximidad RPA 1 2 3 4 5 6 7 8 entropia 3 8 5 4 6 1 2 7 proximidad 4 2 8 6 3 7 1 5 RPA entropia proximidad RPA 1 2 3 4 5 6 7 8 entropia 3 8 5 4 6 1 2 7 proximidad 4 2 8 6 3 7 1 5 1 2 3 8 4 2 Matriz de peso de entropía 11 11 8 13 7 12 9 14 4 9 5 10 10 15 1 2 3 8 4 2 Matriz de peso de distancia 6 6 12 10 10 8 7 5 11 9 5 3 9 7 3 5 8 4 4 6 5 6 3 6 1 7 7 2 1 8 7 5 8 13 7 12 9 9 14 11 10 4 9 6 5 7 5 10 7 6 8 3 10 15 12 11 13 8 9 9 11 6 7 12 10 5 6 11 7 8 13 3 8 9 3 5 8 4 4 6 5 6 3 6 1 7 7 2 1 8 7 5 12 10 10 8 14 7 5 11 9 11 9 15 13 10 5 3 9 7 4 8 9 7 13 11 8 12 6 14 11 15 9 13 9 13 7 11 10 4 8 8 12 6 Figura 16.1. Construcción de la matriz de pagos en el juego no cooperativo planteado. Con lo que este juego así planteado se consigue que se seleccionen aquellas parejas de dos subenjambres que tengan los mayores valores de peso de entropía y mayores valores de peso de distancia y estos sean iguales. De este modo, lo que se pretende es escoger aquellos subenjambres que tengan un mayor valor de la entropía global G, dado que aquellos subenjambres con mayor valor de entropía estarán más en disposición de entrar en un teatro de operaciones, produciendo el mayor efecto 373 Capítulo 16. Juegos no cooperativos en masas de enjambres neutralizante, de degradación y saturador sobre el sistema defensivo enemigo, y por ende también tendrán la mayor probabilidad de supervivencia. Asimismo, el mayor valor del peso distancia lo que asegura es que tardarán menos en llegar a la zona de operaciones al encontrarse más próximos, consumirán menos energía, lo cual redundará en la supervivencia del subenjambre. El juego así planteado constituye un equilibrio de Nash dado que cada jugador conoce las estrategias de equilibrio del otro jugador, y ningún jugador obtendrá ningún beneficio cambiando únicamente su propia estrategia mientras el otro jugador mantenga la suya. Así, este juego puede tener varios equilibrios de Nash, o ninguno. Bien, el primer problema que aparece es cuando no exista este equilibrio de Nash, para lo cual se han realizado diez millones de simulaciones generando aleatoriamente subenjambres de RPAS, encontrándose que en el 11,71% de los eventos no existía equilibrio de Nash. Para asegurar la existencia del equilibrio de Nash, se han relajado las condiciones indicadas anteriormente en el siguiente sentido. En el bucle calculado anteriormente se van a imponer las siguientes condiciones simultaneas i 1=i2, j1=j2 y |pentroglo(i1,j1)-pedistan(i2,j2)|≤k siendo k=1,2… En el caso k=1, se han realizado de nuevo diez millones de simulaciones encontrando que el 0,62% de los eventos no existía equilibrio de Nash. En el caso k=2, se han realizado de nuevo diez millones de simulaciones encontrando que el 0,046% de los eventos no existía equilibrio de Nash. En el caso k=3, se han realizado de nuevo diez millones de simulaciones encontrando que el 0,008% de los eventos no existía equilibrio de Nash. Finalmente para el caso k=4, se han realizado de nuevo diez millones de simulaciones encontrando que siempre existía equilibrio de Nash. Es decir, siempre es posible encontrar en este juego dos subenjambres que presenten los mayores valores de peso de entropía y mayores valores de peso de distancia y estos no se separen entre ellos más de cuatro unidades de peso según se ha justificado anteriormente. Mediante esta demostración no rigurosa, obteniendo este conjunto de simulaciones, se ha considerado prueba suficiente para proseguir el desarrollo del capítulo pudiendo aseverar que siempre es posible encontrar un equilibro de Nash, si bien en el caso muy improbable de que no 374 Capítulo 16. Juegos no cooperativos en masas de enjambres existiera equilibrio de Nash se tendría un problema de matriz nula ya que el equilibrio de Nash se alcanzaría con pago nulo. Además, por razones que se verán a continuación, también se ha calculado en estas simulaciones que eventos no presentaban al menos dos valores estrella, y este porcentaje ha sido del cero por ciento para este último caso de k=4. De cualquier modo, en los algoritmos calculados en este trabajo se ha introducido una salvaguarda en este caso muy improbable de que no se alcance el equilibrio de Nash, consistente en repetir los cálculos con valores de k superiores a cuatro hasta encontrar el equilibrio, lo cual si garantiza el equilibrio de Nash por razones obvias. La matriz de pagos actualizada del juego se calcula como la suma del peso de la entropía más el peso de la distancia de cada dos subenjambres que cumplen la condición anterior; es decir, pentroglo(i1,j1)+pedistan(i2,j2) que cumplan las siguientes condiciones simultáneamente: i1=i2, j1=j2 y |pentroglo(i1,j1)pedistan(i2,j2)|≤k siendo k=4. Los elementos de la matriz de pagos que no cumplan estas condiciones son cero por definición. Recapitulando, con el juego definido hasta este momento se consigue que se seleccionen aquellas parejas de dos subenjambres que tengan los mayores valores de peso de entropía y mayores valores de peso de distancia y estos sean lo más similares posibles numéricamente hablando. De hecho, con diferencias de pesos menores o iguales de cuatro unidades se ha alcanzado este objetivo lo cual se ha considerado suficiente asegurando de esta forma alcanzar el equilibrio de Nash. De esta manera, lo que se pretende es seleccionar aquellos subenjambres que tengan un mayor valor de la entropía global G, dado que aquellos subenjambres con mayor valor de entropía estarán más en disposición de entrar en un teatro de operaciones, produciendo el mayor efecto saturador, neutralizante y degradante sobre el sistema defensivo enemigo, y por consiguiente también tendrán la mayor probabilidad de supervivencia. Asimismo, el mayor valor del peso distancia lo que asegura es que estarán más próximos a la zona de conflicto y tardarán menos en llegar, consumiendo menos energía, lo cual redundará en la supervivencia del subenjambre. Cuando dos subenjambres entren en la zona de operaciones y más tiempo estén en zona, mayor será el desgaste del subenjambre y mayor será la tasa de pérdida de RPAs, y por tanto 375 Capítulo 16. Juegos no cooperativos en masas de enjambres caerá la entropía global G, según se ha demostrado anteriormente, y así menor será la probabilidad de ser elegidos en la siguiente ronda, subjuego o partida. Por otra parte, los subenjambres que entran en zona de operaciones, su centroide se desplaza a una cierta velocidad, y anteriormente quedo demostrado que esta velocidad de centroide disminuye la entropía global G del subenjambre por lo que un centroide con baja velocidad incrementa su entropía frente a uno con alta velocidad y por ende tendrá más probabilidad de ser elegido. El primer jugador puede elegir el subenjambre que proporciona la función de pago más elevada o cualquier otra, por lo cual elegirá el subenjambre que proporcione el pago más alto. El segundo jugador puede hacer otro tanto, o elige la función que proporcione el pago más alto o cualquier otra, por lo que elegirá la función que proporcione el pago más alto en términos de pagos. En este punto de equilibrio de Nash, cada jugador conoce las estrategias del otro jugador y ha optado por su mejor estrategia. Si un jugador cualesquiera de los dos cambia su estrategia, el pago que obtiene es inferior o igual al pago obtenido en el equilibrio de Nash. En definitiva, cada uno de los jugadores conoce las tácticas y estrategias de equilibrio del otro jugador y no existe incentivo alguno para cambiar la estrategia ya que no incrementaría su ganancia. De esta forma, si cada jugador ha escogido una estrategia y el otro jugador no se beneficia cambiando estas estrategias mientras que el primero jugador mantiene la suya sin cambios, entonces la actual estrategia y pagos correspondientes constituye un equilibrio de Nash. Es decir, en este equilibrio de Nash el resultado óptimo de un juego se alcanza cuando ningún jugador tiene un incentivo para desviarse de la estrategia que haya elegido después de evaluar la elección del otro jugador. Esta será la mejor opción que cada jugador puede tomar, teniendo en cuenta la decisión del otro jugador y donde un cambio en la decisión de un jugador sólo puede conducir a un resultado peor si el otro jugador se suma a su estrategia. Generalmente, un jugador no recibirá ningún tipo de beneficio de las acciones cambiantes, asumiendo que el otro jugador permanece constante en su estrategia. 376 Capítulo 16. Juegos no cooperativos en masas de enjambres Hasta este momento no ha habido ningún tipo de contacto, renegociación o colaboración entre los jugadores. Es decir, si este mismo juego se repitiera más veces, el resultado sería el mismo, se habría alcanzado un equilibrio Pareto perfecto dado que el equilibrio de Nash obtenido no está Pareto dominado por ningún otro equilibrio de Nash que pudiera alcanzarse. Asimismo, este equilibrio de Nash es a prueba de coaliciones CPNE al tratarse de un juego con dos jugadores y no estar Pareto dominado por ningún otro equilibrio de Nash. No obstante, el juego así planteado plantea una debilidad. En este juego aquellos subenjambres que se encuentren más cerca del teatro de operaciones y tengan valores de entropía más altos, tienen mayor probabilidad de ser elegidos para entrar en zona, lo cual muestra una debilidad al anticipar una actitud predecible por el adversario que podría anticiparse y desplegar sus defensas contra los subenjambres que muestran más probabilidad de entrar en zona de operaciones. En un conflicto real contra un enemigo real es esencial la sorpresa, el desconcierto, la confusión y la decepción. Recuérdese que estos dos jugadores hipotéticos tienen objetivos comunes, como que los subenjambres cumplan la misión entrando en la zona de operaciones, produciendo el mayor efecto degradador, neutralizante y saturador sobre el sistema defensivo enemigo, desconcertando, confundiendo y decepcionando, al adversario, pero sin dejar de lado que estos subenjambres deben tener la mayor probabilidad de supervivencia en zona al objeto de que puedan seguir interviniendo en más partidas, subjuegos o rondas de juegos al sufrir menos pérdidas. Para ello, se plantea introducir el concepto de negociación y coalición entre ambos jugadores, disminuyendo la predictibilidad que actualmente tiene este juego. La matriz de pagos actualizada del juego se ha calculado como la suma del peso de la entropía más el peso de la distancia de cada dos subenjambres que cumplen una serie de condiciones ya vistas; es decir, pentroglo(i1,j1)+pedistan(i2,j2) que cumplan las siguiente condiciones simultáneamente: i1=i2, j1=j2 y |pentroglo(i1,j1)-pedistan(i2,j2)|≤k siendo k=4. Los elementos de la matriz de pagos que no cumplan estas condiciones son cero por definición. Recuérdese que estos valores i1=i2, j1=j2 se han denominado valores estrella: conjunto de valores i1* j1*, además de i2* j2*. Estos conjuntos de 377 Capítulo 16. Juegos no cooperativos en masas de enjambres valores presentan los valores más altos de la matriz de pagos según se ha diseñado a lo largo del juego pero no el más alto que es el de Nash. Supóngase que se introduce una complejidad adicional en el juego. Hasta este momento la pareja de subenjambres que presentaba el valor más alto de la matriz de pagos era el seleccionado para entrar en la zona de conflicto. Supóngase que no fuera así, sino que a cada pareja de subenjambres que presenten valores estrella se le asigne una probabilidad para entrar en la zona de conflicto según acuerdo alcanzado por ambos jugadores. Esta probabilidad podría favorecer a aquellas parejas de subenjambres que proporcionen un mayor pago a los jugadores si ese fuera el criterio. Obviamente la suma de estas probabilidades para todos los elementos de la matriz de pagos es la unidad, exceptuando los valores nulos de la matriz de pagos por razones obvias. Para el cálculo de esta probabilidad pueden plantearse varias técnicas: Rueda de ruleta. La probabilidad es proporcional al valor de la matriz de pagos para cada elemento. Esto puede representarse como un juego de ruleta, donde cada pareja de subenjambres tiene asignada una sección de la ruleta. Los elementos más aptos tienen secciones mayores que las de los elementos menos aptos. Luego la ruleta rueda y cada vez se elige el elemento que posea la sección en la que se para la ruleta. Torneo. Se seleccionan dos subgrupos de elementos de la matriz de pagos al azar, y se toma de cada subgrupo el elemento más apto. Rango. A cada elemento de la matriz de pagos se le asigna un rango numérico función de su valor numérico. La selección se basa en este ranking. Este método retrasa a los elementos con mayor valor numérico. Aleatorio. A cada elemento de la matriz de pagos se le asigna la misma probabilidad de ser elegido. Este sistema considera a todos los elementos equiprobables. A continuación se muestran las simulaciones obtenidas, partiendo de una configuración inicial de subenjambres dada por la sucesión {1,…,8}, no apreciando que ninguna de las técnicas empleadas se decante sobre las otras, mostrando todas buenas perspectivas. Como se ha indicado anteriormente se ha seleccionado el valor 8 por 378 Capítulo 16. Juegos no cooperativos en masas de enjambres simplicidad pero podría efectuarse el análisis para cualquier otro valor diferente de 8. De forma ilustrativa, se ha representado el peso de entropía de cada subenjambre de 1 a 8, definido previamente, y su evolución a lo largo del tiempo, contabilizando para ello el número de periodos de tiempo operativo, con las siguientes hipótesis de cálculo. Dos subenjambres que entran en zona de operaciones en una partida, subjuego o ronda de juego sufren un desgaste o deterioro, perdiendo algún vehículo remoto y por consiguiente su entropía global G disminuirá. Esto se ha reflejado en esta simulación como que cada subenjambre que entra en zona baja un puesto en cuanto a su peso de entropía (peso de entropía e), ocasionado por el deterioro táctico durante la misión en cada subjuego, y el subenjambre que tiene el peso de entropía e sube un puesto en el peso de la entropía. No se considera más de un puesto de pérdida de peso de entropía ya que si la pérdida de RPAs fuera tan importante, sería replegado de la zona de conflicto antes de lo planeado. Se puede decir que se intercambian los pesos de entropía. En cuanto al peso de distancias de cada subenjambre que entra en zona se ha hecho una hipótesis similar por simplicidad y simetría, el subenjambre que entra en zona baja el peso de distancia un puesto (peso de distancia d) y se posiciona en una posición más cercana a la zona para economizar combustible, y el subenjambre que tiene el peso de distancia d sube un puesto en el peso de distancias. Se puede decir que se intercambian los pesos de distancia. Cuando un subenjambre alcanza el peso de entropía cero se hace la hipótesis de que este subenjambre ha sufrido tantas pérdidas que todos sus RPAs han caído en combate. Como puede verse a continuación en todas las simulaciones acometidas, el enjambre completo no soporta más allá de setenta periodos de tiempo operativo en el mejor de los casos, aproximadamente, hasta su final o lo que es lo mismo, setenta subjuegos o partidas. 379 Capítulo 16. Juegos no cooperativos en masas de enjambres Figura 16.2. Simulación de subenjambres en zona. Selección por rueda de ruleta. Figura 16.3. Simulación de subenjambres en zona. Selección por torneo. Figura 16.4. Simulación de subenjambres en zona. Selección por rango. 380 Capítulo 16. Juegos no cooperativos en masas de enjambres De este modo, resulta evidente que esta dificultad añadida al juego disminuiría la predictibilidad indicada en el juego anteriormente, incrementando la confusión, decepción, sorpresa y desconcierto en el sistema defensivo del adversario, degradándolo, saturándolo y neutralizándolo, a la par que aumentando la probabilidad de supervivencia de los subenjambres y por consiguiente incrementando el número de periodos de tiempo operativo que el enjambre es capaz de soportar hasta su final. Ciertamente la pareja de subenjambres que sea seleccionada para entrar en el teatro de operaciones (denominada de valores estrella según se ha explicado previamente) en este nuevo juego no tendría por qué ser la que presente el valor más alto de la matriz de pagos aunque si presente un valor alto en la matriz de pagos (estos valores se han denominado valores próximos al equilibrio de Nash o VCNE). De esta forma, los valores VCNE estarían Pareto dominado por el formado por la pareja de subenjambres que representa el elemento de valor más alto de la matriz de pagos que sería un equilibrio de Nash (NE). Evidentemente, si existe equilibrio de Nash existe al menos un valor VCNE que sería el propio NE. La reciproca también es cierta, si existe un valor VCNE tiene que existir NE. Otra forma de verlo, el elemento de la matriz de pagos que representa la pareja de subenjambres seleccionados para entrar en el teatro de operaciones (valores estrella VCNE) podría desviarse hacia el elemento de la matriz de pagos que representa el equilibrio de Nash ya que se obtendría un pago superior y sería una desviación más viable y más sostenible en término de pagos pero no en términos de supervivencia dado que la probabilidad de supervivencia sería inferior al ser una actitud más predecible. La idea que subyace en este juego sería rechazar unos pagos elevados y aceptar unos pagos inferiores a cambio de incrementar la supervivencia del enjambre lo que a la postre permitiría continuar el juego con más partidas o subjuegos. Considérese la matriz de pagos y represéntese el pago formado por la pareja de subenjambres, que representa el elemento de valor más alto de la matriz de pagos, como P(NE), que es un equilibrio de Nash (NE). Como los valores VCNEi estarían Pareto dominado por NE, el pago de los valores VCNEi, formado por la pareja de 381 Capítulo 16. Juegos no cooperativos en masas de enjambres subenjambres que representan aquellos elementos de valor más alto de la matriz de pagos, cumplirían la relación P(NE)>P(VCNEi). Sumando todos los valores sobre i, se tiene: ∑i P(NE) > ∑i P(VCNEi ) con lo que P(NE) > ̅ P(VCNEi ) siendo ̅ P(VCNEi ) el valor medio de todos los pagos asociados a VCNEi. Desígnese el número máximo de periodos de tiempo operativo que el enjambre es capaz de soportar hasta su final, asociado al pago P(NE), como NNE. Así que ̅(VCNEi )NNE por lo que P(NE)NNE − P ̅(VCNEi )NNE >0 es una P(NE)NNE > P ∗ cantidad positiva la cual podría escribirse como ̅ P(VCNEi )ΔNVCNE de modo que ∗ ̅(VCNEi )NNE = P ̅(VCNEi )ΔNVCNE P(NE)NNE − P . Obviamente ∗ ΔNVCNE ≥ 0. A ∗ continuación se interpretará el término ΔNVCNE . A este respecto, los jugadores recibirían un pago inferior P(VCNEi) pero a cambio se espera que el número máximo de periodos de tiempo operativo que el enjambre es capaz de soportar hasta su final sea ∗ mayor y dado por la siguiente expresión (NNE + ΔNVCNE ), constituyendo la ecuación ∗ P(NE)NNE = ̅ P(VCNEi )(NNE + ΔNVCNE ) lo que se ha venido en denominar un equilibrio de pagos justo en un conjunto de subjuegos, y la clave estaría en el término ∗ ΔNVCNE que podría expresarse como: ∗ ΔNVCNE = NNE P(NE) − ̅ P(VCNEi ) ̅(VCNEi ) P (16.13) ̅(VCNEi ), es posible definir un factor α = P ̅(VCNEi )/P(NE) < 1 de Como P(NE) > P tal modo que la ecuación anterior puede reescribirse como: ∗ ΔNVCNE = P(NE)NNE 1−α α (16.14) El factor α es inferior a la unidad pero cercano a la unidad ya que la pareja de subenjambres que sea seleccionada para entrar en el teatro de operaciones (valores estrella) no tiene por qué ser la que presenta el valor más alto de la matriz de pagos aunque si presenta un valor alto en la matriz de pagos (VCNE) al estar los valores VCNE Pareto dominado por el formado por la pareja de subenjambres que presenta el elemento de valor más alto de la matriz de pagos que es un equilibrio de Nash (NE). Representando la función f(α)=(1-α)/α se tiene: 382 Capítulo 16. Juegos no cooperativos en masas de enjambres Figura 16.5. Representación gráfica de la función f(α)=(1-α)/α. Cuando α→1 f(α)→0, como era de esperar, y para α<1 f(α) decrece siendo un punto ∗ matemáticamente significativo α=0,5 ya que entonces f(α)=1 y por tanto ΔNVCNE = ∗ P(NE)NNE siendo una ganancia importante en la expresión (NNE+ΔNVCNE ) o número de periodos de tiempo operativo que el enjambre sería capaz de soportar hasta su final asociado a los pagos VCNEi, en un equilibrio de pagos justos, si bien el pago que se obtiene ̅ P(VCNEi ) sería muy reducido para la pareja de subenjambres que entran en zona, dado que la matriz de pagos refleja la suma del peso de la entropía y la distancia, según se ha visto previamente, y por consiguiente, con entropías tan reducidas no se conseguiría neutralizar o degradar el sistema defensivo enemigo y la probabilidad de supervivencia de los subenjambres también se vería comprometida. Así, es un equilibrio donde α tiene que estar cerca de la unidad pero no tan cerca como para conseguir el efecto deseado en una confrontación real en el que los jugadores renuncian al pago P(NE) y reciben un pago inferior P(VCNEi) esperando a cambio que el número máximo de periodos de tiempo operativo que el enjambre sea capaz de soportar hasta su final sea superior. Haciendo un cambio de variable α=1-ϵ con ϵ pequeño ya que cuando α→1 entonces ϵ→0 se tiene la siguiente ecuación mucho más explicativa al desarrollar en serie: ∗ ΔNVCNE = P(NE)NNE ϵ(1 − ϵ)−1 ≃ P(NE)NNE (ϵ + ϵ2 + ⋯ ) (16.15) 383 Capítulo 16. Juegos no cooperativos en masas de enjambres ∗ ∗ Así, P(NE)NNE = ̅ P(VCNEi )(NNE + ΔNVCNE ) donde la cantidad (NNE+ΔNVCNE ) constituye el número de periodos de tiempo operativo que el enjambre sería capaz de soportar hasta su final asociado a los pagos VCNEi, superior al que se emplea con NE, en un equilibrio de pagos justo, en un conjunto de subjuegos. Esta cantidad puede escribirse, reteniendo el primer término del desarrollo en serie, como: ∗ (NNE + ΔNVCNE ) ≃ NNE [1 + ϵP(NE)] (16.16) ∗ A la vista de esta ecuación puede apreciarse como para incrementar (NNE+ΔNVCNE ) se exige aumentar ϵ, en primera aproximación, ya que NNE está asociado al pago P(NE), pero como se ha indicado anteriormente, teniendo en cuenta la expresión ϵ = 1 − ̅(VCNEi )/P(NE) = [P(NE) − P ̅(VCNEi )]/P(NE), esto pasaría por qué P(NE) y P ̅ P(VCNEi ) estén muy separados lo cual mejoraría la supervivencia del enjambre ya que ̅(VCNEi ) sería muy disminuye la predictibilidad pero a cambio el pago que se obtiene P reducido para la pareja de subenjambres que entran en zona, dado que la matriz de pagos refleja la suma del peso de la entropía y la distancia, según se ha visto previamente, y por tanto, con entropías tan reducidas no se conseguiría neutralizar o degradar el sistema defensivo enemigo y la probabilidad de supervivencia de los subenjambres también se vería comprometida. En definitiva, se busca un equilibrio donde ϵ tiene que ser pequeño pero ϵP(NE) grande para conseguir el efecto deseado en una confrontación real en el que los jugadores renuncian al pago P(NE) y reciben un pago inferior P(VCNEi) esperando a cambio que el número máximo de periodos de tiempo operativo que el enjambre sea capaz de soportar hasta su final sea superior. ̅(VCNEi ) están muy cerca pero esto También, ϵ pequeños supone que P(NE) y P provocaría una mayor predictibilidad que es lo que se pretendía evitar. Recapitulemos sobre este concepto, NNE es el número máximo de periodos de tiempo operativo que el enjambre es capaz de soportar hasta su final suponiendo que en cada subjuego, partida o ronda de juego los jugadores eligen la pareja de subenjambres que constituye el elemento de valor más alto de la matriz de pagos que es un equilibrio de Nash (NE). No obstante, elegir siempre el mismo valor presenta una situación de predictibilidad que sería aprovechada por el adversario, sin lugar a dudas, para 384 Capítulo 16. Juegos no cooperativos en masas de enjambres efectuar sucesivos ataques certeros a aquellos subenjambres que forman el equilibrio de Nash. Por otra parte, si en lugar de elegir los subenjambres que forman el equilibrio de Nash NE para entrar en zona, se eligen otra pareja de subenjambres que muestren un valor alto de la matriz de pagos, aunque no tan alto como el NE, en base a una metodología estocástica que disminuye esta predictibilidad, lo cual podría ser aprovechado por el enemigo. Así, al seleccionar ambos subenjambres con valores altos de la matriz de pagos (pero que no sean NE) se garantiza que estos subenjambres tendrán valores altos de entropía y estarán próximos a la zona de conflicto, consiguiendo merced a sus altas tasas de entropía entrar en zona de conflicto, produciendo un alto efecto neutralizante, saturador, degradante sobre el sistema defensivo enemigo, y por consiguiente también tendrán una mayor probabilidad de supervivencia al incrementar la decepción, confusión, desconcierto y sorpresa. La cantidad (NNE+ΔNVCNE) se define como el número real de periodos de tiempo operativo que el enjambre sería capaz de soportar hasta su final asociado a los pagos ∗ VCNEi. El término ΔNVCNE puede ser ΔNVCNE = ΔNVCNE el cual se ha definido por la ecuación anterior como un equilibrio de pagos justo en un conjunto de subjuegos y la ∗ cantidad (NNE+ΔNVCNE ) constituye el número de periodos de tiempo operativo que el enjambre sería capaz de soportar hasta su final asociado a los pagos VCNEi en un equilibrio de pagos justo en un conjunto de subjuegos, lo cual se considera una ∗ importante aportación de este trabajo. Así, podría ocurrir que ΔNVCNE > ΔNVCNE , con lo que (NNE+ΔNVCNE) es un número óptimo de periodos de tiempo operativo que el enjambre sería capaz de soportar hasta su final asociado a los pagos VCNE i. Si ∗ ΔNVCNE < ΔNVCNE , (NNE+ΔNVCNE) es un número subóptimo de periodos de tiempo operativo que el enjambre sería capaz de soportar hasta su final asociado a los pagos VCNEi. Obsérvese que ΔNVCNE debería ser mayor que cero ya que de lo contrario el número de periodos de tiempo (NNE+ΔNVCNE) que el enjambre sería capaz de soportar hasta su final asociado a los pagos VCNEi sería inferior al propio número máximo de periodos de tiempo operativo que el enjambre es capaz de soportar hasta su final, asociado al pago P(NE), lo cual no puede considerarse de otra forma que una situación desastrosa. Este tipo de situación, inusual desde todos los puntos de vista, podría 385 Capítulo 16. Juegos no cooperativos en masas de enjambres ocurrir y estar debida a un aumento de las capacidades tecnológicas del enemigo para repeler una intrusión de enjambres y obligaría a replantear toda la estrategia. 386 Capítulo 16. Juegos no cooperativos en masas de enjambres 387 Capítulo 17. Conclusiones (y trabajo futuro) Ante la llegada del supercaza estadounidense F-35, las naciones europeas se han posicionado bien a favor, adquiriendo este avión de combate, como el Reino Unido o Italia, o bien desarrollando un producto propio europeo como es el caso del FCAS. Así, Alemania, Francia y España han acordado producir el futuro sistema de combate aéreo de sexta generación FCAS que reemplace las flotas de aviones Eurofighter y Rafale allá por 2035-2040. Esta decisión cobra sentido, dadas las ventajas de una tecnología netamente europea en un sector tan estratégico como la de la defensa y la tecnología militar, participando en todos los procesos de diseño y fabricación. El FCAS aprovechará el combate colaborativo de plataformas remotamente tripuladas y no remotamente tripuladas para hacer frente a futuras amenazas aéreas. Este sistema de sistemas basado en un caza de sexta generación, presentará muy baja observabilidad, sensores activos y pasivos de última generación, inteligencia artificial abordo y plena interacción hombre-máquina, siendo un formidable gestor de la batalla aérea capaz de operar en lo más profundo del espacio aéreo enemigo, conectado con otros elementos aéreos, en entornos denegados GNSS donde estas señales lleguen deterioradas, permitiendo la combinación dinámica de capacidades de detección, disparo y gestión de batalla. Para aplicar el principio OODA (Observe Orient Decide Act) con más rapidez que el enemigo y tomar el control de la situación, el FCAS hará uso de un nuevo concepto, la Nube de Combate Aéreo (Air Combat Cloud), que orquestará, coordinará y conectará todos los sistemas aéreos, será un multiplicador de fuerza interoperable que proporcionará una conciencia situacional común, en tiempo real, al adquirir, compartir, fusionar y procesar velozmente grandes cantidades de información de 388 Capítulo 17. Conclusiones (y trabajo futuro) todas las plataformas conectadas, ya sean remotamente tripuladas como no remotamente tripuladas, en entornos C5ISR. La Air Combat Cloud es la última manifestación de la Network Centric Warfare, que durante los últimos 20 años ha conceptualizado la evolución de un sistema de sensores de inteligencia artificial, sistemas de mando y control, armamento de precisión, etc. que establece una conciencia situacional para la determinación de objetivos y asignación de efectores. En este futuro dominio aéreo, el FCAS operará conjuntamente con enjambres de RPAs (remote carriers) donde se presentan dos tipologías. Una primera, conceptualmente denominada “loyal wingman” o “Skyborg”, donde un pequeño grupo de RPAs custodiaran a los cazas, dentro de la Air Combat Cloud, que podrán ser controlados bien desde las GCS en tierra o bien desde los propios cazas. Sin embargo, este trabajo se ha centrado en la segunda tipología, donde el poder aéreo tendrá un importante pilar en los enjambres de masas de cientos de pequeños y agiles RPAs que se coordinaran bajo el paraguas de la la Air Combat Cloud, acometiendo misiones de alto riesgo salvaguardando así las vidas de las tripulaciones de las aeronaves no remotamente tripuladas [32]. De esta forma, ésta masas de enjambres de RPAs son idóneas para las misiones denominadas “sucias y peligrosas”, siendo un ejemplo de ello la misión de saturación de defensas (SEAD), degradando y neutralizando los sistemas defensivos enemigos, lo cual posibilitará que otras operaciones aéreas puedan ejecutarse, coordinadas bajo la Air Combat Cloud, sin pérdidas innecesarias humanas o/y materiales. Esta masa de enjambres de vehículos remotos, debidamente jerarquizados, colapsarán las defensas enemigas, atestando el espacio aéreo enemigo de cuantiosos objetivos con poco valor económico, los cuales se constituirán, inicialmente, como señuelos para caros efectores, o bien excitaran a los radares enemigos que al conectarse mostraran su posición y así podrán ser destruidos por las fuerzas propias. En consecuencia, un sistema defensivo diseñado para contrarrestar blancos tipo grandes aviones y misiles, será desconcertado, decepcionado y colapsado por una masa de enjambres de pequeños RPAs de bajo valor económico. Además, estos vehículos remotos podrán generar aún mayor confusión, variando su firma radar, mediante la adopción de paneles radar, pudiendo ser confundidos con aviones de mayor tamaño. 389 Capítulo 17. Conclusiones (y trabajo futuro) Una segunda misión que podría abordarse dentro de la denominación “sucias y peligrosas” sería la ISR, donde la tecnología desarrollada en este trabajo sería de aplicación. Estas masas de enjambres de vehículos remotos se integrarían cooperativamente, bajo la Air Combat Cloud, en los procesos de adquisición, recopilación y procesado de información de inteligencia, dado su elevado número y pequeño tamaño, lo cual les permite tejer una red ISR gobernada bajo la inteligencia artificial. Este tipo de misiones presentan la desventaja de que se desenvuelven en zonas “calientes” con elevado riesgo de derribo, lo que hace imprescindible para estas aeronaves efectuar innumerables maniobras evasivas en el cumplimiento de la misión, al objeto de decepcionar y desconcertar los sistemas defensivos del adversario, actuando bajo una estructura colaborativa, sincronizada e inteligente, con el fin de aumentar la probabilidad de supervivencia del conjunto de RPAs, viéndose de este modo el paralelismo entre las misiones ISR y SEAD. Con un número de vehículos remotos que componen el enjambre del orden de cientos, no cabe otra opción que confeccionar arquitecturas físicas del enjambre de elevada complejidad, donde no es posible disponer de un piloto por cada RPA, siendo necesario dotarse de estrategias maestras que permitan controlar y coordinar a todo el enjambre en su conjunto, con el fin de acometer las misiones operativas descritas previamente en la Air Combat Cloud. Estas tecnologías involucran redes de comunicaciones avanzadas de enjambre, nuevos conceptos de reciprocidad y apoyo mutuo entre RPAs, donde cada conducta de un agente se optimiza y adapta hacia un comportamiento de inteligencia colectiva de enjambre, lo cual se viene en denominar inteligencia de enjambre como la aplicación de la inteligencia artificial a los enjambres, o dicho de otra forma, la capacidad de una máquina o bien un conjunto de máquinas de tomar la mejor decisión entre varias opciones. Otra cuestión es que los enjambres al que se ha dirigido este trabajo es un enjambre de RPAs de tamaño pequeño, aunque técnicamente podría aplicarse a cualquier tamaño, dado que los RPAs diminutos presentan importantes ventajas como su maniobrabilidad, firma radar reducida, comportamiento furtivo, a lo que hay que sumar su bajo valor económico. Indudablemente, este pequeño tamaño no permite albergar grandes microprocesadores lo que lleva a una baja capacidad computacional y 390 Capítulo 17. Conclusiones (y trabajo futuro) por ende a una lentitud en los cálculos. Así, con una masa de cientos de agentes, coordinar todos estos elementos en las misiones operativas descritas, requiere de capacidades de procesado computacionales muy potentes, no disponibles abordo, y complicadas de adquirir, así como de albergar en los actuales Sistemas de Armas con espacios reducidos. Resolver esta cuestión únicamente con inteligencia artificial no es suficiente, requiriendo de alguna tecnología maestra inteligente que permita gestionar el comportamiento de toda esta masa de enjambres de RPAs, localizando y evitando obstáculos en tiempo real, conectándose entre ellos mediante comunicaciones seguras, y calculando la trayectoria individual de cada vehículo remoto autónomamente para poder acometer la misión correspondiente en función de las condiciones cambiantes del entorno. Si bien, en primera instancia podría interpretarse que esta enorme cantidad de vehículos remotos podrían sumar sus capacidades computacionales, pero alcanzar este hito aún debe superar algunos obstáculos como comunicaciones lentas, interferencias y necesidad de protocolos fiables de transmisión de los datos, lo cual lentifica más el modus operandi. De esta forma, la tecnología desarrollada en este trabajo parte de una jerarquía organizativa de enjambre completo en forma de subenjambres o escuadrones, para lo cual se ha empleado la teoría de juegos. Así, inicialmente cada subenjambre se modeliza haciendo uso de un juego cooperativo donde los vehículos remotos del subenjambre participan de una estrategia evolutiva. Estos RPAs se asimilan a jugadores en un juego, que en su proceso evolutivo buscan el máximo beneficio, pago o utilidad, mediante una estrategia compartida por todos los RPAs cooperando entre sí. Calculando el valor de Shapley y el valor de Banzhaf se estima un reparto de pagos o beneficios como la ganancia de una nueva magnitud asociada al subenjambre, que se ha venido en llamar entropía, donde cada agente contribuye a maximizar esta entropía mediante su aporte individual. Según se ha indicado, este aumento de entropía incrementa la supervivencia del enjambre en un teatro de operaciones colapsando y congestionando los sistemas defensivos enemigos. Asimismo, referente al enjambre completo, en este trabajo se ha diseñado un juego no cooperativo basado en subenjambres. En este nuevo juego, la matriz de pagos o beneficios se ha calculado función de dos características: la entropía de cada 391 Capítulo 17. Conclusiones (y trabajo futuro) subenjambre por una parte y la distancia de cada subenjambre al teatro de operaciones por otra. Conseguido el equilibrio de Nash en este juego, donde el beneficio/pago es máximo, se han ideado en este trabajo unos nuevos valores próximos al equilibrio de Nash (VCNE) donde, aun siendo estos valores Pareto dominados por el equilibrio de Nash, se prescinde de una parte del pago del equilibrio de Nash al escoger el pago de alguno de los VCNE, obteniendo a cambio un incremento del tiempo que el enjambre es capaz de actuar bajo el fuego enemigo en zona de operaciones, incrementando la supervivencia de los subenjambres de forma paralela. Por otra parte, si se baja a nivel de microestado, ya se anticipó que antes de integrar, sincronizar y organizar a un grupo de vehículos remotos, se deben dictaminar otras cuestiones como el de los choques, cuestión de relevancia que resulta más importante en la medida que aumenta el número de vehículos remotos que componen el enjambre. Resolver esta cuestión resulta fundamental antes de aplicar tecnologías de inteligencia artificial y teoría de juegos que consigan explotar los conceptos de colaboración y cooperación entre individuos, con alto carácter de reciprocidad y ayuda mutua, que a la postre finalmente configuren el enjambre como un grupo inteligente, sincronizado y organizado. En el campo de los choque en enjambres, significativo han sido los avances realizados por diversos investigadores, como Reynolds que enunció las primeras reglas en simulación de enjambres, y posteriormente, los importantes avances del KAIST en el campo de la elusión de colisiones, como así lo ha aseverado el Congreso de los Estados Unidos en su documento Mini, Micro, and Swarming Unmanned Aerial Vehicles: a baseline study [82]. De este modo, el KAIST efectuó múltiples simulaciones de comportamiento de enjambres, donde definiendo el enjambre como un grupo descentralizado, cada RPA del enjambre maniobra para evitar chocar con otros agentes, determinando que una zona de seguridad con una dimensión de entre cinco y quince veces la longitud media del RPA [9], permite eludir las colisiones en su mayor parte, cuestión que ha sido contrastada en este trabajo mediante los algoritmos de cálculo desarrollados. 392 Capítulo 17. Conclusiones (y trabajo futuro) De esta manera, partiendo de los postulados de Reynolds y el KAIST, en el presente trabajo se ha diseñado y desarrollado un algoritmo de elusión de colisiones con vehículos remotos del enjambre, introduciendo tres variables de decisión. Básicamente, el procedimiento diseñado calcula para cada RPA las distancias al resto de RPAs, asociando al primer agente remoto la distancia más corta, de forma que cuando esta distancia es menor que el primer factor de decisión, el RPA realiza un viraje de acuerdo a la velocidad angular de la plataforma remota. Si aun así, se manifestará riesgo de colisión y la distancia es inferior al segundo factor de decisión, el RPA se decelera pero sin llegar a la velocidad de pérdida. Empero, en este trabajo se ha determinado que es necesario disponer de un algoritmo que evite que el enjambre se disgregue y disemine mediante la aplicación de un tercer factor de decisión que provoque que cuando la distancia sobrepase este tercer factor de decisión, el RPA vira y se dirige al centroide del enjambre. Como se ha visto a lo largo del trabajo, el centroide es un nuevo punto representativo del enjambre, similar al centro de masas de un sistema másico. Este centroide de cada subenjambre también puede conferirse como una función de liderazgo para cada subenjambre. En el caso de impactos con elementos ajenos al enjambre es preceptivo disponer de información adicional extraída de sensores. En las referencias [26] y [27] se puede encontrar un exhaustivo análisis de investigación donde utilizando tecnologías de tratamiento estadístico de imágenes podría localizarse un obstáculo y evitar la colisión. Para que un enjambre de RPAs exhiba una conducta de cooperación y coordinación, sincronizada y organizada, donde estas plataformas remotas combinen sus habilidades de manera sinérgica y surja así un colectivo organizado, inteligente y sincronizado, es necesario desarrollar algoritmos complejos de inteligencia artificial y teoría de juegos que articulen una red epistemológica sinérgica entre estos RPAs. Según Nils John Nilsson, uno de los fundadores de la inteligencia artificial, este concepto de inteligencia artificial se fundamenta en una serie de algoritmos estructurados en programas computacionales, los cuales deben apoyarse, básicamente, en cuatro puntales: búsqueda de estados, metodologías de optimización evolutivas, sistemáticas de aprendizaje automático y razonamiento lógico formal [84]. 393 Capítulo 17. Conclusiones (y trabajo futuro) Según se ha visto a lo largo del trabajo, resulta obvio que el enjambre incrementará el efecto degradador, neutralizador y saturador sobre el sistema defensivo aéreo enemigo, potenciando de esta forma la confusión, el desconcierto, y el colapso, si cada plataforma remota del enjambre evoluciona de forma distinta respecto al resto de RPAs, siendo la velocidad de cada RPA distinta de la del resto. Obviamente un enorme número de objetos volando cada uno de ellos en direcciones diferentes dará una mayor carga de trabajo al sistema de defensa aérea enemigo, por lo cual resulta inviable que el sistema defensivo actué contra todas las amenazas a la vez. Esto ha propiciado, en este trabajo, la necesidad de definir una función de entropía del enjambre, ideada como el número de estados posibles, concebida como el número de RPAs con distintas velocidades volando simultáneamente en el teatro de operaciones, de forma que entropías altas conlleva elevados efectos neutralizantes, degradantes y saturantes en el sistema defensivo aéreo del enemigo. Una vez definida la entropía, para acometer el problema especificado anteriormente, de organizar al enjambre completo en escuadrones o subenjambres y aplicar la teoría de juegos seguidamente, se ha visto necesario, por una parte, conocer cómo evoluciona la entropía de un enjambre formado por varios subenjambres, cuando estos se acercan hasta interferir entre ellos. Esto conlleva que el algoritmo de evitación de colisiones, implementado para cada subenjambre, debe englobar en su procesado al otro subenjambre que se le acerca, de tal manera que los vehículos remotos pertenecientes al primer subenjambre eviten chocar con los del segundo subenjambre, y al contrario. Además, otra cuestión que se ha visto necesario analizar es cómo evoluciona la entropía de un subenjambre cuando se le dota de velocidad de desplazamiento como subenjambre completo, específicamente cuando se confiere de velocidad de movimiento al centroide del subenjambre. Partiendo del concepto de entropía del enjambre, ha resultado patente que el mayor efecto degradativo, saturador y neutralizante sobre el sistema de defensa aérea enemigo se consigue maximizando la entropía como función de los tres factores de decisión definidos previamente. En este trabajo, se ha visto cómo esta función es bastante ruidosa, discontinua, variable con el tiempo, y con bastantes óptimos locales, tras lo cual, en el presente trabajo ha sido necesario implementar y programar un 394 Capítulo 17. Conclusiones (y trabajo futuro) algoritmo memético evolutivo con búsqueda de estados, que es capaz de alcanzar paulatinamente sucesivos tríos de factores de decisión con entropías superiores, descartando aquellos tríos que presentan entropías más bajas, configurando un pseudorazonamiento de tal modo que a partir de un grupo de tríos se va consiguiendo un trio diferente de los primeros con entropía incrementada. Asimismo, teniendo en cuenta el elevado número de vehículos remotos involucrados y la baja capacidad de computación ya indicada, teniendo en cuenta que en la Air Combat Cloud se demanda celeridad en la toma de decisiones, en este trabajo se ha ideado una estrategia consistente en realizar una serie de simulaciones, previamente al despliegue del enjambre en zona de operaciones, y utilizar estas simulaciones como datos de aprendizaje en un algoritmo de aprendizaje automático, entrenándolo, implementando así un modelo de predicción que proporcione una respuesta para una nueva muestra, de tal manera que el enjambre tenga capacidad para tomar cierto tipo de decisiones por sí mismo. Para lo cual, se ha acudido al entorno de programación rproject desde dos puntos de vista. En primer lugar, utilizando máquinas de vectores soporte con el paquete e1071 [1] [13] (aplicación en r-project de la excelente librería libsvm [14]) con la función tune de localización de parámetros óptimos mediante técnicas de validación cruzada con búsqueda aleatoria. En segundo lugar se han usado redes neuronales artificiales con los paquetes neuralnet, nnet, RSNNS, brnn, caret y deepnet de r-project, comparando todos estos paquetes, así como entre máquinas de vectores soporte y redes neuronales artificiales, donde se ha llegado a la conclusión de que, en este trabajo que nos ocupa de inteligencia de enjambres, las máquinas de vectores soporte son superiores. Para concluir, en este trabajo se han diseñado e implementado una serie de algoritmos que abarcan desde la optimización evolutiva y búsqueda de estados, junto con tecnologías de aprendizaje automático, que partiendo de valores de entropías más bajas se van localizando valores de entropías más altos con el procedimiento aquí desarrollado, lo cual delimita un artefacto de inteligencia artificial capaz de tomar la mejor decisión entre varias posibilidades, lo que en última instancia permite concluir que este conjunto de algoritmos ha sido concebido como un sistema de inteligencia de enjambres. Además, esta inteligencia artificial se ha unido con técnicas de teoría de 395 Capítulo 17. Conclusiones (y trabajo futuro) juegos, tanto cooperativos para subenjambres como no-cooperativos para el enjambre completo. Como última aportación destacable este trabajo, es de resaltar la exploración, recopilación y presentación de una gran cantidad de información obtenida al analizar la conducta de un gran grupo de RPAs, con el propósito de desvelar nueva información, patrones y tendencias implícitas. De esta manera, a través de un estudio estadístico modal se ha localizado un movimiento que muestra un comportamiento repetitivo de ciertas magnitudes del enjambre, lo cual permite afirmar acerca de la manifestación de un patrón de oscilación del enjambre, de una manera parecida a una frecuencia de oscilación del enjambre asociada a una forma modal de vibración, con un bajo ascendiente del resto de parámetros del enjambre excepto del de la velocidad de crucero de los RPAs del propio enjambre. 17.1. Líneas futuras En el área de las colisiones, la línea de trabajo más activa actualmente es la tecnología Sense & Avoid, aún en desarrollo, que tiene el problema implícito de cómo adecuar este tipo de tecnologías en vehículos remotos de pequeño tamaño. De cualquier forma, cualquier tipo de tecnología que sea de aplicación a este problema requiere de sensores avanzados, comunicaciones y capacidad de procesamiento, que permita detectar de forma autónoma obstáculos, de modo que puedan ser evitados tanto en el aire como en tierra. Este tipo de tecnologías que detectan la presencia de obstáculos y proponen una maniobra elusiva requerirán de largos procesos de investigación, pudiendo ser algunas de ellas EO, LIDAR, radar, acústica, IR, DIC, etc. Será esencial que estos sistemas dispongan de capacidad de aprendizaje que les permita actuar con diferentes tecnologías, incluyendo el rango de la percepción mediante la fusión de visión tridimensional en movimiento o algún tipo de tecnología tipo LIDAR, identificación de tramas, e incluso el audio podría ser de utilidad. En cuanto al hardware de comunicaciones, se está estudiando emplear comunicación inalámbrica, Wi-Fi, telefonía móvil 5G, Bluetooth, GSM, ADS-B,… que permita intercambiar información sobre posición, velocidad y puntos de referencia futuros, en 396 Capítulo 17. Conclusiones (y trabajo futuro) gran volumen y con celeridad. Es necesario poder disminuir la probabilidad de colisión a 10-9 en escenarios colaborativos. En caso de ausencia de colaboración, es necesario recurrir a sensores o también a las propias señales de comunicación. Así, por ejemplo, si una estación terrestre emite una señal, un hardware especializado podría interpretar esta señal y transcribir parámetros de posicionamiento angular, lineal o incluso velocidad. Obviamente, estas mediciones se pueden fusionar apropiadamente con imágenes de cámaras instaladas a bordo de los RPAs, sonido procedente de varios micrófonos,... Se confía alcanzar probabilidades de colisión en escenarios no colaborativos de 10-6. Indudablemente sigue existiendo el problema que se ha anticipado a lo largo de este trabajo, la necesidad de establecer comunicaciones seguras de alta densidad y rápidas en zona de operaciones entre una enorme cantidad de elementos aéreos. Esto incrementará el requerimiento de capacidad de procesado computacional con el consiguiente inconveniente de lentitud en los cálculos. Esto se ha intentado paliar en este trabajo recurriendo a estrategias maestras de inteligencia artificial y teoría de juegos, empleando los microprocesadores de todos los agentes del enjambre (ultraswarm) que aúnan sus esfuerzos para realizar cálculos complejos dentro de una red cognitiva. O incluso contando con un centro de computación en tierra si se dispusieran de comunicaciones con el suficiente ancho de banda y seguridad. Sin embargo, otro tipo de artificios de diversa índole podrían ser ideados para tal fin. En este orden de ideas, las actuaciones llevadas a cabo en este trabajo deberían ser contrastadas con mayor cantidad de simulaciones e incluso pruebas del mundo real. En cualquier caso, para RPAs pequeños aún se requiere un posterior trabajo de investigación para que sistemas de elevada velocidad de cálculo puedan ser miniaturizados. Asimismo, la Air Combat Cloud requerirá incorporar una mayor cantidad de misiones operativas, como AWAC, ISTAR, EW o CAS, involucrando aeronaves remotamente tripuladas, aeronaves no remotamente tripuladas y enjambres de vehículos remotos. No obstante, también se podrían emplear estas tecnologías a misiones de otra índole, como control de fronteras, búsqueda y rescate de personas, control de áreas incendiadas, etc. 397 Capítulo 17. Conclusiones (y trabajo futuro) Otra cuestión aún por dilucidar es, en el caso de enjambres de RPAs de mayores dimensiones, su recuperación mediante aviones de transporte o bien en tierra en zona segura, de forma que puedan ser reutilizados un mayor número de ocasiones, cuestión que en estos momentos no resulta baladí. Resulta inevitable, teniendo en cuenta los esfuerzos dedicados por diferentes centros de investigación en todo el mundo, la aplicación de una mayor cantidad de algoritmos metaheurísticos orientados a los enjambres de RPAs, con el objetivo de encontrar solución a la determinación de algoritmos de caminos óptimos y búsqueda de rutas autónomas hacia el objetivo, donde el tiempo en zona deberá ser una variable tenida en cuenta para ser minimizada, de tal modo que se reduzcan las pérdidas incrementando la probabilidad de supervivencia. A lo largo de este trabajo se ha partido de la hipótesis de que el mayor efecto saturador, neutralizante y de degradación sobre un sistema defensivo enemigo se alcanzaría maximizando la función de entropía definida; sin embargo, este concepto debería ser contrastado con una mayor cantidad de simulaciones y pruebas en ejercicios auténticos con el fin de evaluar el grado real de confusión, decepción, desconcierto y colapso de esta metodología en el sistema de defensa aérea del adversario. Asimismo, deberían analizarse más configuraciones topológicas de RPAs en los enjambres así como distribución de velocidades iniciales al objeto de maximizar rápidamente la entropía del enjambre. 398 Capítulo 17. Conclusiones (y trabajo futuro) 399 Apéndice A. Códigos del programa ## APLICACION DE LOS ALGORITMOS MA (MEMETIC ALGORITHMS) Y RNA A LA INTELIGENCIA DE ENJAMBRES DE RPAS EN LA AIR COMBAT CLOUD ## DECLARACIONES INICIALES RPAS velocidadcru<-17 ## velocidad de crucero del enjambre (m/s) velocidadper<-6 ## velocidad de perdida del RPA del enjambre (m/s) tam<-1 ## tamano promedio del RPA (m) (si hubiera varios el valor mas grande) factmin<-5 ## factor mínimo que multiplica al tamano promedio para evitar el riesgo de colisiones (KAIST) factmax<-15 ## factor maximo que multiplica al tamano promedio para evitar el riesgo de colisiones (KAIST) heta<-18 ## angulo que puede girar el vector velocidad del RPA por segundo para evitar la colision (10º/segundo) heta<-heta*pi/180 ## se pasa heta a radianes deceleracion<-1.5 ## deceleracion del RPA para evitar la colision (m/s2) aceleracion<-5 ## aceleracion del RPA para recuperar la velocidad nominal despues de decelerar (m/s2) kfact<-1 ## factor k que afecta a factMmax y factMmin nRPAs<-8 ## numero de RPAs que componen el enjambre 400 Apéndice A. Códigos del programa dimension<-2 ## numero de dimensiones del problema distanciainicial<-factmax*tam ## distancia inicial que modela el enjambre en t=0 tiempo<-0 ## tiempo durante cada mision SEAD ISR (seg) pasotiempo<-0.2 ## paso de tiempo de cada mision SEAD ISR (seg) tiempoSEAD<-60 ## tiempo de cada mision SEAD ISR (seg) tiempoadimen<-1 ## tiempo adimensional factdecv<-10 ## factor de decision donde cada RPA cambia el vector velocidad para no colisionar cuando distancia<factdecv*tam factdeca<-7 ## factor de decision donde cada RPA decelera para no colisionar cuando distancia<factdeca*tam (factdecv>=factdeca) factMmmm<-15 ## distancia factMmmm*tam de cada RPA al centroide para que los RPAs no se alejen (factMmmm>=factdecv>=factdeca) factMmax<-25 ## valor maximo de factMmmm de cada RPA al centroide del enjambre factMmax<-kfact*factmax*nRPAs^(1/dimension)/2 factMmin<-factmin ## valor minimo de factMmmm de cada RPA al centroide del enjambre factMmin<-kfact*factmin*nRPAs^(1/dimension)/2 ## DECLARACIONES INICIALES ENTROPIA entropiatiempo<-0 ## entropia sumatoria en cada mision SEAD ISR velocidadminima<-numeric(length=dimension) ## vector velocidad minima del enjambre velocidadmaxima<-numeric(length=dimension) ## vector velocidad maxima del enjambre deltavelocidad<-numeric(length=dimension) ## deltavelocidad<-(velocidadmaximavelocidadminima)/nRPAs 401 Apéndice A. Códigos del programa contadormicroestados<-matrix(0,(nRPAs+1),2) ## matriz de microestados en cada intervalo para calcular la entropia indiceentropia<-matrix(0,nRPAs,2) ## matriz de entropia en cada intervalo ## INICIALIZACIONES velocidadminima[]<-1000000000000 ## inicializa a infinito velocidadmaxima[]<--1000000000000 ## inicializa a -infinito deltavelocidad[]<-0 ## inicializa a 0 contadormicroestados[]<-0 ## inicializa a 0 indiceentropia[]<-0 ## inicializa a 0 entropiatiempo<-0 ## inicializa a 0 ## DECLARACIONES INICIALES MA nagentes<-500 ## poblacion de agentes inicial niteraciones<-5000 ## numero de iteraciones del algoritmo MA nfact<-3 ## numero de parámetros a optimizar con MA factordil<-1.05 ## factor de dilatacion del algoritmo MA errormuta<-0.05 ## error de mutacion en el proceso evolutivo MA jiteracionesmem1<-0 ## memoriza el numero de iteraciones para calcular el criterio de parada 1 jiteracionesmem2<-0 ## memoriza el numero de iteraciones para calcular el criterio de parada 2 nlop<-250 ## parametro para calcular el criterio de parada 1 nkop1<-nfact ## parametro para calcular el criterio de parada 1 402 Apéndice A. Códigos del programa entropiaoptnk<-0 ## entropia del vector de factores de decision utilizado por el criterio de parada 1 errorop1<-0.5 ## Error a considerar en el criterio de parada 1 nkop2<-nfact ## parametro para calcular el criterio de parada 2 ## DECLARACIONES DE MATRICES Y VECTORES DEL ENJAMBRE DE RPAS matrizposicion<-matrix(0,nRPAs,2) ## matriz de posicion del enjambre de RPAs (xi,yi) matrizvelocidad<-matrix(0,nRPAs,2) ## matriz de velocidad del enjambre de RPAs (vxi,vyi) distanciaRPAmin<-numeric(length=nRPAs) ## vector de distancias minimas de cada RPA al RPA mas cercano indiceRPAdistanciamin<-numeric(length=nRPAs) ## vector que identifica para cada RPA el RPA mas cercano matrizRPAdistanciamin<-matrix(0,nRPAs,2) ## matriz de vectores que para cada RPA apunta al RPA mas cercano dimensionmatrizglobal<-trunc(tiempoSEAD/pasotiempo) ## dimension global de la matriz de posicion matrizposicionglobal<-matrix(0,dimensionmatrizglobal,(2*nRPAs)) ## matriz de matriz de posicion de todos los RPAs del enjambre matrizvelocidadglobal<-matrix(0,dimensionmatrizglobal,(2*nRPAs)) ## posicion de todos los RPAs del enjambre distanciaRPAcentroide<-numeric(length=nRPAs) ## vector de distancias de cada RPA al centroide del enjambre matrizdistanciaRPAcentro<-matrix(0,nRPAs,2) ## matriz de vectores que para cada RPA apunta al centroide 403 Apéndice A. Códigos del programa matrizposicioncentroide<-numeric(length=dimension) ## vector de posicion del centroide (piloto humano/control autonomo) matrizvelocidadcentroide<-numeric(length=dimension) ## centroide (piloto humano/control autonomo) ## INICIALIZACIONES matrizposicion[]<-0 ## inicializa a 0 matrizvelocidad[]<-0 ## inicializa a 0 distanciaRPAmin[]<-0 ## inicializa a 0 indiceRPAdistanciamin[]<-0 ## inicializa a 0 matrizRPAdistanciamin[]<-0 ## inicializa a 0 matrizposicionglobal[]<-0 ## inicializa a 0 matrizvelocidadglobal[]<-0 ## inicializa a 0 distanciaRPAcentroide[]<-0 ## inicializa a 0 matrizdistanciaRPAcentro[]<-0 ## inicializa a 0 matrizposicioncentroide[]<-0 ## inicializa a 0 matrizvelocidadcentroide[]<-0 ## inicializa a 0 ## INICIALIZACION DE LA POSICION INICIAL DEL ENJAMBRE matrizposicion[1,1]<--10.60660172 ## posicion x del RPA 1 matrizposicion[1,2]<--10.60660172 ## posicion y del RPA 1 404 vector velocidad del Apéndice A. Códigos del programa matrizposicion[2,1]<-0 ## posicion x del RPA 2 matrizposicion[2,2]<--15 ## posicion y del RPA 2 matrizposicion[3,1]<-10.60660172 ## posicion x del RPA 3 matrizposicion[3,2]<--10.60660172 ## posicion y del RPA 3 matrizposicion[4,1]<--15 ## posicion x del RPA 4 matrizposicion[4,2]<-0 ## posicion y del RPA 4 matrizposicion[5,1]<-15 ## posicion x del RPA 5 matrizposicion[5,2]<-0 ## posicion y del RPA 5 matrizposicion[6,1]<--10.60660172 ## posicion x del RPA 6 matrizposicion[6,2]<-10.60660172 ## posicion y del RPA 6 matrizposicion[7,1]<-0 ## posicion x del RPA 7 matrizposicion[7,2]<-15 ## posicion y del RPA 7 matrizposicion[8,1]<-10.60660172 ## posicion x del RPA 8 matrizposicion[8,2]<-10.60660172 ## posicion y del RPA 8 matrizposicioncentroide[1]<-0 ## posicion x del centroide matrizposicioncentroide[2]<-0 ## posicion y del centroide ## INICIALIZACION DE LA VELOCIDAD INICIAL DEL ENJAMBRE matrizvelocidad[1,1]<-0.923879533 ## velocidad x del RPA 1 matrizvelocidad[1,2]<-0.38268343 ## velocidad y del RPA 1 matrizvelocidad[2,1]<-0.382683432 ## velocidad x del RPA 2 matrizvelocidad[2,2]<-0.923879533 ## velocidad y del RPA 2 matrizvelocidad[3,1]<--0.382683432 ## velocidad x del RPA 3 matrizvelocidad[3,2]<-0.923879533 ## velocidad y del RPA 3 405 Apéndice A. Códigos del programa matrizvelocidad[4,1]<-0.923879533 ## velocidad x del RPA 4 matrizvelocidad[4,2]<--0.382683432 ## velocidad y del RPA 4 matrizvelocidad[5,1]<--0.923879533 ## velocidad x del RPA 5 matrizvelocidad[5,2]<-0.382683432 ## velocidad y del RPA 5 matrizvelocidad[6,1]<-0.382683432 ## velocidad x del RPA 6 matrizvelocidad[6,2]<--0.923879533 ## velocidad y del RPA 6 matrizvelocidad[7,1]<--0.382683432 ## velocidad x del RPA 7 matrizvelocidad[7,2]<--0.923879533 ## velocidad y del RPA 7 matrizvelocidad[8,1]<--0.923879533 ## velocidad x del RPA 8 matrizvelocidad[8,2]<--0.382683432 ## velocidad y del RPA 8 ## INICIALIZACION DE MAGNITUDES GLOBALES matrizposicionglobal[1,1]<-matrizposicion[1,1] ## posicion x del RPA 1 matrizposicionglobal[1,2]<-matrizposicion[1,2] ## posicion y del RPA 1 matrizposicionglobal[1,3]<-matrizposicion[2,1] ## posicion x del RPA 2 matrizposicionglobal[1,4]<-matrizposicion[2,2] ## posicion y del RPA 2 matrizposicionglobal[1,5]<-matrizposicion[3,1] ## posicion x del RPA 3 matrizposicionglobal[1,6]<-matrizposicion[3,2] ## posicion y del RPA 3 matrizposicionglobal[1,7]<-matrizposicion[4,1] ## posicion x del RPA 4 matrizposicionglobal[1,8]<-matrizposicion[4,2] ## posicion y del RPA 4 matrizposicionglobal[1,9]<-matrizposicion[5,1] ## posicion x del RPA 5 matrizposicionglobal[1,10]<-matrizposicion[5,2] ## posicion y del RPA 5 matrizposicionglobal[1,11]<-matrizposicion[6,1] ## posicion x del RPA 6 matrizposicionglobal[1,12]<-matrizposicion[6,2] ## posicion y del RPA 6 matrizposicionglobal[1,13]<-matrizposicion[7,1] ## posicion x del RPA 7 406 Apéndice A. Códigos del programa matrizposicionglobal[1,14]<-matrizposicion[7,2] ## posicion y del RPA 7 matrizposicionglobal[1,15]<-matrizposicion[8,1] ## posicion x del RPA 8 matrizposicionglobal[1,16]<-matrizposicion[8,2] ## posicion y del RPA 8 matrizvelocidadglobal[1,1]<-matrizvelocidad[1,1] ## velocidad x del RPA 1 matrizvelocidadglobal[1,2]<-matrizvelocidad[1,2] ## velocidad y del RPA 1 matrizvelocidadglobal[1,3]<-matrizvelocidad[2,1] ## velocidad x del RPA 2 matrizvelocidadglobal[1,4]<-matrizvelocidad[2,2] ## velocidad y del RPA 2 matrizvelocidadglobal[1,5]<-matrizvelocidad[3,1] ## velocidad x del RPA 3 matrizvelocidadglobal[1,6]<-matrizvelocidad[3,2] ## velocidad y del RPA 3 matrizvelocidadglobal[1,7]<-matrizvelocidad[4,1] ## velocidad x del RPA 4 matrizvelocidadglobal[1,8]<-matrizvelocidad[4,2] ## velocidad y del RPA 4 matrizvelocidadglobal[1,9]<-matrizvelocidad[5,1] ## velocidad x del RPA 5 matrizvelocidadglobal[1,10]<-matrizvelocidad[5,2] ## velocidad y del RPA 5 matrizvelocidadglobal[1,11]<-matrizvelocidad[6,1] ## velocidad x del RPA 6 matrizvelocidadglobal[1,12]<-matrizvelocidad[6,2] ## velocidad y del RPA 6 matrizvelocidadglobal[1,13]<-matrizvelocidad[7,1] ## velocidad x del RPA 7 matrizvelocidadglobal[1,14]<-matrizvelocidad[7,2] ## velocidad y del RPA 7 matrizvelocidadglobal[1,15]<-matrizvelocidad[8,1] ## velocidad x del RPA 8 matrizvelocidadglobal[1,16]<-matrizvelocidad[8,2] ## velocidad y del RPA 8 ## ASIGNACION VELOCIDAD NOMINAL AL ENJAMBRE for(jindice in 1:nRPAs) { 407 Apéndice A. Códigos del programa for(jdimension in 1:dimension) { matrizvelocidad[jindice,jdimension]<velocidadcru*matrizvelocidad[jindice,jdimension] } ## fin del for jdimension } ## fin del for jindice ## DECLARACIONES DE MATRICES Y VECTORES DEL ALGORITMO MA ## factores de decision (vectorfact[1]=factMmmm,vectorfact[2]=factdecv,vectorfact[3]=factdeca) matrizfact<-matrix(0,nagentes,nfact) ## posicion de la poblacion de agentes vectorentropia<-numeric(length=nagentes) ## vector de entropia de la poblacion de agentes vectorfactopt<-numeric(length=nfact) ## vector de factores de decision que almacena el valor optimo entropiaopt<-0 ## entropia correspondiente al vector de factores de decision que almacena el optimo vectorfactmem<-numeric(length=nfact) ## memoria de la posicion de la poblacion de agentes vectorfactmax<-numeric(length=nfact) ## vector de factores de decision maximos vectorfactmin<-numeric(length=nfact) ## vector de factores de decision minimos ## INICIALIZACIONES 408 Apéndice A. Códigos del programa matrizfact[]<-0 ## inicializa a 0 vectorentropia[]<-0 ## inicializa a 0 vectorfactopt[]<-0 ## inicializa a 0 entropiaopt[]<-0 ## inicializa a 0 vectorfactmem[]<-0 ## inicializa a 0 vectorfactmax[]<-0 ## inicializa a 0 vectorfactmin[]<-0 ## inicializa a 0 vectorfactmax[1]<-factMmax ## vector de factores de decision maximos vectorfactmax[2]<-factmax ## vector de factores de decision maximos vectorfactmax[3]<-factmax ## vector de factores de decision maximos vectorfactmin[1]<-factMmin ## vector de factores de decision minimos vectorfactmin[2]<-factmin ## vector de factores de decision minimos vectorfactmin[3]<-factmin ## vector de factores de decision minimos ## GENERACION DE LA POBLACION DE AGENTES (factMmmm>=factdecv>=factdeca) for(jagente in 1:nagentes) ## posicion de los agentes { ## genera tres numeros aleatorios matrizfact[jagente,1]<-runif(1,vectorfactmin[1],vectorfactmax[1]) matrizfact[jagente,2]<runif(1,vectorfactmin[2],min(vectorfactmax[2],matrizfact[jagente,1])) matrizfact[jagente,3]<runif(1,vectorfactmin[3],min(vectorfactmax[3],matrizfact[jagente,2])) 409 Apéndice A. Códigos del programa } ## fin del for jagente ## EJECUTA niteraciones for(jiteraciones in 1:niteraciones) { ## Ejecuta niteraciones tiempo<-0 tiempoadimen<-1 entropiatiempo<-0 ## inicializa a 0 en cada ciclo de integracion ## ALGORITMO MA (MEMETIC ALGORITHMS) ## selección del agente menos apto nagenteNA <- which.min(vectorentropia) ## agente menos apto es el que tiene la entropia mas pequeña ## recombinacion por torneo ## eleccion al azar de dos subgrupos de agentes pcorte <- round(runif(1,1,nagentes-1)) ## eleccion del primer progenitor nagenteprog1 <- which.max(vectorentropia[1:pcorte]) ## primer progenitor 410 Apéndice A. Códigos del programa ## eleccion del segundo progenitor nagenteprog2 <- pcorte+which.max(vectorentropia[(pcorte+1):nagentes]) ## segundo progenitor ## recombinación de informacion vectorfactmem[3]<runif(1,0,1)*matrizfact[nagenteprog1,3]+runif(1,0,1)*matrizfact[nagenteprog2,3] factordilatacion<-1 while (vectorfactmem[3]<vectorfactmin[3]) { factordilatacion<-factordilatacion*factordil vectorfactmem[3]<-vectorfactmem[3]*factordilatacion } ## fin del bucle while ((vectorfactmem[1] vectorfactmem[2]<runif(1,0,1)*matrizfact[nagenteprog1,2]+runif(1,0,1)*matrizfact[nagenteprog2,2] factordilatacion<-1 while (vectorfactmem[2]<vectorfactmem[3]) { factordilatacion<-factordilatacion*factordil vectorfactmem[2]<-vectorfactmem[2]*factordilatacion } ## fin del bucle while ((vectorfactmem[1] vectorfactmem[1]<runif(1,0,1)*matrizfact[nagenteprog1,1]+runif(1,0,1)*matrizfact[nagenteprog2,1] 411 Apéndice A. Códigos del programa factordilatacion<-1 while (vectorfactmem[1]<vectorfactmem[2]) { factordilatacion<-factordilatacion*factordil vectorfactmem[1]<-vectorfactmem[1]*factordilatacion } ## fin del bucle while ((vectorfactmem[1] if (vectorfactmem[1]>vectorfactmax[1]) { vectorfactmem[1]<-vectorfactmax[1] } ## fin del bucle while ((vectorfactmem[1] if (vectorfactmem[2]>vectorfactmem[1]) { vectorfactmem[2]<-vectorfactmem[1] } ## fin del bucle while ((vectorfactmem[1] if (vectorfactmem[3]>vectorfactmem[2]) { vectorfactmem[3]<-vectorfactmem[2] } ## fin del bucle while ((vectorfactmem[1] ## mutacion if (runif(1,0,1)<errormuta) ## se produce la mutacion si se cumple la condicion 412 Apéndice A. Códigos del programa { ncoordmut<-round(runif(1,1,nfact)) ## eleccion aleatoria de la coordenada que sufrira la mutación if (ncoordmut==1) { vectorfactmem[1]<-runif(1,vectorfactmem[2],vectorfactmax[1]) } ## fin del if (ncoordmut==1) if (ncoordmut==2) { vectorfactmem[2]<-runif(1,vectorfactmem[3],vectorfactmem[1]) } ## fin del if (ncoordmut==2) if (ncoordmut==3) { vectorfactmem[3]<-runif(1,vectorfactmin[3],vectorfactmem[2]) } ## fin del if (ncoordmut==2) } matrizfact[nagenteNA,]<-vectorfactmem factMmmm<-matrizfact[nagenteNA,1] factdecv<-matrizfact[nagenteNA,2] factdeca<-matrizfact[nagenteNA,3] 413 Apéndice A. Códigos del programa ## INTEGRACION DE LA POSICION DE LOS RPAS EN CADA MISION SEAD ISR tiempo<-tiempo+pasotiempo while (tiempo<=tiempoSEAD) { ## while ## INTEGRACION DE LA POSICION DE CADA RPA for(jindice in 1:nRPAs) { ## CALCULO DE LA DISTANCIA MINIMA DE CADA RPA AL RESTO DEL ENJAMBRE distanciaRPAmin[]<-1000000000000 ## inicializa a infinito for(jindice1 in 1:nRPAs) { distanciaRPAcentroide[jindice1]<sqrt((matrizposicion[jindice1,1]matrizposicioncentroide[1])^2+(matrizposicion[jindice1,2]matrizposicioncentroide[2])^2) for(jindice2 in 1:nRPAs) { if (jindice2!=jindice1) { distanciaRPAminima<sqrt((matrizposicion[jindice1,1]matrizposicion[jindice2,1])^2+(matrizposicion[jindice1,2]matrizposicion[jindice2,2])^2) 414 Apéndice A. Códigos del programa if (distanciaRPAminima<=distanciaRPAmin[jindice1]) { distanciaRPAmin[jindice1]<distanciaRPAminima indiceRPAdistanciamin[jindice1]<-jindice2 } ## fin del if (distanciaRPAminima } ## fin del if (jindice2!=jindice1) } ## fin del for jindice2 matrizRPAdistanciamin[jindice1,1]<(matrizposicion[indiceRPAdistanciamin[jindice1],1]matrizposicion[jindice1,1])/distanciaRPAmin[jindice1] matrizRPAdistanciamin[jindice1,2]<(matrizposicion[indiceRPAdistanciamin[jindice1],2]matrizposicion[jindice1,2])/distanciaRPAmin[jindice1] matrizdistanciaRPAcentro[jindice1,1]<(matrizposicioncentroide[1]matrizposicion[jindice1,1])/distanciaRPAcentroide[jindice1] matrizdistanciaRPAcentro[jindice1,2]<(matrizposicioncentroide[2]matrizposicion[jindice1,2])/distanciaRPAcentroide[jindice1] } ## fin del for jindice1 modulovectorvelocidad<sqrt(matrizvelocidad[jindice,1]^2+matrizvelocidad[jindice,2]^2) 415 Apéndice A. Códigos del programa ## angulo del vector velocidad angulovectorvelocidad<atan(matrizvelocidad[jindice,2]/matrizvelocidad[jindice,1]) if (matrizvelocidad[jindice,1]<=0) { angulovectorvelocidad<-angulovectorvelocidad+pi } ## fin del if (matrizvelocidad[jindice,1] ## EXISTE RIESGO DE COLISION if (distanciaRPAmin[jindice]<=factdecv*tam) { ## EL RPA GIRA EL VECTOR VELOCIDAD PARA EVITAR LA COLISION ## angulo del vector que apunta al RPA mas cercano angulovectorRPAdismin<atan(matrizRPAdistanciamin[jindice,2]/matrizRPAdistanciamin[jindice,1]) if (matrizRPAdistanciamin[jindice,1]<=0) { angulovectorRPAdismin<-angulovectorRPAdismin+pi } ## fin del if (matrizRPAdistanciamin[jindice,1] angulovectores<-(angulovectorvelocidadangulovectorRPAdismin) signoangulovectores<-abs(angulovectores)/angulovectores if (abs(angulovectores)<pi) 416 Apéndice A. Códigos del programa { angulovectorvelocidad<-angulovectorvelocidad +signoangulovectores*heta*pasotiempo } ## fin del if (abs(angulovectores)<pi) else ## angulovectores>=pi { angulovectorvelocidad<-angulovectorvelocidadsignoangulovectores*heta*pasotiempo } ## fin del else ## angulovectores>=pi ## EL RPA SE DECELERA PARA EVITAR LA COLISION if (distanciaRPAmin[jindice]<=factdeca*tam) { modulovectorvelocidad<-modulovectorvelocidaddeceleracion*pasotiempo } ## fin del if (distanciaRPAmin[jindice] factdeca if (modulovectorvelocidad<=velocidadper) { ## el RPA no se decelera por debajo de la velocidad de perdida modulovectorvelocidad<-velocidadper } ## fin del if (modulovectorvelocidad } ## fin del if (distanciaRPAmin[jindice] factdecv else ## NO HAY RIESGO DE COLISION { ## EL RPA ESTA MUY ALEJADO 417 Apéndice A. Códigos del programa if (distanciaRPAcentroide[jindice]>=factMmmm*tam) { ## EL RPA GIRA EL VECTOR VELOCIDAD PARA VOLVER AL ENJAMBRE ## angulo del vector que apunta al centroide angulovectorRPAcentro<atan(matrizdistanciaRPAcentro[jindice,2]/matrizdistanciaRPAcentro[jindice,1]) if (matrizdistanciaRPAcentro[jindice,1]<=0) { angulovectorRPAcentro<angulovectorRPAcentro+pi } ## fin del if (matrizdistanciaRPAcentro[jindice,1] angulovectores<-(angulovectorvelocidadangulovectorRPAcentro) signoangulovectores<abs(angulovectores)/angulovectores if (abs(angulovectores)<pi) { angulovectorvelocidad<-angulovectorvelocidadsignoangulovectores*heta*pasotiempo } ## fin del if (abs(angulovectores)<pi) else ## angulovectores>=pi { 418 Apéndice A. Códigos del programa angulovectorvelocidad<angulovectorvelocidad+signoangulovectores*heta*pasotiempo } ## fin del else ## angulovectores>=pi } ## fin del if (matrizdistanciaRPAcentro[jindice] ## EL RPA SE ACELERA if (modulovectorvelocidad<velocidadcru) { modulovectorvelocidad<modulovectorvelocidad+aceleracion*pasotiempo } ## fin del if (modulovectorvelocidad if (modulovectorvelocidad>=velocidadcru) { ## el RPA no se acelera por encima de la velocidad de crucero modulovectorvelocidad<-velocidadcru } ## fin del if (modulovectorvelocidad } ## fin del else ## NO HAY RIESGO DE COLISION matrizvelocidad[jindice,1]<modulovectorvelocidad*cos(angulovectorvelocidad) ## velocidad x matrizvelocidad[jindice,2]<-modulovectorvelocidad*sin(angulovectorvelocidad) ## velocidad y matrizposicion[jindice,1]<matrizposicion[jindice,1]+matrizvelocidad[jindice,1]*pasotiempo ## posicion x 419 Apéndice A. Códigos del programa matrizposicion[jindice,2]<matrizposicion[jindice,2]+matrizvelocidad[jindice,2]*pasotiempo ## posicion y } ## fin del for jindice ## CALCULO DE LA ENTROPIA DEL ENJAMBRE A velocidadminima[]<-1000000000000 ## inicializa a infinito velocidadmaxima[]<--1000000000000 ## inicializa a -infinito contadormicroestados[]<-0 ## inicializa a 0 indiceentropia[]<-0 ## inicializa a 0 for(jdimension in 1:dimension) { for(jindice in 1:nRPAs) { if (matrizvelocidad[jindice,jdimension]<=velocidadminima[jdimension]) { ## calculo de la velocidad minima velocidadminima[jdimension]<matrizvelocidad[jindice,jdimension] } ## fin del if (matrizvelocidad[jindice, if (matrizvelocidad[jindice,jdimension]>=velocidadmaxima[jdimension]) { ## calculo de la velocidad maxima velocidadmaxima[jdimension]<matrizvelocidad[jindice,jdimension] } ## fin del if (matrizvelocidad[jindice, 420 Apéndice A. Códigos del programa } ## fin del for jindice } ## fin del for jdimension for(jdimension in 1:dimension) { deltavelocidad[jdimension]<-(velocidadmaxima[jdimension]velocidadminima[jdimension])/nRPAs } ## fin del for jdimension for(jdimension in 1:dimension) { for(jindice1 in 1:nRPAs) { ## contador de matrizvelocidad for(jindice2 in 1:(nRPAs+1)) { if ((matrizvelocidad[jindice1,jdimension]>=(velocidadminima[jdimension]+(jindice21)*deltavelocidad[jdimension]))&&(matrizvelocidad[jindice1,jdimension]<(velocidadmi nima[jdimension]+jindice2*deltavelocidad[jdimension]))) { contadormicroestados[jindice2,jdimension]<contadormicroestados[jindice2,jdimension]+1 } ## fin del if (matrizvelocidad[jindice1, } ## fin del for jindice2 } ## fin del for jindice1 } ## fin del for jdimension 421 Apéndice A. Códigos del programa contadormicroestados[nRPAs,1]<contadormicroestados[nRPAs,1]+contadormicroestados[(nRPAs+1),1] contadormicroestados[nRPAs,2]<contadormicroestados[nRPAs,2]+contadormicroestados[(nRPAs+1),2] contadormicroestados[(nRPAs+1),]<-0 for(jdimension in 1:dimension) { for(jindice2 in 1:nRPAs) { if (contadormicroestados[jindice2,jdimension]>0) { indiceentropia[jindice2,jdimension]<-1 } ## fin del if (matrizvelocidad[jindice2 entropiatiempo<-entropiatiempo+indiceentropia[jindice2,jdimension] } ## fin del for jindice2 } ## fin del for jdimension ## MAGNITUDES GLOBALES tiempoadimen<-tiempoadimen+1 ## posicion global matrizposicionglobal[tiempoadimen,1]<-matrizposicion[1,1] ## posicion x del RPA 1 422 Apéndice A. Códigos del programa matrizposicionglobal[tiempoadimen,2]<-matrizposicion[1,2] ## posicion y del RPA 1 matrizposicionglobal[tiempoadimen,3]<-matrizposicion[2,1] ## posicion x del RPA 2 matrizposicionglobal[tiempoadimen,4]<-matrizposicion[2,2] ## posicion y del RPA 2 matrizposicionglobal[tiempoadimen,5]<-matrizposicion[3,1] ## posicion x del RPA 3 matrizposicionglobal[tiempoadimen,6]<-matrizposicion[3,2] ## posicion y del RPA 3 matrizposicionglobal[tiempoadimen,7]<-matrizposicion[4,1] ## posicion x del RPA 4 matrizposicionglobal[tiempoadimen,8]<-matrizposicion[4,2] ## posicion y del RPA 4 matrizposicionglobal[tiempoadimen,9]<-matrizposicion[5,1] ## posicion x del RPA 5 matrizposicionglobal[tiempoadimen,10]<-matrizposicion[5,2] ## posicion y del RPA 5 matrizposicionglobal[tiempoadimen,11]<-matrizposicion[6,1] ## posicion x del RPA 6 matrizposicionglobal[tiempoadimen,12]<-matrizposicion[6,2] ## posicion y del RPA 6 matrizposicionglobal[tiempoadimen,13]<-matrizposicion[7,1] ## posicion x del RPA 7 matrizposicionglobal[tiempoadimen,14]<-matrizposicion[7,2] ## posicion y del RPA 7 matrizposicionglobal[tiempoadimen,15]<-matrizposicion[8,1] ## posicion x del RPA 8 matrizposicionglobal[tiempoadimen,16]<-matrizposicion[8,2] ## posicion y del RPA 8 ## velocidad global matrizvelocidadglobal[tiempoadimen,1]<-matrizvelocidad[1,1] ## velocidad x del RPA 1 matrizvelocidadglobal[tiempoadimen,2]<-matrizvelocidad[1,2] ## velocidad y del RPA 1 matrizvelocidadglobal[tiempoadimen,3]<-matrizvelocidad[2,1] ## velocidad x del RPA 2 matrizvelocidadglobal[tiempoadimen,4]<-matrizvelocidad[2,2] ## velocidad y del RPA 2 423 Apéndice A. Códigos del programa matrizvelocidadglobal[tiempoadimen,5]<-matrizvelocidad[3,1] ## velocidad x del RPA 3 matrizvelocidadglobal[tiempoadimen,6]<-matrizvelocidad[3,2] ## velocidad y del RPA 3 matrizvelocidadglobal[tiempoadimen,7]<-matrizvelocidad[4,1] ## velocidad x del RPA 4 matrizvelocidadglobal[tiempoadimen,8]<-matrizvelocidad[4,2] ## velocidad y del RPA 4 matrizvelocidadglobal[tiempoadimen,9]<-matrizvelocidad[5,1] ## velocidad x del RPA 5 matrizvelocidadglobal[tiempoadimen,10]<-matrizvelocidad[5,2] ## velocidad y del RPA 5 matrizvelocidadglobal[tiempoadimen,11]<-matrizvelocidad[6,1] ## velocidad x del RPA 6 matrizvelocidadglobal[tiempoadimen,12]<-matrizvelocidad[6,2] ## velocidad y del RPA 6 matrizvelocidadglobal[tiempoadimen,13]<-matrizvelocidad[7,1] ## velocidad x del RPA 7 matrizvelocidadglobal[tiempoadimen,14]<-matrizvelocidad[7,2] ## velocidad y del RPA 7 matrizvelocidadglobal[tiempoadimen,15]<-matrizvelocidad[8,1] ## velocidad x del RPA 8 matrizvelocidadglobal[tiempoadimen,16]<-matrizvelocidad[8,2] ## velocidad y del RPA 8 tiempo<-tiempo+pasotiempo } ## fin del while (tiempo<=tiempoSEAD) 424 Apéndice A. Códigos del programa vectorentropia[nagenteNA]<-entropiatiempo if (vectorentropia[nagenteNA]>entropiaopt) { vectorfactopt<-matrizfact[nagenteNA,] entropiaopt<-vectorentropia[nagenteNA] } ## fin del if (vectorentropia[nagenteNA] } ## Fin del bucle for jiteraciones ## CREACIÓN DE ENTROPÍA EN LA INTERFERENCIA ENTRE ENJAMBRES DE RPAS EN LA AIR COMBAT CLOUD ## DECLARACIONES INICIALES velocidadcru<-4 ## velocidad de crucero del enjambre (m/s) velocidadper<-1 ## velocidad de perdida del RPA del enjambre (m/s) tam<-1 ## tamano promedio del RPA (m) (si hubiera varios el valor mas grande) factmin<-5 ## factor mínimo que multiplica al tamano promedio para evitar el riesgo de colisiones (KAIST) factmax<-15 ## factor maximo que multiplica al tamano promedio para evitar el riesgo de colisiones (KAIST) heta<-15 ## angulo que puede girar el vector velocidad del RPA por segundo para evitar la colision (10º/segundo) 425 Apéndice A. Códigos del programa heta<-heta*pi/180 ## se pasa heta a radianes deceleracion<-1.5 ## deceleracion del RPA para evitar la colision (m/s2) aceleracion<-5 ## aceleracion del RPA para recuperar la velocidad nominal despues de decelerar (m/s2) kfact<-1 ## factor k que afecta a factMmax y factMmin nRPAs<-16 ## numero de RPAs que componen el enjambre dimension<-2 ## numero de dimensiones del problema distanciainicial<-factmax*tam ## distancia inicial que modela el enjambre en t=0 tiempo<-0 ## tiempo durante cada mision SEAD ISR (seg) pasotiempo<-0.2 ## paso de tiempo de cada mision SEAD ISR (seg) tiempoSEAD<-60 ## tiempo de cada mision SEAD ISR (seg) tiempoadimen<-1 ## tiempo adimensional factdecv<-10 ## factor de decision donde cada RPA cambia el vector velocidad para no colisionar cuando distancia<factdecv*tam factdeca<-7 ## factor de decision donde cada RPA decelera para no colisionar cuando distancia<factdeca*tam (factdecv>=factdeca) factMmmm<-15 ## distancia factMmmm*tam de cada RPA al centroide para que los RPAs no se alejen (factMmmm>=factdecv>=factdeca) factMmax<-30 ## valor maximo de factMmmm de cada RPA al centroide del enjambre factMmin<-5 ## valor minimo de factMmmm de cada RPA al centroide del enjambre ## DECLARACIONES INICIALES ENTROPÍA entropiatiempo1min<-1000000000000 ## entropia minima durante cada mision SEAD ISR (infinito) 426 Apéndice A. Códigos del programa entropiafact<-1000000000000 ## entropia optima para los factores de decision (infinito) velocidadminima1<-numeric(length=dimension) ## vector velocidad minima del enjambre velocidadmaxima1<-numeric(length=dimension) ## vector velocidad maxima del enjambre deltavelocidad1<-numeric(length=dimension) ## deltavelocidad1<- (velocidadmaxima1-velocidadminima1)/nRPAs contadormicroestados1<-matrix(0,(nRPAs+1),2) ## matriz de microestados en cada intervalo para calcular la entropia indiceentropia1<-matrix(0,nRPAs,2) ## matriz de entropia en cada intervalo entropiatiempo1<-0 ## calculo de la entropia B entropiamodulovectorvelocidad1<-0 ## calculo de la entropia B velocidadminima2<-numeric(length=dimension) ## vector velocidad minima del enjambre velocidadmaxima2<-numeric(length=dimension) ## vector velocidad maxima del enjambre deltavelocidad2<-numeric(length=dimension) ## deltavelocidad1<- (velocidadmaxima1-velocidadminima1)/nRPAs contadormicroestados2<-matrix(0,(nRPAs+1),2) ## matriz de microestados en cada intervalo para calcular la entropia indiceentropia2<-matrix(0,nRPAs,2) ## matriz de entropia en cada intervalo entropiatiempo2<-0 ## calculo de la entropia B entropiamodulovectorvelocidad2<-0 ## calculo de la entropia B 427 Apéndice A. Códigos del programa ## INICIALIZACIONES velocidadminima1[]<-1000000000000 ## inicializa a infinito velocidadmaxima1[]<--1000000000000 ## inicializa a -infinito deltavelocidad1[]<-0 ## inicializa a 0 contadormicroestados1[]<-0 ## inicializa a 0 indiceentropia1[]<-0 ## inicializa a 0 velocidadminima2[]<-1000000000000 ## inicializa a infinito velocidadmaxima2[]<--1000000000000 ## inicializa a -infinito deltavelocidad2[]<-0 ## inicializa a 0 contadormicroestados2[]<-0 ## inicializa a 0 indiceentropia2[]<-0 ## inicializa a 0 niteraciones<-10000 ## numero de iteraciones del algoritmo nfact<-3 ## numero de parámetros a optimizar errormuta<-0.05 ## error de mutacion jiteracionesmem1<-0 ## memoriza el numero de iteraciones para calcular el criterio de parada 1 jiteracionesmem2<-0 ## memoriza el numero de iteraciones para calcular el criterio de parada 2 nlop<-250 ## parametro para calcular el criterio de parada 1 nkop1<-nfact ## parametro para calcular el criterio de parada 1 entropiatiempo1minnk<-entropiatiempo1min ## valor de la funcion de optimizacion utilizado por el criterio de parada 1 errorop1<-0.5 ## Error a considerar en el criterio de parada 1 nkop2<-nfact ## parametro para calcular el criterio de parada 2 428 Apéndice A. Códigos del programa ## DECLARACIONES DE MATRICES Y VECTORES DEL ENJAMBRE DE RPAS matrizposicion<-matrix(0,nRPAs,2) ## matriz de posicion del enjambre de RPAs (xi,yi) matrizvelocidad<-matrix(0,nRPAs,2) ## matriz de velocidad del enjambre de RPAs (vxi,vyi) distanciaRPAmin<-numeric(length=nRPAs) ## vector de distancias minimas de cada RPA al RPA mas cercano indiceRPAdistanciamin<-numeric(length=nRPAs) ## vector que identifica para cada RPA el RPA mas cercano matrizRPAdistanciamin<-matrix(0,nRPAs,2) ## matriz de vectores que para cada RPA apunta al RPA mas cercano dimensionmatrizglobal<-trunc(tiempoSEAD/pasotiempo) ## dimension global de la matriz de posicion matrizposicionglobal<-matrix(0,dimensionmatrizglobal,(2*nRPAs)) ## matriz de matriz de posicion de todos los RPAs del enjambre matrizvelocidadglobal<-matrix(0,dimensionmatrizglobal,(2*nRPAs)) ## posicion de todos los RPAs del enjambre matrizentropiaglobal<-matrix(0,dimensionmatrizglobal,2) ## matriz de entropia de todos los RPAs del enjambre distanciaRPAcentroide<-numeric(length=nRPAs) ## vector de distancias de cada RPA al centroide del enjambre matrizdistanciaRPAcentro<-matrix(0,nRPAs,2) ## matriz de vectores que para cada RPA apunta al centroide 429 Apéndice A. Códigos del programa matrizposicioncentroide<-numeric(length=(dimension*2)) ## vector de posicion del centroide (piloto humano/control autonomo) matrizvelocidadcentroide<-numeric(length=dimension) ## vector de velocidad del centroide (piloto humano/control autonomo) ## INICIALIZACIONES matrizposicion[]<-0 ## inicializa a 0 matrizvelocidad[]<-0 ## inicializa a 0 distanciaRPAmin[]<-0 ## inicializa a 0 indiceRPAdistanciamin[]<-0 ## inicializa a 0 matrizRPAdistanciamin[]<-0 ## inicializa a 0 matrizposicionglobal[]<-0 ## inicializa a 0 matrizvelocidadglobal[]<-0 ## inicializa a 0 matrizentropiaglobal[]<-0 ## inicializa a 0 distanciaRPAcentroide[]<-0 ## inicializa a 0 matrizdistanciaRPAcentro[]<-0 ## inicializa a 0 matrizposicioncentroide[]<-0 ## inicializa a 0 matrizvelocidadcentroide[]<-0 ## inicializa a 0 factdecv<-10 factdeca<-7 factMmax<-kfact*factmax*nRPAs^(1/dimension)/2 430 Apéndice A. Códigos del programa factMmin<-kfact*factmin*nRPAs^(1/dimension)/2 ## INICIALIZACION DE LA POSICION INICIAL DEL ENJAMBRE matrizposicion[1,1]<--10.60660172 ## posicion x del RPA 1 matrizposicion[1,2]<--10.60660172 ## posicion y del RPA 1 matrizposicion[2,1]<-0 ## posicion x del RPA 2 matrizposicion[2,2]<--15 ## posicion y del RPA 2 matrizposicion[3,1]<-10.60660172 ## posicion x del RPA 3 matrizposicion[3,2]<--10.60660172 ## posicion y del RPA 3 matrizposicion[4,1]<--15 ## posicion x del RPA 4 matrizposicion[4,2]<-0 ## posicion y del RPA 4 matrizposicion[5,1]<-15 ## posicion x del RPA 5 matrizposicion[5,2]<-0 ## posicion y del RPA 5 matrizposicion[6,1]<--10.60660172 ## posicion x del RPA 6 matrizposicion[6,2]<-10.60660172 ## posicion y del RPA 6 matrizposicion[7,1]<-0 ## posicion x del RPA 7 matrizposicion[7,2]<-15 ## posicion y del RPA 7 matrizposicion[8,1]<-10.60660172 ## posicion x del RPA 8 matrizposicion[8,2]<-10.60660172 ## posicion y del RPA 8 matrizposicioncentroide[1]<-0 ## posicion x del centroide enjambre 1 matrizposicioncentroide[2]<-0 ## posicion y del centroide enjambre 1 matrizposicioncentroide[3]<-0 ## posicion x del centroide enjambre 2 matrizposicioncentroide[4]<-50 ## posicion y del centroide enjambre 2 431 Apéndice A. Códigos del programa matrizposicion[9,1]<-matrizposicion[1,1] ## posicion x del RPA 9 matrizposicion[9,2]<-matrizposicion[1,2]+matrizposicioncentroide[4] ## posicion y del RPA 9 matrizposicion[10,1]<-matrizposicion[2,1] ## posicion x del RPA 10 matrizposicion[10,2]<-matrizposicion[2,2]+matrizposicioncentroide[4] ## posicion y del RPA 10 matrizposicion[11,1]<-matrizposicion[3,1] ## posicion x del RPA 11 matrizposicion[11,2]<-matrizposicion[3,2]+matrizposicioncentroide[4] ## posicion y del RPA 11 matrizposicion[12,1]<-matrizposicion[4,1] ## posicion x del RPA 12 matrizposicion[12,2]<-matrizposicion[4,2]+matrizposicioncentroide[4] ## posicion y del RPA 12 matrizposicion[13,1]<-matrizposicion[5,1] ## posicion x del RPA 13 matrizposicion[13,2]<-matrizposicion[5,2]+matrizposicioncentroide[4] ## posicion y del RPA 13 matrizposicion[14,1]<-matrizposicion[6,1] ## posicion x del RPA 14 matrizposicion[14,2]<-matrizposicion[6,2]+matrizposicioncentroide[4] ## posicion y del RPA 14 matrizposicion[15,1]<-matrizposicion[7,1] ## posicion x del RPA 15 matrizposicion[15,2]<-matrizposicion[7,2]+matrizposicioncentroide[4] ## posicion y del RPA 15 matrizposicion[16,1]<-matrizposicion[8,1] ## posicion x del RPA 16 matrizposicion[16,2]<-matrizposicion[8,2]+matrizposicioncentroide[4] ## posicion y del RPA 16 ## INICIALIZACION DE LA VELOCIDAD INICIAL DEL ENJAMBRE matrizvelocidad[1,1]<-0.923879533 ## velocidad x del RPA 1 432 Apéndice A. Códigos del programa matrizvelocidad[1,2]<-0.38268343 ## velocidad y del RPA 1 matrizvelocidad[2,1]<-0.382683432 ## velocidad x del RPA 2 matrizvelocidad[2,2]<-0.923879533 ## velocidad y del RPA 2 matrizvelocidad[3,1]<--0.382683432 ## velocidad x del RPA 3 matrizvelocidad[3,2]<-0.923879533 ## velocidad y del RPA 3 matrizvelocidad[4,1]<-0.923879533 ## velocidad x del RPA 4 matrizvelocidad[4,2]<--0.382683432 ## velocidad y del RPA 4 matrizvelocidad[5,1]<--0.923879533 ## velocidad x del RPA 5 matrizvelocidad[5,2]<-0.382683432 ## velocidad y del RPA 5 matrizvelocidad[6,1]<-0.382683432 ## velocidad x del RPA 6 matrizvelocidad[6,2]<--0.923879533 ## velocidad y del RPA 6 matrizvelocidad[7,1]<--0.382683432 ## velocidad x del RPA 7 matrizvelocidad[7,2]<--0.923879533 ## velocidad y del RPA 7 matrizvelocidad[8,1]<--0.923879533 ## velocidad x del RPA 8 matrizvelocidad[8,2]<--0.382683432 ## velocidad y del RPA 8 matrizvelocidad[9,1]<-0.923879533 ## velocidad x del RPA 9 matrizvelocidad[9,2]<-0.38268343 ## velocidad y del RPA 9 matrizvelocidad[10,1]<-0.382683432 ## velocidad x del RPA 10 matrizvelocidad[10,2]<-0.923879533 ## velocidad y del RPA 10 matrizvelocidad[11,1]<--0.382683432 ## velocidad x del RPA 11 matrizvelocidad[11,2]<-0.923879533 ## velocidad y del RPA 11 matrizvelocidad[12,1]<-0.923879533 ## velocidad x del RPA 12 matrizvelocidad[12,2]<--0.382683432 ## velocidad y del RPA 12 matrizvelocidad[13,1]<--0.923879533 ## velocidad x del RPA 13 433 Apéndice A. Códigos del programa matrizvelocidad[13,2]<-0.382683432 ## velocidad y del RPA 13 matrizvelocidad[14,1]<-0.382683432 ## velocidad x del RPA 14 matrizvelocidad[14,2]<--0.923879533 ## velocidad y del RPA 14 matrizvelocidad[15,1]<--0.382683432 ## velocidad x del RPA 15 matrizvelocidad[15,2]<--0.923879533 ## velocidad y del RPA 15 matrizvelocidad[16,1]<--0.923879533 ## velocidad x del RPA 16 matrizvelocidad[16,2]<--0.382683432 ## velocidad y del RPA 16 ## INICIALIZACION DE MAGNITUDES GLOBALES matrizposicionglobal[1,1]<-matrizposicion[1,1] ## posicion x del RPA 1 matrizposicionglobal[1,2]<-matrizposicion[1,2] ## posicion y del RPA 1 matrizposicionglobal[1,3]<-matrizposicion[2,1] ## posicion x del RPA 2 matrizposicionglobal[1,4]<-matrizposicion[2,2] ## posicion y del RPA 2 matrizposicionglobal[1,5]<-matrizposicion[3,1] ## posicion x del RPA 3 matrizposicionglobal[1,6]<-matrizposicion[3,2] ## posicion y del RPA 3 matrizposicionglobal[1,7]<-matrizposicion[4,1] ## posicion x del RPA 4 matrizposicionglobal[1,8]<-matrizposicion[4,2] ## posicion y del RPA 4 matrizposicionglobal[1,9]<-matrizposicion[5,1] ## posicion x del RPA 5 matrizposicionglobal[1,10]<-matrizposicion[5,2] ## posicion y del RPA 5 matrizposicionglobal[1,11]<-matrizposicion[6,1] ## posicion x del RPA 6 matrizposicionglobal[1,12]<-matrizposicion[6,2] ## posicion y del RPA 6 matrizposicionglobal[1,13]<-matrizposicion[7,1] ## posicion x del RPA 7 matrizposicionglobal[1,14]<-matrizposicion[7,2] ## posicion y del RPA 7 matrizposicionglobal[1,15]<-matrizposicion[8,1] ## posicion x del RPA 8 matrizposicionglobal[1,16]<-matrizposicion[8,2] ## posicion y del RPA 8 434 Apéndice A. Códigos del programa matrizposicionglobal[1,17]<-matrizposicion[9,1] ## posicion x del RPA 9 matrizposicionglobal[1,18]<-matrizposicion[9,2] ## posicion y del RPA 9 matrizposicionglobal[1,19]<-matrizposicion[10,1] ## posicion x del RPA 10 matrizposicionglobal[1,20]<-matrizposicion[10,2] ## posicion y del RPA 10 matrizposicionglobal[1,21]<-matrizposicion[11,1] ## posicion x del RPA 11 matrizposicionglobal[1,22]<-matrizposicion[11,2] ## posicion y del RPA 11 matrizposicionglobal[1,23]<-matrizposicion[12,1] ## posicion x del RPA 12 matrizposicionglobal[1,24]<-matrizposicion[12,2] ## posicion y del RPA 12 matrizposicionglobal[1,25]<-matrizposicion[13,1] ## posicion x del RPA 13 matrizposicionglobal[1,26]<-matrizposicion[13,2] ## posicion y del RPA 13 matrizposicionglobal[1,27]<-matrizposicion[14,1] ## posicion x del RPA 14 matrizposicionglobal[1,28]<-matrizposicion[14,2] ## posicion y del RPA 14 matrizposicionglobal[1,29]<-matrizposicion[15,1] ## posicion x del RPA 15 matrizposicionglobal[1,30]<-matrizposicion[15,2] ## posicion y del RPA 15 matrizposicionglobal[1,31]<-matrizposicion[16,1] ## posicion x del RPA 16 matrizposicionglobal[1,32]<-matrizposicion[16,2] ## posicion y del RPA 16 matrizvelocidadglobal[1,1]<-matrizvelocidad[1,1] ## velocidad x del RPA 1 matrizvelocidadglobal[1,2]<-matrizvelocidad[1,2] ## velocidad y del RPA 1 matrizvelocidadglobal[1,3]<-matrizvelocidad[2,1] ## velocidad x del RPA 2 matrizvelocidadglobal[1,4]<-matrizvelocidad[2,2] ## velocidad y del RPA 2 matrizvelocidadglobal[1,5]<-matrizvelocidad[3,1] ## velocidad x del RPA 3 matrizvelocidadglobal[1,6]<-matrizvelocidad[3,2] ## velocidad y del RPA 3 matrizvelocidadglobal[1,7]<-matrizvelocidad[4,1] ## velocidad x del RPA 4 matrizvelocidadglobal[1,8]<-matrizvelocidad[4,2] ## velocidad y del RPA 4 435 Apéndice A. Códigos del programa matrizvelocidadglobal[1,9]<-matrizvelocidad[5,1] ## velocidad x del RPA 5 matrizvelocidadglobal[1,10]<-matrizvelocidad[5,2] ## velocidad y del RPA 5 matrizvelocidadglobal[1,11]<-matrizvelocidad[6,1] ## velocidad x del RPA 6 matrizvelocidadglobal[1,12]<-matrizvelocidad[6,2] ## velocidad y del RPA 6 matrizvelocidadglobal[1,13]<-matrizvelocidad[7,1] ## velocidad x del RPA 7 matrizvelocidadglobal[1,14]<-matrizvelocidad[7,2] ## velocidad y del RPA 7 matrizvelocidadglobal[1,15]<-matrizvelocidad[8,1] ## velocidad x del RPA 8 matrizvelocidadglobal[1,16]<-matrizvelocidad[8,2] ## velocidad y del RPA 8 matrizvelocidadglobal[1,17]<-matrizvelocidad[9,1] ## velocidad x del RPA 9 matrizvelocidadglobal[1,18]<-matrizvelocidad[9,2] ## velocidad y del RPA 9 matrizvelocidadglobal[1,19]<-matrizvelocidad[10,1] ## velocidad x del RPA 10 matrizvelocidadglobal[1,20]<-matrizvelocidad[10,2] ## velocidad y del RPA 10 matrizvelocidadglobal[1,21]<-matrizvelocidad[11,1] ## velocidad x del RPA 11 matrizvelocidadglobal[1,22]<-matrizvelocidad[11,2] ## velocidad y del RPA 11 matrizvelocidadglobal[1,23]<-matrizvelocidad[12,1] ## velocidad x del RPA 12 matrizvelocidadglobal[1,24]<-matrizvelocidad[12,2] ## velocidad y del RPA 12 matrizvelocidadglobal[1,25]<-matrizvelocidad[13,1] ## velocidad x del RPA 13 matrizvelocidadglobal[1,26]<-matrizvelocidad[13,2] ## velocidad y del RPA 13 matrizvelocidadglobal[1,27]<-matrizvelocidad[14,1] ## velocidad x del RPA 14 matrizvelocidadglobal[1,28]<-matrizvelocidad[14,2] ## velocidad y del RPA 14 matrizvelocidadglobal[1,29]<-matrizvelocidad[15,1] ## velocidad x del RPA 15 matrizvelocidadglobal[1,30]<-matrizvelocidad[15,2] ## velocidad y del RPA 15 matrizvelocidadglobal[1,31]<-matrizvelocidad[16,1] ## velocidad x del RPA 16 matrizvelocidadglobal[1,32]<-matrizvelocidad[16,2] ## velocidad x del RPA 16 436 Apéndice A. Códigos del programa ## ASIGNACION VELOCIDAD NOMINAL AL ENJAMBRE for(jindice in 1:nRPAs) { for(jdimension in 1:dimension) { matrizvelocidad[jindice,jdimension]<velocidadcru*matrizvelocidad[jindice,jdimension] } ## fin del for jdimension } ## fin del for jindice ## DECLARACIONES DE MATRICES Y VECTORES DEL ALGORITMO MA ## vector de factores de decision (vectorfac[1]=factdecv,vectorfact[2]=factdeca,vectorfact[3]=factMmmm) vectorfact<-numeric(length=nfact) vectorfactmax<-numeric(length=nfact) ## vector de factores de decision maximos vectorfactmin<-numeric(length=nfact) ## vector de factores de decision minimos vectorfactopt<-numeric(length=nfact) ## vector de factores de decision que almacena el valor optimo ## GENERACION DE POBLACION INICIAL vectorfactmax[1]<-factmax ## vector de factores de decision maximos vectorfactmax[2]<-factmax ## vector de factores de decision maximos vectorfactmax[3]<-factMmax ## vector de factores de decision maximos vectorfactmin[1]<-factmin ## vector de factores de decision minimos vectorfactmin[2]<-factmin ## vector de factores de decision minimos 437 Apéndice A. Códigos del programa vectorfactmin[3]<-factMmin ## vector de factores de decision minimos ## ## INTEGRACION DE LA POSICION DE LOS RPAS EN CADA MIsion SEAD ISR tiempo<-tiempo+pasotiempo while (tiempo<=tiempoSEAD) { ## while entropiamodulovectorvelocidad1<-0 ## inicializa a cero ## INTEGRACION DE LA POSICION DE CADA RPA for(jindice in 1:nRPAs) { ## CALCULO DE LA DISTANCIA MINIMA DE CADA RPA AL RESTO DEL ENJAMBRE distanciaRPAmin[]<-1000000000000 ## inicializa a infinito for(jindice1 in 1:(nRPAs/2)) { distanciaRPAcentroide[jindice1]<sqrt((matrizposicion[jindice1,1]matrizposicioncentroide[1])^2+(matrizposicion[jindice1,2]matrizposicioncentroide[2])^2) } ## fin del for jindice1 438 Apéndice A. Códigos del programa for(jindice1 in (nRPAs/2+1):nRPAs) { distanciaRPAcentroide[jindice1]<sqrt((matrizposicion[jindice1,1]matrizposicioncentroide[3])^2+(matrizposicion[jindice1,2]matrizposicioncentroide[4])^2) } ## fin del for jindice1 for(jindice1 in 1:nRPAs) { for(jindice2 in 1:nRPAs) { if (jindice2!=jindice1) { distanciaRPAminima<sqrt((matrizposicion[jindice1,1]matrizposicion[jindice2,1])^2+(matrizposicion[jindice1,2]matrizposicion[jindice2,2])^2) if (distanciaRPAminima<=distanciaRPAmin[jindice1]) { distanciaRPAmin[jindice1]<distanciaRPAminima indiceRPAdistanciamin[jindice1]<-jindice2 } ## fin del if (distanciaRPAminima } ## fin del if (jindice2!=jindice1) } ## fin del for jindice2 439 Apéndice A. Códigos del programa matrizRPAdistanciamin[jindice1,1]<(matrizposicion[indiceRPAdistanciamin[jindice1],1]matrizposicion[jindice1,1])/distanciaRPAmin[jindice1] matrizRPAdistanciamin[jindice1,2]<(matrizposicion[indiceRPAdistanciamin[jindice1],2]matrizposicion[jindice1,2])/distanciaRPAmin[jindice1] } ## fin del for jindice1 for(jindice1 in 1:(nRPAs/2)) { matrizdistanciaRPAcentro[jindice1,1]<(matrizposicioncentroide[1]matrizposicion[jindice1,1])/distanciaRPAcentroide[jindice1] matrizdistanciaRPAcentro[jindice1,2]<(matrizposicioncentroide[2]matrizposicion[jindice1,2])/distanciaRPAcentroide[jindice1] } ## fin del for jindice1 for(jindice1 in (nRPAs/2+1):nRPAs) { matrizdistanciaRPAcentro[jindice1,1]<(matrizposicioncentroide[3]matrizposicion[jindice1,1])/distanciaRPAcentroide[jindice1] matrizdistanciaRPAcentro[jindice1,2]<(matrizposicioncentroide[4]matrizposicion[jindice1,2])/distanciaRPAcentroide[jindice1] } ## fin del for jindice1 440 Apéndice A. Códigos del programa modulovectorvelocidad<sqrt(matrizvelocidad[jindice,1]^2+matrizvelocidad[jindice,2]^2) ## angulo del vector velocidad angulovectorvelocidad<atan(matrizvelocidad[jindice,2]/matrizvelocidad[jindice,1]) if (matrizvelocidad[jindice,1]<=0) { angulovectorvelocidad<-angulovectorvelocidad+pi } ## fin del if (matrizvelocidad[jindice,1] ## EXISTE RIESGO DE COLISION if (distanciaRPAmin[jindice]<=factdecv*tam) { ## EL RPA GIRA EL VECTOR VELOCIDAD PARA EVITAR LA COLISION ## angulo del vector que apunta al RPA mas cercano angulovectorRPAdismin<atan(matrizRPAdistanciamin[jindice,2]/matrizRPAdistanciamin[jindice,1]) if (matrizRPAdistanciamin[jindice,1]<=0) { angulovectorRPAdismin<-angulovectorRPAdismin+pi } ## fin del if (matrizRPAdistanciamin[jindice,1] angulovectores<-(angulovectorvelocidadangulovectorRPAdismin) 441 Apéndice A. Códigos del programa signoangulovectores<-abs(angulovectores)/angulovectores if (abs(angulovectores)<pi) { angulovectorvelocidad<-angulovectorvelocidad +signoangulovectores*heta*pasotiempo } ## fin del if (abs(angulovectores)<pi) else ## angulovectores>=pi { angulovectorvelocidad<-angulovectorvelocidadsignoangulovectores*heta*pasotiempo } ## fin del else ## angulovectores>=pi ## EL RPA SE DECELERA PARA EVITAR LA COLISION if (distanciaRPAmin[jindice]<=factdeca*tam) { modulovectorvelocidad<-modulovectorvelocidaddeceleracion*pasotiempo } ## fin del if (distanciaRPAmin[jindice] factdeca if (modulovectorvelocidad<=velocidadper) { ## el RPA no se decelera por debajo de la velocidad de perdida modulovectorvelocidad<-velocidadper } ## fin del if (modulovectorvelocidad } ## fin del if (distanciaRPAmin[jindice] factdecv 442 Apéndice A. Códigos del programa else ## NO HAY RIESGO DE COLISION { ## EL RPA ESTA MUY ALEJADO if (distanciaRPAcentroide[jindice] >= factMmmm*tam) { ## EL RPA GIRA EL VECTOR VELOCIDAD PARA VOLVER AL ENJAMBRE ## angulo del vector que apunta al centroide angulovectorRPAcentro<atan(matrizdistanciaRPAcentro[jindice,2]/matrizdistanciaRPAcentro[jindice,1]) if (matrizdistanciaRPAcentro[jindice,1]<=0) { angulovectorRPAcentro<angulovectorRPAcentro+pi } ## fin del if (matrizdistanciaRPAcentro[jindice,1] angulovectores<-(angulovectorvelocidadangulovectorRPAcentro) signoangulovectores<abs(angulovectores)/angulovectores if (abs(angulovectores)<pi) { angulovectorvelocidad<-angulovectorvelocidadsignoangulovectores*heta*pasotiempo 443 Apéndice A. Códigos del programa } ## fin del if (abs(angulovectores)<pi) else ## angulovectores>=pi { angulovectorvelocidad<angulovectorvelocidad+signoangulovectores*heta*pasotiempo } ## fin del else ## angulovectores>=pi } ## fin del if (matrizdistanciaRPAcentro[jindice] ## EL RPA SE ACELERA if (modulovectorvelocidad<velocidadcru) { modulovectorvelocidad<modulovectorvelocidad+aceleracion*pasotiempo } ## fin del if (modulovectorvelocidad if (modulovectorvelocidad >= velocidadcru) { ## el RPA no se acelera por encima de la velocidad de crucero modulovectorvelocidad<-velocidadcru } ## fin del if (modulovectorvelocidad } ## fin del else ## NO HAY RIESGO DE COLISION matrizvelocidad[jindice,1]<modulovectorvelocidad*cos(angulovectorvelocidad) matrizvelocidad[jindice,2]<-modulovectorvelocidad*sin(angulovectorvelocidad) 444 Apéndice A. Códigos del programa matrizposicion[jindice,1]<matrizposicion[jindice,1]+matrizvelocidad[jindice,1]*pasotiempo matrizposicion[jindice,2]<matrizposicion[jindice,2]+matrizvelocidad[jindice,2]*pasotiempo entropiamodulovectorvelocidad1<entropiamodulovectorvelocidad1+modulovectorvelocidad ## calculo de la entropia B } ## fin del for jindice ## CALCULO DE LA ENTROPIA DEL ENJAMBRE A1 velocidadminima1[]<-1000000000000 ## inicializa a infinito velocidadmaxima1[]<--1000000000000 ## inicializa a -infinito contadormicroestados1[]<-0 ## inicializa a 0 indiceentropia1[]<-0 ## inicializa a 0 for(jdimension in 1:dimension) { for(jindice in 1:(nRPAs/2)) { if (matrizvelocidad[jindice,jdimension]<=velocidadminima1[jdimension]) { ## calculo de la velocidad minima velocidadminima1[jdimension]<matrizvelocidad[jindice,jdimension] } ## fin del if (matrizvelocidad[jindice, 445 Apéndice A. Códigos del programa if (matrizvelocidad[jindice,jdimension]>=velocidadmaxima1[jdimension]) { ## calculo de la velocidad maxima velocidadmaxima1[jdimension]<matrizvelocidad[jindice,jdimension] } ## fin del if (matrizvelocidad[jindice, } ## fin del for jindice } ## fin del for jdimension for(jdimension in 1:dimension) { deltavelocidad1[jdimension]<-(velocidadmaxima1[jdimension]velocidadminima1[jdimension])/(nRPAs/2) } ## fin del for jdimension for(jdimension in 1:dimension) { for(jindice1 in 1:(nRPAs/2)) { ## contador de matrizvelocidad for(jindice2 in 1:((nRPAs/2)+1)) { if ((matrizvelocidad[jindice1,jdimension]>=(velocidadminima1[jdimension]+(jindice21)*deltavelocidad1[jdimension]))&&(matrizvelocidad[jindice1,jdimension]<(velocidad minima1[jdimension]+jindice2*deltavelocidad1[jdimension]))) { 446 Apéndice A. Códigos del programa contadormicroestados1[jindice2,jdimension]<contadormicroestados1[jindice2,jdimension]+1 } ## fin del if (matrizvelocidad[jindice1, } ## fin del for jindice2 } ## fin del for jindice1 } ## fin del for jdimension contadormicroestados1[(nRPAs/2),1]<contadormicroestados1[(nRPAs/2),1]+contadormicroestados1[((nRPAs/2)+1),1] contadormicroestados1[(nRPAs/2),2]<contadormicroestados1[(nRPAs/2),2]+contadormicroestados1[((nRPAs/2)+1),2] contadormicroestados1[((nRPAs/2)+1),]<-0 for(jdimension in 1:dimension) { for(jindice2 in 1:(nRPAs/2)) { if (contadormicroestados1[jindice2,jdimension]>0) { indiceentropia1[jindice2,jdimension]<-1 } ## fin del if (matrizvelocidad[jindice2 entropiatiempo1<-entropiatiempo1+indiceentropia1[jindice2,jdimension] } ## fin del for jindice2 } ## fin del for jdimension ## CALCULO DE LA ENTROPIA DEL ENJAMBRE A2 447 Apéndice A. Códigos del programa velocidadminima2[]<-1000000000000 ## inicializa a infinito velocidadmaxima2[]<--1000000000000 ## inicializa a -infinito contadormicroestados2[]<-0 ## inicializa a 0 indiceentropia2[]<-0 ## inicializa a 0 for(jdimension in 1:dimension) { for(jindice in (nRPAs/2+1):nRPAs) { if (matrizvelocidad[jindice,jdimension]<=velocidadminima2[jdimension]) { ## calculo de la velocidad minima velocidadminima2[jdimension]<matrizvelocidad[jindice,jdimension] } ## fin del if (matrizvelocidad[jindice, if (matrizvelocidad[jindice,jdimension]>=velocidadmaxima2[jdimension]) { ## calculo de la velocidad maxima velocidadmaxima2[jdimension]<matrizvelocidad[jindice,jdimension] } ## fin del if (matrizvelocidad[jindice, } ## fin del for jindice } ## fin del for jdimension for(jdimension in 1:dimension) { 448 Apéndice A. Códigos del programa deltavelocidad2[jdimension]<-(velocidadmaxima2[jdimension]velocidadminima2[jdimension])/(nRPAs/2) } ## fin del for jdimension for(jdimension in 1:dimension) { for(jindice1 in (nRPAs/2+1):nRPAs) { ## contador de matrizvelocidad for(jindice2 in 1:((nRPAs/2)+1)) { if ((matrizvelocidad[jindice1,jdimension]>=(velocidadminima2[jdimension]+(jindice21)*deltavelocidad2[jdimension]))&&(matrizvelocidad[jindice1,jdimension]<(velocidad minima2[jdimension]+jindice2*deltavelocidad2[jdimension]))) { contadormicroestados2[jindice2,jdimension]<contadormicroestados2[jindice2,jdimension]+1 } ## fin del if (matrizvelocidad[jindice1, } ## fin del for jindice2 } ## fin del for jindice1 } ## fin del for jdimension contadormicroestados2[(nRPAs/2),1]<contadormicroestados2[(nRPAs/2),1]+contadormicroestados2[((nRPAs/2)+1),1] contadormicroestados2[(nRPAs/2),2]<contadormicroestados2[(nRPAs/2),2]+contadormicroestados2[((nRPAs/2)+1),2] contadormicroestados2[((nRPAs/2)+1),]<-0 449 Apéndice A. Códigos del programa for(jdimension in 1:dimension) { for(jindice2 in 1:(nRPAs/2)) { if (contadormicroestados2[jindice2,jdimension]>0) { indiceentropia2[jindice2,jdimension]<-1 } ## fin del if (matrizvelocidad[jindice2 entropiatiempo2<-entropiatiempo2+indiceentropia2[jindice2,jdimension] } ## fin del for jindice2 } ## fin del for jdimension ## MAGNITUDES GLOBALES tiempoadimen<-tiempoadimen+1 matrizposicionglobal[tiempoadimen,1]<-matrizposicion[1,1] ## posicion x del RPA 1 matrizposicionglobal[tiempoadimen,2]<-matrizposicion[1,2] ## posicion y del RPA 1 matrizposicionglobal[tiempoadimen,3]<-matrizposicion[2,1] ## posicion x del RPA 2 matrizposicionglobal[tiempoadimen,4]<-matrizposicion[2,2] ## posicion y del RPA 2 matrizposicionglobal[tiempoadimen,5]<-matrizposicion[3,1] ## posicion x del RPA 3 matrizposicionglobal[tiempoadimen,6]<-matrizposicion[3,2] ## posicion y del RPA 3 matrizposicionglobal[tiempoadimen,7]<-matrizposicion[4,1] ## posicion x del RPA 4 matrizposicionglobal[tiempoadimen,8]<-matrizposicion[4,2] ## posicion y del RPA 4 matrizposicionglobal[tiempoadimen,9]<-matrizposicion[5,1] ## posicion x del RPA 5 450 Apéndice A. Códigos del programa matrizposicionglobal[tiempoadimen,10]<-matrizposicion[5,2] ## posicion y del RPA 5 matrizposicionglobal[tiempoadimen,11]<-matrizposicion[6,1] ## posicion x del RPA 6 matrizposicionglobal[tiempoadimen,12]<-matrizposicion[6,2] ## posicion y del RPA 6 matrizposicionglobal[tiempoadimen,13]<-matrizposicion[7,1] ## posicion x del RPA 7 matrizposicionglobal[tiempoadimen,14]<-matrizposicion[7,2] ## posicion y del RPA 7 matrizposicionglobal[tiempoadimen,15]<-matrizposicion[8,1] ## posicion x del RPA 8 matrizposicionglobal[tiempoadimen,16]<-matrizposicion[8,2] ## posicion y del RPA 8 matrizposicionglobal[tiempoadimen,17]<-matrizposicion[9,1] ## posicion x del RPA 9 matrizposicionglobal[tiempoadimen,18]<-matrizposicion[9,2] ## posicion y del RPA 9 matrizposicionglobal[tiempoadimen,19]<-matrizposicion[10,1] ## posicion x del RPA 10 matrizposicionglobal[tiempoadimen,20]<-matrizposicion[10,2] ## posicion y del RPA 10 matrizposicionglobal[tiempoadimen,21]<-matrizposicion[11,1] ## posicion x del RPA 11 matrizposicionglobal[tiempoadimen,22]<-matrizposicion[11,2] ## posicion y del RPA 11 matrizposicionglobal[tiempoadimen,23]<-matrizposicion[12,1] ## posicion x del RPA 12 matrizposicionglobal[tiempoadimen,24]<-matrizposicion[12,2] ## posicion y del RPA 12 matrizposicionglobal[tiempoadimen,25]<-matrizposicion[13,1] ## posicion x del RPA 13 matrizposicionglobal[tiempoadimen,26]<-matrizposicion[13,2] ## posicion y del RPA 13 matrizposicionglobal[tiempoadimen,27]<-matrizposicion[14,1] ## posicion x del RPA 14 451 Apéndice A. Códigos del programa matrizposicionglobal[tiempoadimen,28]<-matrizposicion[14,2] ## posicion y del RPA 14 matrizposicionglobal[tiempoadimen,29]<-matrizposicion[15,1] ## posicion x del RPA 15 matrizposicionglobal[tiempoadimen,30]<-matrizposicion[15,2] ## posicion y del RPA 15 matrizposicionglobal[tiempoadimen,31]<-matrizposicion[16,1] ## posicion x del RPA 16 matrizposicionglobal[tiempoadimen,32]<-matrizposicion[16,2] ## posicion y del RPA 16 matrizvelocidadglobal[tiempoadimen,1]<-matrizvelocidad[1,1] ## velocidad x del RPA 1 matrizvelocidadglobal[tiempoadimen,2]<-matrizvelocidad[1,2] ## velocidad y del RPA 1 matrizvelocidadglobal[tiempoadimen,3]<-matrizvelocidad[2,1] ## velocidad x del RPA 2 matrizvelocidadglobal[tiempoadimen,4]<-matrizvelocidad[2,2] ## velocidad y del RPA 2 matrizvelocidadglobal[tiempoadimen,5]<-matrizvelocidad[3,1] ## velocidad x del RPA 3 matrizvelocidadglobal[tiempoadimen,6]<-matrizvelocidad[3,2] ## velocidad y del RPA 3 matrizvelocidadglobal[tiempoadimen,7]<-matrizvelocidad[4,1] ## velocidad x del RPA 4 matrizvelocidadglobal[tiempoadimen,8]<-matrizvelocidad[4,2] ## velocidad y del RPA 4 452 Apéndice A. Códigos del programa matrizvelocidadglobal[tiempoadimen,9]<-matrizvelocidad[5,1] ## velocidad x del RPA 5 matrizvelocidadglobal[tiempoadimen,10]<-matrizvelocidad[5,2] ## velocidad y del RPA 5 matrizvelocidadglobal[tiempoadimen,11]<-matrizvelocidad[6,1] ## velocidad x del RPA 6 matrizvelocidadglobal[tiempoadimen,12]<-matrizvelocidad[6,2] ## velocidad y del RPA 6 matrizvelocidadglobal[tiempoadimen,13]<-matrizvelocidad[7,1] ## velocidad x del RPA 7 matrizvelocidadglobal[tiempoadimen,14]<-matrizvelocidad[7,2] ## velocidad y del RPA 7 matrizvelocidadglobal[tiempoadimen,15]<-matrizvelocidad[8,1] ## velocidad x del RPA 8 matrizvelocidadglobal[tiempoadimen,16]<-matrizvelocidad[8,2] ## velocidad y del RPA 8 matrizvelocidadglobal[tiempoadimen,17]<-matrizvelocidad[9,1] ## velocidad x del RPA 9 matrizvelocidadglobal[tiempoadimen,18]<-matrizvelocidad[9,2] ## velocidad y del RPA 9 matrizvelocidadglobal[tiempoadimen,19]<-matrizvelocidad[10,1] ## velocidad x del RPA 10 matrizvelocidadglobal[tiempoadimen,20]<-matrizvelocidad[10,2] ## velocidad y del RPA 10 matrizvelocidadglobal[tiempoadimen,21]<-matrizvelocidad[11,1] ## velocidad x del RPA 11 matrizvelocidadglobal[tiempoadimen,22]<-matrizvelocidad[11,2] ## velocidad y del RPA 11 453 Apéndice A. Códigos del programa matrizvelocidadglobal[tiempoadimen,23]<-matrizvelocidad[12,1] ## velocidad x del RPA 12 matrizvelocidadglobal[tiempoadimen,24]<-matrizvelocidad[12,2] ## velocidad y del RPA 12 matrizvelocidadglobal[tiempoadimen,25]<-matrizvelocidad[13,1] ## velocidad x del RPA 13 matrizvelocidadglobal[tiempoadimen,26]<-matrizvelocidad[13,2] ## velocidad y del RPA 13 matrizvelocidadglobal[tiempoadimen,27]<-matrizvelocidad[14,1] ## velocidad x del RPA 14 matrizvelocidadglobal[tiempoadimen,28]<-matrizvelocidad[14,2] ## velocidad y del RPA 14 matrizvelocidadglobal[tiempoadimen,29]<-matrizvelocidad[15,1] ## velocidad x del RPA 15 matrizvelocidadglobal[tiempoadimen,30]<-matrizvelocidad[15,2] ## velocidad y del RPA 15 matrizvelocidadglobal[tiempoadimen,31]<-matrizvelocidad[16,1] ## velocidad x del RPA 16 matrizvelocidadglobal[tiempoadimen,32]<-matrizvelocidad[16,2] ## velocidad y del RPA 16 tiempo<-tiempo+pasotiempo } ## fin del while (tiempo<=tiempoSEAD) ## CREACIÓN DE ENTROPÍA EN ENJAMBRES DE RPAS EN MOVIMIENTO DURANTE LA AIR COMBAT CLOUD 454 Apéndice A. Códigos del programa ## DECLARACIONES INICIALES velocidadcru<-17 ## velocidad de crucero del enjambre (m/s) velocidadper<-6 ## velocidad de perdida del RPA del enjambre (m/s) tam<-1 ## tamano promedio del RPA (m) (si hubiera varios el valor mas grande) factmin<-5 ## factor mínimo que multiplica al tamano promedio para evitar el riesgo de colisiones (KAIST) factmax<-15 ## factor maximo que multiplica al tamano promedio para evitar el riesgo de colisiones (KAIST) heta<-18 ## angulo que puede girar el vector velocidad del RPA por segundo para evitar la colision (10º/segundo) heta<-heta*pi/180 ## se pasa heta a radianes deceleracion<-1.5 ## deceleracion del RPA para evitar la colision (m/s2) aceleracion<-5 ## aceleracion del RPA para recuperar la velocidad nominal despues de decelerar (m/s2) kfact<-1 ## factor k que afecta a factMmax y factMmin nRPAs<-8 ## numero de RPAs que componen el enjambre dimension<-2 ## numero de dimensiones del problema distanciainicial<-factmax*tam ## distancia inicial que modela el enjambre en t=0 tiempo<-0 ## tiempo durante cada mision SEAD ISR (seg) pasotiempo<-0.2 ## paso de tiempo de cada mision SEAD ISR (seg) tiempoSEAD<-60 ## tiempo de cada mision SEAD ISR (seg) tiempoadimen<-1 ## tiempo adimensional factdecv<-10 ## factor de decision donde cada RPA cambia el vector velocidad para no colisionar cuando distancia<factdecv*tam 455 Apéndice A. Códigos del programa factdeca<-7 ## factor de decision donde cada RPA decelera para no colisionar cuando distancia<factdeca*tam (factdecv>=factdeca) factMmmm<-15 ## distancia factMmmm*tam de cada RPA al centroide para que los RPAs no se alejen (factMmmm>=factdecv>=factdeca) factMmax<-30 ## valor maximo de factMmmm de cada RPA al centroide del enjambre factMmin<-5 ## valor minimo de factMmmm de cada RPA al centroide del enjambre ## DECLARACIONES INICIALES ENTROPÍA entropiatiempomin<-1000000000000 ## entropia minima durante cada mision SEAD ISR (infinito) entropiafact<-1000000000000 ## entropia optima para los factores de decision (infinito) velocidadminima<-numeric(length=dimension) ## vector velocidad minima del enjambre velocidadmaxima<-numeric(length=dimension) ## vector velocidad maxima del enjambre deltavelocidad<-numeric(length=dimension) ## deltavelocidad<-(velocidadmaximavelocidadminima)/nRPAs contadormicroestados<-matrix(0,(nRPAs+1),2) ## matriz de microestados en cada intervalo para calcular la entropia indiceentropia<-matrix(0,nRPAs,2) ## matriz de entropia en cada intervalo entropiatiempo<-0 ## calculo de la entropia B entropiamodulovectorvelocidad<-0 ## calculo de la entropia B ## INICIALIZACIONES velocidadminima[]<-1000000000000 ## inicializa a infinito 456 Apéndice A. Códigos del programa velocidadmaxima[]<--1000000000000 ## inicializa a -infinito deltavelocidad[]<-0 ## inicializa a 0 contadormicroestados[]<-0 ## inicializa a 0 indiceentropia[]<-0 ## inicializa a 0 ## DECLARACIONES INICIALES niteraciones<-10000 ## numero de iteraciones del algoritmo nfact<-3 ## numero de parámetros a optimizar errormuta<-0.05 ## error de mutacion jiteracionesmem1<-0 ## memoriza el numero de iteraciones para calcular el criterio de parada 1 jiteracionesmem2<-0 ## memoriza el numero de iteraciones para calcular el criterio de parada 2 nlop<-250 ## parametro para calcular el criterio de parada 1 nkop1<-nfact ## parametro para calcular el criterio de parada 1 entropiatiempominnk<-entropiatiempomin ## valor de la funcion de optimizacion utilizado por el criterio de parada 1 errorop1<-0.5 ## Error a considerar en el criterio de parada 1 nkop2<-nfact ## parametro para calcular el criterio de parada 2 ## DECLARACIONES DE MATRICES Y VECTORES DEL ENJAMBRE DE RPAS matrizposicion<-matrix(0,nRPAs,2) ## matriz de posicion del enjambre de RPAs (xi,yi) matrizvelocidad<-matrix(0,nRPAs,2) ## matriz de velocidad del enjambre de RPAs (vxi,vyi) distanciaRPAmin<-numeric(length=nRPAs) ## vector de distancias minimas de cada RPA al RPA mas cercano 457 Apéndice A. Códigos del programa indiceRPAdistanciamin<-numeric(length=nRPAs) ## vector que identifica para cada RPA el RPA mas cercano matrizRPAdistanciamin<-matrix(0,nRPAs,2) ## matriz de vectores que para cada RPA apunta al RPA mas cercano dimensionmatrizglobal<-trunc(tiempoSEAD/pasotiempo) ## dimension global de la matriz de posicion matrizposicionglobal<-matrix(0,dimensionmatrizglobal,(2*nRPAs)) ## matriz de matriz de posicion de todos los RPAs del enjambre matrizvelocidadglobal<-matrix(0,dimensionmatrizglobal,(2*nRPAs)) ## posicion de todos los RPAs del enjambre matrizentropiaglobal<-matrix(0,dimensionmatrizglobal,2) ## matriz de entropia de todos los RPAs del enjambre distanciaRPAcentroide<-numeric(length=nRPAs) ## vector de distancias de cada RPA al centroide del enjambre matrizdistanciaRPAcentro<-matrix(0,nRPAs,2) ## matriz de vectores que para cada RPA apunta al centroide matrizposicioncentroide<-numeric(length=dimension) ## vector de posicion del centroide (piloto humano/control autonomo) matrizvelocidadcentroide<-numeric(length=dimension) centroide (piloto humano/control autonomo) ## INICIALIZACIONES matrizposicion[]<-0 ## inicializa a 0 matrizvelocidad[]<-0 ## inicializa a 0 458 ## vector velocidad del Apéndice A. Códigos del programa distanciaRPAmin[]<-0 ## inicializa a 0 indiceRPAdistanciamin[]<-0 ## inicializa a 0 matrizRPAdistanciamin[]<-0 ## inicializa a 0 matrizposicionglobal[]<-0 ## inicializa a 0 matrizvelocidadglobal[]<-0 ## inicializa a 0 matrizentropiaglobal[]<-0 ## inicializa a 0 distanciaRPAcentroide[]<-0 ## inicializa a 0 matrizdistanciaRPAcentro[]<-0 ## inicializa a 0 matrizposicioncentroide[]<-0 ## inicializa a 0 matrizvelocidadcentroide[]<-0 ## inicializa a 0 factdecv<-10 factdeca<-7 factMmax<-kfact*factmax*nRPAs^(1/dimension)/2 factMmin<-kfact*factmin*nRPAs^(1/dimension)/2 ## INICIALIZACION DE LA POSICION INICIAL DEL ENJAMBRE matrizposicion[1,1]<--10.60660172 ## posicion x del RPA 1 matrizposicion[1,2]<--10.60660172 ## posicion y del RPA 1 matrizposicion[2,1]<-0 ## posicion x del RPA 2 matrizposicion[2,2]<--15 ## posicion y del RPA 2 matrizposicion[3,1]<-10.60660172 ## posicion x del RPA 3 459 Apéndice A. Códigos del programa matrizposicion[3,2]<--10.60660172 ## posicion y del RPA 3 matrizposicion[4,1]<--15 ## posicion x del RPA 4 matrizposicion[4,2]<-0 ## posicion y del RPA 4 matrizposicion[5,1]<-15 ## posicion x del RPA 5 matrizposicion[5,2]<-0 ## posicion y del RPA 5 matrizposicion[6,1]<--10.60660172 ## posicion x del RPA 6 matrizposicion[6,2]<-10.60660172 ## posicion y del RPA 6 matrizposicion[7,1]<-0 ## posicion x del RPA 7 matrizposicion[7,2]<-15 ## posicion y del RPA 7 matrizposicion[8,1]<-10.60660172 ## posicion x del RPA 8 matrizposicion[8,2]<-10.60660172 ## posicion y del RPA 8 matrizposicioncentroide[1]<-0 ## posicion x del centroide matrizposicioncentroide[2]<-0 ## posicion y del centroide matrizvelocidadcentroide[1]<-6 ## velocidad x del centroide en m/s matrizvelocidadcentroide[2]<-6 ## velocidad y del centroide en m/s ## INICIALIZACION DE LA VELOCIDAD INICIAL DEL ENJAMBRE matrizvelocidad[1,1]<-0.923879533 ## velocidad x del RPA 1 matrizvelocidad[1,2]<-0.38268343 ## velocidad y del RPA 1 matrizvelocidad[2,1]<-0.382683432 ## velocidad x del RPA 2 matrizvelocidad[2,2]<-0.923879533 ## velocidad y del RPA 2 matrizvelocidad[3,1]<--0.382683432 ## velocidad x del RPA 3 matrizvelocidad[3,2]<-0.923879533 ## velocidad y del RPA 3 460 Apéndice A. Códigos del programa matrizvelocidad[4,1]<-0.923879533 ## velocidad x del RPA 4 matrizvelocidad[4,2]<--0.382683432 ## velocidad y del RPA 4 matrizvelocidad[5,1]<--0.923879533 ## velocidad x del RPA 5 matrizvelocidad[5,2]<-0.382683432 ## velocidad y del RPA 5 matrizvelocidad[6,1]<-0.382683432 ## velocidad x del RPA 6 matrizvelocidad[6,2]<--0.923879533 ## velocidad y del RPA 6 matrizvelocidad[7,1]<--0.382683432 ## velocidad x del RPA 7 matrizvelocidad[7,2]<--0.923879533 ## velocidad y del RPA 7 matrizvelocidad[8,1]<--0.923879533 ## velocidad x del RPA 8 matrizvelocidad[8,2]<--0.382683432 ## velocidad y del RPA 8 ## INICIALIZACION DE MAGNITUDES GLOBALES matrizposicionglobal[1,1]<-matrizposicion[1,1] ## posicion x del RPA 1 matrizposicionglobal[1,2]<-matrizposicion[1,2] ## posicion y del RPA 1 matrizposicionglobal[1,3]<-matrizposicion[2,1] ## posicion x del RPA 2 matrizposicionglobal[1,4]<-matrizposicion[2,2] ## posicion y del RPA 2 matrizposicionglobal[1,5]<-matrizposicion[3,1] ## posicion x del RPA 3 matrizposicionglobal[1,6]<-matrizposicion[3,2] ## posicion y del RPA 3 matrizposicionglobal[1,7]<-matrizposicion[4,1] ## posicion x del RPA 4 matrizposicionglobal[1,8]<-matrizposicion[4,2] ## posicion y del RPA 4 matrizposicionglobal[1,9]<-matrizposicion[5,1] ## posicion x del RPA 5 matrizposicionglobal[1,10]<-matrizposicion[5,2] ## posicion y del RPA 5 matrizposicionglobal[1,11]<-matrizposicion[6,1] ## posicion x del RPA 6 matrizposicionglobal[1,12]<-matrizposicion[6,2] ## posicion y del RPA 6 matrizposicionglobal[1,13]<-matrizposicion[7,1] ## posicion x del RPA 7 461 Apéndice A. Códigos del programa matrizposicionglobal[1,14]<-matrizposicion[7,2] ## posicion y del RPA 7 matrizposicionglobal[1,15]<-matrizposicion[8,1] ## posicion x del RPA 8 matrizposicionglobal[1,16]<-matrizposicion[8,2] ## posicion y del RPA 8 matrizvelocidadglobal[1,1]<-matrizvelocidad[1,1] ## velocidad x del RPA 1 matrizvelocidadglobal[1,2]<-matrizvelocidad[1,2] ## velocidad y del RPA 1 matrizvelocidadglobal[1,3]<-matrizvelocidad[2,1] ## velocidad x del RPA 2 matrizvelocidadglobal[1,4]<-matrizvelocidad[2,2] ## velocidad y del RPA 2 matrizvelocidadglobal[1,5]<-matrizvelocidad[3,1] ## velocidad x del RPA 3 matrizvelocidadglobal[1,6]<-matrizvelocidad[3,2] ## velocidad y del RPA 3 matrizvelocidadglobal[1,7]<-matrizvelocidad[4,1] ## velocidad x del RPA 4 matrizvelocidadglobal[1,8]<-matrizvelocidad[4,2] ## velocidad y del RPA 4 matrizvelocidadglobal[1,9]<-matrizvelocidad[5,1] ## velocidad x del RPA 5 matrizvelocidadglobal[1,10]<-matrizvelocidad[5,2] ## velocidad y del RPA 5 matrizvelocidadglobal[1,11]<-matrizvelocidad[6,1] ## velocidad x del RPA 6 matrizvelocidadglobal[1,12]<-matrizvelocidad[6,2] ## velocidad y del RPA 6 matrizvelocidadglobal[1,13]<-matrizvelocidad[7,1] ## velocidad x del RPA 7 matrizvelocidadglobal[1,14]<-matrizvelocidad[7,2] ## velocidad y del RPA 7 matrizvelocidadglobal[1,15]<-matrizvelocidad[8,1] ## velocidad x del RPA 8 matrizvelocidadglobal[1,16]<-matrizvelocidad[8,2] ## velocidad y del RPA 8 ## ASIGNACION VELOCIDAD NOMINAL AL ENJAMBRE for(jindice in 1:nRPAs) { for(jdimension in 1:dimension) 462 Apéndice A. Códigos del programa { matrizvelocidad[jindice,jdimension]<velocidadcru*matrizvelocidad[jindice,jdimension] } ## fin del for jdimension } ## fin del for jindice ## DECLARACIONES DE MATRICES Y VECTORES DEL ALGORITMO MA ## vector de factores de decision (vectorfac[1]=factdecv,vectorfact[2]=factdeca,vectorfact[3]=factMmmm) vectorfact<-numeric(length=nfact) vectorfactmax<-numeric(length=nfact) ## vector de factores de decision maximos vectorfactmin<-numeric(length=nfact) ## vector de factores de decision minimos vectorfactopt<-numeric(length=nfact) ## vector de factores de decision que almacena el valor optimo ## GENERACION DE POBLACION INICIAL vectorfactmax[1]<-factmax ## vector de factores de decision maximos vectorfactmax[2]<-factmax ## vector de factores de decision maximos vectorfactmax[3]<-factMmax ## vector de factores de decision maximos vectorfactmin[1]<-factmin ## vector de factores de decision minimos vectorfactmin[2]<-factmin ## vector de factores de decision minimos vectorfactmin[3]<-factMmin ## vector de factores de decision minimos ## 463 Apéndice A. Códigos del programa ## INTEGRACION DE LA POSICION DE LOS RPAS EN CADA MIsion SEAD ISR tiempo<-tiempo+pasotiempo while (tiempo<=tiempoSEAD) { ## while entropiamodulovectorvelocidad<-0 ## inicializa a cero ## INTEGRACION DE LA POSICION DE CADA RPA for(jindice in 1:nRPAs) { ## CALCULO DE LA DISTANCIA MINIMA DE CADA RPA AL RESTO DEL ENJAMBRE distanciaRPAmin[]<-1000000000000 ## inicializa a infinito for(jindice1 in 1:nRPAs) { distanciaRPAcentroide[jindice1]<sqrt((matrizposicion[jindice1,1]matrizposicioncentroide[1])^2+(matrizposicion[jindice1,2]matrizposicioncentroide[2])^2) for(jindice2 in 1:nRPAs) { if (jindice2!=jindice1) { distanciaRPAminima<sqrt((matrizposicion[jindice1,1]- 464 Apéndice A. Códigos del programa matrizposicion[jindice2,1])^2+(matrizposicion[jindice1,2]matrizposicion[jindice2,2])^2) if (distanciaRPAminima<=distanciaRPAmin[jindice1]) { distanciaRPAmin[jindice1]<distanciaRPAminima indiceRPAdistanciamin[jindice1]<-jindice2 } ## fin del if (distanciaRPAminima } ## fin del if (jindice2!=jindice1) } ## fin del for jindice2 matrizRPAdistanciamin[jindice1,1]<(matrizposicion[indiceRPAdistanciamin[jindice1],1]matrizposicion[jindice1,1])/distanciaRPAmin[jindice1] matrizRPAdistanciamin[jindice1,2]<(matrizposicion[indiceRPAdistanciamin[jindice1],2]matrizposicion[jindice1,2])/distanciaRPAmin[jindice1] matrizdistanciaRPAcentro[jindice1,1]<(matrizposicioncentroide[1]matrizposicion[jindice1,1])/distanciaRPAcentroide[jindice1] matrizdistanciaRPAcentro[jindice1,2]<(matrizposicioncentroide[2]matrizposicion[jindice1,2])/distanciaRPAcentroide[jindice1] } ## fin del for jindice1 465 Apéndice A. Códigos del programa modulovectorvelocidad<sqrt(matrizvelocidad[jindice,1]^2+matrizvelocidad[jindice,2]^2) ## angulo del vector velocidad angulovectorvelocidad<atan(matrizvelocidad[jindice,2]/matrizvelocidad[jindice,1]) if (matrizvelocidad[jindice,1]<=0) { angulovectorvelocidad<-angulovectorvelocidad+pi } ## fin del if (matrizvelocidad[jindice,1] ## EXISTE RIESGO DE COLISION if (distanciaRPAmin[jindice]<=factdecv*tam) { ## EL RPA GIRA EL VECTOR VELOCIDAD PARA EVITAR LA COLISION ## angulo del vector que apunta al RPA mas cercano angulovectorRPAdismin<atan(matrizRPAdistanciamin[jindice,2]/matrizRPAdistanciamin[jindice,1]) if (matrizRPAdistanciamin[jindice,1]<=0) { angulovectorRPAdismin<-angulovectorRPAdismin+pi } ## fin del if (matrizRPAdistanciamin[jindice,1] angulovectores<-(angulovectorvelocidadangulovectorRPAdismin) signoangulovectores<-abs(angulovectores)/angulovectores 466 Apéndice A. Códigos del programa if (abs(angulovectores)<pi) { angulovectorvelocidad<-angulovectorvelocidad +signoangulovectores*heta*pasotiempo } ## fin del if (abs(angulovectores)<pi) else ## angulovectores>=pi { angulovectorvelocidad<-angulovectorvelocidadsignoangulovectores*heta*pasotiempo } ## fin del else ## angulovectores>=pi ## EL RPA SE DECELERA PARA EVITAR LA COLISION if (distanciaRPAmin[jindice]<=factdeca*tam) { modulovectorvelocidad<-modulovectorvelocidaddeceleracion*pasotiempo } ## fin del if (distanciaRPAmin[jindice] factdeca if (modulovectorvelocidad<=velocidadper) { ## el RPA no se decelera por debajo de la velocidad de perdida modulovectorvelocidad<-velocidadper } ## fin del if (modulovectorvelocidad } ## fin del if (distanciaRPAmin[jindice] factdecv else ## NO HAY RIESGO DE COLISION 467 Apéndice A. Códigos del programa { ## EL RPA ESTA MUY ALEJADO if (distanciaRPAcentroide[jindice] >= factMmmm*tam) { ## EL RPA GIRA EL VECTOR VELOCIDAD PARA VOLVER AL ENJAMBRE ## angulo del vector que apunta al centroide angulovectorRPAcentro<atan(matrizdistanciaRPAcentro[jindice,2]/matrizdistanciaRPAcentro[jindice,1]) if (matrizdistanciaRPAcentro[jindice,1]<=0) { angulovectorRPAcentro<angulovectorRPAcentro+pi } ## fin del if (matrizdistanciaRPAcentro[jindice,1] angulovectores<-(angulovectorvelocidadangulovectorRPAcentro) signoangulovectores<abs(angulovectores)/angulovectores if (abs(angulovectores)<pi) { angulovectorvelocidad<-angulovectorvelocidadsignoangulovectores*heta*pasotiempo } ## fin del if (abs(angulovectores)<pi) 468 Apéndice A. Códigos del programa else ## angulovectores>=pi { angulovectorvelocidad<angulovectorvelocidad+signoangulovectores*heta*pasotiempo } ## fin del else ## angulovectores>=pi } ## fin del if (matrizdistanciaRPAcentro[jindice] ## EL RPA SE ACELERA if (modulovectorvelocidad<velocidadcru) { modulovectorvelocidad<modulovectorvelocidad+aceleracion*pasotiempo } ## fin del if (modulovectorvelocidad if (modulovectorvelocidad >= velocidadcru) { ## el RPA no se acelera por encima de la velocidad de crucero modulovectorvelocidad<-velocidadcru } ## fin del if (modulovectorvelocidad } ## fin del else ## NO HAY RIESGO DE COLISION matrizvelocidad[jindice,1]<modulovectorvelocidad*cos(angulovectorvelocidad) ## velocidad x matrizvelocidad[jindice,2]<-modulovectorvelocidad*sin(angulovectorvelocidad) ## velocidad y 469 Apéndice A. Códigos del programa matrizposicion[jindice,1]<matrizposicion[jindice,1]+matrizvelocidad[jindice,1]*pasotiempo ## posicion x matrizposicion[jindice,2]<matrizposicion[jindice,2]+matrizvelocidad[jindice,2]*pasotiempo ## posicion y entropiamodulovectorvelocidad<entropiamodulovectorvelocidad+modulovectorvelocidad ## calculo de la entropia B } ## fin del for jindice ## CALCULO DE LA ENTROPIA DEL ENJAMBRE A velocidadminima[]<-1000000000000 ## inicializa a infinito velocidadmaxima[]<--1000000000000 ## inicializa a -infinito contadormicroestados[]<-0 ## inicializa a 0 indiceentropia[]<-0 ## inicializa a 0 for(jdimension in 1:dimension) { for(jindice in 1:nRPAs) { if (matrizvelocidad[jindice,jdimension]<=velocidadminima[jdimension]) { ## calculo de la velocidad minima velocidadminima[jdimension]<matrizvelocidad[jindice,jdimension] } ## fin del if (matrizvelocidad[jindice, 470 Apéndice A. Códigos del programa if (matrizvelocidad[jindice,jdimension]>=velocidadmaxima[jdimension]) { ## calculo de la velocidad maxima velocidadmaxima[jdimension]<matrizvelocidad[jindice,jdimension] } ## fin del if (matrizvelocidad[jindice, } ## fin del for jindice } ## fin del for jdimension for(jdimension in 1:dimension) { deltavelocidad[jdimension]<-(velocidadmaxima[jdimension]velocidadminima[jdimension])/nRPAs } ## fin del for jdimension for(jdimension in 1:dimension) { for(jindice1 in 1:nRPAs) { ## contador de matrizvelocidad for(jindice2 in 1:(nRPAs+1)) { if ((matrizvelocidad[jindice1,jdimension]>=(velocidadminima[jdimension]+(jindice21)*deltavelocidad[jdimension]))&&(matrizvelocidad[jindice1,jdimension]<(velocidadmi nima[jdimension]+jindice2*deltavelocidad[jdimension]))) { 471 Apéndice A. Códigos del programa contadormicroestados[jindice2,jdimension]<contadormicroestados[jindice2,jdimension]+1 } ## fin del if (matrizvelocidad[jindice1, } ## fin del for jindice2 } ## fin del for jindice1 } ## fin del for jdimension contadormicroestados[nRPAs,1]<contadormicroestados[nRPAs,1]+contadormicroestados[(nRPAs+1),1] contadormicroestados[nRPAs,2]<contadormicroestados[nRPAs,2]+contadormicroestados[(nRPAs+1),2] contadormicroestados[(nRPAs+1),]<-0 for(jdimension in 1:dimension) { for(jindice2 in 1:nRPAs) { if (contadormicroestados[jindice2,jdimension]>0) { indiceentropia[jindice2,jdimension]<-1 } ## fin del if (matrizvelocidad[jindice2 entropiatiempo<-entropiatiempo+indiceentropia[jindice2,jdimension] } ## fin del for jindice2 } ## fin del for jdimension 472 Apéndice A. Códigos del programa matrizposicioncentroide[1]<matrizposicioncentroide[1]+matrizvelocidadcentroide[1]*pasotiempo matrizposicioncentroide[2]<matrizposicioncentroide[2]+matrizvelocidadcentroide[2]*pasotiempo ## MAGNITUDES GLOBALES tiempoadimen<-tiempoadimen+1 ## posicion global matrizposicionglobal[tiempoadimen,1]<-matrizposicion[1,1] ## posicion x del RPA 1 matrizposicionglobal[tiempoadimen,2]<-matrizposicion[1,2] ## posicion y del RPA 1 matrizposicionglobal[tiempoadimen,3]<-matrizposicion[2,1] ## posicion x del RPA 2 matrizposicionglobal[tiempoadimen,4]<-matrizposicion[2,2] ## posicion y del RPA 2 matrizposicionglobal[tiempoadimen,5]<-matrizposicion[3,1] ## posicion x del RPA 3 matrizposicionglobal[tiempoadimen,6]<-matrizposicion[3,2] ## posicion y del RPA 3 matrizposicionglobal[tiempoadimen,7]<-matrizposicion[4,1] ## posicion x del RPA 4 matrizposicionglobal[tiempoadimen,8]<-matrizposicion[4,2] ## posicion y del RPA 4 matrizposicionglobal[tiempoadimen,9]<-matrizposicion[5,1] ## posicion x del RPA 5 matrizposicionglobal[tiempoadimen,10]<-matrizposicion[5,2] ## posicion y del RPA 5 matrizposicionglobal[tiempoadimen,11]<-matrizposicion[6,1] ## posicion x del RPA 6 matrizposicionglobal[tiempoadimen,12]<-matrizposicion[6,2] ## posicion y del RPA 6 matrizposicionglobal[tiempoadimen,13]<-matrizposicion[7,1] ## posicion x del RPA 7 matrizposicionglobal[tiempoadimen,14]<-matrizposicion[7,2] ## posicion y del RPA 7 matrizposicionglobal[tiempoadimen,15]<-matrizposicion[8,1] ## posicion x del RPA 8 matrizposicionglobal[tiempoadimen,16]<-matrizposicion[8,2] ## posicion y del RPA 8 473 Apéndice A. Códigos del programa ## velocidad global matrizvelocidadglobal[tiempoadimen,1]<-matrizvelocidad[1,1] ## velocidad x del RPA 1 matrizvelocidadglobal[tiempoadimen,2]<-matrizvelocidad[1,2] ## velocidad y del RPA 1 matrizvelocidadglobal[tiempoadimen,3]<-matrizvelocidad[2,1] ## velocidad x del RPA 2 matrizvelocidadglobal[tiempoadimen,4]<-matrizvelocidad[2,2] ## velocidad y del RPA 2 matrizvelocidadglobal[tiempoadimen,5]<-matrizvelocidad[3,1] ## velocidad x del RPA 3 matrizvelocidadglobal[tiempoadimen,6]<-matrizvelocidad[3,2] ## velocidad y del RPA 3 matrizvelocidadglobal[tiempoadimen,7]<-matrizvelocidad[4,1] ## velocidad x del RPA 4 matrizvelocidadglobal[tiempoadimen,8]<-matrizvelocidad[4,2] ## velocidad y del RPA 4 matrizvelocidadglobal[tiempoadimen,9]<-matrizvelocidad[5,1] ## velocidad x del RPA 5 matrizvelocidadglobal[tiempoadimen,10]<-matrizvelocidad[5,2] ## velocidad y del RPA 5 matrizvelocidadglobal[tiempoadimen,11]<-matrizvelocidad[6,1] ## velocidad x del RPA 6 matrizvelocidadglobal[tiempoadimen,12]<-matrizvelocidad[6,2] ## velocidad y del RPA 6 matrizvelocidadglobal[tiempoadimen,13]<-matrizvelocidad[7,1] ## velocidad x del RPA 7 474 Apéndice A. Códigos del programa matrizvelocidadglobal[tiempoadimen,14]<-matrizvelocidad[7,2] ## velocidad y del RPA 7 matrizvelocidadglobal[tiempoadimen,15]<-matrizvelocidad[8,1] ## velocidad x del RPA 8 matrizvelocidadglobal[tiempoadimen,16]<-matrizvelocidad[8,2] ## velocidad y del RPA 8 ## entropia global matrizentropiaglobal[tiempoadimen,1]<-entropiatiempo/(2*nRPAs) matrizentropiaglobal[tiempoadimen,2]<entropiamodulovectorvelocidad/(velocidadcru*nRPAs) tiempo<-tiempo+pasotiempo } ## fin del while (tiempo<=tiempoSEAD) ## JUEGOS NO COOPERATIVOS (EQUILIBRIO DE NASH) E INTELIGENCIA DE ENJAMBRES DE RPAS EN LA AIR COMBAT CLOUD (TORNEO) ## DECLARACIONES INICIALES RPAS nRPAs<-8 ## numero de RPAs que componen el enjambre niteraciones<-100 ## numero de iteraciones del algoritmo ## DECLARACIONES DE ESCALARES, VECTORES Y MATRICES matrizpesoentropiaG<-matrix(0,nRPAs,nRPAs) ## matriz de peso de la entropia global 475 Apéndice A. Códigos del programa matrizpesodistancia<-matrix(0,nRPAs,nRPAs) ## matriz de peso de la distancia a la zona de operaciones matrizpesocomparado<-matrix(0,nRPAs,nRPAs) ## matriz de peso comparado entropia global y distancia probabilidadmatrizpesocom<-matrix(0,nRPAs,nRPAs) ## matriz de probabiliad peso comparado entropia global y distancia probabilidadmatrizpesocomsum<-matrix(0,nRPAs,nRPAs) ## matriz de probabiliad peso comparado entropia global y distancia sumada vectorpesocomparado<-numeric(length=nRPAs*nRPAs) ## vector convertido de la matriz de peso comparado vectorpesocomparado1<-numeric(length=nRPAs*nRPAs) ## vector convertido de la matriz de peso comparado nlongitudvecpesocom<-1 ## entero que define la longitud del vector de peso comparado nindicevecpesocom<-1 ## entero que la posicion dentro del vector de peso comparado jindice1RPA<-1 ## entero que define el subenjambre 1 jindice2RPA<-1 ## entero que define el subenjambre 2 ncontadorvectoresnulos1<-0 ## entero contador de vectores primeros nulos ncontadorvectoresnulos2<-0 ## entero contador de vectores segundos nulos ## DECLARACIONES DE MATRICES GLOBALES matrizentropiajugador1<-matrix(0,niteraciones,(nRPAs+1)) ## matriz global de entropia del jugador1 matrizproximidadjugador1<-matrix(0,niteraciones,(nRPAs+1)) ## matriz global de proximidad del jugador1 476 Apéndice A. Códigos del programa ## INICIALIZACIONES matrizpesoentropiaG[]<-0 ## inicializa a 0 matrizpesodistancia[]<-0 ## inicializa a 0 matrizpesocomparado[]<-0 ## inicializa a 0 vectorpesocomparado[]<-0 ## inicializa a 0 probabilidadmatrizpesocom[]<-0 ## inicializa a 0 probabilidadmatrizpesocomsum[]<-0 ## inicializa a 0 matrizentropiajugador1[]<-0 ## inicializa a 0 matrizproximidadjugador1[]<-0 ## inicializa a 0 entropiajugador1<-sample(1:nRPAs,nRPAs,replace=F) entropiajugador2<-entropiajugador1 proximidadjugador1<-sample(1:nRPAs,nRPAs,replace=F) proximidadjugador2<-proximidadjugador1 ## EJECUTA niteraciones for(jiteraciones in 1:niteraciones) { ## Ejecuta niteraciones ## ASIGNACION PESO ENTROPIA G 477 Apéndice A. Códigos del programa for(jindice1 in 1:nRPAs) { for(jindice2 in 1:nRPAs) { matrizpesoentropiaG[jindice1,jindice2]<entropiajugador1[jindice1]+entropiajugador2[jindice2] } ## fin del for jindice2 } ## fin del for jindice1 for(jindice1 in 1:nRPAs) { matrizpesoentropiaG[jindice1,jindice1]<-0 } ## fin del for jindice1 ## ASIGNACION PESO DISTANCIA for(jindice1 in 1:nRPAs) { for(jindice2 in 1:nRPAs) { matrizpesodistancia[jindice1,jindice2]<proximidadjugador1[jindice1]+proximidadjugador2[jindice2] } ## fin del for jindice2 } ## fin del for jindice1 478 Apéndice A. Códigos del programa for(jindice1 in 1:nRPAs) { matrizpesodistancia[jindice1,jindice1]<-0 } ## fin del for jindice1 ## COMPARAR PESO ENTROPIA PESO DISTANCIA for(jindice1 in 1:nRPAs) { for(jindice2 in 1:nRPAs) { if (abs(matrizpesoentropiaG[jindice1,jindice2]- matrizpesodistancia[jindice1,jindice2])<=4) { matrizpesocomparado[jindice1,jindice2]<matrizpesoentropiaG[jindice1,jindice2]+matrizpesodistancia[jindice1,jindice2] } ## if (matrizpesoentropiaG } ## fin del for jindice2 } ## fin del for jindice1 vectorpesocomparado<-as.vector(matrizpesocomparado) nlongitudvecpesocom<-length(vectorpesocomparado) ## entero que define la longitud del vector de peso comparado 479 Apéndice A. Códigos del programa nindicevecpesocom<-sample(1:nlongitudvecpesocom,1,replace=F) vectorpesocomparado1<-unique(sort(vectorpesocomparado,decreasing=TRUE)) ## ordenar el vector de mayor a menor if (vectorpesocomparado1[1]==0) { break } ## fin del bucle while (matrizpesocomparado ## SELECCIÓN PAREJA DE RPAS jindice1RPA<-1 ## entero que define el subenjambre 1 jindice2RPA<-1 ## entero que define el subenjambre 2 while (matrizpesocomparado[jindice1RPA,jindice2RPA]!=max(vectorpesocomparado[1:nindi cevecpesocom])) { jindice1RPA<-sample(1:nRPAs,1,replace=F) jindice2RPA<-sample(1:nRPAs,1,replace=F) } ## fin del bucle while (matrizpesocomparado ## DISMINUIR ENTROPÍA SEGUN jindice1RPA if ((entropiajugador1[jindice1RPA])>0) 480 Apéndice A. Códigos del programa { for(jindice1 in 1:nRPAs) { if ((entropiajugador1[jindice1]==(entropiajugador1[jindice1RPA]- 1))&&(entropiajugador1[jindice1]!=0)) { entropiajugador1[jindice1]<-entropiajugador1[jindice1]+1 } ## if ((entropiajugador1[ } ## fin del for jindice1 entropiajugador1[jindice1RPA]<-entropiajugador1[jindice1RPA]-1 } ## if (entropiajugador1 entropiajugador2<-entropiajugador1 ## DISMINUIR ENTROPÍA SEGUN jindice2RPA if ((entropiajugador1[jindice2RPA])>0) { for(jindice1 in 1:nRPAs) { if ((entropiajugador1[jindice1]==(entropiajugador1[jindice2RPA]- 1))&&(entropiajugador1[jindice1]!=0)) { entropiajugador1[jindice1]<-entropiajugador1[jindice1]+1 } ## if ((entropiajugador1[ 481 Apéndice A. Códigos del programa } ## fin del for jindice1 entropiajugador1[jindice2RPA]<-entropiajugador1[jindice2RPA]-1 } ## if (entropiajugador1 entropiajugador2<-entropiajugador1 ## ENTROPÍA CERO IMPLICA RPA ABATIDO for(jindice1 in 1:nRPAs) { if (entropiajugador1[jindice1]==0) { proximidadjugador1[jindice1]<-0 } ## if ((entropiajugador1[ } ## fin del for jindice1 proximidadjugador2<-proximidadjugador1 ## AUMENTAR DISTANCIA SEGUN jindice1RPA if ((proximidadjugador1[jindice1RPA])!=0) { if ((proximidadjugador1[jindice1RPA]+1)<=nRPAs) { for(jindice1 in 1:nRPAs) 482 Apéndice A. Códigos del programa { if (proximidadjugador1[jindice1]==(proximidadjugador1[jindice1RPA]+1)) { proximidadjugador1[jindice1]<-proximidadjugador1[jindice1]-1 } ## if (proximidadjugador1[ } ## fin del for jindice1 proximidadjugador1[jindice1RPA]<-proximidadjugador1[jindice1RPA]+1 } ## if (proximidadjugador1 } ## if (proximidadjugador1 proximidadjugador2<-proximidadjugador1 ## AUMENTAR DISTANCIA SEGUN jindice2RPA if ((proximidadjugador1[jindice2RPA])!=0) { if ((proximidadjugador1[jindice2RPA]+1)<=nRPAs) { for(jindice1 in 1:nRPAs) { if (proximidadjugador1[jindice1]==(proximidadjugador1[jindice2RPA]+1)) { proximidadjugador1[jindice1]<-proximidadjugador1[jindice1]-1 483 Apéndice A. Códigos del programa } ## if (proximidadjugador1[ } ## fin del for jindice1 proximidadjugador1[jindice2RPA]<-proximidadjugador1[jindice2RPA]+1 } ## if (proximidadjugador1 } ## if (proximidadjugador1 proximidadjugador2<-proximidadjugador1 ## ASIGNACIONES matrizentropiajugador1[jiteraciones,1:nRPAs]<-entropiajugador1 matrizentropiajugador1[jiteraciones,(nRPAs+1)]<-sum(entropiajugador1) matrizproximidadjugador1[jiteraciones,1:nRPAs]<-proximidadjugador1 matrizproximidadjugador1[jiteraciones,(nRPAs+1)]<-sum(proximidadjugador1) } ## Fin del bucle for jiteraciones 484 Apéndice A. Códigos del programa 485 Referencias [1] Alexandros Karatzoglou, David Meyer y Kurt Hornik, Support Vector Machines in R, Journal of Statistical Software, April 2006. [2] Ana González Muñiz, Aplicaciones de técnicas de inteligencia artificial basadas en aprendizaje profundo (deep learning) al análisis y mejora de la eficiencia de procesos industriales, Universidad de Oviedo, 2018. [3] Antonio Magaña Nieto, Formación de coaliciones en los juegos cooperativos y juegos con múltiples alternativas, Tesis doctoral, Universidad de Cataluña, 1996. [4] Argel A. Bandala, Elmer P. Dadios, Ryan Rhay P. Vicerra y Laurence A. Gan Lim, Swarming Algorithm for Unmanned Aerial Vehicle (UAV) Quadrotors –Swarm Behavior for Aggregation, Foraging, Formation, and Tracking, De La Salle University, Manila, 2014. [5] Beatriz Hernández Pajares, Clasificación automática multiclase de tweets y su representación gráfica, Universidad Rey Juan Carlos, 2014. [6] Carlos Cotta, Una Visión General de los Algoritmos Meméticos, ETSI Informática, 2007. [7] Casillas, González de Lena y Martínez, Algoritmo de Clustering On Line utilizando Metaheurísticas y Técnicas de Muestreo, XIX Congreso de SEPLN, 2004. [8] César Adrián Muñoz, Ramón A. Gallego y Eliana Mirledy Toro, Comparación del desempeño computacional de los algoritmos genéticos de Chu-Beasley y colonia de hormigas en la solución del problema de p-centdiana, Universidad Tecnológica de Pereira, Vereda La Julita, Pereira, Risaralda, Colombia. 486 Referencias [9] Chang-Su Park, Min-Jea Tahk y Hyochoong, Bang Multiple Aerial Vehicle Formation Using Swarm Intelligence, Korea Advanced Institute of Science Technology (KAIST), 2003. [10] Chen Shi-Ming y Fang Hua-Jing, Modelling And Stability Analysis of Emergent Behavior of Scalable Swarm System, Department of Control Science And Engineering, Huazhong University of Science And Technology, Wuhan, School of Electrical And Electronic Engineering, East China Jiaotong University, Nanchang, 2006. [11] Cheney, W. y Kincaid, D., Numerical Mathematics and Computing, Brooks Cole, 2004. [12] Daniel Jiménez Galindo, Diseño de filtros digitales IIR mediante algoritmos meméticos híbridos tipo SFLA, Universidad de Valladolid, 2018. [13] David Meyer, Evgenia Dimitriadou, Kurt Hornik, Andreas Weingessel, Friedrich Leisch, Chih-Chung Chang (libsvm C++-code) y Chih-Chen Lin (libsvm C++-code), Package “e1071” de r-project, 2017. [14] David Meyer, Support Vector Machines The Interface to libsvm in package e1071, FH Technikum Wien, Austria, 2019. [15] De Nardi Renzo y Owen Holland, UltraSwarm: A Further Step Towards a Flock of Miniature Helicopters, University of Essex, 2006. [16] De Nardi Renzo, Flocking of UAVs Software model and limited vision simulations, Università degli Studi di Padova, 2004. [17] Dustin J. Nowak, Exploitation of self organization in UAV swarms for optimization in combat environments, Thesis, Air force institute of technology, Wright Patterson, 2003. [18] E. W. Justha y P. S. Krishnaprasad, A Simple Control Law for UAV Formation Flying, Institute for Systems Research University of Maryland, 2002. [19] Eliana Mirledy Toro Ocampo, Mauricio Granada Echeverry y Rubén Romero, Algoritmo memético aplicado a la solución del problema de asignación generalizada, Universidad Tecnológica de Pereira, 2005. 487 Referencias [20] Elvio Accinelli y Daniel Vaz, Introducción a la Teoría de Juegos, Universidad de la República, 2006. [21] Ender Ozcana, John H. Drakeb, Cevriye Altintas y Shahriar Asta, A Self-adaptive Multimeme Memetic Algorithm Co-evolving Utility Scores to Control Genetic Operators and Their Parameter Settings, University of Nottingham, 2016. [22] Enrique Alba Torres, Análisis y Diseño de Algoritmos Genéticos Paralelos Distribuidos, Tesis Doctoral, Universidad de Málaga, 2015. [23] Enrique Alba, Manuel Laguna y Rafael Martí, Métodos Evolutivos, Universidad de Valencia, 2005. [24] Enrique Gabriel Baquela y Andrés Redchuk, Optimización Matemática con R, Bubok Publishing, S.L., 2013. [25] Eva M. García Polo, Técnicas de Localización en Redes Inalámbricas de Sensores, Instituto de Investigación en Informática de Albacete, Universidad de Castilla-La Mancha, 2008. [26] F. A. Estévez, Aplicación de algoritmos EPSO Y SVM a la inteligencia de enjambres de RPAS en misiones de saturación de defensas e ISR, Universidad Politécnica de Cartagena, 2018. [27] F. A. Estévez, Coordinación del vuelo autónomo cooperativo de un enjambre de nano-RPAs mediante tratamiento estadístico de imágenes, V Congreso Nacional de i+d en Defensa y Seguridad, 2017. [28] F. A. Estévez, Determinación de Maniobras Evasivas Óptimas de una Aeronave Contra Misil. Aplicación de los Algoritmos Genéticos a la Identificación y Caracterización del Misil Agresor, IV Congreso Nacional de i+d en Defensa y Seguridad, 2016. [29] F. A. Estévez, Tecnologías de control y coordinación de enjambres de RPAs, VI Congreso Nacional de i+d en Defensa y Seguridad, 2018. [30] F. Aguirre, Determinación de maniobras evasivas óptimas de una aeronave contra misil. Aplicación de los algoritmos genéticos a la identificación y caracterización del misil agresor. Universidad de Alcalá, 2016. 488 Referencias [31] F. Aguirre, Enjambres de RPAs, una mirada al futuro, Revista Aeronáutica y Astronáutica, diciembre 2016. [32] F. Aguirre, Inteligencia artificial aplicada a la aviación, Revista Aeronáutica y Astronáutica, diciembre 2019. [33] F. Aguirre, Inteligencia de enjambres de RPAs en misiones SEAD, VII Congreso Nacional de i+d en Defensa y Seguridad, 2019. [34] F. Aguirre, Investigación de enjambres. Bengalas y nano-RPA, Revista Aeronáutica y Astronáutica, mayo 2018. [35] F. Aguirre, Mantenimiento de RPAs: un nuevo reto, Revista Aeronáutica y Astronáutica, noviembre 2015. [36] F. Aguirre, Mantenimiento de software aeronáutico en el Ejército del Aire. Aplicación a RPAs, Revista Aeronáutica y Astronáutica, marzo 2017. [37] F. Aguirre, Modelización de proyectiles base-burn, Tesis Doctoral, Escuela Politécnica, 2009. [38] Fernando Fernández Rodríguez, Teoría de juegos: análisis matemático de conflictos, Universidad de Las Palmas de Gran Canaria, 2005. [39] Francisco Cucharero Pérez, Balística exterior, Ministerio de Defensa, 1992. [40] Francisco Cucharero Pérez, Guiado y Control de Misiles, Ministerio de Defensa, 1995. [41] Francisco de Borja Ibarrondo Hernández, Optimization of Integrated Guidance and Control for a Dual Aerodynamic Control Missile, Tesis Doctoral, UPM, 2015. [42] Gilles Labonté, Self organization of formations and swarms, Royal Military College, Kingston, Ontario, 2010. [43] Ginés Rubio Flores, Modelos avanzados de inteligencia computacional para aproximación funcional y predicción de series temporales en arquitecturas paralelas, Tesis Doctoral, Universidad de Granada, 2010. [44] Gonzalo Arévalo Iglesias, Valores para Juegos con Externalidades: Revision teórica y aplicación al ambito parlamentario, Universidad de Vigo, 2018. 489 Referencias [45] Guido Maria Cortelazzo, Adrian F. Clark, y John C. Woods, Flocking of UAVs Software Model and Limited Vision Simulations, University of Padova, 2004. [46] H. Van Dyke Parunak y Sven A. Brueckner, The Cognitive Aptitude of Swarming Agents, Vector Research Center of TTGSI, Ann Arbor, 2017. [47] Hernández López, Predicción económica con algoritmos genéticos: operadores genéticos versus matriz de transición, Estadística Española, Vol. 46, nº 157, pp. 389-407, 2004. [48] https://es.wikipedia.org. [49] https://www.r-project.org/, 2018. [50] J.D. Knowles y D.W. Corne, M-PAES: a memetic algorithm for multiobjective optimization, Proceedings of the 2000 Congress on Evolutionary Computation, 2000. [51] J.M. Alonso-Meijide, B. Casas-Méndez y M.G. Fiestras-Janeiro, Computing Banzhaf–Coleman and Shapley–Shubik power indices with incompatible players, Applied Mathematics and Computation, 2015. [52] James T. Lotspeich, Distributed control of a swarm of autonomous unmanned aerial vehicles, Thesis, Air force institute of technology, Wright Patterson, 2003. [53] Jesús Mario Bilbao, Introducción a la teoría de juegos no cooperativos, Universidad de Sevilla, 1995. [54] Jesús Ramón Pérez y José Basterrechea, Aplicación de algoritmos genéticos y recocido simulado a la reconstrucción del diagrama de radiación de antenas, Dpto. Ing. Comunicaciones ETSIIT Universidad de Cantabria [55] Joaquín Pacheco Bonrostro, Silvia Casado Yusta y Laura Núñez Letamendia, Algoritmos meméticos para selección de variables en el análisis discriminante, Estadística Española, 2007. [56] Jorge Oviedo, Teoría de Juegos No Cooperativa, Universidad de San Luis, 2005. [57] José de Rugeles y Deiby Leó, Técnicas de localización de nodos inalámbricos mediante redes de sensores, Universidad Militar Nueva Granada, Bogotá, 2013. 490 Referencias [58] José Luis Ferreira y Diego Moreno, Cooperación y renegociación en juegos no cooperativos, Universidad Carlos III, 1995. [59] José María Alonso Meijide y Balbina Casas Méndez, Generating functions: a useful tool for computing power índices, Boletín de Estadística e Investigación Operativa, 2009. [60] José María Alonso Meijide, Contribuciones a la teoría del valor en juegos cooperativos con condicionamientos exógenos, Universidad de Santiago de Compostela, 2002. [61] Joshua J. Corner, Swarming reconnaissance using unmanned aerial vehicles In A Parallel discrete event simulation, Thesis, Air force institute of technology, Wright Patterson, 2004. [62] Juan Angel Resendiz Trejo, Las máquinas de vectores soporte para identificación en línea, Centro de Investigación y de Estudios Avanzados del Instituto Politécnico Nacional, México, 2006. [63] Julian Costa Bouzas, Valores coalicionales en juegos cooperativos con utilidad transferible, Tesis doctoral, Universidad de la Coruña, 2015. [64] K. Zettl, S. S. Muhammad, C. Chlestil, E. Leitgeb, A. Friedl, N. P. Schmitt y W. Rehm, High bit rate optical wireless systems for swarm unmanned aerial vehicles: A feasibility study, Institute of Broadband Communications, Graz University of Technology, Graz, Austria y EADS Innovation Works, Munich, Germany, 2007. [65] Kevin M. Milam, Evolution of control programs for a swarm of autonomous unmanned aerial vehicles, Thesis, Air force institute of technology, Wright Patterson, 2004. [66] Laura Mariana Ramirez Pedraza, Juegos Cooperativos en la Repartición de los Beneficios dados por un Río, Centro de Investigaciones en Matemáticas A.C., 2016. 491 Referencias [67] Li Bing, Li Jie y Huang Ke Wei, Modeling and Flocking Consensus Analysis for Large-Scale UAV Swarms, School of Mechatronical Engineering, Beijing Institute of Technology, Beijing, 2013. [68] López de Haro, Sánchez Martín y Conde Collado, Secuenciación de tareas mediante metaheurísticos, VIII Congreso de Ingeniería de Organización, 2004. [69] Luis Carlos Betancourt Rodríguez, Una metaheurística de recocido simulado para el problema de maximización del antibandwidth en grafos, Centro de Investigación y de Estudios Avanzados del Instituto Politécnico Nacional, 2011. [70] M. Estela Sánchez Rodríguez, Juegos cooperativos que describen modelos en los que el orden es inherente al problema, Universidad de Santiago de Compostela, 1999. [71] Manju Sharma, Memetic Algorithm with Hybrid Mutation Operator, International Journal of Computer Science and Mobile Computing, 2014. [72] Marco Mamei, Franco Zambonelli y Letizia Leonardi, Co-Fields: an Adaptive Approach for Motion Coordination, Università di Modena e Reggio Emilia, 2005. [73] Marco Mamei, Franco Zambonelli, Letizia Leonardi, Co-Fields: A Physically Inspired Approach to Distributed Motion Coordination, Università di Modena e Reggio Emilia, 2004. [74] Marco Mamei, Franco Zambonelli, Letizia Leonardi, Co-Fields: Towards a Unifying Model for Swarm Intelligence, Università di Modena e Reggio Emilia, 2002. [75] María Candelaria Espinel Febles, Sistema de reparto de poder en las elecciones locales, Revista de didáctica de las matemáticas, 1999. [76] María López Bautista, El salto cualitativo de Deep Learning en problemas de clasificación, Universitad Oberta de Cataluña, 2018. [77] Mario A. Muñoz, Jesús A. López y Eduardo F. Caicedo, Inteligencia de enjambres: sociedades para la solución de problemas, Revista ingeniería e investigación, Agosto de 2008. [78] Matías Schuster Puga, Estructuras Jerárquicas y Juegos Cooperativos con Utilidad Transferible, Universidad de Vigo, 2013. 492 Referencias [79] Melián, Moreno Pérez, J. A. y Moreno Vega J. M., Metaheuristics: A global view, Inteligencia Artificial Revista Iberoamericana de Inteligencia Artificial, nº 19, pp. 7-28, 2003. [80] Melián, Optimización Metaheurística para la planificación de redes WDM, Tesis Doctoral Universidad de la Laguna, 2003. [81] Mercedes Guevara Velázquez, Cooperación e Índices de Poder, Universidad de Salamanca, 2015. [82] Mini, Micro, and Swarming UAVs: a baseline study, Library of Congress - Federal Research Division, Washington D.C., 2006. [83] Natalio Krasnogor and Jim Smith, A Tutorial for Competent Memetic Algorithms: Model, Taxonomy, and Design Issues, IEEE Transactions on Evolutionary Computation, 2005. [84] Nils J. Nilsson, Inteligencia artificial una nueva síntesis, McGraw Hill, 2000. [85] Nilton Luiz Queiroz Junior, Luis Gustavo Araujo Rodriguez y Anderson Faustino da Silva, Combining Machine Learning with a Genetic Algorithm to Find Good Complier Optimizations Sequences, 19th International Conference on Enterprise Information Systems, 2017. [86] Owen Holland, de Nardi Renzo, John Woods, Renzo De Nardi y Adrian Clark, Beyond swarm intelligence: the UltraSwarm, University of Essex, 2005. [87] Puente del Campo, M. Albina, Aportaciones a la representabilidad de juegos simples y al cálculo de soluciones de esta clase de juegos, Tesis doctoral, Universidad de Cataluña, 2004. [88] Ramírez Ríos, Diana Gineth, Cooperación en la cadena de suministro de la energía eléctrica en Colombia, Universidad del Norte, 2009. [89] Robert W. Chalmers, David H. Scheidt, Todd M. Neighoff, Stephan J. Witwicki y Robert J. Bamberger, Cooperating Unmanned Vehicles, Johns Hopkins University Applied Physics Laboratory, 1st Intelligent Systems Technical Conference, Chicago, 2004. 493 Referencias [90] Santana Sepúlveda, Julio Sergio, El arte de programa en R: un lenguaje para la estadística, Instituto Mexicano de Tecnología del Agua, 2014. [91] Seijas Macías, J. Antonio, Índices de Poder. Como evaluar el poder, Anales de ASEPUMA, Universidad de La Coruña, 2015. [92] Sergio Monsalve, John Nash y la teoría de juegos, Universidad Nacional de Colombia, 2003. [93] Shripad Gade y Ashok Joshi, Heterogeneous UAV Swarm System for Target Search in Adversarial Environment, Department of Aerospace Engineering Indian Institute of Technology Mumbai, 2013. [94] Su-Cheol Han y Hyochoong Bang, Proportional Navigation-Based Optimal Collision Avoidance for UAVs, 2d International Conference on Autonomous Robots and Agents, December, Palmerston North, New Zealand, 2004. [95] Tecnologías asociadas a sistemas de enjambres de μUAV, Centro Superior de Estudios de la Defensa Nacional, Ministerio de Defensa, 2012. [96] Veysel Gazi, Stability Analysis of Swarms, Tesis Doctoral, Universidad Estatal de Ohio, 2002. [97] Walter Mora, Cómo utilizar R en métodos numéricos, Revista digital, Matemática, Educación e Internet (http://tecdigital.tec.ac.cr/revistamatematica/), Vol 16, No 1. Setiembre Febrero 2016. [98] William José Olvera López, Aportaciones a la teoría del valor para juegos cooperativos con estructuras coalicionales, Centro de Investigaciones en Matemáticas A.C., 2007. [99] Yuri Cristian Bernal Peña, Algoritmo Memético Autoadaptativo Para Solución De Problemas Combinatorios, Universidad Distrital Francisco Jose de Caldas, 2017. [100] Yvonne Gala Garcia, Algoritmos SVM para problemas sobre big data, Universidad Autónoma de Madrid, 2013. 494 Referencias 495 Referencias 496