Está en la página 1de 81

INTELIGENCIA ARTIFICIAL

APLICADA A SISTEMAS ELÉCTRICOS DE POTENCIA

POR

DR.- ING. PAÚL FABRICIO VÁSQUEZ MIRANDA

APUNTES PARA CURSO DE POSGRADO DE LA


FACULTAD INGENIERÍA ELÉCTRICA
ESCUELA POLITÉCNICA NACIONAL
QUITO - ECUADOR

Octubre 2017 – Febrero 2018

i
LINEAMIENTOS GENERALES
El curso se lleva a cabo los sábadoa de 7:00 a 10:00. La bibliografía de
referencia que se utilizará en este curso (la cual será entregada a los alumnos
en archivos *.pdf), se encuentra en idioma inglés. Las exposiciones y clases se
llevarán en español.
Con fines ilustrativos y académicos, se realizarán clases prácticas, en las cuales
se desarrollarán ejemplos numéricos ejecutados en Microsoft EXCEL y
Matlab. De ahí que el conocimiento de esta herramienta computacional es un
requisito para el desarrollo de esta asignatura.
La evaluación de los alumnos se realizará, tanto en el primer como en el
segundo bimestre, mediante deberes, una prueba y un trabajo. Un mínimo de
asistencia del 80% del total de las clases es requerido.
Los deberes que se envíen en una clase, deberán ser entregados al profesor, vía
e-mail en archivo WORD, hasta un día antes de la siguiente clase.
Cada trabajo bimestral consiste en la presentación de un informe (en Microsoft
WORD) referente a la resolución de un problema específico de ingeniería
eléctrica, mediante la aplicación de una herramienta computacional diseñada
por el alumno, sobre la base de lo explicado en clases. La estructura del trabajo
deberá contener obligatoriamente: el planteamiento del problema, la
metodología de resolución propuesta, el algoritmo desarrollado,

Contacto:
e-mail: pvasquezm@gmail.com
celular: 0995395389

ii
MARCO CONCEPTUAL
“Programming is like sex, one mistake and you have to support it for the rest
of your life”
La Inteligencia Artificial, IA, con orientación al campo de la Ingeniería
Eléctrica, es una materia fundamental en la formación académica de los
estudiantes de la carrera de posgrado de la Facultad de Ingeniería Eléctrica ya
que la gran mayoría de las tareas a ser enfrentadas, en la práctica, por los
ingenieros, requieren herramientas computacionales que tengan distintos
grados de conocimiento del problema, (conocimiento ya sea cargado por el
usuario o adquirido por la herramienta como consecuencia de la realización de
múltiples experimentos). Las técnicas para incorporar dicho conocimiento se
basan en distintas características de los seres humanos y en general de los seres
vivos (agente inteligente). En efecto, se considera la presencia de IA cuando
un agente inteligente presenta uno o varios de estos atributos:
 Tiene actitudes mentales tales como creencias e intenciones.
 Tiene la capacidad de obtener conocimiento, es decir, aprender.
 Puede resolver problemas, incluso particionando problemas complejos en
otros más simples.
 Entiende. Posee la capacidad de crearle sentido, si es posible, a ideas
ambiguas o contradictorias.
 Planifica, predice consecuencias, evalúa alternativas (como en los juegos
de ajedrez)
 Conoce los límites de sus propias habilidades y conocimientos.
 Puede distinguir a pesar de la similitud de las situaciones.
 Puede ser original, creando incluso nuevos conceptos o ideas, y hasta
utilizando analogías.
 Puede generalizar.
 Puede percibir y modelar el mundo exterior.
 Puede entender y utilizar el lenguaje y sus símbolos.
Por tanto, se puede decir que la IA incluye características de los seres humanos
tales como el aprendizaje, la adaptación, el razonamiento, la autocorrección, el
mejoramiento implícito, y la percepción del mundo.
Diversas combinaciones de los atributos expuestos anteriormente pueden estar
presentes al mismo tiempo en un agente inteligente. Así, modelos
computacionales con múltiples habilidades pueden construirse, dependiendo
de los requerimientos del problema a ser resuelto.
A continuación se mencionan algunos tópicos que se consideran campos de la
IA:
 Aprendizaje Automático (Machine Learning)
 Ingeniería del conocimiento (Knowledge Engineering)
 Lógica difusa (Fuzzy Logic)
 Redes neuronales artificiales (Artificial Neural Networks)
 Sistemas reactivos (Reactive Systems)
 Sistemas multi-agente (Multi-Agent Systems)
 Sistemas basados en reglas (Rule-Based Systems)
 Razonamiento basado en casos (Case-Based Reasoning)
 Sistemas expertos (Expert Systems)
 Redes Bayesianas (Bayesian Networks)
 Vida artificial (Artificial Life). La VA no es un campo de la IA, sino que
la IA es un campo de la VA.
o Computación evolutiva (Evolutionary Computation)
o Estrategias evolutivas
o Algoritmos genéticos (Genetic Algorithms)
 Técnicas de Representación de Conocimiento
o Redes semánticas (Semantic Networks)
o Frames
 Lingüística computacional
 Minería de datos (Data Mining)
Abordar en detalle la totalidad de campos de la inteligencia artificial, es una
tarea que en un solo curso no puede llevarse a cabo satisfactoriamente. Por tal
motivo, en este curso se abordará con profundidad el campo de la vida artificial
en relación con el desarrollo de algoritmos de búsqueda aplicados en la
resolución de problemas combinatorios con la ayuda de inteligencia
computacional evolutiva.
DEBER No. 1
Presentar en archivo word, una breve conceptualización y las principales
características, alcances y aplicaciones de los tópicos considerados como
campos de la Inteligencia Artificial. Profundizar en aquel campo que sea de
interés del alumno y detallar las perspectivas de aplicación de dicha técnica
dentro de la ingeniería eléctrica.
iv
Aprendizaje Automático:
El aprendizaje es un factor primordial para satisfacer las necesidades de la
inteligencia artificial.
El objetivo del Aprendizaje Automático o Máquinas de Aprendizaje es
desarrollar técnicas que permitan a las computadoras aprender. De forma más
concreta, se trata de crear programas capaces de generalizar comportamientos
a partir de una información no estructurada suministrada en forma de ejemplos.
Es, por lo tanto, un proceso de inducción del conocimiento. En muchas
ocasiones el campo de actuación del Aprendizaje Automático se solapa con el
de la Estadística, ya que las dos disciplinas se basan en el análisis de datos. Sin
embargo, el Aprendizaje Automático se centra más en el estudio de la
Complejidad Computacional de los problemas. El Aprendizaje Automático
puede ser visto como un intento de automatizar algunas partes del Método
Científico mediante métodos matemáticos.
Algunos sistemas de Aprendizaje Automático intentan eliminar toda necesidad
de intuición o conocimiento experto de los procesos de análisis de datos,
mientras otros tratan de establecer un marco de colaboración entre el experto
y la computadora. De todas formas, la intuición humana no puede ser
reemplazada en su totalidad, ya que el diseñador del sistema ha de
especificar la forma de representación de los datos y los métodos de
manipulación y caracterización de los mismos.

En el Aprendizaje Automático podemos obtener 3 tipos de conocimiento los


cuáles son:

1. Crecimiento: Es el que se adquiere de lo que nos rodea, el cual guarda la


información en la memoria como si dejara huellas.
2. Reestructuración: Al interpretar los conocimientos el individuo razona y
genera nuevo conocimiento al cual se le llama de reestructuración.
3. Ajuste: Es el que se obtiene al generalizar varios conceptos o generando los
propios.
Los tres tipos se efectúan durante un proceso de Aprendizaje Automático pero
la importancia de cada tipo de conocimiento depende de las características de
lo que se está tratando de aprender.
Ingeniería del Conocimiento:

La ingeniería del conocimiento es aquella disciplina moderna que forma parte


de la Inteligencia Artificial y cuyo fin es el diseño y desarrollo de Sistemas
Expertos (o Sistemas Basados en el Conocimiento SS.BB.CC). Para ello, se
apoya en metodologías instruccionales y en las ciencias de la computación y
de las tecnologías de la información, intentando representar el conocimiento y
razonamiento humanos en un determinado dominio, dentro de un sistema
artificial.

El trabajo de los ingenieros del conocimiento consiste en extraer el


conocimiento de los expertos humanos en un determinado área, y en codificar
dicho conocimiento de manera que pueda ser procesado por un sistema.

El problema es que el ingeniero del conocimiento no es un experto en el campo


que intenta modelar, mientras que el experto en el tema no tiene experiencia
modelando su conocimiento (basado en la heurística) de forma que pueda ser
representado de forma genérica en un sistema.

La ingeniería del conocimiento engloba a los científicos, tecnología y


metodología necesarios para procesar el conocimiento. Su objetivo es extraer,
articular e informatizar el conocimiento de un experto.

Este trabajo de extracción del conocimiento (Knowledge elicitation) se realiza


durante la interacción entre dos personajes, el ingeniero del conocimiento (IC)
(persona que conoce el formalismo de representación que utilizará el SBC) y
el experto (persona que posee el conocimiento, pero que no tiene por qué usar
un formalismo para representarlo).

Durante las entrevistas entre el IC y el experto, el primero ha de ayudar a


sistematizar el conocimiento del experto, consiguiendo que vaya explicitando
las diferentes técnicas que utiliza para resolver los problemas de su dominio,
de manera que se puedan representar en un formalismo computable. Esta
metodología de extracción del conocimiento es bastante lenta (se cita que se
suele extraer información equivalente a de dos a cinco reglas de producción
por día).

Varias son las dificultades que dan una producción tan baja a esta metodología:

vi
 La naturaleza especializada del dominio hace que el IC deba aprender unas
nociones básicas para que pueda establecerse una comunicación
(Vocabulario básico, elementos que intervienen en el dominio,
formalismos que utilizan los expertos, etc.).
 Los expertos se encuentran más cómodos pensando en términos de
ejemplos típicos que razonando en términos generales, que son de los que
realmente se podría hacer una mejor abstracción.
 La búsqueda de un formalismo de representación que se adapte
adecuadamente al problema y que sea fácil de interpretar y adoptar por el
experto. Este formalismo ha de ser susceptible de ser transformado en algo
computable.
 Por lo general, a los expertos les es muy difícil explicitar los pasos que
utilizan para resolver los problemas. Es la que se ha denominado paradoja
del experto. Cuanta más experiencia, menos explícitos son los
razonamientos del experto y más ocultos los métodos de resolución.
Si observamos cómo un experto resuelve un problema, éste omite muchas
cadenas de razonamiento e información que da por supuesta, y a la que no
asigna importancia dentro de la resolución, pero que si se quiere abordar
de manera sistemática sí es necesaria.

Con todas estas circunstancias, podemos observar que la auténtica dificultad


de la extracción del conocimiento estriba en descubrir los métodos mediante
los que se usa el conocimiento en la resolución y no tanto en la adquisición del
conocimiento estático del problema (elementos del problema y relaciones).

Sobre la adquisición de los elementos básicos del dominio, existen bastantes


herramientas automáticas, encuadradas dentro del área del aprendizaje
automático, que permiten reducir el esfuerzo. Sobre la adquisición automática
de conocimiento de resolución de problemas, también hay algunas técnicas
automáticas, pero que por lo general son a niveles bastante básicos.
Lógica Difusa:

La lógica difusa o lógica borrosa se basa en lo relativo de lo observado. Este


tipo de lógica toma dos valores aleatorios, pero contextualizados y referidos
entre sí. Así, por ejemplo, una persona que mida 2 metros es claramente una
persona alta, si previamente se ha tomado el valor de persona baja y se ha
establecido en 1 metro. Ambos valores están contextualizados a personas y
referidos a una medida métrica lineal.
La lógica difusa se adapta mejor al mundo real en el que vivimos, e incluso
puede comprender y funcionar con nuestras expresiones, del tipo "hace mucho
calor", "no es muy alto", "el ritmo del corazón está un poco acelerado", etc.

La clave de esta adaptación al lenguaje, se basa en comprender los


cuantificadores de nuestro lenguaje (en los ejemplos de arriba "mucho", "muy"
y "un poco").

En la teoría de conjuntos difusos se definen también las operaciones de unión,


intersección, diferencia, negación o complemento, y otras operaciones sobre
conjuntos en los que se basa esta lógica.

Para cada conjunto difuso, existe asociada una función de pertenencia para sus
elementos, que indican en qué medida el elemento forma parte de ese conjunto
difuso. Las formas de las funciones de pertenencia más típicas son
trapezoidales, lineales y curvas.

Se basa en reglas heurísticas de la forma SI (antecedente) ENTONCES


(consecuente), donde el antecedente y el consecuente son también conjuntos
difusos, ya sea puros o resultado de operar con ellos. Sirvan como ejemplos de
regla heurística para esta lógica (nótese la importancia de las palabras
"muchísimo", "drásticamente", "un poco" y "levemente" para la lógica difusa):

 SI hace muchísimo calor ENTONCES disminuyo drásticamente la


temperatura.
 SI voy a llegar un poco tarde ENTONCES aumento levemente la
velocidad.

Los métodos de inferencia para esta base de reglas deben ser simples, veloces
y eficaces. Los resultados de dichos métodos son un área final, fruto de un
conjunto de áreas solapadas entre sí (cada área es resultado de una regla de
inferencia). Para escoger una salida concreta a partir de tanta premisa difusa,
el método más usado es el del centroide, en el que la salida final será el centro
de gravedad del área total resultante.

Las reglas de las que dispone el motor de inferencia de un sistema difuso


pueden ser formuladas por expertos, o bien aprendidas por el propio sistema,
haciendo uso en este caso de redes neuronales para fortalecer las futuras tomas
de decisiones.

viii
En cuanto a las aplicaciones generales, la lógica difusa se utiliza cuando la
complejidad del proceso en cuestión es muy alta y no existen modelos
matemáticos precisos para procesos altamente no lineales y cuando se
envuelven definiciones y conocimiento no estrictamente definido (impreciso o
subjetivo).

En cambio, no es una buena idea usarla cuando algún modelo matemático ya


soluciona eficientemente el problema, cuando los problemas son lineales o
cuando no tienen solución.

Esta técnica se ha empleado con bastante éxito en la industria, principalmente


en Japón, y cada vez se está usando en gran multitud de campos. La primera
vez que se usó de forma importante fue en el metro japonés, con excelentes
resultados. A continuación se citan algunos ejemplos de su aplicación:

 Sistemas de control de acondicionadores de aire


 Sistemas de foco automático en cámaras fotográficas
 Electrodomésticos familiares (frigoríficos, lavadoras...)
 Optimización de sistemas de control industriales
 Sistemas de reconocimiento de escritura
 Mejora en la eficiencia del uso de combustible en motores
 Sistemas expertos del conocimiento (simular el comportamiento de
un experto humano)
 Tecnología informática
 Bases de datos difusas: Almacenar y consultar información imprecisa.
Para este punto, por ejemplo, existe el lenguaje FSQL.
 ...y, en general, en la gran mayoría de los sistemas de control que no
dependen de un Sí/No.

Como principal ventaja, cabe destacar los excelentes resultados que brinda un
sistema de control basado en lógica difusa: ofrece salidas de una forma veloz
y precisa, disminuyendo así las transiciones de estados fundamentales en el
entorno físico que controle. Por ejemplo, si el aire acondicionado se encendiese
al llegar a la temperatura de 30º, y la temperatura actual oscilase entre los 29º-
30º, nuestro sistema de aire acondicionado estaría encendiéndose y apagándose
continuamente, con el gasto energético que ello conllevaría. Si estuviese
regulado por lógica difusa, esos 30º no serían ningún umbral, y el sistema de
control aprendería a mantener una temperatura estable sin continuos apagados
y encendidos.

