Subido por Fernando Aguirre

FERNANDO AGUIRRE ESTEVEZ p

Anuncio
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
Descargar