Redes Neuronales Artificiales:


Las redes de neuronas artificiales (denominadas habitualmente como RNA o
en inglés como: ANN ) son un paradigma de aprendizaje y procesamiento
automático inspirado en la forma en que funciona el sistema nervioso de los
animales. Se trata de un sistema de interconexión de neuronas en una red que
colabora para producir un estímulo de salida. En inteligencia artificial es
frecuente referirse a ellas como redes de neuronas o redes neuronales.
Las

redes neuronales consisten en una simulación de las propiedades observadas


en los sistemas neuronales biológicos a través de modelos matemáticos
recreados mediante mecanismos artificiales (como un circuito integrado, un
ordenador o un conjunto de válvulas). El objetivo es conseguir que las
máquinas den respuestas similares a las que es capaz de dar el cerebro que se
caracterizan por su generalización y su robustez.

Perceptrón con 2 entradas

Una red neuronal se compone de unidades llamadas neuronas. Cada neurona


recibe una serie de entradas a través de interconexiones y emite una salida. Esta
salida viene dada por tres funciones:
x
Una función de propagación (también conocida como función de excitación),
que por lo general consiste en el sumatorio de cada entrada multiplicada por el
peso de su interconexión (valor neto). Si el peso es positivo, la conexión se
denomina excitatoria; si es negativo, se denomina inhibitoria.
Una función de activación, que modifica a la anterior. Puede no existir, siendo
en este caso la salida la misma función de propagación.
Una función de transferencia, que se aplica al valor devuelto por la función
de activación. Se utiliza para acotar la salida de la neurona y generalmente
viene dada por la interpretación que queramos darle a dichas salidas. Algunas
de las más utilizadas son la función sigmoidea (para obtener valores en el
intervalo [0,1]) y la tangente hiperbólica (para obtener valores en el intervalo
[-1,1]).
Biológicamente, un cerebro aprende mediante la reorganización de las
conexiones sinápticas entre las neuronas que lo componen. De la misma
manera, las RNA tienen un gran número de procesadores virtuales
interconectados que de forma simplificada simulan la funcionalidad de las
neuronas biológicas. En esta simulación, la reorganización de las conexiones
sinápticas biológicas se modela mediante un mecanismo de pesos, que son
ajustados durante la fase de aprendizaje. En una RNA entrenada, el conjunto
de los pesos determina el conocimiento de esa RNA y tiene la propiedad de
resolver el problema para el que la RNA ha sido entrenada.
Por otra parte, en una RNA, además de los pesos y las conexiones, cada
neurona tiene asociada una función matemática denominada función de
transferencia. Dicha función genera la señal de salida de la neurona a partir de
las señales de entrada. La entrada de la función es la suma de todas las señales
de entrada por el peso asociado a la conexión de entrada de la señal. Algunos
ejemplos de entradas son la función escalón de Heaviside, la lineal o mixta, la
sigmoide y la función gaussiana, recordando que la función de transferencia es
la relación entre la señal de salida y la entrada.
Las redes neuronales artificiales (RNA) tienen muchas ventajas debido a que
están basadas en la estructura del sistema nervioso, principalmente el cerebro.
Aprendizaje: Las RNA tienen la habilidad de aprender mediante una etapa que
se llama etapa de aprendizaje. Esta consiste en proporcionar a la RNA datos
como entrada a su vez que se le indica cuál es la salida (respuesta) esperada.
Auto organización: Una RNA crea su propia representación de la información
en su interior, descargando al usuario de esto.
Tolerancia a fallos: Debido a que una RNA almacena la información de forma
redundante, ésta puede seguir respondiendo de manera aceptable aun si se daña
parcialmente.
Flexibilidad: Una RNA puede manejar cambios no importantes en la
información de entrada, como señales con ruido u otros cambios en la entrada
(ej. si la información de entrada es la imagen de un objeto, la respuesta
correspondiente no sufre cambios si la imagen cambia un poco su brillo o el
objeto cambia ligeramente)
Tiempo real: La estructura de una RNA es paralela, por lo cuál si esto es
implementado con computadoras o en dispositivos electrónicos especiales, se
pueden obtener respuestas en tiempo real.
Existe una serie de modelos que aparecen en la mayoría de estudios
académicos y la bibliografía especializada.
Perceptrón, Adaline, Perceptrón multicapa, Memorias asociativas, Máquina de
Boltzmann, Máquina de Cauchy, Propagación hacia atrás (backpropagation),
Redes de Elman, Redes de Hopfield, Red de contrapropagación, Redes de
neuronas de base radial, Redes de neuronas de aprendizaje competitivo, Mapas
Autoorganizados (RNA) (Redes de Kohonen), Crecimiento dinámico de
células, Gas Neuronal Creciente, Redes ART (Adaptative Resonance Theory)
Sistemas Reactivos:

Los sistemas reactivos, a diferencia de los puramente transformacionales,


mantienen una continua interacción con su entorno, respondiendo ante los
estímulos externos en función de su estado interno, El orden de los eventos en
el sistema no es predecible, viene determinado externamente. Esto causa que
su comportamiento sea complejo de analizar y muy sujeto a errores. Muchos
de estos errores pueden causar problemas de seguridad, por lo que a menudo
los sistemas reactivos son también sistemas críticos.

Entre los formalismos utilizados para especificación de sistemas en tiempo real


y sistemas reactivos destacan los métodos estructurados. Son métodos
operacionales que tienen amplia difusión en la industria por ser gráficos,
fáciles de aprender, de utilizar y de revisar. Sin embargo, al no ser métodos
formales, no existe, en general la posibilidad de analizar propiedades tan
importantes como pueden ser las de seguridad.

La ejecución de los sistemas reactivos no tiene por que terminar.

xii
Los sistemas reactivos son inherentemente no deterministas.

Los lenguajes secuenciales no son adecuados para programar sistemas


reactivos.

El orden de ejecución de las instrucciones está predeterminado por la estructura


del lenguaje:

P;

Q; P Q R

R;

En los sistemas reactivos el orden de ejecución de las instrucciones puede venir


determinado por la ocurrencia de eventos externos.

Los métodos estructurados son formalismos usados para especificación de


sistemas en tiempo real y sistemas reactivos, estos tienen amplia difusión en la
industria por ser gráficos, fáciles de aprender de utilizar y de revisar, pero al
no ser métodos formales, no existe la posibilidad de analizar propiedades de
seguridad las cuales son muy importantes.

Sistemas Multiagente:

El dominio del sistema multiagente o de inteligencia artificial distribuida es


una ciencia y una técnica que trata con los sistemas de inteligencia artificial en
red.

El bloque fundamental de construcción de un sistema multiagente, como es de


esperarse, son los agentes.

Aunque no existe una definición formal y precisa de lo que es un agente, éstos


son por lo general vistos como entidades inteligentes, equivalentes en términos
computacionales a un proceso del sistema operativo, que existen dentro de
cierto contexto o ambiente, y que se pueden comunicar a través de un
mecanismo de comunicación inter-proceso, usualmente un sistema de red,
utilizando protocolos de comunicación.
En cierto modo, un sistema multiagente es un sistema distribuido en el cual los
nodos o elementos son sistemas de inteligencia artificial, o bien un sistema
distribuido donde la conducta combinada de dichos elementos produce un
resultado en conjunto inteligente.

Hay que notar que los agentes no son necesariamente inteligentes. Existen
como en todo el resto del dominio de la inteligencia artificial, dos enfoques
para construir sistemas multiagentes:

 El enfoque formal o clásico, que consiste en dotar de los agentes de


la mayor inteligencia posible utilizando descripciones formales del
problema a resolver y de hacer reposar el funcionamiento del sistema
en tales capacidades cognitivas. Usualmente la inteligencia es
definida utilizando un sistema formal (por ejemplo, sistemas de
inferencia lógica) para la descripción, raciocinio, inferencia de nuevo
conocimiento y planificación de acciones a realizar en el medio
ambiente.
 El enfoque constructivista, que persigue la idea de brindarle
inteligencia al conjunto de todos los agentes, para que a través de
mecanismos ingeniosamente elaborados de interacción, el sistema
mismo genere comportamiento inteligente que no necesariamente
estaba planeado desde un principio o definido dentro de los agentes
mismos (que pueden ser realmente simples). Este tipo de conducta es
habitualmente llamado comportamiento emergente.

Como casi todo enfoque informático para la solución de problemas, los


sistemas multiagentes proponen ayudas metodológicas de ingeniería de
software, en este caso metodologías de ingeniería del software orientada a
agentes (en inglés AOSE, Agent Oriented Software Engineering) y notaciones.
Es decir, artefactos de desarrollo que son específicamente concebidos para
crear sistemas basados en agentes.

Ejemplos de metodologías y notaciones de ingeniería de software orientada a


agentes, son:

 Vocales (Voyelles) de Yves Demazeau es una de las primeras


propuestas en el área, y considera la concepción de sistemas
multiagentes desde varios puntos de vista, correspondientes a las
vocales: Agente, Entorno, Interacciones, y Organización.

xiv
 GAIA de Michael Wooldridge y Nick Jennings de la Univ. de
Southampton, propone cómo realizar un análisis basado en roles del
sistema multi-agente.
 MASE de Scott A. Deloach propone agentes como extensiones de
objetos y proporciona la herramienta AgentTool para análisis, diseño
e implementación.
 AgentUML de James Odell, propone una notación, extendiendo
UML, para especificar protocolos de comunicación entre agentes.
 MADKiT es una herramienta de desarrollo, propuesta por Jacques
Ferber, basada en el paradigma Agente-Role-Organización de la
metodología Aalaadin.
 ADELFE del grupo IRIT de la Universidad de Toulouse, trata
especialmente los temas de cooperación entre agentes.
 INGENIAS del grupo GRASIA de la UCM, extiende la metodología
MESSAGE y proporciona un conjunto de herramientas para modelar
y generar código de sistemas multiagente.
 Mas-CommonKADS de Carlos Iglesias en la UPM extiende la
metodología CommonKADS, para sistemas expertos, a agentes,
utilizando estructuración orientada a objetos y lenguajes de
especificación de protocolos como SDL.
 SemanticAgent del grupo LIRIS de la Universidad de Lyon. Basada
en el SWRL

Sistemas Basados en Reglas:

Los sistemas basados en reglas trabajan mediante la aplicación de reglas,


comparación de resultados y aplicación de las nuevas reglas basadas en
situación modificada. También pueden trabajar por inferencia lógica dirigida,
bien empezando con una evidencia inicial en una determinada situación y
dirigiéndose hacia la obtención de una solución, o bien con hipótesis sobre las
posibles soluciones y volviendo hacia atrás para encontrar una evidencia
existente (o una deducción de una evidencia existente) que apoye una hipótesis
en particular.

Algunos ejemplos de sistemas expertos son:

Dendral.- Fue ideado a finales de los años 1970 para generar una
representación estructural de las moléculas orgánicas a partir de los datos de
un espectrógrafo de masas. Tal solución tiene los siguientes pasos:

 Obtener las limitaciones de los datos.


 Generar estructuras candidatas.
 Predecir espectros de masa con los candidatos.
 Comparar los resultados con los datos.

Este sistema ilustra la solución común de resolver problemas en Inteligencia


Artificial (IA) de generación y prueba.

MYCIN.- fue diseñado a mediados de los setenta. Es un sistema interactivo


que diagnostica infecciones bacterianas y suministra la terapia de antibióticos.
MYCIN representa el razonamiento experto como una serie de reglas
condición - conclusión, que relacionan los datos del paciente con hipótesis de
infección y al tiempo estiman la certeza de cada regla. Trabaja hacia atrás con
diagnosis hipotética, empleando reglas para estimar los factores de certeza de
las conclusiones basadas en los factores de certeza de su historial para
comprobar si la evidencia apoya la diagnosis. Si no hay información suficiente
para comprobar la hipótesis, pedirá al médico datos adicionales y evaluarán en
forma exhaustiva todas las hipótesis. Cuando ha finalizado, MYCIN da los
tratamientos para todas aquellas diagnosis que han alcanzado un alto valor de
certeza.

G2 de Gensym[1].- G2 de Gesnym es un programa computacional del tipo


“Rule Engine” para soluciones de procesos críticos que automatizan las
decisiones en tiempo real. Con G2 las organizaciones más grandes del mundo
dedicadas a la manufactura, al servicio público, comunicaciones, transporte
urbano, aeroespaciales, finanzas y gestión gubernamental, maximizan la
agilidad de su negocio y logran mayores niveles de rendimiento.

Entre los usuarios de G2 están:

ABB, Alcan, Codelco, Dow Chemical, DuPont, Ericsson, ExxonMobil,


Foxboro, Petrobrás, Shell, Unilever, Ford, Hitachi, HP, JEA, Lafarge,
Motorola, Nokia, Canal de Panamá, Siemens, Tokio electric and Power,
Toyota, General Electric, NASA, el gobierno de Estados Unidos y muchos
otros.

Razonamiento Basado en Casos:

El Razonamiento basado en casos es el proceso de solucionar nuevos


problemas basándose en las soluciones de problemas anteriores. Un mecánico
de automóviles que repara un motor porque recordó que otro auto presentaba

xvi
los mismos síntomas está usando razonamiento basado en casos. Un abogado
que apela a precedentes legales para defender alguna causa está usando
razonamiento basado en casos. También un ingeniero cuando copia elementos
de la naturaleza, está tratando a esta como una “base de datos de soluciones”.
El Razonamiento basado en casos es una manera de razonar haciendo
analogías. Se ha argumentado que el razonamiento basado en casos es más que
un método poderoso para el razonamiento de computadoras, sino que es usado
por las personas para solucionar problemas cotidianos. Más radicalmente se ha
sostenido que todo razonamiento es basado en casos porque está basado en la
experiencia previa.

Los detractores de Razonamiento basado en casos argumentan que acepta


evidencia anecdótica como su principio de operación sin datos estadísticos
relevantes acerca del problema y la generalización implícita y que por ello no
hay garantía de que la generalización sea correcta. Todo razonamiento
inductivo donde los datos son insuficientes para tener estadísticas relevantes
se basa en evidencia anecdótica.

En el proceso de dividir el razonamiento basado en casos en diferentes


subprocesos se encuentra el ciclo que lo conforman puede ser dividido en 4
procesos claramente diferenciados:

RECORDAR los casos similares al que se analiza.

REUTILIZAR la información y el conocimiento que se tiene en este caso para


resolver el problema.

REVISAR la solución propuesta.

RETENER las partes de esta experiencia que puedan ser útiles para la
resolución de futuros problemas.

La línea de aprendizaje del razonamiento basado en casos es realmente la parte


más importante del sistema, no solo porque es la encargada de ampliar la base
de conocimiento del sistema, si no también porque constituye realmente la
parte que realmente permitirá al sistema evolucionar y seguir creciendo, ya que
sin esta parte, aun teniendo el mejor sistema basado en el razonamiento este
sistema tendría pocos días de vida ya que no seria capaz de aprender y a poco
que cambiasen las cosas externas a su conocimiento no seria capaz de
resolverlas adecuadamente.
Sistemas Expertos:

Los sistemas expertos son llamados así porque emulan el comportamiento de


un experto en un dominio concreto y en ocasiones son usados por éstos. Con
los sistemas expertos se busca una mejor calidad y rapidez en las respuestas
dando así lugar a una mejora de la productividad del experto.

Es una aplicación informática capaz de solucionar un conjunto de problemas


que exigen un gran conocimiento sobre un determinado tema. Un sistema
experto es un conjunto de programas que, sobre una base de conocimientos,
posee información de uno o más expertos en un área específica. Se puede
entender como una rama de la inteligencia artificial. Estos sistemas imitan las
actividades de un humano para resolver problemas de distinta índole (no
necesariamente tiene que ser de inteligencia artificial). También se dice que un
SE se basa en el conocimiento declarativo (hechos sobre objetos, situaciones)
y el conocimiento de control (información sobre el seguimiento de una acción).

Para que un sistema experto sea herramienta efectiva, los usuarios deben
interactuar de una forma fácil, reuniendo dos capacidades para poder
cumplirlo:

1. Explicar sus razonamientos o base del conocimiento: los sistemas


expertos se deben realizar siguiendo ciertas reglas o pasos
comprensibles de manera que se pueda generar la explicación para
cada una de estas reglas, que a la vez se basan en hechos.
2. Adquisición de nuevos conocimientos o integrador del sistema: son
mecanismos de razonamiento que sirven para modificar los
conocimientos anteriores. Sobre la base de lo anterior se puede decir
que los sistemas expertos son el producto de investigaciones en el
campo de la inteligencia artificial ya que ésta no intenta sustituir a los
expertos humanos, sino que se desea ayudarlos a realizar con más
rapidez y eficacia todas las tareas que realiza.

Debido a esto en la actualidad se están mezclando diferentes técnicas o


aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder
tener empresas más seguras. Un ejemplo de estas técnicas sería los agentes que
tienen la capacidad de negociar y navegar a través de recursos en línea; y es
por eso que en la actualidad juega un papel preponderante en los sistemas
expertos.

Un Sistema Experto está conformado por:


xviii
 Base de conocimientos (BC): Contiene conocimiento modelado
extraído del diálogo con un experto.
 Base de hechos (Memoria de trabajo): contiene los hechos sobre un
problema que se ha descubierto durante el análisis.
 Motor de inferencia: Modela el proceso de razonamiento humano.
 Módulos de justificación: Explica el razonamiento utilizado por el
sistema para llegar a una determinada conclusión.
 Interfaz de usuario: es la interacción entre el SE y el usuario, y se
realiza mediante el lenguaje natural.

Principalmente existen tres tipos de sistemas expertos:

 Basados en reglas previamente establecidas.


 Basados en casos o CBR (Case Based Reasoning).
 Basados en redes bayesianas.

En cada uno de ellos, la solución a un problema planteado se obtiene:

 Aplicando reglas heurísticas apoyadas generalmente en lógica difusa


para su evaluación y aplicación.
 Aplicando el razonamiento basado en casos, donde la solución a un
problema similar planteado con anterioridad se adapta al nuevo
problema.
 Aplicando redes bayesianas, basadas en estadística y el teorema de
Bayes.

Ventajas:

 Permanencia: A diferencia de un experto humano un SE (sistema


experto) no envejece, y por tanto no sufre pérdida de facultades con
el paso del tiempo.
 Duplicación: Una vez programado un SE lo podemos duplicar
infinidad de veces.
 Rapidez: Un SE puede obtener información de una base de datos y
realizar cálculos numéricos mucho más rápido que cualquier ser
humano.
 Bajo costo: A pesar de que el costo inicial pueda ser elevado, gracias
a la capacidad de duplicación el coste finalmente es bajo.
 Entornos peligrosos: Un SE puede trabajar en entornos peligrosos o
dañinos para el ser humano.
 Fiabilidad: Los SE no se ven afectados por condiciones externas, un
humano sí (cansancio, presión, etc.).
 Consolidar varios conocimientos.
 Apoyo Académico.

Limitaciones

 Sentido común: Para un Sistema Experto no hay nada obvio. Por


ejemplo, un sistema experto sobre medicina podría admitir que un
hombre lleva 40 meses embarazado, a no ser que se especifique que
esto no es posible ya que un hombre no puede procrear hijos.
 Lenguaje natural: Con un experto humano podemos mantener una
conversación informal mientras que con un SE no podemos.
 Capacidad de aprendizaje: Cualquier persona aprende con relativa
facilidad de sus errores y de errores ajenos, que un SE haga esto es
muy complicado.
 Perspectiva global: Un experto humano es capaz de distinguir cuales
son las cuestiones relevantes de un problema y separarlas de
cuestiones secundarias.
 Capacidad sensorial: Un SE carece de sentidos.
 Flexibilidad: Un humano es sumamente flexible a la hora de aceptar
datos para la resolución de un problema.

Conocimiento no estructurado: Un SE no es capaz de manejar conocimiento


poco estructurado.

Redes Bayesianas:

Una red bayesiana, o red de creencia, es un modelo probabilístico multivariado


que relaciona un conjunto de variables aleatorias mediante un grafo dirigido
que indica explícitamente influencia causal. Gracias a su motor de
actualización de probabilidades, el Teorema de Bayes, las redes bayesianas son
una herramienta extremadamente útil en la estimación de probabilidades ante
nuevas evidencias.

Una red bayesiana es un tipo de red causal. Un híbrido de red bayesiana y


Teoría de la Utilidad es un diagrama de influencia.

Formalmente, las redes Bayesianas son gráficos acíclicos dirigidos cuyos


nodos representan variables y los arcos que los unen codifican dependencias
xx
condicionales entre las variables. Los nodos pueden representar cualquier tipo
de variable, ya sea un parámetro medible (o medido), una variable latente o
una hipótesis. Existen algoritmos que realizan inferencias y aprendizaje
basados en redes bayesianas.

Si existe un arco que une un nodo A con otro nodo B, A es denominado un


padre de B, y B es llamado un hijo de A. El conjunto de nodos padre de un
nodo Xi se denota como padres(Xi). Un gráfico acíclico dirigido es una red
Bayesiana relativa a un conjunto de variables si la distribución conjunta de los
valores del nodo puede ser escrita como el producto de las distribuciones
locales de cada nodo y sus padres:

Si el nodo Xi no tiene padres, su distribución local de probabilidad se toma


como incondicional, en otro caso es condicional. Si el valor de un nodo es
observable - y por tanto etiquetado como observado, dicho nodo es un nodo de
evidencia.

Las redes bayesianas son un tipo de modelos de minería de datos que pueden
ser utilizados en cualquiera de las siguientes actividades de negocio:

 Prevención del fraude


 Prevención del abandono de clientes
 Blanqueo de dinero
 Marketing personalizado
 Mantenimiento preventivo
 Scoring de clientes
 Clasificación de datos estelares

Vida Artificial:

La Inteligencia Artificial se puede considerar como la parte de la Vida


Artificial que pretende reproducir los procesos y comportamientos típicos de
los seres vivos. También podemos definirla como el intento de crear vida, o
algo parecido a la vida, mediante la combinación de símbolos (datos) y
procesos de símbolos (programas) independientemente del soporte físico de
estos símbolos y procesos.
Por una parte están los intentos "hardware" de emulación de vida. Por ejemplo,
es posible construir un pequeño robot con aspecto de ratón capaz de encontrar
la salida de un laberinto.

Por otra parte están las simulaciones "software". Éstas tienen la ventaja de que
permiten construir un gran número de seres vivos y entornos en los que estos
existen, de manera que es más fácil estudiar comportamientos sociales.

Podemos construir los seres artificiales con el objetivo de solucionar los


problemas que a nosotros nos interesen, y que aprendan o colaboren entre ellos
hasta conseguir el resultado deseado.

De esta forma, se puede considerar la Vida Artificial (VA) como un paso más
allá después de la Programación Orientada a Objetos (POO), y sin embargo,
siendo la VA un caso particular de la POO. Es decir, si un objeto es un
elemento que encapsula datos y procedimientos, una entidad artificial es un
elemento que encapsula un objetivo, unos sentidos, unas acciones y unas
creencias. A esto le podemos llamar Programación Orientada a Agentes.

En muchos campos de estudio se plantea la posibilidad de realizar


simulaciones para intentar predecir o ayudar a la toma de decisiones acerca de
ciertos aspectos del mundo real. Hay dos formas de enfocar estas simulaciones.

La primera de ellas se basa en la observación de la realidad, centrando la


atención en los aspectos "a más alto nivel", es decir, precisamente en los que
se pretenden predecir o modificar, y también en aquellos que aparentemente
están más relacionados con éstos. El cerebro humano elabora una teoría acerca
de cómo todos estos aspectos varían. Esta teoría se formaliza en fórmulas,
reglas o algo parecido, y se simula en un ordenador ante diversas condiciones
iniciales. Se observa si el modelo, ante datos históricos del pasado, ofrece
salidas (resultados) que se ajustan a lo esperado según los datos históricos, y
en ese caso, se utiliza para la toma de decisiones en el futuro, ajustando
continuamente el modelo según el error obtenido. En caso de obtener
resultados muy alejados de la realidad, se revisa la teoría inicial,
reescribiéndola por completo, ajustando ciertos aspectos o detallando con
mayor nivel de profundidad los que parecen ser generalizaciones excesivas.

La segunda de ellas se basa en la observación de la realidad, centrando la


atención en los aspectos "a más bajo nivel" del problema, buscando los
xxii
aspectos más sencillos y a la vez con una alta multiplicidad. Es decir, el cerebro
humano identifica aquellas características sencillas que están presentes en
muchas entidades del problema. Mediante fórmulas, reglas o algo parecido, se
define un tipo genérico de entidad que admita estas características, y en un
ordenador se realiza una simulación basada en la generación de un alto número
de estas entidades capaces de interactuar entre sí, con la esperanza en que de
esta interacción emerja el comportamiento complejo que se pretende estudiar.
Inicialmente los agentes genéricos se definen tan sencillos como sea posible
sin dejar de ajustarse al problema. Se observa si el modelo, ante datos
históricos del pasado, ofrece salidas (resultados) que se ajustan a lo esperado
según los datos históricos, y en ese caso, se utiliza para la toma de decisiones
en el futuro, ajustando continuamente el modelo según el error obtenido. En
caso de obtener resultados muy alejados de la realidad, se deduce que la
definición del agente genérico (más su entorno, etc.) es demasiado sencilla y
se va complicando, añadiendo detalles hasta ajustarse suficientemente a la
realidad.

La Vida Artificial también nos ofrece una "visión privilegiada" de nuestra


realidad. No hace falta que las simulaciones por ordenador sean todavía más
complejas, para poder tener el derecho a preguntarnos acerca de si nuestro
propio mundo no será también una "simulación dentro de un cosmo-
ordenador". De hecho, esta pregunta se ha planteado, desde tiempos remotos,
de infinidad de maneras.

Si los ordenadores son capaces de simular universos artificiales poblados por


organismos que mediante la reproducción, las mutaciones y la selección
natural, evolucionan y se hacen cada vez más inteligentes y conscientes,
podríamos interpretar nuestro propio mundo como un "superordenador" donde
nosotros mismos somos los "seres artificiales" que lo habitan, siguiendo el
curso de evolución que El Programador ha deseado.

En el caso de que existiera un creador y una intencionalidad, es decir, si El


Programador que nos ha creado lo ha hecho con algún objetivo, no sería
extraño que ese mismo programador hubiera implementado mecanismos para
que sus "entidades" (nosotros) no escapen a su control. Por ejemplo, podría
haber marcado límites a su movimiento (¿la velocidad de la luz? ¿la gravedad?)
en su ordenador (nuestro universo) ...¿O tal vez el límite de 300.000 km/seg
corresponde con los MHz del ordenador en el que vivimos?.
Pero las limitaciones que el programador fija para controlar a sus entidades
pueden no ser suficientes. Algunos programadores de Vida Artificial quedan a
menudo gratamente sorprendidos por el inesperado comportamiento de sus
pequeñas creaciones, más inteligentes y capaces de lo que cabría esperar en un
primer momento.

Además, los "bugs" (errores) en programación son probablemente una


constante en todos los universos, dimensiones y realidades posibles, así que tal
vez el "programador" haya dejado algún hueco por donde podamos colarnos;
es decir, que es posible que en nuestro mundo existan acciones,
comportamientos, o razonamientos con efectos maravillosos, que están ahí,
accesibles, pero que aún nadie ha realizado, ya sea por ignorancia, mala suerte,
o porque provocan la muerte a quien llega a adquirirlos.

Algoritmos Genéticos:

Un algoritmo es una serie de pasos organizados que describe el proceso que se


debe seguir, para dar solución a un problema específico.

En los años 1970, de la mano de John Henry Holland, surgió una de las líneas
más prometedoras de la inteligencia artificial, la de los algoritmos genéticos.
Son llamados así porque se inspiran en la evolución biológica y su base
genético-molecular. Estos algoritmos hacen evolucionar una población de
individuos sometiéndola a acciones aleatorias semejantes a las que actúan en
la evolución biológica (mutaciones y recombinaciones genéticas), así como
también a una Selección de acuerdo con algún criterio, en función del cual se
decide cuáles son los individuos más adaptados, que sobreviven, y cuáles los
menos aptos, que son descartados. También es denominado algoritmos
evolutivos, e incluye las estrategias evolutiva, la programación evolutiva y la
programación genética. Dentro de esta última se han logrado avances curiosos:

En 1999, por primera vez en la historia, se concedió una patente a un invento


no realizado directamente por un ser humano: se trata de una antena de forma
extraña, pero que funciona perfectamente en las condiciones a las que estaba
destinada. No hay, sin embargo, nada injusto en el hecho de que el autor del
algoritmo genético del que salió la forma de la antena se haya atribuido la
autoría de la patente, pues él escribió el programa e ideó el criterio de selección
que condujo al diseño patentado.

xxiv
Un algoritmo genético es un método de búsqueda dirigida basada en
probabilidad. Bajo una condición muy débil (que el algoritmo mantenga
elitismo, es decir, guarde siempre al mejor elemento de la población sin hacerle
ningún cambio) se puede demostrar que el algoritmo converge en probabilidad
al óptimo. En otras palabras, al aumentar el número de iteraciones, la
probabilidad de tener el óptimo en la población tiende a 1 (uno).

Los algoritmos genéticos establecen una analogía entre el conjunto de


soluciones de un problema, llamado fenotipo, y el conjunto de individuos de
una población natural, codificando la información de cada solución en una
cadena, generalmente binaria, llamada cromosoma. Los símbolos que forman
la cadena son llamados los genes. Cuando la representación de los cromosomas
se hace con cadenas de dígitos binarios se le conoce como genotipo. Los
cromosomas evolucionan a través de interacciones, llamadas generaciones. En
cada generación, los cromosomas son evaluados usando alguna medida de
aptitud. Las siguientes generaciones (nuevos cromosomas), llamada
descendencia, se forman utilizando dos operadores genéticos, de
sobrecruzamiento y de mutación.

Un algoritmo genético puede presentar diversas variaciones, dependiendo de


cómo se aplican los operadores genéticos (cruzamiento, mutación), de cómo
se realiza la selección y de cómo se decide el reemplazo de los individuos para
formar la nueva población. En general, el pseudocódigo consiste de los
siguientes pasos:

 Inicialización: Se genera aleatoriamente la población inicial, que está


constituida por un conjunto de cromosomas los cuales representan las
posibles soluciones del problema. En caso de no hacerlo
aleatoriamente, es importante garantizar que dentro de la población
inicial, se tenga la diversidad estructural de estas soluciones para tener
una representación de la mayor parte de la población posible o al
menos evitar la convergencia prematura.
 Evaluación: A cada uno de los cromosomas de esta población se
aplicará la función de aptitud para saber qué tan "buena" es la solución
que se está codificando.
 Condición de término El AG se deberá detener cuando se alcance la
solución óptima, pero ésta generalmente se desconoce, por lo que se
deben utilizar otros criterios de detención. Normalmente se usan dos
criterios: correr el AG un número máximo de iteraciones
(generaciones) o detenerlo cuando no haya cambios en la población.
Mientras no se cumpla la condición de término se hace lo siguiente:
o Selección Después de saber la aptitud de cada cromosoma se
procede a elegir los cromosomas que serán cruzados en la
siguiente generación. Los cromosomas con mejor aptitud
tienen mayor probabilidad de ser seleccionados.
o Sobrecruzamiento El cruzamiento es el principal operador
genético, representa la reproducción sexual, opera sobre dos
cromosomas a la vez para generar dos descendientes donde
se combinan las características de ambos cromosomas
padres.
o Mutación modifica al azar parte del cromosoma de los
individuos, y permite alcanzar zonas del espacio de
búsqueda que no estaban cubiertas por los individuos de la
población actual.
o Reemplazo una vez aplicados los operadores genéticos, se
seleccionan los mejores individuos para conformar la
población de la generación siguiente

Estrategia Evolutiva:

En informática, las estrategias evolutivas son métodos computacionales que


trabajan con una población de individuos que pertenecen al dominio de los
números reales, que mediante los procesos de mutación y de recombinación
evolucionan para alcanzar el óptimo de la función objetivo.

Cada individuo de la población es un posible óptimo de la función objetivo; la


representación de cada individuo de la población consta de 2 tipos de variables:
las variables objeto y las variables estratégicas. Las variables objeto son los
posibles valores que hacen que la función objetivo alcance el óptimo global y
las variables estratégicas son los parámetros mediante los que se gobierna el
proceso evolutivo o, en otras palabras, las variables estratégicas indican de qué
manera las variables objeto son afectadas por la mutación.

Haciendo una analogía más precisa, el genotipo en las estrategias evolutivas es


el conjunto formado por las variables objeto y las variables estratégicas. Y el
fenotipo son las variables objeto, ya que conforme se da la variación de éstas,
se percibe un mejor o peor desempeño del individuo.

Redes Semánticas:

Una red semántica o esquema de representación en Red es una forma de


representación de conocimiento lingüístico en la que los conceptos y sus
xxvi
interrelaciones se representan mediante un grafo. En caso de que no existan
ciclos, estas redes pueden ser visualizadas como árboles. Las redes semánticas
son usadas, entre otras cosas, para representar mapas conceptuales y mentales.

En un grafo o red semántica los elementos semánticos se representan por


nodos. Dos elementos semánticos entre los que se admite se da la relación
semántica que representa la red, estarán unidos mediante una línea, flecha o
enlace o arista. Cierto tipo de relaciones no simétricas requieren grafos
dirigidos que usan flechas en lugar de líneas.

Existen diversos tipos de relaciones semánticas como la hiponimia,


hiperonimia, la meronimia, etc. Dado un conjunto de conceptos, elementos
semánticos o términos relacionados semánticamente mediante alguna relación
semántica, una red semántica representa estas relaciones en forma de grafo.
Explícitamente, dado un conjunto de términos {t1, t2,..., tn} y cierta relación
semántica simétrica entre ellos se construye un grafo G = (V,A) cumpliendo
las siguientes condiciones:

1. El conjunto V es el conjunto de vértices o nodos del grafo. Este


conjunto estará formado por n elementos (tantos vértices como
términos relacionables). A cada uno de los vértices del grafo
representará uno de los términos, por tanto los vértices del grafo se
llamarán: t1, t2,..., tn.
2. El conjunto A es el conjunto de aristas o líneas del grafo. Dados dos
vértices (términos) del grafo ti y tj existirá una línea aij que une los
vértices ti y tj si y sólo si los términos ti y tj están relacionados.
Si la relación no es simétrica, entonces se usan grafos dirigidos para representar
la relación.

Frames:

Colección de atributos o slots que describen a una clase o a una entidad


miembro de esa clase del mundo real.
Esta estructura se adapta a las condiciones actuales para describirlas mejor
cambiando el contenido de los slots.
Los atributos pueden ser accesado de manera rápida y sin necesidad de ser
computados constantemente.
Las propiedades de las relaciones son fáciles de describir.
Abrazan aspectos de la programación orientada a objetos.
De acuerdo a (Minsky, 1975), los frames son usados para representar de
manera estructurada el estereotipo de una situación.
Nos ajustamos a nuevas situaciones invocando desde la memoria estas
estructuras y llenando los slots de acuerdo a la situación actual.

Lingüística Computacional:

La lingüística computacional es un campo multidisciplinar de la lingüística y


la informática que utiliza la informática para estudiar y tratar el lenguaje
humano. Para lograrlo, intenta modelar de forma lógica el lenguaje natural
desde un punto de vista computacional. Dicho modelado no se centra en
ninguna de las áreas de la lingüística en particular, sino que es un campo
interdisciplinar, en el que participan lingüistas, informáticos especializados en
inteligencia artificial, psicólogos cognoscitivos y expertos en lógica, entre
otros.

Algunas de las áreas de estudio de la lingüística computacional son:

 Corpus lingüístico asistido por ordenador.


 Diseño de analizadores sintácticos (en inglés: parser), para lenguajes
naturales.
 Diseño de etiquetadores o lematizadores (en inglés: tagger), tales
como el POS-tagger.
 Definición de lógicas especializadas que sirvan como fuente para el
Procesamiento de Lenguajes Naturales.
 Estudio de la posible relación entre lenguajes formales y naturales.
 Traducción automática

xxviii
La lingüística computacional se ha dividido en dos ramas:

Lingüística computacional teórica

Basa sus temas de trabajo en la lingüística teórica y en la ciencia cognitiva. Los


aportes de la psicología cognitiva, en especial de la psicolingüística, también
son de especial relevancia, y han dado como resultado la aparición de una
nueva ciencia, la psicolingüística computacional.

Su objetivo es desarrollar teorías lingüísticas computables, es decir, que


puedan ser aplicadas sutilmente a los ordenadores. Dado que las teorías
formales existentes no dan cuenta de todos los fenómenos lingüísticos posibles,
la lingüística computacional teórica se perfila como un incentivo para la
comprensión formal de los procesos lingüísticos, así como un medio para su
demostración práctica. Esto ocurre, por ejemplo, mediante el análisis
automático de grandes corpus lingüísticos, para investigar un fenómeno
lingüístico o probar la validez de una teoría.

Sin embargo, no todas las teorías lingüísticas tienen la pretensión de ser


aplicadas al dominio informático. En efecto, la lingüística cognitiva estudia las
motivaciones de un hablante determinado para expresarse, lo que naturalmente
está lejos de poder ser modelado con un ordenador.

Lingüística computacional aplicada

Es una vertiente de la lingüística computacional con una evidente orientación


tecnológica, lo que ha provocado que con frecuencia sea referida con nombres
como ingeniería lingüística o tecnología del lenguaje humano. Se centra en los
aspectos prácticos que se puedan derivar de la simulación de la conducta
lingüística con medios informáticos.

Su objetivo es crear productos informáticos que incorporen algún componente


en el que intervenga el lenguaje, oral o escrito. Entre ellos figuran:

 El apoyo a los usuarios de computadores con el procesamiento de


texto, por ejemplo, corrección de errores de digitación y ortográficos,
prueba de la corrección gramatical, cambio en ideogramas en japonés
o chino.
 La búsqueda automática en pasajes de texto (búsqueda inteligente de
información) y, por cierto, no solo su forma, sino su significado
(recuperación de información y motores de búsqueda).
 El apoyo al traducir textos en otra lengua (traducción asistida por
ordenador) o también la traducción automática.
 El procesamiento del lenguaje hablado (reconocimiento del habla y
síntesis de habla), por ejemplo, en el servicio de información
telefónico o en aparatos de lectura para ciegos.
 De la búsqueda de información en grande de bibliografías a la
contestación directa de preguntas sobre la base de grandes bancos de
datos (recuperación de información, minería de datos, extracción de
la información).
 El tratamiento de datos presentes lingüísticamente, por ejemplo, la
indexación de literatura, la creación de índices y listas de materias, la
producción de resúmenes y abstracts.
 El apoyo a los autores en la redacción de textos, por ejemplo, en la
búsqueda de la palabra precisa o la terminología correcta.
 La interacción de los usuarios con el computador en lenguaje natural,
tal que los computadores sean accesibles también a las personas que
no tienen suficiente conocimiento de las órdenes específicas
(interfaces hombre-máquina).

Mineria de Datos:

La minería de datos (DM, Data Mining) consiste en la extracción no trivial de


información que reside de manera implícita en los datos. Dicha información
era previamente desconocida y podrá resultar útil para algún proceso. En otras
palabras, la minería de datos prepara, sondea y explora los datos para sacar la
información oculta en ellos.

Bajo el nombre de minería de datos se engloba todo un conjunto de técnicas


encaminadas a la extracción de conocimiento procesable, implícito en las bases
de datos. Está fuertemente ligado con la supervisión de procesos industriales
ya que resulta muy útil para aprovechar los datos almacenados en las bases de
datos.

Las bases de la minería de datos se encuentran en la inteligencia artificial y en


el análisis estadístico. Mediante los modelos extraídos utilizando técnicas de
minería de datos se aborda la solución a problemas de predicción, clasificación
y segmentación.

xxx
Un proceso típico de minería de datos consta de los siguientes pasos generales:

1. Selección del conjunto de datos, tanto en lo que se refiere a las


variables dependientes, como a las variables objetivo, como
posiblemente al muestreo de los registros disponibles.
2. Análisis de las propiedades de los datos, en especial los histogramas,
diagramas de dispersión, presencia de valores atípicos y ausencia de
datos (valores nulos).
3. Transformación del conjunto de datos de entrada, se realizará de
diversas formas en función del análisis previo, con el objetivo de
prepararlo para aplicar la técnica de minería de datos que mejor se
adapte a los datos y al problema.
4. Seleccionar y aplicar la técnica de minería de datos, se construye el
modelo predictivo, de clasificación o segmentación.
5. Extracción de conocimiento, mediante una técnica de minería de
datos, se obtiene un modelo de conocimiento, que representa patrones
de comportamiento observados en los valores de las variables del
problema o relaciones de asociación entre dichas variables. También
pueden usarse varias técnicas a la vez para generar distintos modelos,
aunque generalmente cada técnica obliga a un preprocesado diferente
de los datos.
6. Interpretación y evaluación de datos, una vez obtenido el modelo, se
debe proceder a su validación comprobando que las conclusiones que
arroja son válidas y suficientemente satisfactorias. En el caso de haber
obtenido varios modelos mediante el uso de distintas técnicas, se
deben comparar los modelos en busca de aquel que se ajuste mejor al
problema. Si ninguno de los modelos alcanza los resultados
esperados, debe alterarse alguno de los pasos anteriores para generar
nuevos modelos.

Si el modelo final no superara esta evaluación el proceso se podría repetir


desde el principio o, si el experto lo considera oportuno, a partir de cualquiera
de los pasos anteriores. Esta retroalimentación se podrá repetir cuantas veces
se considere necesario hasta obtener un modelo válido.

Una vez validado el modelo, si resulta ser aceptable (proporciona salidas


adecuadas y/o con márgenes de error admisibles) éste ya está listo para su
explotación. Los modelos obtenidos por técnicas de minería de datos se aplican
incorporándolos en los sistemas de análisis de información de las
organizaciones, e incluso, en los sistemas transaccionales. En este sentido cabe
destacar los esfuerzos del Data Mining Group, que está estandarizando el
lenguaje PMML (Predictive Model Markup Language), de manera que los
modelos de minería de datos sean interoperables en distintas plataformas, con
independencia del sistema con el que han sido construidos. Los principales
fabricantes de sistemas de bases de datos y programas de análisis de la
información hacen uso de este estándar.

Tradicionalmente, las técnicas de minería de datos se aplicaban sobre


información contenida en almacenes de datos. De hecho, muchas grandes
empresas e instituciones han creado y alimentan bases de datos especialmente
diseñadas para proyectos de minería de datos en las que centralizan
información potencialmente útil de todas sus áreas de negocio. No obstante,
actualmente está cobrando una importancia cada vez mayor la minería de datos
desestructurados como información contenida en ficheros de texto, en Internet,
etc.

Un proyecto de minería de datos tiene varias fases necesarias que son,


esencialmente:

 Comprensión del negocio y del problema que se quiere resolver.


 Determinación, obtención y limpieza de los datos necesarios.
 Creación de modelos matemáticos.
 Validación, comunicación, etc. de los resultados obtenidos.
 Integración, si procede, de los resultados en un sistema transaccional
o similar.

La relación entre todas estas fases sólo es lineal sobre el papel. En realidad, es
mucho más compleja y esconde toda una jerarquía de subfases. A través de la
experiencia acumulada en proyectos de minería de datos se han ido
desarrollando metodologías que permiten gestionar esta complejidad de una
manera más o menos uniforme.

Como ya se ha comentado, las técnicas de la minería de datos provienen de la


Inteligencia artificial y de la estadística, dichas técnicas, no son más que
algoritmos, más o menos sofisticados que se aplican sobre un conjunto de datos
para obtener unos resultados.

Las técnicas más representativas son:

 Redes neuronales.- Son un paradigma de aprendizaje y procesamiento


automático inspirado en la forma en que funciona el sistema nervioso
de los animales. Se trata de un sistema de interconexión de neuronas
xxxii
en una red que colabora para producir un estímulo de salida. Algunos
ejemplos de red neuronal son:
o El Perceptrón.
o El Perceptrón multicapa.
o Los Mapas Autoorganizados, también conocidos como redes
de Kohonen.

 Regresión lineal.- Es la más utilizada para formar relaciones entre


datos. Rapida y eficaz pero insuficiente en espacios
multidimensionales donde puedan relacionarse más de 2 variables.

 Árboles de decisión.- Un árbol de decisión es un modelo de


predicción utilizado en el ámbito de la inteligencia artificial, dada una
base de datos se construyen estos diagramas de construcciones
lógicas, muy similares a los sistemas de predicción basados en reglas,
que sirven para representar y categorizar una serie de condiciones que
suceden de forma sucesiva, para la resolución de un problema.
Ejemplos:
o Algoritmo ID3.
o Algoritmo C4.5.

 Modelos estadísticos.- Es una expresión simbólica en forma de


igualdad o ecuación que se emplea en todos los diseños
experimentales y en la regresión para indicar los diferentes factores
que modifican la variable de respuesta.

 Agrupamiento o Clustering.- Es un procedimiento de agrupación de


una serie de vectores según criterios habitualmente de distancia; se
tratará de disponer los vectores de entrada de forma que estén más
cercanos aquellos que tengan características comunes. Ejemplos:
o Algoritmo K-means.
o Algoritmo K-medoids.

Según el objetivo del análisis de los datos, los algoritmos utilizados se


clasifican en supervisados y no supervisados (Weiss y Indurkhya, 1998):

 Algoritmos supervisados (o predictivos): predicen un dato (o un


conjunto de ellos) desconocido a priori, a partir de otros conocidos.
 Algoritmos no supervisados (o del descubrimiento del conocimiento):
se descubren patrones y tendencias en los datos.
REFERENCIAS

F. Hayes-Roth, D. A. Waterman, D. B. Lenat, Building Expert Systems,


Addison Wesley, Reading, MA, 1983.

Mitchell, T. (1997). Machine Learning, McGraw Hill. ISBN 0-07-042807-7

http://es.wikipedia.org/wiki/L%C3%B3gica_difusa

Giarratano, J. y Riley, G. (2001): Sistemas Expertos. Principios y


Programación (3da. edición). International Thomson Editores, México.

Pajarez Martínez, G. y Santos Peña, M (2006): Inteligencia Artificial e


Ingeniería delConocimiento. Alfaomega, Ra-Ma

Orchard, R. A. (1998): Fuzzy CLIPS, Version 6.04 A: User Guide. Institute


for Information Technology, National Research Council of Canada.

Britos, P y otros. (2005): Minería de datos basada en Sistemas Inteligentes.


Nueva librería.

DEBER No. 2
Presentar en archivo word, un reporte detallado de las perspectivas de
aplicación en el campo de la ingeniería eléctrica de uno de los siguientes
tópicos: lógica difusa, redes neuronales, procesamiento paralelo, ant colony
optimisation, simulated annealing ó tabú search. Al final del documento
enlistar las referencias bibliográficas.

xxxiv
CONTENIDO
LINEAMIENTOS GENERALES ............................................................. II
MARCO CONCEPTUAL....................................................................... III
Ventajas: ............................................................................................. xix
Limitaciones ........................................................................................ xx
Lingüística computacional teórica .................................................... xxix
Lingüística computacional aplicada .................................................. xxix
REFERENCIAS ...................................................................................... XXXIV

CONTENIDO ................................................................................ XXXVI


ACRÓNIMOS ..............................................................................XXXVIII
CAPÍTULO 1. INTELIGENCIA COMPUTACIONAL EVOLUTIVA ....... 1
1.1 UNA BREVE HISTORIA ..................................................................... 2
1.2 MÉTODOS MATEMÁTICOS TRADICIONALES ..................................... 2
1.2.1 Formulaciones y métodos matemáticos ................................... 3
1.3 MÉTODOS SIMULATIVOS .................................................................. 5
1.4 ESQUEMA GENERAL DE LOS ALGORITMOS EVOLUTIVOS ................. 5
1.5 MANEJO DE RESTRICCIONES ............................................................ 7
1.5.1 Pena de Muerte ........................................................................ 8
1.5.2 Penalización para soluciones no-factibles ............................... 8
1.5.3 Reparar Soluciones No-factibles ............................................. 8
1.5.4 Soluciones Factibles vs. Soluciones No-factibles.................... 9
1.6 EJERCICIO ........................................................................................ 9
1.6.1 Formulación del Problema .................................................... 10
1.6.2 Función Objetivo Analítica ................................................... 11
1.6.3 Solución 1. Uso de Software de Optimización. ..................... 13
1.6.4 Solución 2. Búsqueda aleatoria con pena de muerte para
soluciones no-factibles ......................................................................... 18
1.6.5 Solución 2. Búsqueda aleatoria con función de penalización
para manejo de restricciones ................................................................ 19
1.7 REFERENCIAS ................................................................................. 21

CAPÍTULO 2. ALGORITMOS GENÉTICOS ...................................... 22


2.1 FORMULACIÓN DEL AG .................................................................. 23
2.1.1 Codificación .......................................................................... 23
2.1.2 Selección ............................................................................... 24
2.1.3 Cruzamiento .......................................................................... 25
xxxvi
2.1.4 Mutación ................................................................................ 26
2.2 BIBLIOGRAFÍA ................................................................................ 26

CAPÍTULO 3. ALGORITMOS EVOLUTIVOS ................................... 27


3.1 FORMULACIÓN DE UN ALGORITMO EVOLUTIVO ............................. 28
3.1.1 Codificación con Números Reales......................................... 28
3.1.2 Selección ............................................................................... 28
3.1.3 Cruzamiento .......................................................................... 29
3.1.4 Mutación ................................................................................ 30
3.1.5 Recombinación ...................................................................... 31
3.1.6 Autoadaptación (Movimiento) .............................................. 32
3.2 BIBLIOGRAFÍA ................................................................................ 34

CAPÍTULO 4. PARTICLE SWARM OPTIMIZATION ........................ 35


4.1 ASPECTOS METODOLÓGICOS .......................................................... 36
4.2 TEORÍA SOCIO-COGNITIVA ............................................................. 36
4.2.1 Evaluar................................................................................... 36
4.2.2 Comparar ............................................................................... 36
4.2.3 Imitar ..................................................................................... 37
4.3 MODELLING HYDRIC RESOURCES ............. ¡ERROR! MARCADOR NO
DEFINIDO.
4.4 MODELLING LEAD TIMES OF PROJECTS ...... ¡ERROR! MARCADOR NO
DEFINIDO.
4.5 MODELLING WIND RESOURCES ................ ¡ERROR! MARCADOR NO
DEFINIDO.
4.6 REFERENCES .................................................................................. 41

CAPÍTULO 5. NUMERICAL APPLICATION OF PROBABILITY


THEORY ............................................................................... 42
5.1 CASE STUDY GENERAL FORMULATION .......................................... 43
5.2 CONCLUDING REMARKS ................................................................. 43
5.3 REFERENCES .................................................................................. 43

APPENDIX A: EVOLUTIONARY ALGORITHM FOR SOLVING A


MULTI-PERIOD OPTIMIZATION PROBLEM ....................... 44
A.1 THE DEVELOPED EVOLUTIONARY ALGORITHM ............................. 44
A.2 REFERENCES .................................................................................. 44
ACRÓNIMOS
AC Alternating Current
DC Direct Current
DG Distributed Generation
DP Dynamic Programming
EA Evolutionary Algorithm
EENS Expected Energy Not Supplied
EPSO Evolutionary Particle Swarm Optimization
FACTS Flexible AC Transmission Systems
GA Genetic Algorithm
GBM Geometric Brownian Motion
GRASP Greedy Randomized Adaptive Search Procedure
MRP Mean Reverting Process
NPV Net Present Value
O&M Operation and Maintenance
OPF Optimal Power Flow
PDF Probability Distribution Function
PES Power Electric System
PF Power Flow
PPF Probabilistic Power Flow
PSO Particle Swarm Optimization
ROV Real Options Valuation
SCADA Supervisory Control and Data Acquisition
SND Standard Normal Distribution
TEP Transmission Expansion Planning
T&D Transmission and Distribution Systems

xxxviii
TS Transmission System
VOLL Value of Lost Load
Capítulo 1.

INTELIGENCIA COMPUTACIONAL
EVOLUTIVA
"La vida es una carrera de relevos. Puedes ganarla en otra generación"
(Valeriu Butulescu)

La computación evolutiva es el estudio de sistemas computacionales


inspirados en la evolución natural y la adaptación. Su objetivo es la
comprensión de tales sistemas y el desarrollo de algoritmos robustos y
eficientes que se aplican en la resolución de problemas de optimización del
mundo real.
Si bien los métodos matemáticos tradicionales son exactos y precisos en los
cálculos en determinados casos, estos no suelen ser robustos en problemas
complejos de naturaleza altamente no-lineal.
Por ejemplo, el invaluable método matemático simplex, el cual ha sido aplicado
exitosamente en diversos problemas prácticos, presenta importantes
limitaciones en problemas donde la función objetivo no puede ser expresada
matemáticamente.
La computación evolutiva es un campo que ha emergido rápidamente en los
últimos años. Para muestra se encuentran las diversas revistas y conferencias
internacionales dedicadas a este tema.

1
2 Inteligencia Artificial – Paúl Vásquez

1.1 UNA BREVE HISTORIA


La computación evolutiva abarca varios campos importantes de la inteligencia
artificial como son estrategias evolutivas (Schwefel-1965), programación
evolutiva (Fogel 1966), algoritmos genéticos (Holland 1975) y programación
genética (Koza 1989). Esta categorización y distinta denominación tienen su
principal fundamento en hitos históricos.
Las estrategias evolutivas fueron propuestas por Rechenberg and Schwefel
en 1965 como una técnica de optimización numérica la cual no utilizó el
concepto de una población. Este concepto fue introducido posteriormente por
Schwefel.
La programación evolutiva fue propuesta por Fogel y otros, a mediados de
los 60s, como un camino para adquirir inteligencia artificial. Recién a partir de
los 80s fue aplicada en la resolución de problemas combinatorios de
optimización.
El esquema hasta hoy vigente de los algoritmos genéticos fue propuesto por
Holland en 1975 como algoritmos de búsqueda adaptiva. Debido a su amplia
difusión y uso, esta es la rama más conocida de la computación evolutiva.
Un sub-campo de los algoritmos genéticos es la programación genética
(Koza 1989). Básicamente es una aplicación de los algoritmos genéticos donde
se considera la evolución de los cromosomas en estructura de árbol.
Todos estos campos han adquirido en los últimos años una denominación
general que es la de algoritmos evolutivos ya que usan básicamente el mismo
esquema computacional.
1.2 MÉTODOS MATEMÁTICOS TRADICIONALES
El sustento de las decisiones tomadas en el ámbito operativo o gerencial,
tradicionalmente proviene de la aplicación de procedimientos matemáticos
para encontrar solución a un problema de optimización formulado como un
sistema de ecuaciones que describe la esencia del problema.
A continuación se muestra la formulación general de un problema de
optimización:
Inteligencia Computacional Evolutiva 3

min FO(X ) min f (x1, x 2 , x 3 ...x n ) (1.1)


Xopt X Xopt X

sujeto a:
g1(X ) b1
g2 (X ) b2

gm (X ) bm
x1 0, x 2 0, x 3 0...xn 0

Donde,
FO es la función objetivo. La FO puede ser lineal, no-lineal, derivable, no
derivable, convexa o cóncava.
x1, x2, … xn son las variables de decisión. Las variables de decisión pueden ser
continuas o discretas.
g1, g2, gm son las restricciones las cuales pueden ser igualdades o desigualdades
lineales.
Aquella solución que satisfaga todas las restricciones es una solución factible.
La solución que, en el caso de la ecuación (1.1), minimice la Función Objetivo
FO, será la solución óptima.
1.2.1 Formulaciones y métodos matemáticos
Bajo la perspectiva de los procedimientos matemáticos, es indispensable
considerar la forma y propiedades de la FO, restricciones y variables de
decisión. En efecto, cuando la FO y todas las restricciones son lineales, el
problema de optimización se denomina de programación lineal.
Cuando ya sea la FO o las restricciones incluyen una o varias funciones no-
lineales, el problema de optimización se denomina de programación no-
lineal.
Tanto la programación lineal como la no-lineal por convención asumen que las
variables de decisión son continuas.
Cuando las variables de decisión son variables discretas, en ese caso el
problema de optimización es un problema de programación entera.
4 Inteligencia Artificial – Paúl Vásquez

Cuando los criterios de optimización no pueden ser incorporados en una única


FO, el problema de optimización se denomina de programación multi-
objetivo.
Si algunas variables son continuas y otras enteras, el modelo se conoce como
programación entero-mixta.
Todos estos problemas de optimización requieren de distintos procedimientos
matemáticos para ser resueltos.
Por ejemplo, un problema de programación lineal puede ser satisfactoriamente
resuelto con el método iterativo conocido como simplex. El tiempo de
resolución se incrementa exponencialmente con el número de variables.
Durante los últimos años, el método de punto interior ha alcanzado un
significativo nivel de sofisticación en la resolución de problemas de
programación lineal. A diferencia del método simplex el tiempo de resolución
se incrementa muy lentamente con el número de variables de decisión.
Una opción para resolver un problema de programación no-lineal es la
aplicación del método de relajación a programación lineal, es decir linealizar
el problema para poderlo resolver con un método de programación lineal. Si
bien esta simplificación permite resolver el problema, no se garantiza encontrar
la solución óptima. Por otro lado, si se desea resolver rigurosamente el
problema de optimización no-lineal, aparecen complicaciones que no se
encuentran en el caso lineal. En efecto, en aquellos casos en que las funciones
objetivo no puedan ser definidas ya sea como cóncavas o convexas
(maximización y minimización respectivamente), pueden existir varios
óptimos locales y el algoritmo puede quedar atrapado en uno de ellos sin poder
encontrar el óptimo global. Caso contrario el método del gradiente será útil
para garantizar optimalidad. Si el problema además tiene restricciones, aparece
otra complicación que es que la región de soluciones factibles debe ser convexa
y la función objetivo y restricciones deben ser diferenciables a fin de poder
garantizar optimalidad (leer sobre condiciones de Karush-Kuhn-Tucker).
Un problema de programación entera puede ser resuelto con la técnica
conocida como branch and bound, cuyo concepto básico subyacente es
descomponer y conquistar. Sin embargo generalmente se presentan
limitaciones cuando el tamaño del problema supera los cientos de variables.
Inteligencia Computacional Evolutiva 5

1.3 MÉTODOS SIMULATIVOS


Hasta aquí se ha analizado métodos matemáticos que resuelven problemas
donde la función objetivo puede llegar a ser formulada matemáticamente. Sin
embargo, en problemas donde la FO no puede ser formulada, o en problemas
a ser resueltos bajo la presencia de incertidumbres, los métodos más adecuados
son los simulativos. Estos métodos contemplan el uso de una computadora para
repetitivamente imitar la operación o el funcionamiento de un sistema o
proceso. Los resultados de las realizaciones son almacenados permiten evaluar
y comparar el desempeño de distintas alternativas en diversas circunstancias
antes de decidir por una. Para simular un sistema complejo, se necesita
formular un modelo compuesto por varios bloques:
1. Definición del estado actual del sistema
2. Un conjunto de posibles estados del sistema
3. Una lista de eventos que podrían cambiar el estado del sistema
4. Medición del tiempo de simulación
5. Un método para generar aleatoriamente eventos de distintos tipos
6. Un mecanismo para identificar los cambios de estado que se generan ante
la ocurrencia de distintos eventos
Si bien la simulaciones son una herramienta poderosa en determinados casos,
no son capaces de buscar y determinar por si solos, cómo optimizar el
desempeño del sistema. Los algoritmos evolutivos son una técnica
complementaria de búsqueda que permite sistemáticamente optimizar el
desempeño de un sistema.
1.4 ESQUEMA GENERAL DE LOS ALGORITMOS EVOLUTIVOS
Los algoritmos evolutivos ostentan dos características prominentes que les
distinguen de otros algoritmos de búsqueda. Primero, todos ellos se
desenvuelven sobre la base de una población conformada por individuos.
Segundo, hay comunicación e intercambio de información entre individuos
miembros de una población. Dicha comunicación son el resultado de
operaciones de selección y recombinación.
6 Inteligencia Artificial – Paúl Vásquez

Para desarrollar un algoritmo evolutivo es necesario considerar los siguientes


pasos básicos:
- Codificar adecuadamente los individuos que van a ser replicados
- Escoger adecuadamente una población inicial de individuos así como un
mecanismo de selección.
- Definir las operaciones de búsqueda que afectarán a los individuos.
- Definir una función de aptitud (función objetivo).
A continuación se resume un esquema general de un algoritmo evolutivo. Los
operadores de búsqueda (además ver Fig.1.1), como veremos en el siguiente
capítulo, en el caso de un algoritmo genético, se denominan operaciones
genéticas.
- i = 0;
- Generar aleatoriamente la población inicial P(i)
- Evaluar la función de aptitud para cada individuo de P(i) y ordenar de
más fuerte a más débil los individuos
- Verificar criterio de parada. Si se cumple, el programa termina.
- Aplicar operadores de búsqueda y formar una nueva generación P(i+1)
- i = i+1;
- Regresar al paso 3.
Si bien el término algoritmo evolutivo se relaciona con el uso de ideas e
inspiraciones de la evolución natural y adaptación, no es un requerimiento
estricto que éste deba ser biológicamente posible. En efecto, el objetivo
primordial es desarrollar un algoritmo robusto y eficiente para resolver un
problema combinatorio.
Inteligencia Computacional Evolutiva 7

Inicio

Generación
Población
Inicial

Evaluación
de Función
Objetivo

Ordenar
individuos

Población YES Criterio


parada se
solución cumple?

NO
Categorizar
Fin individuos

Aplicar
operaciones
de búsqueda

Formación
de nueva
Población

Fig. 1.1 Diagrama de flujo básico de un algoritmo evolutivo

1.5 MANEJO DE RESTRICCIONES


Los algoritmos evolutivos como mecanismo para resolver problemas de
optimización, inicialmente recibieron gran atención por su capacidad de
manejar funciones objetivo muy complejas. No obstante, no produjeron un
avance significativo en el área de la programación no-lineal debido a que no
manejaban, de una manera sistemática, el tema de las restricciones.
No es sino hasta inicios de la década pasada que se han propuesto métodos
para manejo de restricciones no-lineales dentro de los algoritmos evolutivos.
Dichos métodos presentan diversos desempeños dependiendo de la naturaleza
del problema.
8 Inteligencia Artificial – Paúl Vásquez

Un importante aspecto a ser considerado es que un algoritmo evolutivo


presenta la ventaja de poder manejar tanto las soluciones factibles como las no
factibles dentro de una única población evolutiva. Dado que la solución final
debe ser una solución factible, establecer un mecanismo adecuado de
diferenciación del desempeño de soluciones factibles y no-factibles es de
primordial importancia.
1.5.1 Pena de Muerte
Un camino para diferenciar el desempeño de las soluciones, es eliminar a las
soluciones no-factibles de cada iteración (o generación). De esta manera se
asegura que la solución encontrada sea factible. Sin embargo, en espacios de
búsqueda mayoritariamente compuestos por soluciones no-factibles, o en
algoritmos que requieren poblaciones iniciales compuestas únicamente de
soluciones factibles, este método posee serias limitaciones.
1.5.2 Penalización para soluciones no-factibles
Otro camino de aplicación del citado criterio de diferenciación de soluciones
en los algoritmos evolutivos es la penalización de la función de aptitud a fin de
degradar la calidad o el valor de las soluciones no-factibles. Las ecuaciones 1.3
y 1.4 muestran esta propuesta.
FOu (x ) FO f (x ) Q( ci ) (para minimización) (1.2)
FOf (x )
FOu (x ) (para maximización)
1 Q( ci )

Q(x , ci ) k ci ; ci ci cmax (1.3)

FOu es la función objetivo de las soluciones no-factibles, la cual es dependiente


de FOf, función objetivo de las soluciones factibles, y de Q(∆ci) que representa
la función de penalización, la cual a su vez depende de la distancia, ∆ci, que la
variable ci se aleja del límite establecido como restricción cmax. En caso de que
la función de penalización, Q(∆ci), sea igual a cero FOu = FOf.
1.5.3 Reparar Soluciones No-factibles
Este método disfruta de popularidad en la comunidad de la computación
evolutiva. Sin embargo su aplicación se limita a problemas específicos donde
es relativamente fácil reparar una solución no-factible y y hacerla factible, x
(ver Ecuaciones 1.5 y 1.6).
Inteligencia Computacional Evolutiva 9

FOu (y ) FO f (x ) (1.4)

x f (y ) (1.5)

Donde x es una versión reparada (factible) de y.


El proceso de reparación de individuos no-factibles se basa en la interacción
mutua de aprendizaje y evolución1 donde la información sobre mejoría (o
degradación) de la función objetivo se traslada a los individuos. La debilidad
de este método es que distintos procesos de reparación deben ser diseñados por
cada problema. Es decir, no hay heurística estándar para el proceso de
reparación de individuos no-factibles. Inclusive en ciertos casos dicho proceso
puede llegar a ser tan complejo como resolver el problema original.
De acuerdo a la literatura investigada, el número de individuos a ser reparados
en una población se encuentra del 5 al 15%.
1.5.4 Soluciones Factibles vs. Soluciones No-factibles
Otro método para diferenciación de soluciones es tratar y evaluar por separado
las soluciones factibles y no-factibles y construir una función objetivo global
FO donde la importancia relativa de una y otra solución se establece a través
de la asignación de pesos (ver Ecuación 1.6).
w1.FOu (p); p U
FO (1.6)
w2 .FOf (p); p F

w1 y w2 son los pesos asignados a las funciones de evaluación de las soluciones


no-factibles y factibles respectivamente.
1.6 EJERCICIO
Un organismo que fomenta el desarrollo de ciencia y tecnología de varios
países de Sudamérica, ha lanzado una convocatoria para financiar proyectos
relacionados con almacenamiento de energía eléctrica en vehículos eléctricos
capaces de transferir la energía almacenada hacia las redes de distribución en
Colombia, Ecuador, Perú y Chile. El proyecto ganador recibirá la cantidad de
USD $10 millones a ser obligatoriamente invertidos en los 4 países
miembros. El plazo máximo de ejecución del proyecto es de 6 años.

1
Para profundizar en este tema, consultar sobre “Baldwin effect”- Whitely et al., 1996
10 Inteligencia Artificial – Paúl Vásquez

Los evaluadores realizarán la evaluación y calificación de las iniciativas, en


base de los beneficios totales esperados de cada proyecto, los cuales a su vez
dependen de la cantidad que se invierta en cada país. De ahí que, quienes
desean participar en el concurso, deberán optimizar la inversión (parte del
presupuesto total) que destinarán a cada país.
Los resultados de un estudio de mercado previo, efectuado por los evaluadores,
se presentan en el cuadro siguiente. Se trata de una matriz de beneficios
esperados, en función de las cantidades invertidas en cada país.
Inversión Colombia Ecuador Perú Chile
(USD millones) (USD millones) (USD millones) (USD millones) (USD millones)
0 0 0 0 0
1 0,28 0,25 0,15 0,20
2 0,45 0,41 0,25 0,33
3 0,65 0,55 0,40 0,42
4 0,78 0,65 0,50 0,48
5 0,90 0,75 0,62 0,53
6 1,02 0,80 0,73 0,56
7 1,13 0,85 0,82 0,58
8 1,23 0,88 0,90 0,60
9 1,32 0,90 0,96 0,60
10 1,38 0,90 1,00 0,60

Cómo deben los candidatos repartir los USD 10 millones para maximizar sus
posibilidades de ganar el concurso?
DEBER No. 3
1. Formule matemáticamente el problema de optimización (función
objetivo, restricciones y variables de decisión).
2. Qué tipo de problema de optimización es? (lineal, no-lineal, entero,
entero-mixto…).
3. Proponga un camino de resolución para el problema. Explique.
4. Cómo deben los candidatos repartir los USD 10 millones para
maximizar sus posibilidades de ganar el concurso?

1.6.1 Formulación del Problema


El problema se puede formular matemáticamente como sigue:
Inteligencia Computacional Evolutiva 11

max B(X ) max Bco (x1 ) Bec (x 2 ) Bpe (x 3 ) Bcl (x 4 ) (1.7)


Xopt X Xopt X

sujeto a:
x1 x 2 x 3 x 4 10
x1 0, x 2 0, x 3 0, x4 0

1.6.2 Función Objetivo Analítica


De acuerdo a las figuras 1.2, 1.3, 1.4 y 1.5, en todos los países los beneficios
se incrementan conforme se incrementa la inversión en forma cuadrática. Las
variables de decisión x1, x2, x3, x4 son enteras. De ahí que se trata de un
problema combinatorio no-lineal entero.

1,6
1,4
1,38
Beneficio (MUSD)

1,2 1,32
1,23
1,13
1 1,02
0,8 0,9
0,78
0,6 0,65
0,4 0,45
Bco = -0,0085x12 + 0,2173x1 + 0,0403
0,2 0,28
0
0 2 4 6 8 10 12
Inversión (MUSD)

Fig. 1.2 Beneficios esperados vs inversión en Colombia


12 Inteligencia Artificial – Paúl Vásquez

1
0,9 0,9
0,85 0,88 0,9
0,8 0,8
Beneficio (MUSD)

0,75
0,7
0,6 0,65
0,5 0,55
0,4
0,3 0,41
Bec = -0,0115x22 + 0,1989x2 + 0,038
0,2
0,1 0,25
0
0 2 4 6 8 10 12
Inversión (MUSD)

Fig. 1.3 Beneficios esperados vs inversión en Ecuador

1,2

1
0,96 1
Beneficio (MUSD)

0,9
0,8 0,82
0,73
0,6
0,62
0,5
0,4 0,4

0,2 0,25
Bpe = -0.0048x32 + 0.1499x3 - 0.0077
0,15
0
0 2 4 6 8 10 12
Inversión (MUSD)

Fig. 1.4 Beneficios esperados vs inversión en Perú


Inteligencia Computacional Evolutiva 13

0,7
0,6
0,6 0,6 0,6
0,56 0,58
Beneficio (MUSD)
0,5 0,53
0,48
0,4
0,42
0,3
0,33
0,2
Bcl = -0,0091x42 + 0,1436x4 + 0,0452
0,2
0,1
0
0 2 4 6 8 10 12
Inversión (MUSD)

Fig. 1.5 Beneficios esperados vs inversión en Chile

Con la ayuda de Excel se logra encontrar ecuaciones matemáticas


aproximadas, capaces de evaluar, con un error considerable, a la función
objetivo para los distintos valores posibles de inversión.

1.6.3 Solución 1. Uso de Software de Optimización.


El problema se resuelve con la ayuda de una herramienta de optimización por
ejemplo X-PRESS, GAMS, OPTIMTOOL de MATLAB, etc. En este ejemplo
utilizaremos la herramienta “optimtool” de Matlab.

Fig. 1.6 Lista de funciones de optimización de OPTIMTOOL – Matlab.

Escribiendo “optimtool” en la ventana de comandos de Matlab se abre la


aplicación. Dentro de esta, existen diversos métodos de resolución. Por tratarse
14 Inteligencia Artificial – Paúl Vásquez

de un problema no lineal con restricciones, utilizaremos la función “fmincon”


(ver figura 1.6) que sirve para resolver problemas de minimización.
Dado que el problema planteado es un problema de maximización, la función
objetivo quedará planteada adecuadamente, como una minimización, al
multiplicarse por -1.
Seleccionamos la función que resolverá el problema así como el método (ver
figura 1.7.

Fig. 1.7 Selección de función y método de optimización.

A continuación es necesario insertar en archivo *.m, la función objetivo (ver


figura 1.8). En este caso la función objetivo es “Beneficio.m” la cual es una
función desarrollada en Matlab.

Fig. 1.8 Ingreso de Función Objetivo.

Para definir la función objetivo, la formulación del problema de optimización,


(ver la Ecuación 1.7), bajo esta perspectiva analítica, queda formulada de la
siguiente manera:
Inteligencia Computacional Evolutiva 15

max B(X ) 0.0085 x12 0.2173 x1 0.0403


Xopt X

0.0115 x 22 0.1989 x 2 0.038 (1.8)


0.0048 x 32 0.1499 x 3 0.0077
0.0091 x 42 0.1436 x 4 0.0452
sujeto a:
x1 x 2 x 3 x 4 10
x1 0, x 2 0, x 3 0, x4 0

Por tanto, en Matlab la función de maximización quedaría definida de la


siguiente forma:

function f = Beneficio(x)

f = -(-0.0085*x(1)^2 + 0.2173*x(1)+ 0.0403...% Ecuación


Colombia
- 0.0115*x(2)^2 + 0.1989*x(2) + 0.038... % Ecuación
Ecuador
- 0.0048*x(3)^2 + 0.1499*x(3) - 0.0077...% Ecuación Perú
- 0.0091*x(4)^2 + 0.1436*x(4) + 0.0452); % Ecuación Chile

Y se ingresaría como sigue:

Fig. 1.9 Ingreso de Función Objetivo y condiciones iniciales de búsqueda.

La pestaña “start point” se refiere a una condición inicial de búsqueda o punto


de partida, que en este caso se ha establecido en [1 1 1 1], es decir:
x1 = x2 = x3 = x4 = 1.
16 Inteligencia Artificial – Paúl Vásquez

Fig. 1.10 Ingreso de Restricciones.

Para la restricción de igualdad x1 + x2 + x3 + x4 = 10, se ingresa [1 1 1 1] en la


casilla Aeq y el valor de 10 en la casilla beq (ver figura 1.10)
En las restricciones de límites inferiores y superiores, es decir:
x1 0, x2 0, x3 0, x4 0

Se colocó 1, es decir x1 1, x2 1, x3 1, x4 1 , ya que las


variables de decisión no pueden ser iguales y cero, y al ser discretas podrán
únicamente ser mayores o iguales a 1.
Finalmente, en el panel de opciones se puede seleccionar la opción “iterative”
para que se pueda desplegar la información del algoritmo para cada iteración.

Fig. 1.11 Pestaña para despliegue de información en cada iteración.


Inteligencia Computacional Evolutiva 17

Una vez que se encuentren ingresados todos los elementos anteriormente


citados, se presiona “Start” para dar inicio al proceso de optimización.

Fig. 1.12 Proceso de resolución y visor de resultados.

La solución al problema planteado, con un BENEFICIO TOTAL = 1.767


M$, es presentada de la siguiente manera:

Fig. 1.13 Soluciones del problema.

Es decir, las variables de decisión, las cuales sumadas dan un total de 10 M$,
que es la cantidad que se requiere invertir, son:
x1 = 4.921 M$
x2 = 2.837 M$
x3 = 1.693 M$
x4 = 0.548 M$
Si bien mediante la aplicación de esta herramienta analítica, se pueden
encontrar soluciones este hecho no necesariamente implica que dicha solución
sea la óptima. En efecto, en este problema específico, las variables son enteras
y únicamente puede tomar valores discretos. Además la función objetivo es
únicamente una aproximación impregnada de un error importante lo cual
nuevamente implica que la solución encontrada no necesariamente sea óptima.
De ahí que la aplicación de técnicas matemáticas tradicionales basadas en
gradiente para resolver problemas de optimización tiene amplia aplicación en
problemas donde la función objetivo puede ser expresada en forma
18 Inteligencia Artificial – Paúl Vásquez

matemática. Caso contrario, las soluciones encontradas conllevan a una


inexactitud en los cálculos y por tanto una solución NO necesariamente
óptima.
DEBER No.4
Haciendo uso de la herramienta OPTIMTOOL de Matlab, resolver el problema
de la sección 1.6, utilizando una función distinta a fmincon. La función
objetivo será formulada matemáticamente utilizando las ecuaciones obtenidas
en la sección 1.6.2 con la ayuda de Excel. Explique los resultados.
1.6.4 Solución 2. Búsqueda aleatoria con pena de muerte para
soluciones no-factibles
Como camino sólido de resolución de este problema se propone:
- Generar aleatoriamente, con la ayuda de una computadora, 1000
combinaciones de números enteros comprendidos entre 1 y 7 MUSD.
- Encontrar y grabar aquellas combinaciones que cumplan con las
restricciones del problema.
- Evaluar la función objetivo de los candidatos factibles del numeral 2
- Ordenar soluciones de mayor a menor.
- La alternativa que exhiba la mayor función objetivo será la solución al
problema.
Con la aplicación de este algoritmo se encuentra que la combinación de
inversiones que maximiza el beneficio total esperado, y por tanto la solución
al problema es:

- x1 = 4 MUSD - Bco = 0,78 MUSD

- x2 = 3 MUSD - Bec = 0,55 MUSD

- x3 = 1 MUSD - Bpe = 0,15 MUSD

- x4 = 2 MUSD - Bcl = 0,33 MUSD

- Total = 10 - Bmáx = 1,81 MUSD


MUSD
Inteligencia Computacional Evolutiva 19

A continuación se detalla el código en Matlab de un algoritmo de búsqueda


aleatoria, implementado para resolver el problema.
% Algoritmo de búsqueda aleatoria básico para resolver
% el Ejercicio propuesto en la sección 1.6 de los Apuntes del Curso de
% Inteligencia Artificial
%% Datos de entrada
% B : matriz de beneficios sin considerar los beneficios iguales a cero
B = [...
0.28 0.25 0.15 0.2;
0.45 0.41 0.25 0.33;
0.65 0.55 0.40 0.42;
0.78 0.65 0.50 0.48;
0.90 0.75 0.62 0.53;
1.02 0.80 0.73 0.56;
1.13 0.85 0.82 0.58;
1.23 0.88 0.90 0.60;
1.32 0.90 0.96 0.60;
1.38 0.90 1.00 0.60];

p = 1000; % p: número de individuos a ser generados aleatoriamente


time = cputime; %inicia el contador del tiempo
j=1; % inicia la matriz donde se guardarán las soluciones

%% Generación de números aleatorios y evaluación de función objetivo


for i=1:p
f0(i,:) = unidrnd(7,1,length(B(1,:)));
% Generación aleatoria de 4 númeross del 1 al 7
if (f0(i,1)+f0(i,2)+f0(i,3)+f0(i,4))==10
% si la suma de las inversiones es 10 entonces grabar en "s"
s(j,:) = f0 (i,:);
b(j,5) = B(f0(i,1),1)+B(f0(i,2),2)+B(f0(i,3),3)+B(f0(i,4),4);
T(j,:) = [s(j,:) b(j,5)];
j=j+1;
if j>=2 || s(j,:) == s(j-1,:)
% si hay alguna combinación que se repita
j=j;
%no guardar la solución para que no se repita
end
else % si la suma es diferente de 10, entonces pena de muerte
j=j;
end
end

%% Presentación de soluciones (ranking de soluciones)


S = sortrows(T,-5); % ordenar de menor a mayor
time = cputime-time; % tiempo que tardó el algoritmo

1.6.5 Solución 2. Búsqueda aleatoria con función de penalización para


manejo de restricciones
Como camino sólido de resolución de este problema se propone:
- Generar aleatoriamente, con la ayuda de una computadora, 1000
combinaciones de números enteros comprendidos entre 1 y 7 MUSD.
20 Inteligencia Artificial – Paúl Vásquez

- Evaluar la función objetivo de los candidatos del numeral 1 incluyendo


una función de penalización Q=500.(10-xi).
- Ordenar soluciones de mayor a menor.
- La alternativa que exhiba la mayor función objetivo será la solución al
problema.
Con la aplicación de este algoritmo, al igual que el método anterior, se
encuentra que la combinación de inversiones que maximiza el beneficio total
esperado, y por tanto la solución al problema es:

- x1 = 4 MUSD - Bco = 0,78 MUSD

- x2 = 3 MUSD - Bec = 0,55 MUSD

- x3 = 1 MUSD - Bpe = 0,15 MUSD

- x4 = 2 MUSD - Bcl = 0,33 MUSD

- Total = 10 MUSD - Bmáx = 1,81 MUSD

A continuación se detalla el código en Matlab de un algoritmo de búsqueda


aleatoria, implementado para resolver el problema:
% Algoritmo de búsqueda aleatoria básico para resolver
% el Ejercicio propuesto en la sección 1.6 de los apuntes
% del Curso de Inteligencia Artificial
%% Datos de entrada
% B : matriz de beneficios sin considerar los beneficios iguales a cero
B = [...
0.28 0.25 0.15 0.2;
0.45 0.41 0.25 0.33;
0.65 0.55 0.40 0.42;
0.78 0.65 0.50 0.48;
0.90 0.75 0.62 0.53;
1.02 0.80 0.73 0.56;
1.13 0.85 0.82 0.58;
1.23 0.88 0.90 0.60;
1.32 0.90 0.96 0.60;
1.38 0.90 1.00 0.60];

p = 1000; % p: número de indiviuos a ser generados aleaoriamente


time = cputime; %inicia el contador del tiempo
j=1; % inicia la matriz donde se guardarán las soluciones

%% Generación de números aleatorios y evaluación de función objetivo


for i=1:p
f0(i,:) = unidrnd(7,1,length(B(1,:)));
% Generación aleatoria de 4 númeross del 1 al 7
error = 10-sum(f0(i,:));%error si la suma no es igual a 10 M$
Inteligencia Computacional Evolutiva 21
s(j,:) = f0 (i,:);
b(j,5) =
(B(f0(i,1),1)+B(f0(i,2),2)+B(f0(i,3),3)+B(f0(i,4),4))...
/(1+abs(error)*500); % el denominador la penalización
T(j,:) = [s(j,:) b(j,5)];
j=j+1;
if j>=2 || s(j,:) == s(j-1,:)
% si la solución es igual a la anterior, se elimina
j=j;
%no guardar la solución para que no se repita
end
end

%% Presentación de soluciones (ranking de soluciones)


S = sortrows(T,-5); % ordenar de menor a mayor
time = cputime-time; % tiempo que tardó el algoritmo

DEBER No. 5
Desarrollar un algoritmo en Matlab para la resolución del problema de la
sección 1.6 mediante búsqueda aleatoria en el que el usuario pueda manejar las
restricciones ya sea con pena de muerte o con penalización. Las variables de
decisión se codificarán como números enteros. Para evaluar la FO, hacer uso
del método de penalización, asumiendo Q(∆Bi)= k. (Bi-10)i , donde k=500.

1.7 REFERENCIAS
Sarker R., Mohammadian M., Yao X. et. al, Evolutionary Optimization,
Kluwer´s International Series, ISBN: 0-7923-7654-4, USA 2003.
Capítulo 2.

ALGORITMOS GENÉTICOS
“Natural species are the library from which genetic engineers can work.”
(Thomas E. Lovejoy)

Los Algoritmos Genéticos, AG, son métodos de optimización libres de


gradiente capaces de manejar complejos e irregulares espacios de solución y
problemas n-dimensionales de optimización no-lineal. Como se basan en el
proceso biológico de la evolución de Darwin, donde selección, mutación y
cruzamiento juegan un rol importante, así mismo las soluciones se codifican
como cromosomas los cuales a su vez están formados por varios genes.
En cada generación del AG la población permanece constante.
Consecuentemente las nuevas soluciones obtenidas eliminan a las peores
soluciones de la generación anterior.
En este curso se analizarán AG en donde los genes son codificados tanto en
forma binaria como con números enteros o reales. Aquellos algoritmos
codificados en forma binaria son menos eficientes al momento de resolver
problemas multi-período o multi-dimensionales así como también problemas
donde se requiere mucha precisión en las variables de decisión.

22
Algoritmos Genéticos 23

2.1 FORMULACIÓN DEL AG


2.1.1 Codificación
Los genes gi, que en conjunto representan cada variable de decisión vn, pueden
tomar valores de cero (0) o uno (1).
La Fig. 2.1 representa una codificación binaria de n variables de decisión. Cada
celda recibe el nombre de gen, gi, y puede tomar únicamente valores binarios.
Cada cadena de n genes conforma una variable de decisión, v1, v2,…, vn. La
cadena total conformada por todas las variables de decisión se conoce como
cromosoma.

v1 v2 vn
g1 g2 g3 g4 gn g1 g2 g3 g4 gn g1 g2 g3 g4 gn

0 1 1 0 0 0 1 1 1 0 0 1 0 0 1

CROMOSOMA
Fig. 2.1 Codificación binaria de variables de decisión

DEBER No. 6
Elaborar un algoritmo que resuelva el problema de la sección 1.6 con el método
de búsqueda aleatoria mediante la codificación de individuos en forma
binomial.
24 Inteligencia Artificial – Paúl Vásquez
% Algoritmo de búsqueda aleatoria básico para resolver
% con codificación binaria el Ejercicio propuesto en la sección 1.6
% de los apuntes del Curso de Inteligencia Artificial
%% Datos de entrada
% B : matriz de beneficios sin considerar los beneficios iguales a cero
B = [...
0.28 0.25 0.15 0.2;
0.45 0.41 0.25 0.33;
0.65 0.55 0.40 0.42;
0.78 0.65 0.50 0.48;
0.90 0.75 0.62 0.53;
1.02 0.80 0.73 0.56;
1.13 0.85 0.82 0.58;
1.23 0.88 0.90 0.60;
1.32 0.90 0.96 0.60;
1.38 0.90 1.00 0.60];

p = 1000; % p: número de indiviuos a ser generados aleaoriamente


time = cputime; %inicia el contador del tiempo
j=1; % inicia la matriz donde se guardarán las soluciones

%% Generación de números aleatorios y evaluación de función objetivo

for i=1:p
f0(i,:) = unidrnd(7,1,length(B(1,:)));
% Generación aleatoria de 4 númeross del 1 al 7
error = 10-sum(f0(i,:));%error si la suma no es igual a 10 M$
s(j,:) = f0 (i,:);
for kk=1:length(s(j,:))
chain(j,4*kk-3:4*kk)=dec2bin(s(j,kk),4);%conv dec a bin
end
for rr=1:length(chain(j,:))
binary(j,rr) = str2double(chain(j,rr)); %conv char a
núme
end
b(j,length(binary(j,end)+1)) = (B(f0(i,1),1)+B(f0(i,2),2)...
+B(f0(i,3),3)+B(f0(i,4),4))/(1+abs(error)*500);
% el denominador es la
penalización
T(j,:) = [binary(j,:) b(j,end)];
j=j+1;
end

%% Presentación de soluciones (ranking de soluciones)

S = sortrows(T,-length(T(1,:))); % ordenar de menor a mayor


time = cputime-time; % tiempo que tardó el algoritmo

2.1.2 Selección
Se utiliza para evaluar el desempeño de los cromosomas y marcar la evolución.
Así, cromosomas con un buen desempeño, tienen una mayor oportunidad de
vivir.
Dentro del proceso de selección existe un criterio conocido como elitismo el
cual consiste básicamente en la preservación de los cromosomas con mejor
Algoritmos Genéticos 25

desempeño a lo largo de las generaciones. De acuerdo a la bibliografía


consultada, el número de cromosomas elitistas en un algoritmo se encuentra
del 5 al 10% de la población.
Otro criterio dentro del proceso de selección son los individuos débiles, en
efecto, en cada generación un cierto número de soluciones muere debido a su
deficiente desempeño. De acuerdo a la bibliografía consultada, el número de
individuos débiles en un algoritmo se encuentra del 20 al 30% de la población.
2.1.3 Cruzamiento
Consiste en obtener dos cromosomas hijos (c y d) a partir del cruzamiento de
dos cromosomas padres (a y b).
En la Fig. 2.2 se puede observar gráficamente el mecanismo de este operador.
Los primeros z genes del padre a se ubicarán en los últimos n-z genes del padre
b.
De acuerdo a la bibliografía consultada, el número de cromosomas que sufrirán
cruzamiento en un AG se encuentra entre 80 a 90% de la población. Este tipo
de operación recibe el nombre de cruzamiento aritmético simple.

z=2

x=a g 1a g2a g3a gn-1a gna Iai

b g1b g2b g3b gn-1b gnb Ibi


=

c gn-1b gnb g3a gn-1a gna Ici+1

d g1b g2b g3b g1a g2a Idi+1

z = unidrnd(n/2) x = u([a,b])
Fig. 2.2 Operación de cruzamiento en el gen z
26 Inteligencia Artificial – Paúl Vásquez

2.1.4 Mutación
A diferencia de la operación de cruzamiento, para la operación de mutación se
requiere un solo cromosoma padre. El mecanismo de este operador consiste en
reemplazar uno o varios de los genes del cromosoma padre, por otros genes
aleatoriamente generados, para obtener un cromosoma hijo.
Cuando la mutación se produce en un solo gen del cromosoma padre, esta
operación se conoce como mutación uniforme.
Si la mutación toma lugar en varios genes del cromosoma padre, esta operación
se conoce como mutación uniforme múltiple.
Finalmente, si la mutación toma lugar en todos los genes del cromosoma padre,
de acuerdo a una función Gaussiana de probabilidad, la operación se conoce
como mutación Gaussiana.
De acuerdo a la bibliografía consultada, el número de cromosomas que sufrirán
mutación en un AG se encuentra entre el 5 al 10% de la población.

z
a g1ai g2ai g3ai g4ai gnai Ii
=

b g1ai f(g2i) g3ai g4ai gnai Ii+1


z = unidrnd(n)

f(g2i) = unidrnd(g2i)

a = unifrnd(S);
Fig. 2.2 Operación de mutación uniforme en el gen z

2.2 BIBLIOGRAFÍA
Chambers L. D., The Practical Handbook of Genetic Algorithms -
Applications, Chapman & Hall /CRC, ISBN: 1-58488-2409-9, USA - 2001.
Michalewicz Z., Genetic Algorithms + Data Structures = Evolution Programs,
Springer, ISBN: 3-540-60676-9, USA - 1996.
Capítulo 3.

ALGORITMOS EVOLUTIVOS
“Like dreams, statistics are a form of wish fulfilment”
(Jean Baudrillard, 1929)

To reasonably accomplish the challenging task of facing the TEP problem from
a non-deterministic perspective, demands incorporating and modeling a variety
of data of diverse nature. Moreover, due to the large scale of the problem,
which is clearly defined by its stochastic, multi-period, multi-criteria and
combinatorial nature, very special efforts are required in order to sustain the
viability of the proposed models. In this sense, an adequate treatment of the
different types of the problem’s information is one of the most important stages
to be carefully carried out before formulating a non-deterministic TEP model.

27
28 Inteligencia Artificial – Paúl Vásquez

3.1 FORMULACIÓN DE UN ALGORITMO EVOLUTIVO


3.1.1 Codificación con Números Reales
A diferencia de los AG, los genes gi, que en conjunto representan cada variable
de decisión vn, toman valores enteros o, de manera general, reales.
La Fig. 3.1 representa la codificación con números reales de n variables de
decisión. Cada celda recibe el nombre de gen, gi, y puede tomar únicamente
valores binarios. Cada cadena de n genes conforma una variable de decisión,
v1, v2,…, vn. La cadena total conformada por todas las variables de decisión se
conoce como cromosoma.

v1 v2 vn
g1 g2 g3 g4 gn g1 g2 g3 g4 gn g1 g2 g3 g4 gn

0 7 1 6 3 33 48 87 0 14 2.1 6.8 5.3 4.5 1.9

CROMOSOMA
Fig. 3.1 Codificación binaria de variables de decisión

En un algoritmo evolutivo, tanto los criterios de selección como las


operaciones genéticas anteriormente analizadas se mantienen. No obstante, se
incluye el criterio de autoadaptación que le da la naturaleza evolutiva a estos
algoritmos.
3.1.2 Selección
Se utiliza para evaluar el desempeño de los cromosomas de una población P y
marcar la evolución. Así, cromosomas con un buen desempeño, tienen una
mayor oportunidad de vivir.
Dentro del proceso de selección existe un criterio conocido como elitismo, E,
el cual consiste básicamente en la preservación de los cromosomas con mejor
desempeño a lo largo de las generaciones. De acuerdo a la bibliografía
consultada, el número de cromosomas elitistas en un algoritmo se encuentra
del 5 al 10% de la población.
Otro criterio dentro del proceso de selección son los individuos débiles, W. En
efecto, en cada generación un cierto número de soluciones muere debido a su
deficiente desempeño. De acuerdo a la bibliografía consultada, el número de
individuos débiles en un algoritmo se encuentra del 20 al 30% de la población.
¡Error! No se encuentra el origen de la referencia. 29

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x
E
x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

S
x x x x x x x x x x x x x x x

P x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x

x x x x x x x x x x x x x x x W
x x x x x x x x x x x x x x x

Fig. 3.2 representación gráfica de los Criterios de Selección en una población.

S son los individuos normales de la población, es decir no son elitistas ni


débiles.
3.1.3 Cruzamiento
Consiste en obtener dos cromosomas hijos (c y d) a partir del cruzamiento de
dos cromosomas padres (a y b).
En la Fig. 3.3 se puede observar gráficamente el mecanismo de este operador.
Los primeros z genes del padre a se ubicarán en los últimos n-z genes del padre
b.
De acuerdo a la bibliografía consultada, el número de cromosomas que sufrirán
cruzamiento en un AG se encuentra entre 80 a 90% de la población. Este tipo
de operación recibe el nombre de cruzamiento aritmético simple.
30 Inteligencia Artificial – Paúl Vásquez

z=2

x=a g 1a g2a g3a gn-1a gna Iai

b g1b g2b g3b gn-1b gnb Ibi


=

=
c gn-1b gnb g3a gn-1a gna Ici+1

d g1b g2b g3b g1a g2a Idi+1

z = unidrnd(n/2) x = u([a,b])
Fig. 3.3 Operación de cruzamiento en el gen z

3.1.4 Mutación
A diferencia de la operación de cruzamiento, para la operación de mutación se
requiere un solo cromosoma padre. El mecanismo de este operador consiste en
reemplazar uno o varios de los genes del cromosoma padre, por otros genes
aleatoriamente generados, para obtener un cromosoma hijo.
Cuando la mutación se produce en un solo gen del cromosoma padre, esta
operación se conoce como mutación uniforme.
Si la mutación toma lugar en varios genes del cromosoma padre, esta operación
se conoce como mutación uniforme múltiple.
Finalmente, si la mutación toma lugar en todos los genes del cromosoma padre,
de acuerdo a una función Gaussiana de probabilidad, la operación se conoce
como mutación Gaussiana.
De acuerdo a la bibliografía consultada, el número de cromosomas que sufrirán
mutación en un AG se encuentra entre el 5 al 10% de la población.
¡Error! No se encuentra el origen de la referencia. 31

z
a g1ai g2ai g3ai g4ai gnai Ii

=
b g1ai f(g2i) g3ai g4ai gnai Ii+1
z = unidrnd(n)

f(g2i) = unidrnd(g2i)

a = unifrnd(S);
Fig. 3.4 Operación de mutación uniforme en el gen z

3.1.5 Recombinación
Junto con el cruzamiento son las operaciones más importantes en los
algoritmos evolutivos y de acuerdo a la literatura existente se conocen como
reproducción. La escencia de estas operaciones es la herencia en la
información trasladada desde uno o más padres hacia uno o más individuos
hijos.
Existen diversos criterios para efectuar las citadas operaciones de
reproducción, los cuales dependen principalmente del tipo de variables de
decisión. En este curso se propone la operación conocida como recombinación
aleatoria, donde, a partir de dos padres, se obtendrá un único hijo (ver Fig. 3.5).
La penetración recomendada de esta operación es del 20%.
32 Inteligencia Artificial – Paúl Vásquez

Combinación Aleatoria

a L1a L 2a L3a L4a Lna Iai

b L1b L2b L3b L4b Lnb Ibi


=

=
c L1a L2b L3b L4a Lna

Ici+1=u.Iai+(1-u).Ibi ; i = iteración
u(1, i ) distribución de probabilidad binaria uniforme

u1xn u(1, i ) [0, 1]; u(Padres ) a, b

Fig. 3.5 Operación de recombinación aleatoria

3.1.6 Autoadaptación (Movimiento)


Una operación muy poderosa dentro de los algoritmos evolutivos es la
autoadaptación de algunos indicadores estratégicos en cada generación.
Básicamente la autoadaptación involucra la co-evolución de tales indicadores
con el objeto de determinar la evolución de las variables de decisión en cada
generación.
La mutación Gaussiana es la más común de las operaciones de autoadaptación
aplicada dentro de las estrategias evolutivas.
Otra operación con esta propiedad se conoce como movimiento. En el caso del
algoritmo evolutivo conocido como EPSO, el cual será analizado
posteriormente en este curso, el movimiento se basa en tres indicadores que
son: inercia, memoria y velocidad.
El movimiento consiste en establecer una tendencia ya sea de todas las
variables de decisión o de una sola variable de decisión, basada en estadísticas.
En este capítulo se proponen dos tipos de movimiento basados en memoria. En
las figuras. 3.6 y 3.7 se muestran estas operaciones.
¡Error! No se encuentra el origen de la referencia. 33

Movimiento de un individuo completo

1 L1i-e L2i-e L3i-e Ln-1 Lni-e Ii-e


(i-e)

e L1i
= L2i L3i Ln-1i Lni Ii

=
a L 1i L2i L3i L(n-1)i Lni
Ii+1
+Δ1 +Δ2 +Δ3 +Δ(n-1) +Δn
i Lni Lnj
1; 0
j i e
e
i Lni Lnj
n 0; 0 ; n [1, 2,..., n ]
j i e
e
e Lni Lnj
1; 0
j i e
e

a = unifrnd(P – E – W);
Fig. 3.6 Operación de movimiento completo basado en memoria
34 Inteligencia Artificial – Paúl Vásquez

Movimiento de una variable de decisión


z=3

1 L1i-e L2i-e L3i-e Ln-1 Lni-e Ii-e


(i-e)

e L1i L2i L3i Ln-1i Lni Ii


=

=
a L3i
L1i L2i Ln-1i Lni Ii+1

i Lzi Lzj
1; 0
j i e
e
i Lzi Lzj
0; 0 z = unidrnd(n/2)
j i e
e
e Lzi Lzj
1; 0
j i e
e

a = unifrnd(P – E – W);
Fig. 3.7 Operación de movimiento por variable basado en memoria

3.2 BIBLIOGRAFÍA
Chambers L. D., The Practical Handbook of Genetic Algorithms -
Applications, Chapman & Hall /CRC, ISBN: 1-58488-2409-9, USA - 2001.
Capítulo 4.

PARTICLE SWARM OPTIMIZATION


“For years, scientist have studied ants, bees, and wasps because of the amazing
efficiency of social insects. Now companies like Southwest Airlines and
Unilever are actually putting that research to work, with impressive paybacks”
Bonabeau and Meyer

Particle Swarm Oprimizatoin, PSO, es una técnica de optimización estocástica


basada en población que forma parte de los Modelos de Cultura Adaptiva,
ACM. Esta técnica, desarrollada por Eberhart y Kennedy en 1995, se inspira
básicamente en el comportamiento social de las aves y de los bancos de peces.
Si bien comparte muchas similitudes con las técnicas de computación
evolutiva, como los algoritmos genéticos, no posee operadores evolutivos tales
como cruzamiento y mutación, ni tampoco se produce competencia entre
individuos de la población.
No obstante, se ha llegado a demostrar que PSO supera a otros métodos de
búsqueda en lo referente a esfuerzo computacional y tiempo. Adicionalmente,
esta técinca es atractiva ya que, a diferencia de la mayoría de técnicas de
búsqueda, requiere de pocos parámetros para ajustar.
La técnica de búsqueda PSO es, en este Capítulo, introducida y presentada en
términos de comportamiento social y cognitivo, en una versión que opera en
un espacio de números reales.
Probablemente la más importante revelación de PSO es que muy complejos
comportamientos colectivos pueden surgir a partir de individuos siguiendo
reglas simples.

35
36 Inteligencia Artificial – Paúl Vásquez

4.1 ASPECTOS METODOLÓGICOS


Básicamente la técnica PSO consiste en, partiendo de una población inicial de
partículas, variar la velocidad de cada partícula hacia un óptimo local y hacia
un óptimo global hasta encontrar la solución del problema. La aceleración de
las partículas es definida a través de un término obtenido aleatoriamente. De
esta manera, las soluciones candidatas, llamadas partículas, fluyen a través del
espacio de soluciones, siguiendo a las mejores particulas actuales.
Cada partícula deja huella de sus coordenadas en el espacio del problema.
Tales coordenadas, que son almaceadas junto con la función objetivo, son
asociadas con la mejor solución obtenida por las partículas en toda su vida, así
como también son asociadas con la mejor partícula de la vecindad y/o de toda
la población. Esto permite, por un lado, buscar óptimos locales y,
consecuentemente por otro, encontrar el óptimo global.
4.2 TEORÍA SOCIO-COGNITIVA
Una teoría muy simple está detrás del ACM y consecuentemente del PSO. En
efecto, el proceso de adaptación cultural comprende tanto un componente de
alto nivel que se verifica en la formación de patrones en los individuos y la
habilidad para resolver problemas, como un componente de bajo nivel que son
es el comportamiento actual y universal de los individuos. Aspectos que
pueden resumirse en tres principios: evaluar, comparar e imitar.
4.2.1 Evaluar
La tendencia a evaluar, es tal vez la característica mas ubícua de los organismos
vivos ya que el aprendizaje no puede ocurrir a menos que los individuos
puedan evaluar, es decir, diferenciar entre lo positivo y lo negativo, lo atractivo
de lo repulsivo, una solución buena de una solución mala. Bajo esta
perspectiva, el aprendizaje podría inclusive definirse como un cambio que
habilita al organismo a mejorar la evaluación promedio de su entorno.
4.2.2 Comparar
La Teoría de la Comparación Social propuesta por Festinger en el año 1954,
describió las maneras en las que la gente usa a otros como standard para
medirse a ellos mismo, y cómo la comparación con otros puede servir como
un medio de motivación para aprender y cambiar. En su forma original, esta
teoría no fue enunicada de forma que pueda ser fácilmente probada o refutada,
pero en general sirvió como una espina dorsal para las subsecuentes teorías
sociales-psicológicas. En casi todos los aspectos (apariencia, humor,
inteligencia, habilidades, etc.) nos juzgamos a nosotros mismos mediante
¡Error! No se encuentra el origen de la referencia. 37

comparación con otros. Dentro del ACM y por tanto en el PSO, los individuos
se comparan con sus vecinos, imitando únicamente a aquellos vecinos que son
superiores a ellos.
4.2.3 Imitar
A priori se observa que la imitación se encuentra en toda la naturaleza. En
efecto, imitar es una efectiva manera de aprender a hacer las cosas y clave en
la adquisición y mantenimiento de habilidades mentales. Sin embargo, muy
pocos animales son capaces de efectuar una imitación real. Estrictamente
hablando, únicamente los humanos y unas cuantas aves son capaces de hacerlo.
4.3 MODELO BÁSICO DE PSO
Dos tipos importantes de información se encuentran disponibles para cada
individuo. La primera, es la experiencia propia, es decir, un individuo ha
atravesado varios estados y sabe exactamente cual ha sido el mejor hasta el
momento y que tan bueno es. Este criterio se conoce como pbest. La segunda
consideración es, cómo los individuos cercanos (vecinos) y los individuos a
nivel de toda la población se han desempeñado.
Estos criterios, que influencian las velocidades de los individuos, se conocen
como aprendizaje individual y transmisión cultural respectivamente,
propuestos por Boyd y Richerson.
Dentro del segundo tipo de información, los individuos van a estar
influenciados por el éxito momentáneo de cualquier individuo miembro de su
vecindario sociométrico. Si bien existen una infinidad de formas en las que los
indiviuods pueden estar conectados socialmente unos con otros, la mayoría de
implementaciones de PSO se basan en los siguientes dos criterios:
 El primero, conocido como gbest, conceptualmente conecta entre sí a
todos los miembros de la población (g = global) de tal manera que la
velocidad de las partículas se encuentra influenciada por la partícula
con el mejor desempeño de toda la población.

Fig. 4.1. Ilustración del criterio gbest


38 Inteligencia Artificial – Paúl Vásquez

 El segundo, denominado lbest, crea un vecindario para cada


individuo, incluyendo a este y a los k vecinos más cercanos de la
población.

Fig. 4.2. Ilustración del criterio lbest

Esto implica que en el PSO existe una instancia socio-cognitiva, en la que la


cada partícula es capaz de evaluar, comparar e imitar varias alternativas
simultáneamente. Este conocimiento, adquirido por los sentidos, a través de la
experiencia, entrega a los seres humanos la ventaja intelectual que es la fuente
de nuetsra inteligencia.
De acuerdo a la literatura investigada, los criterios mayoritariamente utilizados
en la práctica, son los criterios pbest y gbest. A estos dos criterios se suma el
criterio de inercia, el cual básicamente consiste en que habrá un porcentaje de
inercia que influenciará a que la partícula mantenga el mismo valor de
velocidad de la generación anterior.
En la Fig. 4.3 se presenta un esquema general de un algoritmo PSO. Al igual
que en los algoritmos evolutivos, el punto de partida es una población inicial
P0, donde, mediante una función objetivo FO, se evalua el desempeño de cada
partícula elemento de la población.
A diferencia de los algoritmos evolutivos, en los que los individuos débiles
desaparecen en cada generación, en el PSO, las partículas se mueven con
diversas velocidades a través del espacio de soluciones, en búsqueda de la
solución óptima.
¡Error! No se encuentra el origen de la referencia. 39

1. k = 0;
2. Generar aleatoriamente la población inicial, P(k). Las partículas p poseen
posiciones aleatorias y vectores de velocidad;
3. Evaluar la función de aptitud para cada partícula de P(k).
4. Identificar gbest.
5. Verificar criterio de parada
6. Si la FO(p) es mejor que FO(pbest), entonces pbest = p;
7. Calcular la nueva velocidad de cada partícula vk; calcular la nueva
posición de cada partícula, Sk
8. k = k+1;
9. Regresar al paso 3.
40 Inteligencia Artificial – Paúl Vásquez

Fig. 4.3 Diagrama de flujo básico del PSO

Como se puede observar en el algoritmo anterior, en el PSO, el espacio de


búsqueda es recorrido a través del movimiento de cada partícula. Tal
movimiento está influenciado por tres componentes.
¡Error! No se encuentra el origen de la referencia. 41

sk+1
vk
vk+1 vgbest
vpbest
sk
Fig. 4.4 Concepto de modificación de punto de búsqueda

4.4 REFERENCES
[TPGW-06] Wickramarathna M. T. A. P., Wickramaarachchi N.,
“Transmission Network Planning using Genetic Algorithm,” IEEE
Transmission and Distribution Conference and Exposition Latin America
Venezuela, Aug. 2006.
[TPUS-06] Silva I, Rider M., Romero R., Murari C., “Transmission Network
Expansion Planning Considering Uncertainties in Demand,” Transactions on
Power Systems IEEE, vol. 21, N°4, Nov. 2006, pp. 1565-1573.

También podría gustarte