Sie sind auf Seite 1von 396

CAPITULO UNO

INTRODUCCIN A LA INTELIGENCIA
ARTIFICIAL

1.1. DEFINICIONES DE INTELIGENCIA ARTIFICIAL


Algunas definiciones sobre Inteligencia Artificial son:

La Inteligencia Artificial estudia cmo lograr que las mquinas realicen ta-
reas, que por el momento, son realizadas mejor por los seres humanos.

La Inteligencia Artificial trata de encontrar las tcnicas para disear y pro-


gramar mquinas -computadoras- que emulen nuestras capacidades men-
tales.

La Inteligencia Artificial es el rea que trata de analizar o estudiar el com-


portamiento humano, y llevarlo a mquinas (computadores).

La Inteligencia Artificial es la emulacin de un comportamiento inteligente,


como reacciona, como aprende. Se trata de dotar de esta inteligencia arti-
ficial a seres no vivos (computadores), con el fin de ayudar a la humanidad.

Se denomina inteligencia artificial a la rama de la informtica que desarro-


lla procesos que imitan a la inteligencia de los seres vivos. La principal
aplicacin de esta ciencia es la creacin de mquinas para la automatiza-
cin de tareas que requieran un comportamiento inteligente.

Mg. Juan Gamarra Moreno 17


1.2. PREHISTORIA DE LA INTELIGENCIA ARTIFICIAL1
La prehistoria de la inteligencia artificial abarca desde los primeros tiempos de
nuestra civilizacin hasta mediados del siglo XX. En este perodo se producen
hechos que podemos agrupar en dos lneas:

una de ellas directamente relacionada con la construccin de autmatas


que simulaban el comportamiento humano o animal, y que solan funcionar
en ayuda de su amo.

la otra lnea, referente a la informacin y automatizacin del razonamiento


lgico y matemtico.

1.2.1. CONSTRUCCIN DE AUTMATAS

La inteligencia se ha asociado a los aparatos mecnicos complejos, como es el


caso de los autmatas. Mucho antes de que surgiera la inteligencia artificial
como una disciplina autnoma, hubo una gran cantidad de consideraciones
casi filosficas sobre la posibilidad de reproducir el ser humano mediante m-
quinas.

El nacimiento de la Inteligencia Artificial, y el concepto de mquinas inteligen-


tes, debe ser buscado en la mitologa griega. Los artefactos inteligentes apare-
cen en la literatura desde entonces.

La primera mencin de los autmatas aparece en la Ilada escrita en el siglo


VIII a.C (canto XVIII), donde leemos que Vulcano fabricaba "veinte trpodes
que deban permanecer arrimados a la pared del bien construido palacio y te-
nan ruedas de oro en los pies para que de propio impulso pudieran entrar
donde los dioses se congregaban y volver a la casa" (V.368-384) y que era
ayudado en su cojera por "dos estatuas de oro semejantes a vivientes jvenes,
pues tenan inteligencia, voz y fuerza" (V. 410-4234).

Por otra parte, la tradicin juda cre el mito del "golem" en 1580 (figura 1.1),
figura humanoide hecha de arcilla a la que un rabino poda dar vida propia,
convirtindola en un perfecto criado (que, en leyendas posteriores, llega a es-
capar del control de su amo). Hay que decir, sin embargo, que se requera la
intervencin divina para conseguir estos espectaculares resultados.

Al llegar el racionalista Descartes, siglo XVIII, las cosas fueron diferentes


(1596-1650). Descartes haba defendido la tesis del "animal-mquina": los se-
res vivos, salvo el hombre, son meros mecanismos. La Mettrie, en 1747, va
ms all con su escandaloso "L' homme machine": tambin el hombre y su
comportamiento inteligente son explicables en trminos exclusivamente mec-
nicos.

1
Planell Perez. Historia de la Inteligencia Artificial [en lnea]. Espaa: Ebooks gra-
tis; 2008. [fecha de acceso 16 de noviembre de 2007]. URL disponible en:
http://66.240.239.19/2/7/0/27068.ZIP

18 Tpicos y Aplicaciones de la Inteligencia Artificial


Ciertamente existan admirables mecanismos, por ejemplo, los de: el flautista
(1737) que mova realmente los dedos para producir una meloda, o el pato
(1738) capaz de nadar, batir alas, comer y expulsar excrementos simulados
(figura 1.2). No por casualidad Vaucanson fue, antes de Jacquard, el inventor
del telar automtico de tarjetas perforadas.

Figura 1.1. Figura del golem

Figura 1.2. Pato de Vaucanson

El espaol Torres Quevedo construy dos versiones del jugador ajedrecista.


Se trata de un autmata jugador de final de partidas de ajedrez: juega el rey y
torre blancos (mquina) contra el rey negro (jugador humano). El resultado
(victoria de las blancas) del juego est determinado algortmicamente. Para
simplificar el diseo, el autmata lograba siempre el jaque mate, si bien no por
el camino ms corto. El primer jugador fue construido en 1912 y expuesto en
Pars en 1914, ocasionando gran sensacin. Dispona de un brazo mecnico
para mover las piezas, y de sensores elctricos en el tablero para conocer su
ubicacin. El segundo jugador (figura 1.3), de 1920, fue construido por su hijo
Gonzalo, y en l el movimiento de las piezas se consigue mediante imanes
dispuestos bajo el tablero. Ambos ingenios eran de naturaleza electromecni-
ca, y se citan como precursores de la Inteligencia Artificial. Ciertamente, consti-
tuyeron el primer intento exitoso de construir un autmata que jugase realmen-
te a un juego humano, lo que se vena intentando desde el siglo XVIII.
Mg. Juan Gamarra Moreno 19
Figura 1.3. El segundo jugador de ajedrez

En 1929 se presentaba en Francia el "Philidog", que segua el rayo luminoso


de una linterna y ladraba si la intensidad luminosa era excesiva.

El escritor Karel Kapek difunde en los aos 20 una palabra destinada a tener
un gran xito: "robot". En su obra R.U.R."(Rossum's Universal Robots) apare-
cen unos seres creados para realizar las tareas que el hombre no quiere hacer,
que acaban siendo ms poderosos que el mismo hombre, llegando a poner en
peligro su existencia. Sin embargo, hasta la llegada de los ordenadores elec-
trnicos no dispusieron los cientficos y tcnicos de una herramienta que per-
mitiera la ejecucin de tareas ms complejas por parte de dispositivos mecni-
cos, ni para la construccin de robots.

1.2.2. AUTOMATIZACIN DEL RAZONAMIENTO

La segunda de las lneas es la automatizacin del razonamiento, y por tanto, la


obtencin de una formalizacin.

Encontramos en primer lugar a Ramon Llull y su "Ars Magna", donde describe


una gramtica universal para cristianos, musulmanes y hebreos, es decir, un
mtodo cientfico de discusin. Esta ciencia universal consiste en que los ms-
ticos de las tres religiones del libro aceptan que Dios tiene unos atributos, que
hay un cierto nmero de "nombres de Dios", Llull los describi y cre unas ta-
20 Tpicos y Aplicaciones de la Inteligencia Artificial
blas que permitan que cada trmino pudiese combinarse con los dems, pues-
to que todos eran equivalentes y cre una gramtica universal con una lgica
binaria, combinatoria.

Tambin encontramos a Leibniz que busc un lgebra universal que permitiera


deducir todas las verdades, y as "si surgieran controversias no habra necesi-
dad de mayor disputa entre dos filsofos que entre dos contables, pues basta-
ra que, tomando en sus manos el lpiz, se sentaran frente a sus pizarras y se
dijeran (con un amigo como testigo): calculemos", como antecesores de los
sistemas formales y de la lgica que tan buen papel juegan en la inteligencia
artificial moderna.

Los estudios matemticos de Rusell y Hilbert de comienzos de siglo permitie-


ron por primera vez reducir el razonamiento (o un tipos de razonamiento) a la
manipulacin abstracta de cadenas de smbolos, idea de gran fecundidad en
los mecanismos de la inferencia simblica de la inteligencia artificial y tambin
en los sistemas de representacin del conocimiento.

Las teoras de la computabilidad y de los autmatas proporcionan el vnculo


entre la formalizacin del razonamiento y las mquinas que estaban a punto de
surgir tras la Segunda Guerra Mundial. En este ambiente, no es extraa que la
aparicin de las primeras mquinas electrnicas de cmputo fuera seguida
inmediatamente por los intentos de aplicarlas a lo que hoy llamamos Inteligen-
cia Artificial.

1.2.3. CIBERNTICA

Un ltimo elemento importante en la prehistoria de la Inteligencia Artificial, es la


ciberntica. En los primeros aos de la informtica era habitual hablar de ce-
rebros electrnicos y, de hecho, este era uno de los objetivos lejanos que re-
sultaban ms del gusto de los pioneros como Von Neumann.

Ms solidez han tenido las ideas que provenan de la ciberntica. La nueva


visin, fruto de la inspiracin de Norbert Wiener (figura 1.4), qued publicada a
partir de 1948 en su famoso libro Cibernetics y, ms adelante, el mismo Wie-
ner analiz las relaciones de la ciberntica con la sociedad.

Ciberntica es un trmino que ya haba sido utilizado en el ao 1834 por el


francs Ampre, pero fue redefinido por Wiener como el campo de la teora
del control y la comunicacin, tanto en las mquinas como en los animales.
En paralelo a la construccin de los primeros ordenadores electrnicos, la ci-
berntica introdrujo nuevos conceptos como los de la retro-alimentacin
(feedback), el control y los sistemas auto-organizados.

La ciberntica influy en muchos campos debido a su naturaleza fundamen-


talmente interdisciplinar, ligando entre s la fisiologa neuronal, la teora de la
informacin de Shannon, la lgica matemtica y la naciente tecnologa inform-
tica. De esta forma, las ideas de los creadores de la ciberntica llegaron a ser
parte del espritu del tiempo, e influyeron fuertemente en los primeros investi-
gadores de la Inteligencia Artificial.

Mg. Juan Gamarra Moreno 21


Figura 1.4. Norbert Wiener

1.3. EL NACIMIENTO DE LA INTELIGENCIA ARTIFICIAL


Ambiciosos y optimistas se mostraban los pioneros de la Inteligencia Artificial
durante los primeros aos de la era informtica. Pero el fracaso de la mayora
de sus proyectos mostr que los problemas que intentaban resolver eran de-
masiados complicados, tanto terica como tecnolgicamente.

En Julio de 1945 Vannevar Bush public As We May Think una visin del fu-
turo en donde los ordenadores asistan a los humanos en muchas actividades.

En 1950 Alan Turing present un artculo sobre el tema de la Inteligencia Artifi-


cial, titulado Inteligencia y Funcionamiento de Mquinas. En este trabajo pro-
pone un "Test de Turing" para determinar el carcter inteligente o no de una
mquina. El test parte del juego donde un interrogador tiene que descubrir el
sexo de dos participantes A y B situados en otra habitacin, aunque los dos
dicen ser mujeres, en verdad son un hombre y una mujer. En la propuesta ori-
ginal de Turing, se trataba de sustituir a la mujer por un ordenador, y que el
interrogador descubriera quien era la mquina de los dos participantes, los dos
decan ser personas. Este objetivo haba que cumplirlo incluso sabiendo que
los participantes no estaban obligados a decir la verdad y que, por ejemplo, la
mquina poda decidir dar un resultado errneo en una multiplicacin o decir el
resultado lo suficientemente ms tarde despus de haberlo obtenido, para en-
gaar al interlocutor sobre su propia habilidad calculista. En la hiptesis opti-
mista del mismo Turing, ms o menos alrededor del ao 2000 se podra dispo-
ner de ordenadores suficientemente potentes para conseguir que un interroga-
dor normal no tuviera ms del 70% de posibilidades de realizar la identifica-
cin correcta a los cinco minutos del comienzo de las preguntas. Hay que decir
que la prediccin de Turing parece, ahora mismo, muy optimista.

Posteriormente, en 1955 fue creado un lenguaje de procesamiento (bsqueda


heurstica) por Allen Newell, J. C. Shaw y Herbert Simon que fue considerado
como el primer lenguaje especializado de la Inteligencia Artificial, era el IPL-II
(Information Proccessing Language-II).

22 Tpicos y Aplicaciones de la Inteligencia Artificial


En el verano del 1956 tuvo lugar la Conferencia del Darmouth en Hanover
(New Hampshire) sobre Inteligencia Artificial, organizada por John McCarthy
(Stanford), Marvin Minsky (MIT), Allen Newel y Herbert Simon, con el patrocinio
de la fundacin Rockefeller, reuni a todos los que trabajaban en el recin es-
trenado campo de la Inteligencia Artificial. A la Dartmouth Conference, Newell y
Simon ya disponan de un programa pro- Inteligencia Artificial, el Logic
Theorist que reolva problemas de bsqueda heurstica, junto con los princi-
pios matemticos de Whitehead y Rusell. Gracias a esta conferencia se crea-
ron diferentes grupos de estudio de especialidades en diversas universidades
como el Instituto Tecnolgico de Masachussets, MIT (Minsky), Stanford
(McCarthy) y Carnegie-Mellon (Newell y Simon).

Destaquemos tambin que a mediados de los aos 50 John McCarthy y poste-


riormente el MIT, disearon el lenguaje LISP (List Processing).

De todas formas, la Conferencia del Darmouth acuaba la expresin "Inteli-


gencia Artificial" y predeca que al cabo de 25 aos los ordenadores haran
todo el trabajo de los seres humanos, y en 1958 Newell y Simon aseguraban
que en 1968 un ordenador sera campen mundial de ajedrez y habra demos-
trado algn teorema importante de las matemticas.

1.3.1. PERIODO 1956 - 1969

En este periodo la Inteligencia Artificial es una actividad acadmica poco cono-


cida fuera de los crculos especializados. Durante estos aos la Inteligencia
Artificial se caracteriza por una ambicin exagerada en los objetivos que se
pretenden lograr, agravndose este hecho por las limitaciones reales del hard-
ware y del software de la poca. Esto abocara en una gran decepcin al final
de este periodo, debido a la dificultad de obtener resultados y a la constatacin
terica de la imposibilidad de obtenerlos en ciertos casos. Aun as en esta
poca se realizaron con xito varios proyectos menos ambiciosos que supusie-
ron un avance en el campo de la Inteligencia Artificial (LISP, SAINT, juego de
damas, ELIZA, Student, etc.).

Los proyectos mas ambiciosos de esta poca fueron el intento del General
Problem Solver(GPS), el Perceptron, la Traduccin Automtica y la resolucin
generalizada de problemas matemticos.

Logic Theorist. 1956. El Logic Teorist fue programado por Alan Newell, Her-
bert Simon y J.C. Shaw y buscaba las demostraciones de Teoremas Lgicos.
Un teorema lgico tiene la siguiente forma: supuesto que o bien X o bien Y es
verdadera, y supuesto que Y es de hecho falsa, entonces X es verdadera. El
Logic Theorist encontr la demostracin de 38 de los 52 teoremas presentes
en el capitulo II de los "Principia Mathematica" de Bertrand Russell y Alfred
North Whitehead. Sirvi como base para el GPS.

General Problem Solver(GPS). El Solucionador General de Problemas fue


llevado a cabo por Alan Newell, Herbert Simon y J.C. Shaw. La filosofa de
GPS era que las tcnicas para solucionar un problema pueden separarse del
conocimiento especfico sobre el problema. Se trata de un programa que solo

Mg. Juan Gamarra Moreno 23


resuelve problemas en un microcosmos formalizado. El programa es capaz de
resolver problemas como el de las Torres de Hanoi. Exactamente del tipo
puzzle en los que una vez que se ha descrito el objetivo y la posicin final, y
dado un listado de los medios disponibles, GPS puede realizar los ensayos
necesarios hasta alcanzar el objetivo (anlisis medios-fines). Tambin utiliza la
teora de la retroalimentacin de Wiener.

Perceptrn. Proyecto iniciado en el 1958 por Frank Rosenblatt. Su intencin


era ilustrar algunas propiedades fundamentales de los sistemas inteligentes en
general, sin entrar en mayores detalles con respecto a condiciones especficas
y desconocidas para organismos biolgicos concretos. Rosenblatt crea que la
conectividad existente en las redes biolgicas tiene un elevado porcentaje de
aleatoriedad y que la herramienta de anlisis ms apropiada era la teora de
probabilidades. El Perceptrn que desarrollo Rosenbatt imitaba el funciona-
miento del ojo humano, el fotoperceptrn como se le llam era un dispositivo
que responda a seales pticas.

El Perceptrn era inicialmente un dispositivo de aprendizaje, en su configura-


cin inicial no estaba en capacidad de distinguir patrones de entrada muy
complejos, sin embargo mediante un proceso de aprendizaje era capaz de ad-
quirir esta capacidad.

Mediante estas investigaciones se pudo demostrar que el Perceptrn era ca-


paz de clasificar patrones correctamente, en lo que Rosenblatt denominaba un
entorno diferenciado, en el cual cada clase estaba formada por patrones simi-
lares. El Perceptrn tambin era capaz de responder de manera congruente
frente a patrones aleatorios, pero su precisin iba disminuyendo a medida que
aumentaba el nmero de patrones que intentaba aprender.

En 1969 Marvin Minsky y Seymour Papert publicaron su libro: "Perceptrons: An


introduction to Computational Geometry", el cual para muchos signific el final
de las redes neuronales. En el se presentaba un anlisis detallado del Per-
ceptrn, en trminos de sus capacidades y limitaciones, en especial en cuanto
a las restricciones que existen para los problemas que una red tipo Perceptrn
puede resolver; la mayor desventaja de este tipo de redes es su incapacidad
para solucionar problemas que no sean linealmente separables.

A pesar de esta limitacin, el Perceptrn es an hoy una red de gran importan-


cia, pues con base en su estructura se han desarrollado otros modelos de red
neuronal como la red Adaline y las redes multicapa.

LISP (LISt Procesing). En 1958 John McCarthy anunci el desarrollo del len-
guaje de programacin LISP (LISt Procesing), este fue considerado desde
aquel momento como lenguaje de programacin de los investigadores de I.A.
El LISP es un lenguaje declarativo funcional.

SAINT (Symbolic Automatic INTegrator). Programa desarrollado por J. Sla-


gle en 1961. Con el que se inicia la automatizacin de la integracin simblica.

GTP (Geometry Theorem Prover), Demostrador de Teoremas Geomtricos,


programa desarrollado por Herbert Gelernter y auspiciado por IBM para resol-

24 Tpicos y Aplicaciones de la Inteligencia Artificial


ver problemas de geometra elemental. Se inicio en el 1958. Gelernter trabaj
durante tres aos, escribiendo y desarrollando las veinte mil introducciones
que componan el GPS, pero adems tuvo que disear un nuevo lenguaje de
programacin. GPS funcionaba de atrs hacia delante (backward), primero se
expone el teorema a demostrar y el programa empieza a construir cadenas de
resultados intermedios que conducen al fin, a teoremas conocidos o a axio-
mas.

Programa para jugar a las damas. Programa creado por Arthur Samuel (figu-
ra 1.5) en 1962 y al igual que el proyecto GTP fue auspiciado por IBM. El pro-
grama era capaz de aprender por si solo. Aprenda de la experiencia teniendo
en cuenta sus errores y xitos pasados para determinar su juego en partidas
posteriores. Alex Bernstein, consigui tambin un resultado similar para el aje-
drez. Tras hacerse eco la prensa de estos logros, se creo un escndalo entre
los periodistas y accionistas de IBM en general al considerar que se estaba
gastando el dinero de investigacin en unos objetivos tan frvolos. Con lo que
IBM no sigui aportando fondos para investigaciones en el campo de la Inteli-
gencia Artificial.

Figura 1.5. Arthur Samuel (de pie)

Fracaso de la Traduccin Automtica, La CIA y otros organismos militares,


tras ser conocedores de la utilizacin, por parte del ejercito britnico, de orde-
nadores en la Segunda Guerra Mundial para descifrar cdigos secretos enemi-
gos; pensaron que la traduccin automtica no seria ms difcil, as podran
leer casi en el acto cualquier publicacin del mundo, escrita en cualquier idio-
ma. Despus de gastar veinte aos de investigacin y casi veinticinco millones
de dlares en proyectos de este tipo la NRC (Consejo Nacional de Investiga-
cin, de EE.UU.) puso fin a este tipo de investigaciones en todo los Estados
Unidos. Este hecho hizo que se paralizasen todas las investigaciones con in-
versin pblica respecto a Inteligencia Artificial., el ALPAC (Automated Lan-
guage Processing Advisory Committee), Comit de Seguimiento del Procesa-
miento Automtico del Lenguaje, arroll a todos los laboratorios en los que se
realizaban proyectos sobre investigacin lingstica, afortunadamente, los cen-
tros de investigacin ms importantes (MIT, Carnegie Mellon y Stanford) se

Mg. Juan Gamarra Moreno 25


salvaron por no tener entre manos ningn proyecto asociado a la rama de la
Traduccin Automtica.

Se reconocen las dificultades: concepcin errnea de los proyectos, mal cono-


cimiento del lenguaje, tcnicas informticas inadecuadas, etc. Sin embargo,
posteriormente comienzan a vislumbrarse importantes avances tanto en lin-
gstica terica como en ciencia informtica.

Como ancdota se tiene el resultado que se obtuvo al traducir primero del in-
gls al ruso, y el resultado se tradujo de nuevo al ingls:

- Original en ingls: El espritu es fuerte, pero la carne es dbil.

- Resultado despus de traducir al ruso y luego al ingls: El vodka es bueno,


pero el filete est podrido.

Micromundos de Bloques. El proyecto de los Micromundos fue ideado por


Marvin Minsky y Seymour Paper en 1963. Tras desistir de sus intentos previos
en visin artificial ante la dificultad que supona realizar un proyecto de tal
magnitud, en los que se intentaba conectar una cmara de televisin a un or-
denador y hacer que la cmara describiera lo que vea. Minsky opto por llevarla
a cabo en un plano ms reducido, los Micromundos de Bloques.

Los micromundos no eran otra cosa que "representaciones" de laboratorio de


la vida real, con un aditivo muy especial, el sujeto que interaccionara con la
realidad sera un ordenador con forma de robot o de simple programa. Se crea-
ron programas capaces de tratar con objetos geomtricos (SHRDLU), robots
que manejaban cubos (Shakey) y diferentes programas que "entendan" el in-
gles para sacar de las frases una determinada informacin (SIR y STUDENT).

Finalmente en 1969 el proyecto de los Micromundos tambin fracaso, pues su


"sencillez" no tena visos de ampliarse y cambiar el prefijo "micro" por uno con
un significado ms extenso. ARPA (Advanced Research Proyect Agency) dejo
de subvencionar el proyecto tras acabarse los plazos fijados y ver que no se
haba logrado ni un 25% de lo prometido.

STUDENT y SIR. 1964. Daniel Bobrow present como tesis doctoral a su pro-
fesor, Marvin Minsky, un programa llamado STUDENT, este era capaz de en-
tender enunciados de problemas algebraicos escritos en ingls y responder a
sus preguntas. Los problemas caractersticos que poda solucionar STUDENT
son similares al siguiente: "El to de Guillermo es dos veces ms viejo que el
padre de Guillermo. Dentro de dos aos, el padre de Guillermo ser tres veces
ms viejo que Guillermo .La suma de sus edades es 92. Averiguar la edad de
Guillermo".

A su vez, Bertram Raphael disea SIR (Semantic Information Retrieval), Re-


cuperacin de informacin semntica, este programa comprenda oraciones
sencillas en ingls que describan situaciones acerca de pertenencias y rela-
ciones parecidas. Por ejemplo, una conversacin con SIR podra ser (de hecho
lo es) la siguiente:

26 Tpicos y Aplicaciones de la Inteligencia Artificial


Persona> Todo muchacho es una persona

SIR> Entiendo

Persona> Un dedo es una parte de la mano

SIR> Entiendo

Persona> Cada persona tiene dos manos

SIR> Esta oracin es ambigua, reformlela, por favor.

Persona> Hay dos manos en cada persona

SIR> Entiendo

Persona>Cuntos dedos tiene Juan?

SIR> Esta oracin es ambigua.

Persona> Juan es un muchacho

SIR> Entiendo

Persona>Cuntos dedos tiene Juan?

SIR> Esta oracin es ambigua, pero supongo que (TIENE) significa (TIENE
COMO PARTES). Cuntos dedos hay en cada mano?

Persona> Cada mano tiene cinco dedos

SIR> Entiendo

Persona> Cuntos dedos tiene Juan?

SIR> La respuesta es 10.

Estos dos programas, SIR y ESTUDENT funcionan mediante la "comparacin


de patrones", es decir, cuando el programa detecta que unas palabras clave
estn colocadas de una forma especial, toma la informacin necesaria de don-
de el patrn le aconseja.

ELIZA (o DOCTOR). Hacia 1965, Weizenbaum trabajaba en el MIT, intentando


que los ordenadores hablaran en ingls con la gente. Pens que los programas
existentes como STUDENT se basaban en dominios limitados, y los dominios
que describan esos programas estaban ligados a la propia estructura del pro-
grama. Y dado que Weizenbaum se dio cuenta de que no podra conseguir ese
fin en tan poco tiempo, pens en crear un programa con unas cuantas ideas
que se le haban ocurrido. Una de esas ideas era que el conocimiento sobre
los dominios se encontrase en mdulos ajenos al propio programa, as cambiar
de tema seria tan fcil como cambiar de mdulo. Uno de esos mdulos, y el
ms famoso, fue el que imitaba a un psicoanalista rogeriano (el psicoanalista
Carl Rogers pona en funcionamiento una terapia que consista simplemente
Mg. Juan Gamarra Moreno 27
en animar a los pacientes a hablar de sus problemas, respondiendo a sus pre-
guntas con otras preguntas). El programa en cuestin recibi el nombre de
ELIZA (ahora todo un mito de la historia de la Inteligencia Artificial). Aunque a
simple vista ELIZA parece estar hablando animadamente con la persona que le
cuenta sus problemas, la verdad es muy diferente. ELIZA hace creer a su inter-
locutor que se est hablando con "un ser" que razona y entiende, realmente
todo ello se logra mediante trucos como repetir frases cambiando "yo" por "tu",
o echar mano a una frase del principio cuando el "hilo" se acaba transformn-
dola en pregunta. Otro truco utilizado por este programa es insertar frases co-
mo "ya veo" o "hblame ms acerca de esto". Algo con lo que contaba a su
favor ELIZA era que el planteamiento de las conversaciones seguira siempre
un patrn comn de los psicoanlisis rogelianos en que otra conversacin no
iba a resultar extrao escuchar frases como esta "hblame algo ms acerca de
los coches rojos con motas verdes que apartan cerca de tu casa"?. A conti-
nuacin se muestra un ejemplo de una conversacin con ELIZA:

PERSONA> Todos los hombres son iguales.

ELIZA> De que forma?

PERSONA> Siempre nos estn fastidiando de una forma u otra.

ELIZA>Se te ocurre algn ejemplo especfico?

PERSONA> S, mi novio me hizo venir aqu.

ELIZA> Tu novio te hizo venir aqu

PERSONA> Dice que me paso deprimida la mayor parte del tiempo.

ELIZA> Siento enterarme de que estas deprimida

PERSONA> Es verdad. No soy feliz.

ELIZA> Crees que venir aqu te ayudar a ser feliz?

PERSONA> Necesito alguna ayuda, eso s es verdad.

ELIZA> Qu significa para ti obtener alguna ayuda?

PERSONA> Quiz pueda aprender a sobrellevar a mi madre.

ELIZA> Hblame algo ms acerca de tu familia.

PERSONA> Mi madre se preocupa por m.

ELIZA> Quin ms se preocupa por ti en tu familia?

PERSONA> Mi padre

ELIZA> Tu padre

PERSONA> En algunas cosas te pareces a mi padre


28 Tpicos y Aplicaciones de la Inteligencia Artificial
ELIZA> Qu parecido ves?

PERSONA> No eres muy agresivo, pero creo que no quieres que yo me d


cuenta de eso.

ELIZA> Por qu piensas que yo no soy muy agresivo?

PERSONA> T no discutes conmigo.

ELIZA> Por que crees que yo no discuto contigo?

PERSONA> Me tienes miedo

ELIZA> Te gusta creer que te tengo miedo?

PERSONA> Mi padre tiene el miedo a todo el mundo.

ELIZA> Que ms se te ocurre cuando piensas en tu padre?

PERSONA> En matones.

ELIZA> Tiene eso que ver con el hecho de que tu novio te hizo venir aqu?

A ms de una persona, le pareca que el programa seria capaz de superar el


Test de Turing, pero realmente esto no es as, ya que la prueba de Turing de-
ba de enfrentar a dos partes, una persona y un ordenador, ambas deban de
comportarse de forma normal y habra que averiguar quien era la persona y
quien el ordenador, este hecho quedara al descubierto en cuanto ELIZA dijese
(por ejemplo): "Cuntame algo ms acerca de tu gusto por las pelculas en
versin original", en una conversacin normal no se utilizan esas expresiones.

SHAKEY. 1969. Un equipo de investigacin de Stanford tuvo la atrevida idea


de poner ruedas a su robot, enseguida el ejercito (norteamericano) se mostr
interesado por el proyecto, subvencionndolo por medio del ARPA (Avanced
Research Proyects Agency), la idea de este era convertir al robot de Stanford
en un espa mecnico, capaz de infiltrarse en las lneas enemigas para conse-
guir informacin. Pero la apariencia del robot no pareca capaz ni de cruzar la
esquina: una caja cuadrada, con una cmara de televisin (de las del 69), un
telmetro y una antena de radio. De todas formas el proyecto sigui adelante, y
el robot fue bautizado como Shakey (figura 1.6). El mundo de Shakey era un
Micromundo de Bloques de tamao natural, compuesto de siete habitaciones
conectadas entre s por ocho puertas, habiendo en las habitaciones cubos que
Shakey poda manipular, apilando y transportndolos de un lado a otro. Todo
ello siguiendo las instrucciones (en ingls) que le transmitan mediante un te-
clado. Finalmente el fracaso de los Micromundos afecto a este proyecto ya que
ARPA dejo de subvencionarlo.

Mg. Juan Gamarra Moreno 29


Figura 1.6. Robot fue bautizado como Shakey.

DENDRAL. El primer sistema experto. Tambin en 1965 se inicia la investiga-


cin en la universidad de Stanford de sistemas expertos en el programa Heu-
ristic Programming Project.

En 1965 Feigenbaum entra a formar parte del departamento de informtica de


Stanford. All conoci a Joshua Lederberg, el cual quera averiguar cual era la
estructura de las molculas orgnicas completas. Si se quiere estudiar un
compuesto qumico, lo primero que tenemos que hacer es averiguar su frmula
qumica. El mtodo habitual de anlisis consiste en dividir el problema en par-
tes ms pequeas. El problema de Lederberg era que haba demasiadas com-
binaciones. Cada fragmento poda corresponder a varias subestructuras, pero
solo una estructura molecular global se ajustaba a todas las restricciones del
problema. El descubrimiento de esa estructura global exiga buscar en un rbol
las posibilidades. Fue por esta razn por la que pusieron al programa el nom-
bre de DENDRAL, que significa en griego "rbol". Antes de DENDRAL los
qumicos solo tenan una forma de resolver el problema, y esta era tomar unas
hiptesis relevantes como soluciones posibles, y someterlas a prueba compa-

30 Tpicos y Aplicaciones de la Inteligencia Artificial


rndolas con los datos. La realizacin DENDRAL dur ms de diez aos (des-
de 1965).

Conclusin de este periodo:

Desde el principio de esta joven ciencia, la gran mayora de los propsitos y


objetivos eran anunciados con aos de antelacin como grandes xitos, es
ms se llegaba a anunciar con un plazo de meses, conceptos, como la Visin
Artificial, cuando an no se haba puesto la primera letra sobre el papel. Este
hecho, el de subestimar la dificultad de los proyectos, ha hecho mucho mal a la
Inteligencia Artificial desde sus comienzos, la razn no es otra que la "des-
acreditaron" a la cual ha tenido que ser sometida por los medios de comunica-
cin y cientficos rivales (rivales o no partidarios de la Inteligencia Artificial),
hasta el punto de perder subvenciones millonarias por los excesos de optimis-
mo.

1.3.2. PERIODO 1970 - 1979

Los problemas debidos al exceso de optimismo y ambicin sufridos en el pe-


riodo anterior, llevaron a un replanteamiento de los objetivos a perseguir y se
pas a tratar problemas ms concretos. Como hecho mas destacado es el na-
cimiento de los sistemas expertos y la recuperacin que trajo dentro del campo
de la Inteligencia Artificial, ya que supuso el regreso de las inversiones. Los
sistemas expertos o sistemas de produccin con reglas tratan problemas res-
tringidos o un entorno limitado. Dos de los sistemas expertos ms populares
son el MYCIN y el PROSPECTOR.

En este periodo, tambin se inicia la institucionalizacin de la comunidad cien-


tfica que trabaja en el campo de la Inteligencia Artificial con el Primer Congre-
so Internacional de Inteligencia Artificial. Poco despus, en el ao 1970, apare-
ce el primer nmero de la revista especializada Artificial Intelligence.

Otra de las diferencias con el periodo anterior es que la Inteligencia Artificial se


extiende de los mbitos acadmicos a los centros de investigacin y a las uni-
versidades, donde las aplicaciones ya no son tan tericas y adems de tratar
problemas matemticos y demostraciones de teoremas se realizan aplicacio-
nes mas experimentales, como los sistemas expertos y la programacin lgica.

Dentro de la programacin lgica se logra uno de los avances ms destacables


con la aparicin en 1972 del Lenguaje PROLOG.

1976. MYCIN. Desarrollado por Eduard Feigenbaum, Bruce Buchanan en la


universidad de Stanford y documentado por Edward Shortliffe. MYCIN se trata-
ba de un sistema experto para el diagnstico de enfermedades infecciosas.
Desde los resultados de anlisis de sangre, cultivos bacterianos y dems da-
tos, el programa era capaz de determinar, o en lo menos, sugerir el microorga-
nismo que estaba causando la infeccin. Despus de llegar a una conclusin,
MYCIN prescriba una medicacin que se adaptaba perfectamente a las carac-
tersticas del sujeto, tales como el peso corporal de este. Despus del recono-
cido xito que tuvo MYCIN entre la comunidad cientfica de Inteligencia Artifi-

Mg. Juan Gamarra Moreno 31


cial e investigadores de medicina, los autores del programa pusieron a disposi-
cin de otros investigadores una versin de MYCIN que contena el motor "in-
ferencial" de este para que fueran los propios usuarios los que insertasen al
programa informacin respecto al tema a tratar; se podra decir que esta ver-
sin "adaptada" del original MYCIN, era el primer entorno de desarrollo de sis-
temas expertos.

PROSPECTOR. Documentado por P. E. Hart (1978) y R.Duda (1979). Era un


sistema experto para evaluar los yacimientos de minerales, en particular cobre
y Uranio.

PROLOG (PROgramimg LOGic). Desarrollado en 1972 por la Universidad de


Marseille bajo la direccin de Alan Colmerauer. Prolog se basa en la definicin
y despus en la resolucin de formulas lgicas. Prolog al igual que LISP es un
lenguaje declarativo, ya que el programa consiste en una lista de hechos y re-
glas en lugar de una serie de comandos.

XCON (eXpert CONfigurer), Configurador Experto. 1979. John McDermott.


XCON es el primer sistema experto con aplicaciones en el mundo real fuera de
los mbitos acadmicos y de los laboratorios de investigacin.

DEC iba a lanzar al mercado una nueva serie de ordenadores, los llamados
VAX. Dado que todos los ordenadores tenan configuraciones distintas entre s,
la VAX estaba previendo el enorme cuello de botella que se iba a formar,
cuando los ordenadores tuviesen fallos de configuracin y hubiese que arreglar
este problema uno por uno, con el consiguiente gasto de tiempo y dinero que
eso supona. Los directivos de la DEC contrataron a John McDertmott, con el
cometido de realizar un sistema experto que configurase todos los ordenado-
res que saliesen de la DEC. El informe de viabilidad de McDermontt expuso
resultados prometedores, y en diciembre de 1978 se empez a trabajar en el
proyecto. En abril de 1979 el equipo de investigacin que lo haba diseado
(con McDermott a la cabeza), pens que ya estaba preparado para salir y "co-
nocer el mundo", fue entonces cuando se hizo una prueba real, esperando re-
solver positivamente un 95% de las configuraciones, este porcentaje tal alto
anhelado por McDermontt y compaa se qued en un 20% al ser contrastado
con la realidad; XCON volvi al laboratorio, donde fue revisado y a finales de
ese mismo ao (1979) funcion con resultados positivos en la DEC. En 1980
XCON se instaur totalmente en DEC. Y en 1984, el XCOM haba crecido has-
ta multiplicarse por diez. En 1986 la compaa haba invertido ms de cincuen-
ta aos/hombre en el programa, pero se estaba recuperando con creces de su
inversin al ahorrarse cuarenta millones de dlares al ao.

Conclusin de este periodo

Como conclusin a este periodo hay que destacar la revolucin que se inicio
con los sistemas expertos. El xito de XCON, MYCIN y PROSPECTOR con-
venci a las ms importantes empresas a invertir en sistemas expertos. Incluso
para los ms conservadores y los radicales Anti- Inteligencia Artificial, algo se
hacia evidente, mientras que los costes de desarrollo de los sistemas expertos
se hacan cada vez ms bajos, el salario de los expertos humanos se hacia
ms alto. La formacin de un futuro experto costaba mucho dinero y aos de

32 Tpicos y Aplicaciones de la Inteligencia Artificial


esfuerzo, mientras que una vez creado un sistema experto poda ser copiado y
distribuido tantas veces como necesario fuese. Adems, el sistema experto
nunca se cansa, no necesita dormir, no se distrae, no se va a la competencia,
ni se pone enfermo, ni se jubila, ni pide aumento de sueldo.

1.3.3. AOS OCHENTA Y PRINCIPIOS DE LOS 90

Este periodo viene marcado por el xito de los sistemas expertos y durante los
aos ochenta aparecen empresas y proyectos especializados en ofrecer solu-
ciones comercializables basados en las tcnicas de la Inteligencia Artificial. La
Inteligencia Artificial se consolid en cada vez ms empresas que desarrollaron
las "mquinas lisp" ( ordenadores que ejecutaban programas en LISP con la
misma rapidez de un ordenador central ) y los SHELLS ( herramientas de
desarrollo de sistemas expertos). Ejemplos de sistemas expertos que se co-
mercializaron en esta poca son el DELTA, de la General Electric Company,
que ayudaba a los mecnicos en la reparacin y en el diagnostico de locomo-
toras diesel; el Aldo en Disco para la reparacin de calderas hidroestticas gi-
ratorias usadas para la eliminacin de bacterias y el EURISKO capaz de per-
feccionar su propio cuerpo de leyes heursticas por induccin.

Cada vez ms el mantener la base de datos de reglas de los sistemas expertos


actualizada era mas costoso. El XCON llego a tener 10.000 reglas con lo que
Dec tena que gastar anualmente 2 millones de dlares en el mantenimiento de
la Base de Conocimientos. Actualmente este mantenimiento supone una de las
actividades ms importantes de la Inteligencia Artificial.

El Ministerio de Industria y Comercio Internacional de Japn impulsa desde


1979 un proyecto (Quinta generacin de ordenadores) conjunto de varias em-
presas que pretenda desarrollar una nueva generacin de ordenadores adap-
tados a las necesidades que se prevean para la dcada de los 90 y que basa-
ran su funcionamiento en tcnicas de la Inteligencia Artificial.

Finalmente el proyecto finalizo en 1992, pero aunque se obtuvieron ciertos


avances en procesamiento paralelo, procesamiento del lenguaje natural, pro-
gramacin lgica y en el tratamiento de la informacin, no supuso ninguna re-
volucin ni ningn gran cambio ni ventaja tecnolgica. Seguidamente Japn se
lanzo a otro nuevo proyecto Real World Computing (RWC) Project, cuyas vas
de investigacin, son las redes neuronales, los computadores pticos y la faci-
lidad de uso de los ordenadores.

Por aquel entonces, el proyecto japons sirvi para estimular la inversin en


Inteligencia Artificial de otros pases. Sobretodo a raiz de la publicacin del li-
bro The Fifth Generation de Feigenbaum y McCorduck en 1983 que adverta
del peligro de una superioridad del Japn en el futuro de la informtica a tra-
vs del dominio de las tcnicas de la Inteligencia Artificial.

En 1980 se crea el sistema experto matemtico MAPLE. Mas tarde en 1988 se


crea otro sistema experto matemtico importante el Mathematica. Ambos sis-
temas permiten trabajar directamente, es decir sin tediosas programaciones,
con expresiones simblicas como polinomios, derivadas, integrales indefinidas,

Mg. Juan Gamarra Moreno 33


matrices, tensores, grupos, funciones especiales, y mtodos altamente sofisti-
cados.

En 1982 se fundo el ECCAI (European Coordinating Committee for Artificial


Intelligence).

En 1985 la Nasa desarrolla CLIPS, es un generador de sistemas expertos que


est codificado en lenguaje C, y que implementa un lenguaje propio para desa-
rrollar sistemas expertos. Como principal caracterstica se puede citar que
cuenta con tres paradigmas de programacin: orientado a reglas, procedural y
orientado a objetos. Tambin en este mismo ao se programa un juego de
Ajedrez HiTech que alcanza el nivel de un Gran Maestro.

A partir de 1986 se recuperan los viejos esquemas del Perceptron en la Redes


Neuronales.

1987 supuso el fin de las maquinas LISP, debido a la aparicin de los micro-
ordenadores de Apple e IBM con potencia parecida a las maquinas LISP, y la
programacin en C del software utilizado en Inteligencia Artificial para los nue-
vos microordenadores.

En 1989 se constituye el Centro de Inteligencia Artificial (CIA), en Espaa, ms


tarde, se formara la Asociacin Espaola Para la Inteligencia Artificial (AEPIA).

1.3.4. AOS 90 Y EL PRESENTE

Uno de los hechos ms populares que cualquiera conoce sobre la Inteligencia


Artificial es la victoria de Deep Blue (computadora de IBM que jugaba al aje-
drez), contra Kasparov en 1997 (figura 1.7).

Pero recientemente en la industria japonesa han aparecido diversos Robots


que han servido para ejemplificar el estado actual de la Inteligencia Artificial.
Primero fue Honda con ASIMO (acrnimo de "Advanced Step in Innovative
Mobility"- paso avanzado en movilidad innovadora), es un robot humanoide
creado en el ao 2000 por la empresa Honda, un robot con forma humanoide
capaz de andar y subir escaleras (figura 1.8).

SONY ha comercializado con xito una serie de robots-perro, el AIBO Artificial


Intelligence ROBOt (Robot de Inteligencia Artificial). EL robot AIBO se muestra
en la figura 1.9.

34 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 1.7. Kasparov vs. Deep Blue

Figura 1.8. Robot ASIMO

Mg. Juan Gamarra Moreno 35


Figura 1.9. Robot AIBO

Al robot AIBO se le han programado emociones e instintos. Acta de modo que


intentar satisfacer sus deseos originados en sus instintos. Si se los satisface,
aumentarn sus niveles de alegra, en caso contrario, se pondr triste o furio-
so. Como todo ser viviente, Aibo aprender a lograr lo que "desea". En ocasio-
nes, mover sus patas con furia o mostrar otras seales de bronca si no reci-
be de su amo la atencin que requiere. De este modo, la manera en que el
amo responde a las expresiones de emotividad de Aibo influir en su persona-
lidad y "crecimiento". El robot, tiene reconocimiento de voz, hasta 40 voces y
puede recordar el nombre que se le d y responder. Es capaz de expresar
emociones.

1.4. LAS REAS DE INVESTIGACIN DE LA IA 2


Son muchas las reas de la Inteligencia Artificial que se investigan hoy da.
Entre ellas, tenemos las siguientes:

La representacin del conocimiento, que busca en el descubrimiento de


mtodos expresivos y eficientes describir informacin sobre aspectos del
mundo real.

Los mtodos de aprendizaje automtico, que extienden las tcnicas esta-


dsticas con el fin de posibilitar la identificacin de un amplio rango de ten-
dencias generales a partir de un conjunto de datos de entrenamiento.

El campo de la planificacin, que enfrenta el desarrollo de algoritmos que


construyen y ejecutan automticamente secuencias de comandos primiti-
vos con el fin de alcanzar ciertas metas de alto nivel.

2
La ciencia y el hombre [en lnea]. Veracruz: Revista de divulgacin cientifica y tec-
nologica de la Universidad Veracruzana; 2004. [fecha de acceso 18 de noviembre de
2007]. URL disponible en:
http://www.uv.mx/cienciahombre/revistae/vol17num3/articulos/inteligencia/index.htm.

36 Tpicos y Aplicaciones de la Inteligencia Artificial


Los trabajos en el rea de razonamiento posible, que hacen uso de princi-
pios estadsticos para desarrollar codificaciones de informacin incierta.

El estudio de las arquitecturas de agentes, que busca la integracin de


otras reas de la I A con el objeto de crear agentes inteligentes, entidades
robustas capaces de comportamiento autnomo y en tiempo real.

La coordinacin y colaboracin multiagentes, que ha permitido el desarrollo


de tcnicas para la representacin de las capacidades de otros agentes y
la especificacin del conocimiento necesario para la colaboracin entre
ellos.

El desarrollo de ontologas, que persigue la creacin de catlogos de co-


nocimiento explcito, formal y multipropsito, que puedan ser utilizados por
sistemas inteligentes.

Los campos de procesamiento de voz y lenguaje, que buscan la creacin


de sistemas que se comunican con la gente en su lenguaje.

La sntesis y comprensin de imgenes, que conduce a la produccin de


algoritmos para el anlisis de fotografas, diagramas y videos, as como
tambin de tcnicas para el despliegue visual de informacin cuantitativa y
estructurada.

1.5. REAS DE APLICACIN DE LA IA2


La Inteligencia Artificial se aplica en los sistemas reales en una gran variedad
de ramas y problemas:

Gestin y control: anlisis inteligente, fijacin de objetivos.

Fabricacin: diseo, planificacin, programacin, monitorizacin, control,


gestin de proyectos, robtica simplificada y visin computarizada.

Educacin: adiestramiento prctico, exmenes y diagnstico.

Ingeniera: diseo, control y anlisis.

Equipamiento: diseo, diagnstico, adiestramiento, mantenimiento, confi-


guracin, monitorizacin y ventas.

Cartografa: interpretacin de fotografas, diseo, resolucin de problemas


cartogrficos.

Profesiones: abogaca, medicina, contabilidad, geologa, qumica.

Software: enseanza, especificacin, diseo, verificacin, mantenimiento.

Sistemas de armamento: guerra electrnica, identificacin de objetivos,


control adaptativo, proceso de imgenes, proceso de seales.

Mg. Juan Gamarra Moreno 37


Proceso de datos: educacin, interfase en lenguaje natural, acceso inteli-
gente a datos y gestores de bases de datos, anlisis inteligente de datos.

Finanzas: planificacin, anlisis, consultora.

1.6. APLICACIONES COMERCIALES DE LA INTELIGENCIA


ARTIFICIAL2
Pero tambin la Inteligencia Artificial tiene numerosas aplicaciones comerciales
en el mundo de hoy. Vase:

Configuracin: seleccin de distribucin de los componentes de un sistema


de computacin.

Diagnosis: hardware informtico, redes de ordenadores, equipos mecni-


cos, problemas mdicos, averas telefnicas, instrumentacin electrnica,
circuitos electrnicos, averas automovilsticas.

Interpretacin y anlisis: datos geolgicos para prospeccin petrolfera,


compuestos qumicos, anlisis de seales, problemas matemticos com-
plejos, evaluacin de amenazas militares, anlisis de circuitos electrnicos,
datos biolgicos (coronarios, cerebrales y respiratorios), informacin de ra-
dar, sonar e infrarrojos.

Monitorizacin: equipos, monitorizacin de procesos, fabricacin y gestin


de procesos cientficos, amenazas militares, funciones vitales de pacientes
hospitalizados, datos financieros en tiras de papel perforado por teleimpre-
sora, informes industriales y gubernamentales.

Planificacin: gestin de activo y pasivo, gestin de cartera, anlisis de


crditos y prstamos, contratos, programacin de trabajos de taller, gestin
de proyectos, planificacin de experimentos, produccin de tarjetas de cir-
cuito impreso.

Interfaces inteligentes: hardware (fiscal) de instrumentacin, programas de


computadora, bases de datos mltiples, paneles de control.

Sistemas de lenguaje natural: interfaces con bases de datos en lenguaje


natural, gestin de impuestos (ayudas para contabilidad), consultora en
temas legales, planificacin de fincas, consultora de sistemas bancarios.

Sistemas de diseo: integracin de microcircuitos en muy alta escala, sn-


tesis de circuitos electrnicos, plantas qumicas, edificios, puentes y pre-
sas, sistemas de transporte.

Sistemas de visin computarizada: seleccin de piezas y componentes,


ensamblado, control de calidad.

Desarrollo de software: programacin automtica.

38 Tpicos y Aplicaciones de la Inteligencia Artificial


Programas de reconocimiento de voz para reservar billetes de avin para
un vuelo.

Sistemas expertos que controlan el correcto funcionamiento de un trans-


bordador espacial.

Sistemas expertos de diagnostico de enfermedades.

Proteccin de fraudes en tarjetas de crdito y cuentas a travs de siste-


mas de redes neuronales o sistemas expertos.

Deteccin de pequeas anomalas invisibles al ojo humano en radiografias.

Sistemas de mensajera de voz.

En el mundo de los videojuegos. Rivales con comportamiento logico.

Traduccin automtica de documentos. (GOOGLE)

Mg. Juan Gamarra Moreno 39


40 Tpicos y Aplicaciones de la Inteligencia Artificial
CAPITULO DOS
BSQUEDA

La solucin de problemas de bsqueda permite encontrar una secuencia de


estados y acciones que nos lleven a alcanzar una meta. Se puede considerar
que las acciones son las causantes de la transicin entre uno y otro estado;
por ello, se tiene que determinar qu acciones permiten obtener el estado co-
rrespondiente a una meta. Pero, para ello, primero tiene que decidir qu tipos
de acciones y estados habr que tomar en consideracin.

A travs de la historia los problemas de bsqueda se han utilizado en la solu-


cin de rompecabezas y juegos. Para estos problemas se requiere la explora-
cin de varias alternativas antes de elegir la siguiente accin.

2.1. FORMULACIN DE PROBLEMAS DE BSQUEDA


Un problema es un conjunto de informacin que se utiliza para decidir que de-
bemos hacer. Los elementos bsicos que configuran la definicin de un pro-
blema son los estados y las acciones. Para capturarlos formalmente necesi-
tamos lo siguiente:

El estado inicial, es el estado donde se inicia la bsqueda.

El conjunto de las posibles acciones que el agente puede emprender. El


trmino operador denota la descripcin de una accin en funcin de la
cual se alcanzar un estado al emprender una accin en un estado particu-
lar. (Otra forma de definirlo es mediante la funcin subsecuente S. Tenien-
do un estado particular x, S(x) responde con un conjunto de estados obte-
nibles a partir de x mediante una sola accin).

Los dos trminos anteriores definen el espacio de estados del problema: el


conjunto de todos los estados que pueden alcanzarse a partir del estado inicial

Mg. Juan Gamarra Moreno 41


mediante cualquier secuencia de acciones. Una ruta del espacio de estados es
simplemente cualquier secuencia de acciones que permiten pasar de un esta-
do a otro. El siguiente elemento de un problema es:

La prueba de meta, es lo que el agente aplica a la descripcin de un solo


estado para decidir si se trata de un estado meta. Hay ocasiones en las
que existe un conjunto explicito de posibles estados meta, y la prueba slo
sirve para cerciorarse si hemos alcanzado alguno de ellos. A veces la me-
ta se especifica mediante una propiedad abstracta, en vez de un conjunto
de estados enumerados explcitamente. Por ejemplo, en el ajedrez la meta
es alcanzar un estado denominado jaque mate en el que el rey del con-
trincante se capturar en la siguiente jugada, haga lo que haga ste.

Por ltimo, hay casos en los que una solucin es preferible a la otra, no obs-
tante que con ambas pueda lograrse la meta. Por ejemplo, son preferibles las
rutas que entraan menos acciones o acciones menos costosas.

La funcin costo de ruta es una funcin mediante la que se asigna un costo


a una ruta determinada. En todos los casos que consideraremos, este
costo es la suma de los costos de cada una de las acciones individuales
que se emprendan a lo largo de la ruta.

Conjuntamente, el estado inicial, el conjunto del operador, la prueba de la meta


y la funcin costo de ruta definen un problema.

2.2. CMO ESCOGER ESTADOS Y ACCIONES?


Empezamos a travs de un ejemplo sencillo: Ir en auto de Arad a Bucarest
utilizando las carreteras del mapa de la figura 2.1.

En un espacio de estados adecuado hay 20 estados, cada uno de les cuales


se define exclusivamente por ubicacin, especificada como una ciudad. Por lo
tanto, el estado inicial es "en Arad" y la prueba de meta es aqu es Buca-
rest? Los operadores consisten en manejar por las carreteras entre una ciu-
dad y otra.

Una solucin es la ruta que va de Arad a Sibiu, a Rimnicu Vilcea, a Pitesti y a


Bucharest. Son muchas las otras rutas que tambin son soluciones, por ejem-
plo, va Lugoj y Craiova. Para decidir cul de estas soluciones es la mejor, hay
que saber qu es lo que se est midiendo con la funcin costo de trayectoria:
puede ser el kilometraje total o el tiempo de recorrido estimado. La funcin de
costo que se utiliza en este caso ser el kilometraje, as pues, la ruta que va de
Arad a Sibiu, a Rimnicu Vilcea, a Pitesti y a Bucharest, tiene un costo de ruta
de 418 y es la mejor de las soluciones.

42 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 2.1. Un mapa simplificado de Rumania

2.3. EJEMPLOS DE LA SOLUCIN DE PROBLEMAS DE


BSQUEDA

2.3.1. EJEMPLO 1: 8 PUZZLE

El problema consiste en colocar las fichas del puzzle desde el estado inicial al
estado final (figura 2.2), utilizando el espacio vacio.

Estado inicial Estado final

Figura 2.2. Un estado inicial y el estado final para el 8-Puzzle.

Para encontrar la solucin de este problema, se requiere la exploracin de va-


rias alternativas, para llegar al siguiente estado (figura 2.3). En la figura 2.3, a
cada disposicin de las fichas corresponde un estado.

Mg. Juan Gamarra Moreno 43


Figura 2.3. Alternativas para encontrar el siguiente estado en el 8-Puzzle.

Estados: Uno de los estados mostrados en la figura 2.3.

Operadores: Desplazar ficha a la izquierda al vacio, desplazar ficha a la


derecha al vacio, desplazar ficha hacia abajo al vacio y desplazar ficha ha-
cia arriba al vacio.

Prueba de meta: Se encuentra en el estado final?

Costo de ruta: Cada accin cuesta 1.

2.3.2. EJEMPLO 2: EL MUNDO DE LA ASPIRADORA

A un agente se le encomienda limpiar con una aspiradora un piso sucio, con-


tando con informacin completa. Se supone que el agente sabe en dnde est
as como la ubicacin de todas las piezas de mugre y que la aspiradora suc-
ciona adecuadamente.

Estados: Uno de los ocho estados mostrados en la figura 2.4.

Operadores: Desplazarse a la izquierda, desplazarse a la derecha, aspi-


rar.

Prueba de meta: No hay mugre en ninguno de los cuadros.

Costo de ruta: Cada accin cuesta 1.

En la figura 2.4, se muestra todo el espacio de estados as como la totalidad de


sus posibles rutas. Para resolver el problema a partir de cualquier estado tan
slo hay que seguir las flechas hasta llegar al estado meta. Si bien este es el

44 Tpicos y Aplicaciones de la Inteligencia Artificial


caso en todos los problemas, en la mayora de ellos el espacio de estados es
considerablemente ms vasto y complicado.

Figura 2.4. Diagrama del espacio de estados simplificado de la aspiradora. Los arcos indican ac-
cin. I = desplazarse a la izquierda, D = desplazarse a la derecha, A = aspirar.

2.4. MTODOS CIEGOS DE BSQUEDA3


Suponga que desea hallar una trayectoria de una ciudad a otra mediante un
mapa de carreteras como el de la figura 2.5.

Su trayectoria deber comenzar en la ciudad S, su punto inicial, y terminar en


la ciudad G, su meta. Para hallar una trayectoria apropiada en el mapa, nece-
sitar considerar dos costos distintos:

En primer lugar, el costo de clculo para encontrar la trayectoria.

En segundo, el costo del viaje cuando se sigue la trayectoria.

Si necesita ir de S a G con frecuencia, entonces hallar una trayectoria realmen-


te buena justifica la inversin del tiempo de bsqueda. Por otro lado, si requie-
re hacer el viaje slo una vez, y resulta difcil hallar cualquier trayectoria, tal
vez se sienta satisfecho en cuanto obtenga una, aun cuando podra encontrar
algo mejor invirtiendo ms tiempo en la bsqueda.

3
Winston P. Inteligencia Artificial. 3ra. ed. USA: Addison Wesley; 1994

Mg. Juan Gamarra Moreno 45


Figura 2.5. Problema de una bsqueda bsica. Se debe encontrar una trayectoria
desde el nodo inicial, S, al nodo meta, G. Los procedimientos de bsqueda explo-
ran redes como sta, enterndose de las conexiones y distancias mientras lo
hacen.

La bsqueda de red es en realidad una bsqueda de rbol

La manera ms obvia de hallar una solucin es considerar todas las trayecto-


rias posibles. Por supuesto, usted deber descartar las trayectorias que pasan
ms de una vez por una ciudad en particular a fin de no quedar atrapado en un
ciclo, como sera el caso de S-A-D-S-A-D-S-A-D-...

Una vez eliminadas las trayectorias con ciclos, se puede ordenar todas las tra-
yectorias posibles a partir del nodo inicial en un rbol de bsqueda, un tipo
especial de rbol semntico en el que cada nodo representa una trayectoria:

Un rbol de bsqueda es una representacin, o sea, un rbol semntico en el


que

los nodos representan trayectorias;

las ramas conectan trayectorias a extensiones de trayectoria de un solo


paso.

Contiene escritores que

conectan una trayectoria a una descripcin de trayectoria.

Contiene lectores que

producen una descripcin de trayectoria.

En la figura 2.6 se muestra un rbol de bsqueda que consiste en nodos que


representan las trayectorias posibles que salen del nodo inicial de la red de la
figura 2.5.

46 Tpicos y Aplicaciones de la Inteligencia Artificial


Se observa que, aunque cada nodo de un rbol de bsqueda representa una
trayectoria, no hay espacio en los diagramas para escribir cada trayectoria de
cada nodo. En consecuencia, cada nodo est etiquetado slo con el nodo ter-
minal de la trayectoria que representa. Cada hijo representa una trayectoria
que es una extensin de una ciudad de la trayectoria representada por su pa-
dre.

2.4.1. LA BSQUEDA EN PROFUNDIDAD INCURSIONA EN EL RBOL


DE BSQUEDA

Mediante la convencin de intentar las alternativas de izquierda a derecha, lo


primero que hay que hacer es trazar una lnea punteada hasta la base del r-
bol, siguiendo las ramas ubicadas ms a la izquierda, como se muestra en la
figura 2.7.

Figura 2.6 rbol de bsqueda hecho a partir de una red. Cada nodo representa una
trayectoria. Cada nodo hijo representa una trayectoria que es una extensin de un
paso de la trayectoria representada por su padre. Usted convierte redes en rboles
de bsqueda trazando todas las trayectorias posibles hasta que ya no pueda extender
ninguna de ellas sin crear un ciclo.

Mg. Juan Gamarra Moreno 47


Figura 2.7 Ejemplo de bsqueda en profundidad. Se escoge una al-
ternativa y se le sigue en cada nodo hasta llegar a la meta o a
un nodo en el que ya no es posible seguir hacia abajo. Cuando
ya no se puede seguir hacia abajo, la bsqueda se reinicia en el
antecesor ms cercano que posea hijos sin explorar.

Pero como la lnea punteada conduce al nodo hoja C, sin encontrar a G, el si-
guiente paso es volver al nodo antecesor ms cercano que tenga una alternati-
va sin explorar. El nodo ms cercano de este tipo es B. La alternativa que
queda en B es mejor, ya que finalmente permite obtener el xito a travs de E,
a pesar de llegar a otro callejn sin salida en D. En la figura 2.7 se muestran
los nodos encontrados.

Si la trayectoria a travs de E no hubiera funcionado, entonces el procedimien-


to hubiera retrocedido an ms en el rbol, en busca de otro punto de decisin
viable desde el cual pudiera continuar hacia adelante. Al llegar a A, el proce-
dimiento hubiera reanudado su movimiento hacia abajo, alcanzando la meta a
travs de D.

48 Tpicos y Aplicaciones de la Inteligencia Artificial


Algoritmo de la bsqueda en profundidad

Para llevar a cabo una bsqueda en profundidad,

forme una cola de un elemento consistente en una trayectoria de longitud


cero que contenga slo al nodo raz;

hasta que la primera trayectoria de la fila termine en el nodo meta o se va-


ce la cola,

elimine la primera trayectoria de la cola; cree nuevas trayectorias exten-


diendo el primer paso a todos los vecinos del nodo terminal;

rechace todas las trayectorias nuevas con ciclos;

agregue las nuevas trayectorias, si las hay, al frente de la cola.

si el nodo meta se alcanza, mencione que hubo xito; de otro modo, notifi-
que el fracaso.

2.4.2. LA BSQUEDA EN AMPLITUD SE EXTIENDE UNIFORMEMENTE


EN EL RBOL DE BSQUEDA

Como se muestra en la figura 2.8, la bsqueda en amplitud revisa todas las


trayectorias de una longitud dada antes de avanzar a una trayectoria ms lar-
ga. En el ejemplo, la bsqueda en amplitud encuentra una trayectoria completa
al nodo G en el cuarto nivel a partir del nivel raz.

Un procedimiento de bsqueda en amplitud se parece a uno de bsqueda en


profundidad, y difieren tan slo en los puntos donde se agregan los nuevos
elementos a la cola.

Algoritmo de la bsqueda en amplitud

forme una cola de un solo elemento consistente en una trayectoria de lon-


gitud cero que contenga slo al nodo raz;

hasta que la primera trayectoria de la cola concluya en el nodo meta o se


vace la cola,

elimine la primera trayectoria de la cola; cree nuevas trayectorias exten-


diendo el primer paso a todos los vecinos del nodo terminal;

rechace las trayectorias nuevas con ciclos;

agregue las nuevas trayectorias, si las hay, al final de la cola.

si se halla el nodo meta, mencione que hubo xito; si no, notifique el fraca-
so.

Mg. Juan Gamarra Moreno 49


Figura 2.8. Ejemplo de bsqueda en amplitud. El movimiento hacia
abajo se efecta nivel por nivel, hasta que se alcanza la meta.

2.5. REDES Y BSQUEDA PTIMA3

2.5.1. LA BSQUEDA DE RAMIFICACIN Y COTA EXPANDE LA TRA-


YECTORIA PARCIAL DE MENOR COSTO

Una forma de encontrar trayectorias ptimas con menos trabajo es usar la


bsqueda de ramificacin y cota. La idea bsica es simple. Si se desea una
solucin ptima para el mapa de carreteras que se muestra en la figura 2.5, se
tiene que este puede ser S-D-E-F-G.

No obstante, como sabe que la longitud de S-D-E-F-G es 13, puede ahorrarse


una parte del trabajo. Por ejemplo, como se muestra en la figura 2.9, no hay
necesidad de tomar en cuenta las trayectorias que inician con S-D-A-B, puesto
que la longitud de S-D-A-B ya es 13.

De manera ms general, el esquema de ramificacin y cota siempre se man-


tiene al tanto de todas las trayectorias parciales que compiten para su conside-
racin posterior. La ms corta de ellas se extiende un nivel, crendose tantas
trayectorias parciales nuevas como ramas existan. En seguida, se consideran
estas nuevas trayectorias junto con las anteriores restantes: de nuevo, se ex-
tiende la ms corta. Este proceso se repite hasta llegar a la meta a travs de
una trayectoria. Dado que la trayectoria ms corta es la que siempre se esco-
ge para su extensin, la trayectoria que primero encuentra la meta es probable
que sea la ptima.
50 Tpicos y Aplicaciones de la Inteligencia Artificial
Figura 2.9 La longitud de la trayectoria completa de S a G, S-D-E-F-G es 13. De manera pa-
recida, la longitud de la trayectoria parcial S-D-A-B es tambin 13 y cualquier movimiento
adicional a lo largo de una rama la har mayor que 13. En consecuencia, no hay necesidad de
seguir por S-D-A-B, ya que cualquier trayectoria completa que comience con S-D-A-B tiene
que ser mayor que la trayectoria completa ya conocida. Slo las otras trayectorias que parten
de S y de S-D-E tienen que ser consideradas, ya que podran dar una trayectoria ms corta.

Para convertir lo probable en cierto, se tiene que extender todas las trayecto-
rias parciales hasta que tengan una longitud igual o mayor que la trayectoria
completa ms corta. La razn es que el ltimo paso para alcanzar la meta
puede ser lo suficientemente largo para hacer que la supuesta solucin resulte
ms larga que una o ms trayectorias parciales. Puede ser que slo un paso
pequeo extienda una de las trayectorias parciales al punto solucin. Para
asegurarse de que esto no suceda, en lugar de terminar al encontrar una tra-
yectoria, termine cuando la trayectoria parcial ms corta tenga una longitud
mayor que la trayectoria completa ms corta.

Algoritmo de bsqueda de ramificacin y cota

forme una cola de un elemento consistente en una trayectoria de longitud


cero que contenga slo al nodo raz;

Mg. Juan Gamarra Moreno 51


hasta que la primera trayectoria de la cola concluya en la meta o la cola
quede vaca,

elimine la primera trayectoria de la cola; cree nuevas trayectorias exten-


diendo la primera a todos los vecinos del nodo terminal;

rechace todas las trayectorias nuevas con ciclos;

agrege las trayectorias nuevas restantes, si las hay, a la cola;

ordene la cola completa por longitud de trayectoria con las trayectorias


de menor costo al frente.

si la meta se encuentra, mencione que hubo xito; si no, notifique el fraca-


so.

En el problema del recorrido del mapa se muestra cmo funciona la ramifica-


cin y cota cuando se comienza sin trayectorias parciales. En la figura 2.10, se
muestra la secuencia de la exploracin. En el primer paso, la distancia de la
trayectoria parcial S-A es 3, y la de S-D, 4; as pues, la trayectoria parcial S-A
se selecciona para su extensin. En seguida se generan S-A-B y S-A-D, a par-
tir de S-A, con distancias de trayectoria parcial de 7 y 8.

Ahora S-D, con una distancia de trayectoria parcial de 4, se extiende y condu-


ce a las trayectorias parciales S-D-A y S-D-E. En este punto, existen cuatro
trayectorias parciales, de las cuales la ms corta es S-D-E.

Despus de realizar el sptimo paso, las trayectorias parciales S-A-D-E y S-D-


E-F son las ms cortas. Extender S-A-D-E conduce a trayectorias parciales
que concluyen en B y F. Extender S-D-E-F, a lo largo del lado derecho del r-
bol, lleva a la trayectoria completa S-D-E-F-G, con una distancia total de 13.
Esta trayectoria es la ms corta, pero si desea estar absolutamente seguro,
debe extender dos trayectorias parciales: S-A-B-E, con una distancia parcial de
12, y S-D-E-B, con una distancia parcial de 11. No hay necesidad de extender
la trayectoria parcial S-D-A-B, ya que su distancia parcial de 13 coincide con la
de la trayectoria completa. En este ejemplo en particular, es poco el trabajo
que se ahorra en relacin con lo exhaustivo de la bsqueda.

2.6. FUNDAMENTOS DEL LENGUAJE LISP


El uso del algoritmo de bsqueda de ramificacin y cota, se puede implementar
en el lenguaje LISP; este lenguaje proviene de procesamiento de listas (List
Processing), fue creado por Jhon Mc Carthy en 1960. Es un Lenguaje Orienta-
do a procesar smbolos, y asociarles informacin de manera sencilla.

52 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 2.10 La bsqueda de ramificacin y poda determina que la trayectoria S-D-E-F-G es
ptima. Los nmeros que se encuentran junto a los nodos son distancias acumuladas. La
bsqueda se detiene cuando todas las trayectorias parciales hacia nodos abiertos son de la
misma longitud o mayores que la trayectoria completa S-D-E-F-G.

Mg. Juan Gamarra Moreno 53


Figura 2.10. Continuacin.

54 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 2.10. Continuacin.

Mg. Juan Gamarra Moreno 55


2.6.1. TOMOS

Los tomos pueden ser:

nmeros, como 34.56, -57, etc.

Smbolos, nombres o identificadores, formados por uno o ms caracteres.


Se excluyen los caracteres caracter blanco, parntesis, punto y coma, co-
millas dobles(), comillas simples (), el caracter de grave (`).

Ejemplos:

PROMEDIO

edad

mensaje

NOTA: LISP no distingue las letras maysculas de las minsculas.

2.6.2. LISTAS

Una lista puede ser una secuencia de tomos separados por un espacio y en-
cerrados por parntesis redondos, incluyendo la posibilidad de que una lista
contenga una sublista que cumple con las mismas caractersticas.

Ejemplos:

()

(calificaciones 12 13)

(pedro (matematica 11 13) (historia 15 18))

2.6.3. COMENTARIOS

Se utiliza el carcter punto y coma (;) para ignorar los caracteres que siguen a
este.

2.6.4. ASIGNACION CON SETQ

Sintaxis:

(SETQ var1 F1 var2 F2 . . . varn Fn)

2.6.5. SALIDA CON PRINC Y PRINT

Muestra la salida en la pantalla.

56 Tpicos y Aplicaciones de la Inteligencia Artificial


Sintaxis:

(PRINC F) ; sin salto de lnea

(PRINT F) ; con salto de lnea

2.6.6. ENTRADA CON READ

Lee una expresin sin evaluarla.

Sintaxis:

(READ)

2.6.7. FUNCIONES MATEMATICAS

Dado n1, n2, . . . , nm como numricos se tiene:

(+ n1 n2 nm) ; suma n1+n2+ . . . +nm

(- n1 n2 nm) ; resta n1-n2-. . . -nm

(* n1 n2 nm) ; multiplica n1*n2* . . . *nm

(/ n1 n2 nm) ; divide n1/n2/. . . /nm

(REM n1 n2) ; resto de la divisin n1 entre n2

2.6.8. DEFINICIN DE FUNCIONES DE USUARIO

Una funcin es un identificador nf que se define con DEFUN mediante una lis-
ta:

Sintaxis:

( DEFUN nf (p1 p2 . . . pk)

F1

F2

...

Fn

Donde:

nf : nombre de la funcin

Mg. Juan Gamarra Moreno 57


(p1 p2 . . . pk) es una lista de smbolos p1, p2, . . ..pk, llamados parmetros
de nf.

F1, F2, . . ., Fn son las formas componentes de nf y constituyen el cuerpo


de instrucciones de la funcin.

Cuando se evala (nf arg1 argn), siendo argi los argumentos que se pasan
a nf, tienen lugar el siguiente proceso:

Se evala cada argi y se copia su valor en el respectivo parmetro pi.

Se ejecuta o evala sucesivamente cada forma Fi.

La funcin nf retorna el valor de la ltima forma.

NOTA:

Usualmente cada Fi es a su vez otra funcin nfi

Obsrvese que, con excepcin del valor de la ltima forma, no son toma-
dos en cuenta los valores de las formas. La evaluacin de estas formas se
hace exclusivamente por sus efectos laterales, o sea por las acciones o ta-
reas que ellas realizan.

Los smbolos pi son variables locales a nf, es decir, desaparecen cuando


terminan la ejecucin de la funcin.

2.6.9. EJECUCIN DE UNA FUNCIN DEFINIDA POR EL USUARIO

Escriba la funcin en un archivo con extensin .LSP y colquelo en memoria a


travs de la instruccin siguiente:

(RDS NOMBRE_ARCHIVO.LSP)

La funcin ahora esta en memoria y lo puede ejecutar mencionando su nombre


y sus parmetros.

2.6.10. EJEMPLO (2-1): PROGRAMA QUE SUMA DOS NMEROS.

;Archivo: F1.LSP
(DEFUN F1()
(PRINC "INGRESE PRIMER NUMERO: ")
(SETQ N1 (READ))
(PRINC "INGRESE SEGUNDO NUMERO: ")
(SETQ N2 (READ))
(SETQ SUMA (+ N1 N2))
(PRINC "LA SUMA ES: ")
(PRINT SUMA)
(TERPRI)
)

(RDS)

58 Tpicos y Aplicaciones de la Inteligencia Artificial


2.6.11. EJEMPLO (2-2): PROGRAMA QUE CALCULA EL REA DE UN
CUADRADO CON EL USO DE UNA FUNCIN.

;ARCHIVO: AREACUAD.LSP
(DEFUN CUAD ()
(PRINC "PROGRAMA QUE CALCULA EL AREA DE UN

CUADRADO CON EL USO DE UNA FUNCION")


(TERPRI)
(PRINC "INGRESE LADO " )
(SETQ L (READ))
(SETQ A (AREA L))
(PRINC "EL AREA DEL CUADRADO ES : ")
(PRINT A)
(TERPRI)
); FIN DEFUN CUAD

(DEFUN AREA (LADO)


(* LADO LADO)
)

(RDS)

2.6.12. SIMBOLOS ESPECIALES NIL Y T

El Lisp utiliza los smbolos predefinidos NIL y T para representar los valores
falso y verdadero.

Mg. Juan Gamarra Moreno 59


2.6.13. FUNCIONES LOGICAS

Estas funciones comprueban si se cumple o no una determinada condicin,


devuelven NIL cuando la condicin es falsa y un valor distinto de NIL si la con-
dicin es verdadera.

(ATOM F) : devuelve T si F es un tomo.

(LISTP F) : su valor es T si F es una lista.

(NULL F): retorna T si F es la lista vaca.

(NUMBERP F) : devuelve T si F es un nmero.

(EQUAL F G) : su valor es T si F y G tiene iguales valores.

(MEMBER E L EQUAL) : si E es un elemento de la lista L, esta fun-


cin devuelve una lista como valor verdadero: la porcin final de L que em-
pieza en el primer E.

(SIMBOLP F) : devuelve T si F es un smbolo.

(FUNCTIONP F) : devuelve T si F es un nombre de funcin.

Los siguientes predicados se aplican a argumentos numricos n1, n2, . . . , nm.

(= n1 n2 . . . nm) devuelve T si todos los nmeros son iguales.

(/= n1 n2 . . . nm) devuelve T si existe un par de nmeros distintos.

(< n1 n2 . . . nm) devuelve T si cada nmero es menor que el siguiente.

(> n1 n2 . . . nm) devuelve T si cada nmero es mayor que el siguiente.

(<= n1 n2 . . . nm) devuelve T si cada nmero es menor o igual que el si-


guiente.

(>= n1 n2 . . . nm) devuelve T si cada nmero es mayor o igual que el si-


guiente.

2.6.14. OPERACIONES LOGICAS

(NOT F) devuelve T si el valor de F es NIL.

(AND F1 F2 . . . Fm) devuelve NIL si hay al menos una Fi con valor NIL; en
caso contrario devuelve el valor de Fm. AND termina en el primer Fi que
tenga valor NIL.

(OR F1 F2 . . . Fm) devuelve NIL si todas las Fi tienen valor NIL; en caso
contrario, OR termina y devuelve el resultado del primer Fi que resulte con
valor no NIL.

60 Tpicos y Aplicaciones de la Inteligencia Artificial


2.6.15. INSTRUCCIONES DE CONTROL

Estas funciones modifican el proceso de ejecucin o evaluacin de formas.

COND

Es una instruccin de seleccin mltiple.

Sintaxis:

( COND

L1

...

L2

siendo los Li listas, en donde se tratan los distintos casos de seleccin.

Efecto:

Selecciona la primera lista Li cuyo primer miembro es verdadero y procede a


evaluar secuencialmente todos los miembros de Li devolviendo el valor de su
ltimo elemento. Las restantes listas son ignoradas.

COND devuelve NIL si los primeros miembros de todas las listas tienen valores
NIL.

LOOP Y DO

Las instrucciones LOOP y DO ejecutan cero o ms veces un bloque de formas.

Sintaxis de LOOP:

(LOOP

L1

...

Ln

siendo Li listas (pi . . .) miembros del bloque de LOOP.

Efecto: LOOP repite el ciclo de instrucciones Li.

El procesamiento de una lista Li, que depende de su cabeza o primer elemento


pi, es el siguiente:

Mg. Juan Gamarra Moreno 61


CASO 1: pi es un smbolo (nombre de funcin), o sea Li tiene la forma (funcin
), simplemente se evalua Li.

CASO 2: pi es una lista (predicado de prueba o test), esto es Li es de la forma


((funcin )).

Si el valor de pi es NIL, se ignoran los otros miembros de Li.

Si el valor de pi es verdadero, se procede a evaluar secuencialmente los res-


tantes miembros de Li, y LOOP termina retornando el valor del ltimo miembro.

As, LOOP se ejecuta hasta encontrar una lista Li cuya cabeza es una lista con
valor verdadero.

Las listas del caso 2 se denominan listas de control y constituyen los lugares
por los cuales LOOP puede salir del ciclo o terminar su ejecucin.

Sintaxis de la instruccin DO:

(DO

LVAR

L1

Ln

Donde LVAR es una lista compuesta por elementos de la forma

(VARi Si Ai)

que definen las variables locales VARi, y Li son listas (pi ).

Efecto: Primero DO asigna simultneamente a cada VARi el valor de Si, y lue-


go repite el ciclo:

Procesar L1

procesar L2

actualizar VARi con el valor de Ai.

DO procesa cada lista Li de la misma manera en que lo hace LOOP.

Por tanto, cuando exista una forma Li cuyo primer miembro pi es una lista con
valor verdadero, pasa a evaluar los otros miembros y finaliza retornando el l-
timo valor.

62 Tpicos y Aplicaciones de la Inteligencia Artificial


NOTA:

La lista de variables locales puede ser vacia: ()

En lugar de (VARi Si Ai) se admiten las expresiones:

(VARi Si) variable local con valor inicial pero sin expresin de actualiza-
cin.

(VARi) variable local sin valor inicial ni valor de actualizacin.

LOOP es equivalente a DO sin variables locales, es decir, con la lista vaca


de variables locales.

2.6.16. EJEMPLO (2-3): PROGRAMA QUE COMPARA DOS NMEROS.

;archivo: F2.LSP
(DEFUN F2()
(PRINC "INGRESE PRIMER NUMERO: ")
(SETQ N1 (READ))
(PRINC "INGRESE SEGUNDO NUMERO: ")
(SETQ N2 (READ))
( COND
((> N1 N2) (PRINC N1 )(PRINT " ES MAYOR"))
((< N1 N2) (PRINC N2 )(PRINT " ES MAYOR"))
('T (PRINC N1 )(PRINC "Y")(PRINC N2 )(PRINT " SON IGUALES"))
)
(TERPRI)
)

(RDS)

Mg. Juan Gamarra Moreno 63


2.6.17. EJEMPLO (2-4): PROGRAMA QUE IMPRIME LOS NMEROS
DEL 1 AL 10 Y SUS RESPECTIVOS DOBLES.

;archivo: PROG00.LSP

(DEFUN P00()
(SETQ N 1)
(PRINC "NUMERO DOBLE ")
(TERPRI)
(LOOP
((> N 10))
(PRINC N)
(PRINC " ")
(PRINC (DOBLE N))
(TERPRI)
(SETQ N (+ N 1))
)

); FIN DEFUN

(defun doble (n)


(SETQ D (+ n n))
(RETURN D)
)

(rds)

2.6.18. PROCESAMIENTO DE LISTAS

QUOTE

El valor de (QUOTE F) es la misma expresin sin evaluarla.

Se usa tambin (F).

64 Tpicos y Aplicaciones de la Inteligencia Artificial


CAR Y CDR

Si L es una lista (e1 e2 en), entonces (CAR L) devuelve el primer elemento


e1 y (CDR L) devuelve la lista (e2 en), que resulta de suprimir el primer
elemento.

CXXR, CXXXR, CXXXXR

En estas funciones X es la letra A por CAR o D por CDR, que equivalen a apli-
car sucesivamente varios CAR y CDR, y por tanto simplifican la escritura de
esta clase de expresiones.

LIST

La funcin (LIST e1 e2 en) devuelve la lista (e1 e2 en) formada por los
elementos ei.

CONS

Si el valor de L es la lista (e1 e2 en), y el valor de X es x, la funcin (CONS


X L) devuelve la lista

(x e1 e2 en)

obtenida agregando x, como primer elemento, a la lista anterior.

APPEND

Se utiliza para formar una lista con los elementos de otras listas. De una mane-
ra precisa, si los valores de L1, L2, , Ln son listas, entonces el valor de

(APPEND L1,L2, , Ln)

es la lista formada por los elementos de la primera lista, seguidos por los ele-
mentos de la segunda lista y as sucesivamente.

REVERSE

Invierte el orden de los elementos de una lista. Si L es la lista (e1 e2 en),


entonces el valor de (REVERSE L) es la lista (en e n-1 e2 e1).

LAST

(LAST L) devuelve la lista (en), formada por el ltimo elemento.

A continuacin se muestra el uso de estas funciones:

Mg. Juan Gamarra Moreno 65


66 Tpicos y Aplicaciones de la Inteligencia Artificial
2.6.19. EJEMPLO (2-5): PROGRAMA QUE SEPARA LOS PARES E IM-
PARES DE UNA LISTA EN OTRAS DOS LISTAS.

;ARCHIVO: PROG02.LSP

(DEFUN P02 ()
(SETQ C 0)
(SETQ PAR () IMP ())
(SETQ L '(4 5 6 8 9 11))
(PRINC "LISTA INICIAL : ")
(PRINT L)
(SETQ L (REVERSE L))
(SETQ LONG (LENGTH L))
(LOOP
(SETQ C (+ C 1))

((> C LONG)(TERPRI))
(COND
( (= (REM (CAR L) 2) 0) (SETQ PAR (CONS (CAR L) PAR)) (SETQ L (CDR L)) )
(T (SETQ IMP (CONS (CAR L) IMP)) (SETQ L (CDR L)) )
); FIN DE COND

); FIN DE LOOP

(PRINC "LISTA PAR ES : ")


(PRINT PAR)
(TERPRI)
(PRINC "LISTA IMPAR ES : ")
(PRINT IMP)
(TERPRI)

); FIN DE DEFUN
(RDS)

Mg. Juan Gamarra Moreno 67


2.6.20. EJEMPLO (2-6): PROGRAMA QUE LEE NOMBRES Y SUS RES-
PECTIVAS CALIFICACIONES Y LUEGO MUESTRA QUIEN OB-
TUVO LA MAYOR CALIFICACIN.

;archivo: PROG03.LSP
(DEFUN P03 ()
(SETQ L () )
(LOOP
(PRINC "ING. NOMBRE(FIN PARA TERMINAR) : ")
(SETQ NOMB (READ))
(TERPRI)
((EQUAL NOMB "FIN") (TERPRI))
(PRINC "ING. NOTA(0-20) : ")
(SETQ NOTA (READ))
(TERPRI)
(SETQ L (CONS (LIST NOMB NOTA) L))
);FIN LOOP (INGRESO DE DATOS)
(SETQ L (REVERSE L))
(PRINC "LISTA ES : ")
(PRINT L)
(TERPRI)
; COPIA DE LA LISTA
(SETQ L1 L)

;LONGITUD DE LA LISTA
(SETQ LONG (LENGTH L))
; BUSQUEDA DE LA NOTA MAYOR
(SETQ C 0)
(SETQ MAY (CADR (CAR L)))
(LOOP
(SETQ C (+ C 1))
( (> C LONG) (TERPRI))
(COND
( (< MAY (CADR (CAR L))) (SETQ MAY (CADR (CAR

L))) )
( (> MAY (CADR (CAR L)) ) (SETQ MAY MAY) )
);FIN DE COND
(SETQ L (CDR L))

);FIN DE LOOP
(PRINC "LA NOTA MAYOR ES: ")
(PRINT MAY)
(TERPRI)
;BUSQUEDA DE LOS QUE TIENEN MAYOR NOTA

68 Tpicos y Aplicaciones de la Inteligencia Artificial


(SETQ L L1)
(SETQ C 0)
(LOOP
(SETQ C (+ C 1))
( (> C LONG) (TERPRI))
(COND
( (= MAY (CADR (CAR L))) (PRINT (CAR L)) )
);FIN DE COND
(SETQ L (CDR L))

);FIN DE LOOP
(TERPRI)
);FIN DE DEFUN
(RDS)

2.6.21. EJEMPLO (2-7): PROGRAMA QUE EVALA SI UNA ORACIN


ES SINTCTICAMENTE CORRECTA.

;ARCHIVO: PROG04.LSP

(DEFUN P04 ()
(SETQ LS '(PEDRO JUAN ANA))
(SETQ LV '(COME ESTUDIA CORRE))
(SETQ LA '(MUCHO POCO))
(SETQ ERROR '())

(CLEAR-SCREEN)

(PRINC "INGRESE PALABRAS COMO UNA LISTA ")


(SETQ LISTA (READ))

Mg. Juan Gamarra Moreno 69


(SETQ L (ORACION LISTA))
(COND
((NULL L) (PRINC "LISTA SINTACTICAMENTE CORRECTA"))
(T (PRINC "LISTA SINTACTICAMENTE INCORRECTA") )
); FIN COND
(TERPRI)
);FIN DE DEFUN

;*****************
(DEFUN ORACION (LI)
(SETQ LI (SUJETO LI))
(SETQ LI (VERBO LI))
(SETQ LI (COMP LI))

(RETURN ERROR)
);FIN DE ORACION

;********************
(DEFUN SUJETO (LI)
( COND
((MEMBER (CAR LI) LS 'EQUAL) (RETURN (CDR LI)) )
(T (PRINC "ERROR SUJETO") (TERPRI) (SETQ ERROR (CONS E1 ERROR)) (RETURN (CDR LI)))
)
); FIN SUJETO

;********************
(DEFUN VERBO (LI)
( COND
((MEMBER (CAR LI) LV 'EQUAL) (RETURN (CDR LI)) )
(T (PRINC "ERROR VERBO") (TERPRI) (SETQ ERROR (CONS E2 ERROR)) (RETURN (CDR LI)))
)
); FIN SUJETO

;********************
(DEFUN COMP (LI)
( COND
((MEMBER (CAR LI) LA 'EQUAL) (RETURN (CDR LI)) )
(T (PRINC "ERROR ADVERBIO") (TERPRI) (SETQ ERROR (CONS E3 ERROR)) (RETURN (CDR
LI)))
)
); FIN SUJETO

;***********
(RDS)

70 Tpicos y Aplicaciones de la Inteligencia Artificial


2.7. EJEMPLO (2-8): PROGRAMA QUE REALIZA UNA
BSQUEDA EN UN GRAFO UTILIZANDO EL
ALGORITMO DE RAMIFICACIN Y COTA.
Sea el grafo

A
10
5
8
B D
5
2
C
1
F

7
40

E
1
G

La solucin se da en el siguiente programa:

ARCHIVO: BUSQRC.LSP

(DEFUN PP ()
(SETQ LESP
'( (A ((B 10) (C 8) (D 5)) )
(B ((C 5)) )
(C ((E 7) (F 1)) )
(D ((F 2)) )
(E ((G 1)) )
(F ((G 40)) )
)
)

(BUSCAR 'A 'G LESP)

(DEFUN BUSCAR (INICIO DESTINO ESPACIO)

; busca una ruta minima de INICIO a DESTINO segun


; datos del ESPACIOS=((n1 l1)(n2 l2) ... )
; en donde li es una lista de pares (s,d), formando por sucesor s
; de ni y d=distancia de ni a s

Mg. Juan Gamarra Moreno 71


; Ejemplo: ESPACIO puede ser
;(
; (A ((B 10) (C 5)))
; (B ((D 3) (E 6)))
;)
; El programa usa una lista COLA formada por longitudes y
; rutas (con elementos en orden invertido):
; COLA tiene la forma ((d1 en ... e1)(d2 fm ... f1)...)
; en donde d1 es la longitud de la ruta (e1 ... en)
; Asi para el ejemplo anterior algunos elementos
; de COLA son (10 B A), (13 D B A)

(DO

(
(COLA (LIST (LIST 0 INICIO))); COLA=((0 INICIO))
(VISITADO NIL); lista de nodos visitados
(RUTA) ; ruta actual
(LONG) ; longitud de ruta actual
(LSUCD) ; lista de pares de sucesores con distancias
(FINRUTA) ; nodo final de ruta actual
(NUEVASRUTAS); lista de nuevas rutas

); lista de variables locales

((NULL COLA) (PRINC "NO HAY RUTAS") (TERPRI))


(SETQ RUTA (CAR COLA)) ; toma primera ruta de cola
(SETQ FINRUTA (CADR RUTA)); segundo elemento=nodo final
((EQUAL DESTINO FINRUTA) (REVERSE RUTA))
; si RUTA llega a DESTINO,
(SETQ VISITADO (CONS FINRUTA VISITADO)); no agregar
(SETQ COLA (CDR COLA)) ; reducir cola
(SETQ LONG (CAR RUTA)); obtener longitud de cola
(SETQ LSUCD (CADR (ASSOC FINRUTA ESPACIO)))
; buscar sucesores de FINRUTA
(SETQ RUTA (CDR RUTA)); suprimir longitud=primer elemento
(SETQ COLA (APPEND COLA (HALLARNRUTAS)))

(SETQ COLA (UBICARMINIMO)); coloca ruta minima al comienzo de la cola

); FIN DO
); fin de funcion

(DEFUN HALLARNRUTAS ()
; devuelve (druta1 druta2) o NIL
; drutai = se construye agregando a RUTA
; un nodo de LSUCD que no este en
; VISITADO, y precedido por su longitud
(DO
( (LRUTAS 'NIL) (NODO) (RUTAAUX)
(DISTANCIA) (LONGTEMP)
); lista de variables de DO

((NULL LSUCD) LRUTAS); si no quedan sucesores retornar lista


(SETQ NODO (CAAR LSUCD) ); tomar siguiente nodo
(SETQ DISTANCIA (CADAR LSUCD)); y distancia
(SETQ LONGTEMP (+ LONG DISTANCIA))
(SETQ RUTAAUX (LIST LONGTEMP NODO))
(SETQ RUTAAUX (LIST (APPEND RUTAAUX RUTA)))
; construir nueva ruta
(COND
((NOT (MEMBER NODO VISITADO 'EQUAL))
;probar y agregar ruta al final
(SETQ LRUTAS (APPEND LRUTAS RUTAAUX))

72 Tpicos y Aplicaciones de la Inteligencia Artificial


)
); fin de COND

(SETQ LSUCD (CDR LSUCD)) ; reducir lista de pares (dist suc)


); fin DO
); fin de funcion

(DEFUN UBICARMINIMO ()
(DO (
(RUTAMIN (CAR COLA)); ruta minima actual
(LONGMIN (CAAR COLA)); longitud minima actual
(COLARES (LIST (CAR COLA))); COLARES contiene primera ruta
(COLATEMP (CDR COLA) (CDR COLATEMP));controla proceso
(RUTATEMP)
(LONGTEMP)
); lista de variables de DO

((NULL COLATEMP) COLARES) ; si COLATEMP es vacia retornar COLARES


(SETQ RUTATEMP (CAR COLATEMP)); tomar primera ruta de COLARES
(SETQ LONGTEMP (CAR RUTATEMP)); y su longitud
(COND
((< LONGTEMP LONGMIN) ;si es menor que minimo actual
(SETQ LONGMIN LONGTEMP);actualizar longitud min
(SETQ RUTAMIN RUTATEMP);y ruta minima
(SETQ COLARES (CONS RUTAMIN COLARES))
; y poner ruta minima al comienzo de COLARES
)
('T (SETQ COLARES (APPEND COLARES (LIST RUTATEMP))))
; en caso contrario, agregar RUTATEMP al final
); fin de COND
);fin de DO

); fin de funcion

(RDS)

El resultado de la ejecucin es:

2.8. EJEMPLO (2-9): PROGRAMA QUE RESUELVE EL


PROBLEMA DEL MUNDO DE LA ASPIRADORA CON
RAMIFICACION Y COTA
El enunciado para este problema se encuentra en el item 2.3.2.

Solucin:

Considere los estados con cuaternas AsAs, donde A indica la presencia de la


Aspiradora y s es la presencia de la suciedad. Para decir que no existe pre-
sencia de la Aspiradora o suciedad utilizamos el carcter subrayado (_).

Por ejemplo si tiene

As_s
Mg. Juan Gamarra Moreno 73
As: Significa que al lado izquierdo esta la aspiradora y que tambin existe su-
ciedad.

_s: Significa que al lado derecho no esta la aspiradora y que existe suciedad.

En el programa del ejemplo anterior modifique en el programa principal, con el


codigo siguiente, as obtenemos una solucin parcial. (Complete lo que sea
necesario para una solucin total)

(DEFUN PP ()
(SETQ LESP
'( (As_s ( (_sAs 1) (A__s 1) ) )
(A__s ( (__As 1) ) )
(__As ( (__A_ 1) ) )
)
)

(BUSCAR 'As_s '__A_ LESP)


)

2.9. EJEMPLO (2-10)(PROPUESTO): PROGRAMA QUE


RESUELVE EL PROBLEMA DE LOS MISIONEROS Y
LOS CANBALES.
En la ribera A de un ro se hallan tres misioneros y tres canbales, quienes
desean trasladarse a la ribera B utilizando un bote. Puesto que en el bote slo
pueden viajar dos personas a lo sumo, es preciso realizar varios viajes; sin
embargo, en ninguna de las riberas el nmero de canbales debe exceder al de
misioneros.

Se requiere encontrar una sucesin de viajes de un lugar a otro que finalmente


permita transportar a todos a la ribera B.

Solucin:

Considere los estados con ternas Rmn, donde R indica la ribera en la cual se
encuentra el bote y m y n, los nmeros de misioneros y canbales, respectiva-
mente, presentes all.

Los estados sucesores de Rmn se forman teniendo en cuenta los presentes en


la ribera opuesta S y los posibles viajes y restricciones.

74 Tpicos y Aplicaciones de la Inteligencia Artificial


Rmn

1M
1M 1C
2M
1C 2C

Mg. Juan Gamarra Moreno 75


76 Tpicos y Aplicaciones de la Inteligencia Artificial
CAPITULO TRES
REPRESENTACIN DEL CONOCIMIENTO

La representacin del conocimiento es un conjunto de convenciones sintcti-


cas y semnticas que hacen posible el describir cosas, para que una mquina
inteligente las utilice. La sintaxis son los smbolos y conjuntos de reglas para
combinarlos. La semntica trata sobre significado de las expresiones construi-
das.

En este libro mostraremos slo tres formas de representacin del conocimien-


to.

3.1. REPRESENTACIN DEL CONOCIMIENTO MEDIANTE


LGICA PROPOSICIONAL
La lgica proposicional es la ms antigua y simple de las formas de lgica. Uti-
lizando una representacin primitiva del lenguaje, permite representar y mani-
pular aserciones sobre el mundo que nos rodea. La lgica proposicional permi-
te el razonamiento, a travs de un mecanismo que primero evala sentencias
simples y luego sentencias complejas, formadas mediante el uso de conectivos
proposicionales, por ejemplo Y (AND), O (OR). Este mecanismo determina la
veracidad de una sentencia compleja, analizando los valores de veracidad
asignados a las sentencias simples que la conforman.

Una proposicin es una sentencia simple que tiene un valor asociado ya sea
de verdadero (V), o falso (F). Por ejemplo:

Hoy es Viernes

Ayer llovi

Hace fro
La lgica proposicional, permite la asignacin de un valor verdadero o falso
para la sentencia completa, no tiene facilidad para analizar las palabras indivi-
duales que componen la sentencia. Por este motivo, la representacin de las
sentencias del ejemplo, como proposiciones, sera:

hoy_es_Viernes

ayer_llovi

hace_fro

La proposiciones pueden combinarse para expresar conceptos ms complejos.


Por ejemplo:

hoy_es_Viernes y hace_fro.

La lgica proposicional proporciona un mecanismo para asignar valores de


veracidad a la proposicin compuesta, basado en los valores de veracidad de
las proposiciones simples y en la naturaleza de los conectores lgicos involu-
crados.

Los conectores bsicos de la lgica proposicional y sus tablas de verdad, se


muestran en la tabla 3.1.

Tabla 3.1. Tablas de verdad para operadores lgicos.

p q Disyuncin Conjuncin Negacin Implicacin Equivalencia

pvq p^q ~p P => q p=q

V V V V F V V

V F V F F F F

F V V F V V F

F F F F V V V

El conector de implicacin, puede ser considerado como un condicional expre-


sado de la siguiente forma:

Si p => q va a ser verdadero, entonces toda vez que p sea verdadero, q debe
ser siempre verdadero.

78 Tpicos y Aplicaciones de la Inteligencia Artificial


Para los casos en los cuales p es falso, la expresin p => q, es siempre verda-
dera, independientemente de los valores lgicos que tome q, ya que el opera-
dor de implicacin no puede hacer inferencias acerca de los valores de q.

En algunos casos, el ms importante de los conectores es la implicacin, y al


principio su tabla de verdad puede parecer confusa debido a que no corres-
ponde muy bien a nuestra manera intuitiva de concebir que P implique a Q o
si P entonces Q.

Para ilustrar la implicacin analicemos la regla siguiente dada para la primera


fila (p=V y q=V) de la tabla de verdad:

la batera no tiene carga el automvil no enciende

En la segunda fila (p=V y q=F) la implicacin es F porque la regla sera

la batera no tiene carga el automvil enciende

En la tercera fila (p=F y q=V) la implicacin es V porque la regla sera

la batera tiene carga el automvil no enciende

En la cuarta fila (p=F y q=F) la implicacin es V porque la regla sera

la batera tiene carga el automvil enciende

3.2. REPRESENTACIN MEDIANTE LGICA DE


PREDICADOS
La principal debilidad de la lgica proposicional es su limitada habilidad para
expresar conocimiento. Existen varias sentencias complejas que pierden mu-
cho de su significado cuando se las representa en lgica proposicional. Por
esto se desarroll una forma lgica ms general, capaz de representar todos
los detalles expresados en las sentencias, esta es la lgica de predicados.

La lgica de predicados est basada en la idea de las sentencias que realmen-


te expresan relaciones entre objetos, as como tambin cualidades y atributos
de tales objetos. Los objetos pueden ser personas, objetos fsicos, o concep-
tos. Tales cualidades, relaciones o atributos, se denominan predicados. Los
objetos se conocen como argumentos o trminos del predicado.

Al igual que las proposiciones, los predicados tienen un valor de veracidad,


pero a diferencia de las preposiciones, su valor de veracidad, depende de sus
trminos. Es decir, un predicado puede ser verdadero para un conjunto de tr-
minos, pero falso para otro.

Por ejemplo, el siguiente predicado es verdadero:

color (yerba, verde)

el mismo predicado, pero con diferentes argumentos, puede no ser verdadero:

Mg. Juan Gamarra Moreno 79


color (yerba, azul) o color (cielo, verde)

Los predicados tambin pueden ser utilizados para asignar una cualidad abs-
tracta a sus trminos, o para representar acciones o relaciones de accin entre
dos objetos.

Por ejemplo:

clima(martes, lluvioso) ave(gaviota) ama(roberto, vanessa) lee(alex, novela) mordio(boby, cartero)

Al construir los predicados se asume que su veracidad est basada en su rela-


cin con el mundo real. Naturalmente, siendo prcticos, trataremos que los
predicados que definimos estn de acuerdo con el mundo que conocemos,
pero no es absolutamente necesario que as lo hagamos. En lgica de predi-
cados el establecer como verdadero un predicado es suficiente para que as
sea considerado. Demos el siguiente ejemplo, que indica que Ecuador est en
Europa:

parte_de(ecuador, europa)

Obviamente, esto no es verdadero en el mundo real, pero la lgica de predica-


dos no tiene razn de saber geografa y si el predicado es dado como verdade-
ro, entonces es considerado como lgicamente verdadero. Tales predicados,
establecidos y asumidos como lgicamente verdaderos se denominan axio-
mas, y no requieren de justificacin para establecer su verdad.

La lgica de predicados, se ocupa nicamente de mtodos de argumentacin


slidos. Tales argumentaciones se denominan Reglas de Inferencia. Si se da
un conjunto de axiomas que son aceptados como verdaderos, las reglas de
inferencia garantizan que slo sern derivadas consecuencias verdaderas.

Tanto los conectivos lgicos, como los operadores dados anteriormente para la
lgica proposicional, son igualmente vlidos en lgica de predicados. De he-
cho, la lgica proposicional es un subconjunto de la lgica de predicados.

Cada uno de los argumentos en los ejemplos de predicados dados anterior-


mente, representan a un objeto especfico. Tales argumentos se denominan
constantes. Sin embargo, en la lgica de predicados se pueden tener argu-
mentos que en determinado momento pueden ser desconocidos. Estos son los
argumentos tipo variable.

En el ejemplo: color (yerba, X), la variable X, puede tomar el valor de verde,


haciendo que el predicado sea verdadero; o puede tomar el valor de azul, dan-
do lugar a que el predicado sea falso.

Las variables, tambin pueden ser cuantificadas. Los cuantificadores que tpi-
camente se utilizan en lgica de predicados son:

80 Tpicos y Aplicaciones de la Inteligencia Artificial


El cuantificador universal; indica que la frmula bien formada, dentro de
su alcance, es verdadera para todos los valores posibles de la variable que
es cuantificada. Por ejemplo:

X....
Establece que "para todo X, es verdad que . . . "

El cuantificador existencial; , indica que la frmula bien formada, dentro


de su alcance, es verdadera para algn valor o valores dentro del dominio.
Por ejemplo:

X....
Establece que "existe un X, tal que . . . "

A continuacin se dan algunos ejemplos de predicados cuantificados:

X, [nio (X) => le_gusta (X, helados)].

Y, [mamfero (Y) => nace (Y, vivo)].

Z, [cartero(Z) ^ mordi (boby, Z)].

3.2.1. UNIFICACIN

Cuando se tienen sentencias compuestas por predicados y conectivos lgicos,


se debe evaluar la veracidad de cada uno de sus componentes para determi-
nar si toda la sentencia es verdadera o falsa. Para ello, se busca en el conjunto
de axiomas la forma de establecer la veracidad de los predicados componen-
tes. Un predicado componente se dice que es verdadero si se identifica con un
axioma de la base de informacin. En la lgica de predicados, este proceso es
algo complicado ya que las sentencias pueden tener trminos variables. A los
predicados que tienen variables por argumentos, se los denomina patrones.

La unificacin es el proceso de computar las sustituciones apropiadas que


permitan determinar si dos expresiones lgicas, ya sean predicados o patro-
nes, coinciden.

El proceso de unificacin involucra los siguientes pasos:

Todo predicado que no contenga variables en sus argumentos, deben te-


ner un axioma que se identifique totalmente, para considerarlo como ver-
dadero.

Si un predicado contiene una variable, esta debe ser asociada a un valor


determinado. Esta asociacin se realiza buscando en la base de axiomas y
seleccionando todos aquellos que se identifican con el patrn en todo, ex-
cepto por la variable. La variable es asociada con el valor en la posicin
correspondiente del axioma. Si ms de un axioma se identifica con el pre-

Mg. Juan Gamarra Moreno 81


dicado dado, todos los valores asociados son considerados y son tratados
separadamente.

El proceso de identificacin contina asumiendo que el valor de la variable


es el valor asociado, en cualquier lugar que esta aparezca.

Los conectivos lgicos son aplicados a todos los predicados, para determi-
nar la veracidad de la sentencia dada.

3.2.2. INFERENCIA Y RAZONAMIENTO

Inferir es concluir o decidir a partir de algo conocido o asumido; llegar a una


conclusin. A su vez, razonar es pensar coherente y lgicamente; establecer
inferencias o conclusiones a partir de hechos conocidos o asumidos.

El proceso de razonamiento, por lo tanto, involucra la realizacin de inferen-


cias, a partir de hechos conocidos. Realizar inferencias significa derivar nuevos
hechos a partir de un conjunto de hechos conocidos como verdaderos. La lgi-
ca de predicados proporciona un grupo de reglas slidas, con las cuales se
pueden realizar inferencias.

3.2.3. REGLAS DE INFERENCIA

Las principales Reglas de Inferencia son:

Modus ponens.- Es la ms importante, en los sistemas basados en cono-


cimiento. Establece que:

Si las sentencias p y (p q) se conocen que son verdaderas, entonces se


puede inferir que q tambin es verdadera.

Modus tolens.- Esta regla establece que:

Si la sentencia (p q) es verdadera y q es falsa, entonces se puede infe-


rir que p tambin es falsa.

Resolucin.- Utiliza refutacin para comprobar una determinada senten-


cia. La refutacin intenta crear una contradiccin con la negacin de la
sentencia original, demostrando, por lo tanto, que la sentencia original es
verdadera. La resolucin es una tcnica poderosa para probar teoremas en
lgica y constituye la tcnica bsica de inferencia en PROLOG, un lengua-
je que manipula en forma computacional la lgica de predicados.

Ejemplo:

82 Tpicos y Aplicaciones de la Inteligencia Artificial


AD es un teorema porque su negacin lleva a una contradiccin.

3.2.4. MTODOS BSICOS DE RAZONAMIENTO

En lgica de predicados, existen tres mtodos bsicos de razonamiento: de-


ductivo, abductivo e inductivo.

Deduccin.- Es el razonamiento a partir de un principio conocido hacia un


desconocido; de lo general, a lo especfico, o de la premisa a la conclusin l-
gica. La deduccin realiza inferencias lgicamente correctas. Esto significa que
la deduccin a partir de premisas verdaderas, garantiza el resultado de conclu-
siones tambin verdaderas.

La deduccin es el mtodo ms ampliamente comprendido, aceptado y reco-


nocido de los tres indicados. Es la base tanto de la lgica proposicional, como
de la lgica de predicados. A manera de ejemplo, el mtodo deductivo, se
puede expresar, utilizando lgica de predicados, como sigue:

Mg. Juan Gamarra Moreno 83


A, B, C, [mayor (A, B) mayor (B, C) mayor (A, C)]

Abduccin.- Es un mtodo de razonamiento comnmente utilizado para gene-


rar explicaciones. A diferencia de la induccin, la abduccin no garantiza que
se puedan lograr conclusiones verdaderas, por lo tanto no es un mtodo slido
de inferencia. La forma que tiene la abduccin es la siguiente:

Si la sentencia (A B) es verdadera y B es verdadera, entonces A es posiblemente verdade-


ra.

Ejemplo:

X es un elefante X es un animal

En abduccin, se empieza por una conclusin y se procede a derivar las con-


diciones que podran hacer a esta conclusin vlida. En otras palabras, se trata
de encontrar una explicacin para la conclusin.

Induccin.- Se define como el razonamiento a partir de hechos particulares o


casos individuales, para llegar a una conclusin general. El mtodo inductivo
es la base de la investigacin cientfica. La forma ms comn del mtodo in-
ductivo es la siguiente:

Si se conoce que P(a), P(b), ......, P(n) son verdaderos, entonces se puede concluir que X,
P(X) es tambin verdadero.

La induccin es una forma de inferencia muy importante ya que el aprendizaje,


la adquisicin de conocimiento y el descubrimiento estn basados en ella. Al
igual que la abduccin, la induccin no es un mtodo slido de inferencia.

3.2.5. EJEMPLO (3-1): BASE DE CONOCIMIENTO SOBRE QUE PRO-


DUCTOS PUEDEN COMPRAR UNA PERSONA

La consulta que se realiza es: Qu producto puede comprar alguna persona?


y esta implementado en visual prolog 5.2.

PREDICATES
nondeterm person(symbol)
nondeterm car(symbol)
nondeterm likes(symbol, symbol)
nondeterm for_sale(symbol)
nondeterm can_buy(symbol,symbol)

CLAUSES

person(kelly).
person(judy).
person(ellen).
person(mark).

car(lemon).
car(hot_rod).

likes(kelly, hot_rod).

84 Tpicos y Aplicaciones de la Inteligencia Artificial


likes(judy, pizza).
likes(ellen, tennis).
likes(mark, tennis).

for_sale(pizza).
for_sale(lemon).
for_sale(hot_rod).
can_buy(X,Y) :- person(X), car(Y), likes(X,Y), for_sale(Y).

GOAL
can_buy(PERSONA,PRODUCTO).

El resultado de la ejecucin es:

3.2.6. EJEMPLO (3-2): PROGRAMA QUE REPRESENTA LA ASOCIA-


CIN DE LOS MIEMBROS DE UNA FAMILIA

La figura 3.1 muestra la asociacin de los miembros en una familia a travs de


una red asociativa.

Figura 3.1. Asociacin de los miembros en una familia a travs de una red asociativa

Mg. Juan Gamarra Moreno 85


Solucin:

predicates
nondeterm hermana_de (symbol,symbol)
nondeterm esposa_de (symbol,symbol)
nondeterm madre_de (symbol,symbol)
nondeterm hijo_de (symbol,symbol)
nondeterm padre_de (symbol,symbol)
nondeterm abuelo_de (symbol,symbol)
nondeterm son_esposos (symbol,symbol)

clauses
hermana_de (ana, carolina).
esposa_de (ana,memo).
esposa_de (carolina, david).
esposa_de (susana, tomas).
madre_de (ana, susana).
madre_de (carolina, tomas).
madre_de (susana, juan).
padre_de (memo, susana).
padre_de (david, tomas).
padre_de (tomas, juan).
hijo_de (X,Y):- madre_de (Y,X); padre_de (Y,X).
abuelo_de (X,Y):- padre_de (X,Z), padre_de (Z,Y); padre_de (X,Z), madre_de(Z,Y).
son_esposos (X,Y):- esposa_de(X,Y).

goal
/*hijo_de (susana, Quien).*/
abuelo_de (Abuelo, Nieto).
/*son_esposos (Esposa,Esposo).*/

Para ejecutar el programa debemos activar una de las tres lneas que se en-
cuentran debajo de goal.

La ejecucin a la consulta de quienes son abuelos y quienes son sus nietos es:

abuelo_de (Abuelo, Nieto).

La salida es:

3.2.7. EJEMPLO (3-3): PROGRAMA QUE REPRESENTA LA DISPOSI-


CIN DE UN SISTEMA DE BLOQUES

La figura 3.2 muestra la disposicin de un sistema de bloques sobre una mesa.

86 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 3.2. Disposicin de un sistema de bloques.
El programa que representa al sistema y que realiza la consulta A dnde se
puede mover algn bloque?, se lista a continuacin:

predicates
nondeterm arriba_de(symbol,symbol)
nondeterm debajo_de(symbol,symbol)
nondeterm mas_abajo_de(symbol,symbol)
nondeterm libre(symbol)
nondeterm mover(symbol,symbol)

clauses
arriba_de(b,a).
arriba_de(a,mesa).
arriba_de(c,mesa).
arriba_de(d,mesa).
libre(b).
libre(c).
libre(d).
debajo_de(X,Y):-arriba_de(Y,X).
mas_abajo_de(Z,X):-debajo_de(Y,X),debajo_de(Z,Y).
mover(X,Y):-libre(X),libre(Y).

goal
/*arriba_de(X,mesa).*/

/*debajo_de(a,b).*/

/*debajo_de(X,c).*/ /* que esta debajo de c*/

/*write("\ningrese nombre del bloque "),readln(Abajo),


write("\n"),write(Abajo),
write(" tiene arriba a los siguientes bloques:\n"),
arriba_de(Arriba,Abajo).*/

/*mas_abajo_de(mesa,Arriba).*/

/*mover(Origen,Destino).*/

/*mover(Origen,Destino),Origen<>Destino.*/

write("\ningrese nombre del bloque que desea mover "),readln(Origen),


write("\n"),
write(" se puede mover de la siguiente manera:\n"),

Mg. Juan Gamarra Moreno 87


mover(Origen,Destino),Origen<>Destino.

La ejecucin del programa muestra la siguiente salida:

Puede eliminar el par /* */ para ejecutar otras consultas, realicelos una por
vez.

3.3. REPRESENTACIN MEDIANTE REGLAS DE


PRODUCCIN
Los sistemas basados en reglas son los ms comnmente utilizados. Su sim-
plicidad y similitud con el razonamiento humano, han contribuido para su popu-
laridad en diferentes dominios. Las reglas son un importante paradigma de re-
presentacin del conocimiento.

Las reglas representan el conocimiento utilizando un formato SI-ENTONCES


(IF-THEN), es decir tienen 2 partes:

La parte SI (IF), es el antecedente, premisa, condicin o situacin; y

La parte ENTONCES (THEN), es el consecuente, conclusin, accin o


respuesta.

Las reglas pueden ser utilizadas para expresar un amplio rango de asociacio-
nes, por ejemplo:

SI est manejando un vehculo Y se aproxima una ambulancia, ENTONCES


baje la velocidad Y hgase a un lado para permitir el paso de la ambulancia.

SI su temperatura corporal es de 39 C, ENTONCES tiene fiebre.

SI el drenaje del lavabo est tapado Y la llave de agua est abierta, ENTON-
CES se puede inundar el piso.

3.3.1. INFERENCIA BASADA EN REGLAS

Un sistema basado en reglas utiliza el modus ponens para manipular las afir-
maciones y las reglas durante el proceso de inferencia. Mediante tcnicas de
bsqueda y procesos de unificacin, los sistemas basados en reglas automati-
zan sus mtodos de razonamiento y proporcionan una progresin lgica desde

88 Tpicos y Aplicaciones de la Inteligencia Artificial


los datos iniciales, hasta las conclusiones deseadas. Esta progresin hace que
se vayan conociendo nuevos hechos o descubriendo nuevas afirmaciones, a
medida que va guiando hacia la solucin del problema.

En consecuencia, el proceso de solucin de un problema en los sistemas ba-


sados en reglas va realizando una serie de inferencias que crean un sendero
entre la definicin del problema y su solucin. Las inferencias estn concate-
nadas y se las realiza en forma progresiva, por lo que se lo que se dice que el
proceso de solucin origina una cadena de inferencias.

3.3.2. EL PROCESO DE RAZONAMIENTO

El proceso de razonamiento en un sistema basado en reglas es una progresin


desde un conjunto inicial de afirmaciones y reglas hacia una solucin, respues-
ta o conclusin. Como se llega a obtener el resultado, sin embargo, puede va-
riar significativamente:

Se puede seleccionar una posible solucin y tratar de probar su validez


buscando evidencia que la apoye. Este proceso se denomina guiado por el
objetivo o de encadenamiento hacia atrs (backward chainning).

Se puede partir considerando todos los datos conocidos y luego ir progre-


sivamente avanzando hacia la solucin. Este proceso se lo denomina
guiado por los datos o de encadenamiento hacia adelante (forward
chainning).

Encadenamiento hacia atrs

El mecanismo de inferencia, o intrprete de reglas para el encadenamiento


regresivo (encadenamiento hacia atrs), difiere significativamente del meca-
nismo de encadenamiento hacia adelante. Si bien es cierto ambos procesos
involucran el examen y aplicacin de reglas, el encadenamiento hacia atrs
empieza con la conclusin deseada y decide si los hechos que existen pueden
dar lugar a la obtencin de un valor para esta conclusin. El encadenamiento
hacia atrs sigue un proceso muy similar a la bsqueda primero en profundi-
dad.

El sistema empieza con un conjunto de hechos conocidos. Se proporciona una


lista ordenada de objetivos (o conclusiones), para las cuales el sistema trata de
derivar valores. El proceso de razonamiento hacia atrs utiliza esta lista de ob-
jetivos para coordinar su bsqueda a travs de las reglas de la base de cono-
cimientos. Esta bsqueda consiste de los siguientes pasos:

Conformar una pila inicialmente compuesta por todos los objetivos priorita-
rios definidos en el sistema.

Considerar el primer objetivo de la pila. Determinar todas las reglas capa-


ces de satisfacer este objetivo, es decir aquellas que mencionen al objetivo
en su conclusin.

Mg. Juan Gamarra Moreno 89


Para cada una de estas reglas examinar en turno sus antecedentes:

Si todos los antecedentes de la regla son satisfechos (esto es,


cada parmetro de la premisa tiene su valor especificado dentro
de la base de datos), entonces ejecutar esta regla para derivar
sus conclusiones. Debido a que se ha asignado un valor al obje-
tivo actual, removerlo de la pila y retornar al paso (2).

Si alguna premisa de la regla no puede ser satisfecha, buscar re-


glas que permitan derivar el valor especificado para el parme-
tro utilizado en esta premisa.

Si en el paso (b) no se puede encontrar una regla para derivar el


valor especificado para el parmetro actual, entonces preguntar
al usuario por dicho valor y aadirlo a la base de datos. Si este
valor satisface la premisa actual entonces continuar con la si-
guiente premisa de la regla. Si la premisa no es satisfecha, con-
siderar la siguiente regla.

Si todas las reglas que pueden satisfacer el objetivo actual se han probado
y todas no han podido derivar un valor, entonces este objetivo quedar in-
determinado. Removerlo de la pila y retornar al paso (2). Si la pila est va-
ca parar y anunciar que se ha terminado el proceso.

La figura 3.3 representa una versin simplificada del encadenamiento hacia


atrs:

Hechos (1) Verificar


iniciales
Objetivos
(2) Verificar

Reglas (3) Verificar


Consecuentes Antecedentes
C1 A1

CL AL
CK AK
(4)

Figura 3.3 Razonamiento con encadenamiento regresivo.

En la figura 3.4 se muestra un ejemplo simple de la inferencia con encadena-


miento regresivo:

90 Tpicos y Aplicaciones de la Inteligencia Artificial


P1 -->
--> P2 (Regla 1)
P2 -->
--> P3 (Regla 2)
P3 -->
--> q3 (Regla 3)
R1 R2 R3

p1 ---->
----> p2 ----->
-----> p3 ----->
-----> q3

Hecho objetivo
3er Obj 2do Obj
verdadero

Direccin encadenamiento hacia atrs

Figura 3.4 Inferencia con encadenamiento regresivo o encadenamiento hacia atrs.


Los ejemplos que se mencionan a continuacin son los mismos que se utiliza-
ron en el encadenamiento hacia adelante, se evalan aqu para encontrar las
diferencias con el encadenamiento hacia atrs.

Ejemplo 1: Se tienen los siguientes hechos y reglas:

Hechos = { a, b, d, e, g }

Reglas:

r1: IF ( f and c and g ) THEN ( z )

r2: IF ( d and e ) THEN ( f )

r3: IF ( a and b ) THEN ( c )

OBJETIVO: Z , Para ver si el objetivo Z es verdadero debemos de probar sus


antecedentes tal como se muestra en la figura 3.5.

d r2
f
e

r3 r1
a
c z
b objetivo

Subobjetivos: d e a b
g
Subobjetivos: f c g

Figura 3.5 Prueba del objetivo Z con encadenamiento regresivo (encadenamiento hacia atrs)

Mg. Juan Gamarra Moreno 91


Ejemplo 2: Se tiene el siguiente conjunto de reglas:

R1: IF (P y Q) THEN S

R2: IF R THEN T

R3: IF (S y T) THEN U

R4: IF (S y R) THEN V

HECHOS={P,Q,R}

Probar V (objetivo)

Paso 1:

Intentar probar V revisando si esta en hechos.

Si no esta introduce a V como hiptesis 1 (H1).

Paso 2:

Se realiza una comparacin de H1 vs las reglas.

H1 existe en la conclusin de R4.

Paso 3:

Intentar probar S (primer antecedente) revisando si esta en hechos.

Si no esta introduce a S como hiptesis 2 (H2).

Paso 4:

Se realiza una comparacin de H2 vs las reglas.

H2 existe en la conclusin de R1.

Descubre que R1 puede ser (ejecutado) y se aade S a hechos.

Verifica si S es la solucin, si no es continua.

Las reglas y hechos quedan:

R1: IF (P y Q) THEN S (H2)(Ejecutado 1ro)

R2: IF R THEN T

R3: IF (S y T) THEN U

R4: IF (S y R) THEN V (H1)

92 Tpicos y Aplicaciones de la Inteligencia Artificial


HECHOS={P, Q, R, S}

Paso 4:

Como continuacin del paso 3 se evala R (segundo antecedente) de la regla


R4.

Paso 5:

Intenta probar R revisando si esta en hechos.

Si esta!, entonces ejecuta R4 y aade V a hechos.

Las reglas y hechos quedan:

R1: IF (P y Q) THEN S (Ejecutado 1ro)

R2: IF R THEN T

R3: IF (S y T) THEN U

R4: IF (S y R) THEN V (Ejecutado 2do)

HECHOS={P, Q, R, S, V}

Paso 5:

Verifica si V es la solucin (si es!) y finaliza.

El razonamiento hacia atrs es mucho ms adecuado para aplicaciones que


tienen mucho mayor nmero de entradas, que de soluciones posibles. La habi-
lidad de la lgica regresiva para trazar desde las pocas conclusiones hacia las
mltiples entradas la hace ms eficiente que el encadenamiento hacia adelan-
te.

Una excelente aplicacin para el razonamiento hacia atrs es el diagnstico,


donde el usuario dialoga directamente con el sistema basado en conocimiento
y proporciona los datos a travs del teclado. Problemas de clasificacin tam-
bin son adecuados para ser resuelto mediante el razonamiento hacia atrs.

Encadenamiento hacia adelante

En el caso del encadenamiento hacia adelante, se empieza a partir de un con-


junto de datos colectados a travs de observacin y se evoluciona hacia una
conclusin. Se chequea cada una de las reglas para ver si los datos observa-
dos satisfacen las premisas de alguna de las reglas. Si una regla es satisfecha,
es ejecutada derivando nuevos hechos que pueden ser utilizados por otras
reglas para derivar hechos adicionales. Este proceso de chequear reglas para
ver si pueden ser satisfechas se denomina interpretacin de reglas.

Mg. Juan Gamarra Moreno 93


La interpretacin de reglas es realizada por una mquina de inferencia en un
sistema basado en conocimiento. La interpretacin de reglas, o inferencia, en
el razonamiento hacia adelante involucra la repeticin de los pasos que se in-
dican en la figura 3.6.

Figura 3.6 Proceso de Razonamiento Progresivo.

Unificacin (Matching).- En este paso, en las reglas en la base de co-


nocimientos se prueban los hechos conocidos al momento para ver cu-
les son las que resulten satisfechas. Para decir que una regla ha sido
satisfecha, se requiere que todas las premisas o antecedentes de la re-
gla resuelvan a verdadero.

Resolucin de Conflictos.- Es posible que en la fase de unificacin re-


sulten satisfechas varias reglas. La resolucin de conflictos involucra:

- la seleccin de una regla de acuerdo al orden en que fueron creados,


es decir, los que se crearon primero son las reglas que se deben elegir,

- la seleccin aleatoria de una regla,

- la seleccin de la regla que tenga la ms alta prioridad de entre el con-


junto de reglas que han sido satisfechas.

Ejecucin.- El ltimo paso en la interpretacin de reglas es la ejecucin


de la regla. La ejecucin puede dar lugar a uno o dos resultados posi-
bles: nuevo hecho (o hechos) pueden ser derivados y aadidos a la ba-
se de hechos, o una nueva regla (o reglas) pueden ser aadidas al con-
junto de reglas (base de conocimiento) que el sistema considera para
ejecucin.

El conjunto de aplicaciones adecuadas para el razonamiento hacia adelante


est formado por: diseo, planeamiento y calendarizacin, donde ocurre la sn-
tesis de nuevos hechos basados en las conclusiones de las reglas. En estas
aplicaciones hay potencialmente muchas soluciones que pueden ser derivadas
94 Tpicos y Aplicaciones de la Inteligencia Artificial
de los datos de entrada. Debido a que estas soluciones no pueden ser enume-
radas, las reglas expresan conocimiento como patrones generales y las cone-
xiones precisas entre estas reglas no pueden ser predeterminadas.

El razonamiento progresivo infiere con la aplicacin de la regla de modus po-


nens

Pq es verdadero
P es verdadero
______
.
. . q es verdadero

La figura 3.7 muestra como se aplica la regla modus ponens.

Encadenamiento hacia (Encadenamiento


adelante progresivo)

P1 -->
--> P2 (Regla 1) dado -->
--> deducido
P2 -->
--> P3 (Regla 2) P1--
P1-->> Q3
P3 -->
--> q3 (Regla 3)
R1 R2 R3

p1 ---->
----> p2 ----->
-----> p3 ----->
-----> q3
deducido
Dado deducido deducido

Direccin encadenamiento hacia adelante

Figura 3.7 Aplicacin de la regla modus ponens.

A continuacin se muestran dos ejemplos que utilizan el encadenamiento hacia


adelante.

Ejemplo 1: Se tienen los siguientes hechos y reglas:

Hechos = { b, e, g, a, d }

Reglas:

r1: IF ( f and c and g ) THEN ( z )

r2: IF ( d and e ) THEN ( f )

r3: IF ( a and b ) THEN ( c )

El siguiente rbol muestra el trabajo realizado por el encadenamiento progresi-


vo.

Mg. Juan Gamarra Moreno 95


d r2
f
e

r3 r1
a
c z
b deducido

g
deducidos: f c

Ejemplo 2:

Se tiene el siguiente conjunto de reglas:

R1: IF (P y Q) THEN S

R2: IF R THEN T

R3: IF (S y T) THEN U

R4: IF (S y R) THEN V

HECHOS={P,Q,R}

V=objetivo

Paso 1: Realiza una comparacin de las hechos vs las reglas y busca que re-
glas se pueden ejecutar.

R1 y R2 se pueden disparar (existe conflicto)

Dispara R1 teniendo en cuenta que es la primera regla encontrada (podra to-


marse otro criterio de seleccin), aade a S como hecho y memoriza que R1
fue ejecutada.

Verifica si S es el objetivo, como no es prosigue.

El estado de las reglas y hechos es:

R1: IF (P y Q) THEN S (Ejecutado 1ro)

R2: IF R THEN T

96 Tpicos y Aplicaciones de la Inteligencia Artificial


R3: IF (S y T) THEN U

R4: IF (S y R) THEN V

HECHOS = {P,Q,R,S}

Paso 2: Realiza una comparacin de los hechos vs las reglas y busca que re-
glas se pueden ejecutar.

R2 y R4 se pueden disparar (existe conflicto)

Dispara R2 teniendo en cuenta que es la primera regla encontrada (podra to-


marse otro criterio de seleccin), aade a T como hecho y memoriza que R2
fue ejecutada.

Verifica si T es el objetivo, como no es prosigue.

El estado de las reglas y hechos es:

R1: IF (P y Q) THEN S (Ejecutado 1ro)

R2: IF R THEN T (Ejecutado 2do)

R3: IF (S y T) THEN U

R4: IF (S y R) THEN V

HECHOS = {P, Q, R, S, T}

Paso 3: Realiza una comparacin de los hechos vs las reglas y busca que re-
glas se pueden ejecutar.

R3 y R4 se pueden disparar (existe conflicto)

Dispara R3 teniendo en cuenta que es la primera regla encontrada (podra to-


marse otro criterio de seleccin), aade a U como hecho y memoriza que R3
fue ejecutada.

Verifica si U es el objetivo, como no es prosigue.

El estado de las reglas y hechos es:

R1: IF (P y Q) THEN S (Ejecutado 1ro)

R2: IF R THEN T (Ejecutado 2do)

R3: IF (S y T) THEN U (Ejecutado 3ro)

R4: IF (S y R) THEN V

HECHOS = {P, Q, R, S, T, U}

Mg. Juan Gamarra Moreno 97


Paso 4: Realiza una comparacin de los hechos vs las reglas y busca que re-
glas se pueden ejecutar.

R4 se puede disparar

Dispara R4 y aade a V como hecho y memoriza que R4 fue ejecutada.

Verifica si V es el objetivo, dado que si es, entonces finaliza.

El estado de las reglas y hechos es:

R1: IF (P y Q) THEN S (Ejecutado 1ro)

R2: IF R THEN T (Ejecutado 2do)

R3: IF (S y T) THEN U (Ejecutado 3ro)

R4: IF (S y R) THEN V (Ejecutado 4to)

HECHOS = {P, Q, R, S, T, U, V}

3.4. DISEO DE SISTEMAS BASADO EN REGLAS CON


ENCADENAMIENTO HACIA ATRS

3.4.1. INTRODUCCIN

En este tema se considerara las etapas que un ingeniero de conocimiento rea-


liza para desarrollar un sistema experto basado en reglas con encadenamiento
hacia atrs. Este proceso se ilustrara con un pequeo problema de planifica-
cin de inversin personal.

3.4.2. METODOLOGA GENERAL PARA EL DISEO DE SISTEMAS


BASADO EN REGLAS CON ENCADENAMIENTO HACIA ATRS 4

La primera tarea antes de realizar el diseo de un sistema experto es el tener


un conocimiento general del problema. Se debe determinar los objetivos del
sistema, y obtener informacin del experto con el fin de tener recomendaciones
validas.

Una caracterstica comn al diseo de cualquier sistema experto es que es un


proceso altamente iterativo. El proceso cclico continua en aumento mientras el
sistema crece.

Este estilo de desarrollo cclico es tpico cuando se construye un sistema con


encadenamiento hacia atrs.

4
Traduccin de: Durkin J. Expert Systems. USA: Ed. Macmillan; 1994

98 Tpicos y Aplicaciones de la Inteligencia Artificial


Hay siete tareas principales que se realizan cuando se desarrolla un sistema
con encadenamiento hacia atrs:

Definir el problema

Definir los objetivos

Definir las reglas

Expandir el sistema

Refinar el sistema

Diseo de la interfase

Evaluacin del sistema

De entrada estos pasos son aplicables a una pequea parte del sistema y lue-
go mediante su iteracin se expanden a todo el sistema hasta que ha sido refi-
nado y obtener el rendimiento de un experto.

Para la explicacin de cmo trabaja el sistema con encadenamiento hacia


atrs nos valdremos de un ejemplo aplicado a la cartera de inversiones.

3.4.3. TAREA 1: DEFINICIN DEL PROBLEMA

El primer paso para el desarrollo de cualquier sistema experto debe ser apren-
der sobre el tema. Nuestra tarea en este caso ser desarrollar un sistema ex-
perto para ayudar a tomar decisiones financieras a un cliente que desea inver-
tir. Para ello se debe reunir informacin acerca del como trabaja una bolsa de
inversiones.

Los reportes, documentos, libros son buenas fuentes de informacin para


cualquier experto en proyectos. Estas fuentes nos proporcionan un buen nivel
para lograr el entendimiento del tema y de su solucin. A pesar de ello, el de
ser buenos puntos de partida, siempre es necesario contar con la ayuda de un
experto.

De tener la suerte de encontrar un buen experto, la siguiente tarea es sacarle


informacin acerca del tema. Por ejemplo, en nuestro caso seria necesario que
nos diga en que rubros se puede invertir.

El experto nos podra indicar que la cartera de inversiones puede clasificarse


en:

ACCIONES
Transferencias Empresas Comunes

BONOS
Del tesoro Corporaciones Municipales

Mg. Juan Gamarra Moreno 99


FONDOS MUTUOS
Efectivo Bonos Acciones

AHORROS
Cuenta corriente Mercado monetario Cuentas de ahorro

PRODUCCIN
Agricultura Precio de metales Petrleo

INMUEBLES
Comercial Residencial Terrenos
Durante la explicacin de esta lista el experto podra incluir algunos comenta-
rios de cmo formar la cartera de inversiones. No obstante, es preferible tomar
la informacin por etapas.

Consejo de diseo: Durante la etapa de definicin del problema, no se debe


interrumpir al experto por problemas de detalles. Es preferible entender el pro-
blema en forma general. Los detalles se pueden obtener despus durante dis-
cusiones posteriores con el experto.

Luego de elegir la cartera de inversiones es factible continuar con el anlisis de


que medios de inversin se van usar dentro de cada categora, es decir, cuales
son los mas adecuados para cada cliente. Estos mecanismos de refinamiento
puede tratarse segn el nivel de profundidad a que se desee llegar en el anli-
sis.

3.4.4. TAREA 2: DEFINICIN DE LOS OBJETIVOS

Lo primero es definir los objetivos que el sistema va alcanzar. Despus de al-


ternar con el experto se puede llegar a la conclusin de que los dos objetivos
principales a lograr son:

1. Determinacin de la composicin de la cartera de inversiones.

2. Determinacin de los medios de inversin dentro de cada categora.

Para mantener la simplicidad de nuestro sistema, escogeremos solamente el


primer objetivo y se asumir que el segundo objetivo podra ser alcanzado en
una revisin futura del sistema.

Una cartera de inversiones es simplemente la distribucin de la inversin en


una o ms categoras generales. Un sistema de accesoria de inversiones po-
dra necesitar una gran cantidad de recomendaciones. Manteniendo nuestro
criterio de simplicidad, se asumir que slo se tiene cuatro posibles alternati-
vas:

Cartera 1: 100% de inversin en ahorros

Cartera 2: 60% en acciones, 30% en bonos, 10% en ahorros

Cartera 3: 20% en acciones, 40% en bonos, 40% en ahorros

100 Tpicos y Aplicaciones de la Inteligencia Artificial


Cartera 4. 100% de inversin en acciones

Consejo de diseo: Focalizar el diseo original en una pequea parte repre-


sentativa del problema completo.

3.4.5. TAREA 3: DISEO DE LAS REGLAS

Cada objetivo de nuestro sistema debe tener al menos una regla. Es necesario
obtener el conjunto de premisas para satisfacer cada regla. La forma general
de nuestras reglas ser la siguiente:

IF Premisas 1

AND Premisas 2

. .0

. .

THEN Cartera_i

En base a las premisas el experto efecta la recomendacin de una cartera


determinada. Estos antecedentes se obtienen luego de efectuar consultas al
experto. Consideremos la siguiente interaccin entre el ingeniero de conoci-
miento (IC) y el experto en el rea (EA):

IC: Cmo escoger la cartera de inversin correcta para el cliente?

EA: Cada inversin tiene un riesgo asociado con ella, de modo, que yo ne-
cesito saber algo acerca del estado personal y financiero del cliente. Cada una
de estas caractersticas es importante para recomendar una posicin agresiva
o conservadora.

IC: De modo que Ud. recomienda un tipo determinado de inversin basa-


do el perfil personal y financiero del cliente pensando en una posicin agresiva
o conservadora?

EA: S.

IC: No toma en cuenta otras consideraciones?

EA: Claro que s. Si el cliente solo desea invertir una pequea cantidad de
dinero, se asume que es realmente conservador, e inmediatamente se le re-
comienda invertir todo su dinero en ahorros.

IC: Que cantidad Ud. considera como pequea?

EA: Cualquier cantidad de dinero menor que $1000.

Esta discusin con el experto nos provee las principales consideraciones ate-
ner en cuenta cuando se recomienda una cartera de inversiones (nuestro obje-
tivo):
Mg. Juan Gamarra Moreno 101
Condicin personal del cliente (conservador o agresivo)

Estado financiero del cliente (conservador o agresivo)

Cantidad a invertir (pequea o grande)

Ahora que se conoce las principales consideraciones, el siguiente paso ser


determinar su relacin con la recomendacin correspondiente. Esto puede ser
realizado a travs de discusiones con el experto, o elegirse otra tcnica que
incluye una tabla de decisin.

Tablas de decisin

Las tablas de decisin ofrecen una tcnica de adquisicin de conocimiento que


evita problemas normalmente asociados con la tcnica de entrevistas.

Una tabla de decisin provee un formato fcil de llenar que el experto puede
usar para realizar su decisin (tabla 3.2).

Tabla 3.2. Tabla de decisin para las reglas objetivo.


CANTIDAD ESTADO ESTADO
CONSEJO
A INVERTIR PERSONAL FINANCIERO
Pequea Cartera 1
No Pequea Conservador Conservador Cartera 1
No Pequea Conservador Agresivo Cartera 2
No Pequea Agresivo Conservador Cartera 3
No Pequea Agresivo Agresivo Cartera 4

Los factores de decisin para nuestras reglas se muestras en las etiquetas en


el extremo superior de las primeras tres columnas. La etiqueta en la ltima co-
lumna a la derecha es el consejo dado por el experto.

Reglas objetivo

Podemos usar esta tabla para escribir nuestros objetivos. Si fuera muy grande
la tabla, necesitaramos usar herramientas de induccin. Dado que esta tabla
es pequea, se pueden escribir las reglas por simple inspeccin. Las siguien-
tes reglas estn representadas por el siguiente seudo cdigo:

Regla 1

IF Cantidad de inversin del cliente 1000


THEN La sugerencia ES invertir el 100% en aho-
rros

102 Tpicos y Aplicaciones de la Inteligencia Artificial


Regla 2

IF Cantidad de inversin del cliente >= 1000


AND El estado personal del cliente sugiere \
una posicin conservadora
AND El estado financiero del cliente sugiere \
una posicin conservadora
THEN La sugerencia ES invertir el 100% en aho-
rros

Regla 3

IF Cantidad de inversin del cliente >= 1000


AND El estado personal del cliente sugiere \
una posicin conservadora
AND El estado financiero del cliente sugiere \
una posicin agresiva
THEN La sugerencia ES invertir el 60% en accio-
nes,
30% en bonos y el 10% en ahorros

Regla 4

IF Cantidad de inversin del cliente >= 1000


AND El estado personal del cliente sugiere \
una posicin agresiva
AND El estado financiero del cliente sugiere \
una posicin conservadora
THEN La sugerencia ES invertir el 20% en accio-
nes,
40% en bonos y el 40% en ahorros

Regla 5

IF Cantidad de inversin del cliente >= 1000


AND El estado personal del cliente sugiere \
una posicin agresiva
AND El estado financiero del cliente sugiere \
una posicin agresiva
THEN La sugerencia ES invertir el 100% en ac-
ciones

Red de inferencia

Incluso en los estados tempranos de un proyecto es til dibujar una red de infe-
rencia de las reglas que se han hallado. La red de inferencia muestra las rela-
ciones lgicas entre las informaciones representadas en las reglas (figura 3.8).

Prueba de reglas

Mg. Juan Gamarra Moreno 103


Despus de formular las reglas del sistema, se deber probar el sistema. En
general despus de formular cualquier nuevo conocimiento en un sistema ex-
perto, se deber inmediatamente probar el sistema.

Consejo de diseo: Luego de la formulacin de cualquier nuevo conocimiento


en un sistema experto, se deber inmediatamente probarlo, usando informa-
cin especifica al nuevo conocimiento.

Esto es particularmente importante durante las etapas tempranas del desarro-


llo del sistema cuando debe probarse exhaustivamente el sistema. Probar las
reglas del sistema implica el correr varias veces el sistema para diferentes
combinaciones de respuestas.

Orden de bsqueda

Otro aspecto importante en la prueba del sistema, en las primeras etapas del
proyecto, es el orden en que el sistema busca el conocimiento. La mayora de
shells buscan reglas de competencia en el orden en que son ingresadas. En
nuestro sistema esto implicara que la regla 1 es la que se debe buscar prime-
ro. Adems, la primera pregunta que el sistema debera realizar es que canti-
dad de dinero el cliente desea invertir. Por ello es necesario efectuar un buen
ensamblaje de nuestros objetivos para que no se pierda tiempo en preguntas
innecesarias cuando alguna pregunta clave del sistema podra estar dando
resultados concretos.

Cartera Cartera Cartera Cartera


1 2 3 4

And
Or And

And

And

Estado
Inversin financiero
< 1000 = Agresivo

Estado
financiero =
Inversin Estado
conservador
>=1000 personal =
Estado
conservador
personal =
Agresivo

Figura 3.8. Red de inferencia de las reglas objetivo

104 Tpicos y Aplicaciones de la Inteligencia Artificial


Bsqueda exhaustiva versus bsqueda no exhaustiva

Un sistema con encadenamiento hacia atrs se puede programar para que


realice bsquedas exhaustivas o no exhaustivas. Una bsqueda exhaustiva
continua buscando todas las reglas para alcanzar algn objetivo, incluso si el
objetivo se ha establecido por el disparo de una de las reglas. Una bsqueda
no exhaustiva se detiene despus de disparar slo una regla. El decidirse por
alguna de estos procedimientos depende del tipo de sistema y del modo en
que los expertos resuelvan los problemas en determinados campos.

En nuestro caso, desearamos que si se descubre que el cliente tiene menos


de $1000, entonces el sistema se detenga incluso cuando fueran posibles
otras recomendaciones. La mayora de shells realizan por defecto una bs-
queda no exhaustiva.

Si nuestro problema fuera encontrar todas las recomendaciones de carteras


posibles, entonces desearamos emplear tcnicas de bsqueda exhaustivas.
Por ejemplo, si deseramos una lista de recomendaciones, y ordenarlas de
acuerdo a un ranking asociado a un grado de probabilidad, entonces seria ne-
cesario un tipo de bsqueda exhaustiva.

En este caso, el sistema buscara los posibles valores para la cartera reco-
mendada. Segn este procedimiento, un resultado que podra darse seria el
siguiente:

Recomendacin de cartera de inversin Probabilidad


60 % stocks, 30 % bonos, 10 % ahorros 90 %
100 % de inversin en stocks 85 %
20 % stocks, 40 % bonos, 40 % ahorros 70 %
100 % de inversin en ahorros 60 %

3.4.6. TAREA 4: EXPANDIENDO EL SISTEMA

En este punto nuestro sistema tiene cinco reglas y puede recomendar 4 carte-
ras diferentes. Es totalmente funcional, pero no muy inteligente. El principal
forma para mejorar la inteligencia de un sistema experto es expandir su cono-
cimiento. Aqu, hay dos opciones disponibles: ampliando o profundizando el
conocimiento del sistema. Se entiende por ampliar el conocimiento a ensear
al sistema sobre problemas adicionales. En nuestro ejemplo, podemos ense-
arle otras mixturas de las carteras de inversiones. Este tipo de expansin es
bastante fcil y usualmente reservada para ms adelante en el proyecto.

La otra opcin de profundizar el conocimiento del sistema se entiende como:


ensear ms acerca de los problemas ya conocidos. En nuestro ejemplo, de-
beramos ensearle como determinar las premisas de las reglas objetivo. Esto
es una tcnica de expansin comnmente usada en las primeras etapas del
proyecto. Para apreciar porque se da este caso, considere la siguiente res-
puesta al sistema debido a la pregunta derivada de una de las reglas presentes
en el conjunto de reglas actual:

Mg. Juan Gamarra Moreno 105


Sistema: Sugiere una posicin conservadora para el estado personal del
cliente?

Esto podra ser una pregunta difcil de contestar para el usuario porque requie-
re alguna especializacin en el problema.

En general, durante el desarrollo entero del sistema basado en reglas, Ud. de-
bera estar averiguando que puede expandirse en profundidad. Pregntese
usted mismo (o aun mejor pregunte al usuario) si el usuario puede contestar
eficazmente la pregunta planteada por el sistema. Si la respuesta es no, en-
tonces aada conocimiento al sistema que fuerce a buscar ms informacin
primitiva y fiable.

En la actualidad, nuestro sistema tiene tres problemas que pueden ser expan-
didos en profundidad:

La cantidad de inversin del cliente

El estado personal del cliente

El estado financiero del cliente

La primera no necesita mayor expansin ya que el sistema requiere hacer una


pregunta sobre la cantidad a invertir. Las otras, sin embargo, necesitan ser ex-
pandidas. Para lograrlo necesitamos consultar otra vez al experto.

Consejo de diseo: Expanda un problema por vez. Esto permite al experto en-
focarse en un slo problema y evita problemas comnmente encontrados
cuando al experto se le pide dirigirle a mltiples problemas.

Expansin del estado personal

Para expandir el estado personal tenemos dos preguntas para el experto, una
para cada posible valor: conservador o agresivo.

IC: Cmo Usted determina que el estado personal del cliente tiene una
posicin conservador?

EA: Sugerira una posicin conservadora si el cliente es viejo o su trabajo no


es estable. Proporcionara la misma sugerencia si el cliente es joven, tiene tra-
bajo estable, pero tiene hijos.

Las dos heursticas se pueden representar por:

Regla 6

IF El cliente ES viejo
OR El trabajo del cliente ES no estable
THEN El estado personal del cliente sugiere \
una posicin conservadora

106 Tpicos y Aplicaciones de la Inteligencia Artificial


Regla 7

IF El cliente ES joven
AND El trabajo del cliente ES estable
AND El cliente tiene \ nios
THEN El estado personal del cliente sugiere \
una posicin conservadora

Ahora se tiene dos reglas de profundidad que conducen a una de las premisas
de las reglas objetivos. La siguiente pregunta determina la posicin agresiva
del cliente:

IC: Cmo Usted determina que el estado personal del cliente tiene una
posicin agresiva?

EA: Sugerira una posicin agresiva si el cliente es joven, su trabajo es esta-


ble, pero no tiene hijos.

La nueva informacin es capturada en la siguiente regla:

Regla 8

IF El cliente ES joven
AND El trabajo del cliente ES estable
AND El cliente tiene \ no nios
THEN El estado personal del cliente sugiere \
una posicin agresiva
De esta discusin con el experto se obtuvieron diferentes reglas para soportar
el proceso de inferencia en profundidad. Sin embargo, tambin descubrimos
nuevos problemas que necesitaran ser explorados:

1. Edad del cliente: Joven, viejo

2. Trabajo del cliente: Estable, no estable

3. Tiene hijos el cliente: Verdadero o falso

Uno de ellos puede ser contestado directamente y no tiene que ser explorado.
Sin embargo, expandiremos los otros dos, uno por vez.

Expansin de la edad

Para expandir la edad preguntamos al experto:

IC: A que punto Usted considera a alguien viejo?

EA: 40 aos

IC: A que punto Usted considera a alguien joven?

Mg. Juan Gamarra Moreno 107


EA: Alguien menor de 40 aos

De estas preguntas nosotros podemos escribir las siguientes reglas:

Regla 9

IF Edad del cliente < 40


THEN El cliente ES joven

Regla 10

IF Edad del cliente >= 40


THEN El cliente ES viejo

Antes de continuar con la expansin de nuestro sistema, echemos una mirada


a una peligro que comnmente caen muchos diseadores del sistema.

Problema con else

Muchos ingenieros del conocimiento tienen instruccin en la programacin tra-


dicional.

Antes de pasar al campo de los ingenieros de conocimiento, estos programa-


dores fueron cuadriculados en la importancia de escribir procedimientos conci-
sos: puede ser echo con una lnea de cdigo en vez de dos. Cuando desarro-
llamos un sistema experto no se esta codificando procedimientos sino codifi-
cando conocimientos. A menudo, intentar comprimir dos piezas de conocimien-
to en una regla puede causar problemas. Estos problemas se encuentran a
menudo con el uso de la sentencia ELSE.

Para ilustrar este punto, consideremos el problema de la edad. Con la informa-


cin proporcionada por el experto sobre este problema se puede capturar esta
situacin como:

IF Edad del cliente < 40


THEN El cliente ES joven
ELSE El cliente ES viejo

Superficialmente la regla no tiene ningn error y representa lgicamente el co-


nocimiento del experto. Sin embargo, asumamos que usamos esta regla pero
despus decidimos aadir la siguiente regla que introduce una nueva categora
de edad:

IF Edad del cliente < 50


AND Edad del cliente >= 40
ELSE El cliente ES de-edad-media

108 Tpicos y Aplicaciones de la Inteligencia Artificial


Ahora, si nosotros encontramos una persona cuya edad es de 45, nuestro sis-
tema concluir que l es tanto viejo como de edad media. El disparo de estas
dos reglas es el resultado de las inconsistencias de las conclusiones. Recono-
cemos que la regla que contiene la parte ELSE siempre se dispara.

Para evitar las inconsistencias del sistema es necesario llevar la cuenta de las
reglas que usan ELSE. A menudo el uso de ELSE dificulta el mantenimiento
del sistema por lo que debe evitar su uso.

Consejo de diseo: Evitar la sentencia ELSE siempre que sea posible.

Expandiendo la estabilidad del trabajo

Para expandir la estabilidad hacemos dos preguntas al experto:

IC: Cmo Usted determina la estabilidad del trabajo del cliente?

EA: Usualmente considero dos cosas: los aos de servicio del cliente en su
actual compaa y la tasa de despidos que la compaa esta experimentando.
Por ejemplo, si l ha trabajo en la compaa entre 3 y 10 aos, y la tasa de
despidos es bajo, entonces asumo las cosas como estable. De hecho, si l ha
trabajado all por ms de 10 aos, siento que las cosas estn bien.

De estas dos respuestas escribimos las siguientes reglas:

Regla 11

IF Aos de servicio del cliente ES 10 aos o


ms
THEN El trabajo del cliente ES estable

Regla 12

IF Aos de servicio del cliente ES entre


3 y 10 aos
AND La tasa de despidos temporal ES baja
THEN El trabajo del cliente ES estable

Continuamos la discusin con el experto y le preguntamos:

IC: Cmo Usted determina la inestabilidad del trabajo del cliente?

EA: Si los aos de servicio del cliente es de 3 a 10 aos y la tasa de despi-


dos es alta, entonces asumo las cosas como inestables. De echo, si l ha tra-
bajado all por menos de 3 aos, siento que las cosas no son realmente esta-
bles.

De estas respuestas podemos escribir las siguientes dos reglas:


Mg. Juan Gamarra Moreno 109
Regla 13

IF Aos de servicio del cliente ES entre


3 y 10 aos
AND La tasa de despidos temporal ES alta
THEN El trabajo del cliente ES no estable

Regla 14

IF Aos de servicio del cliente ES menor


que 3 aos
THEN El trabajo del cliente ES no estable

Red de inferencia del estado personal

Podemos aadir las nuevas reglas a la red original de inferencia. La figura 3.9
muestra la parte de esta nueva red enfocado al estado personal del cliente.

Estado Estado
personal = personal =
conservador Agresivo

Or And And

Cliente es Trabajo no Cliente es Trabajo Cliente Cliente no


viejo estable joven estable tiene hijos tiene hijos

Or < 40
>=40
And And
Servicio
>
Servicio
10
<
Servicio
3 Tasa de Tasa de
3 - 10
despidos despidos
alto bajo

Figura 3.9. Red de inferencia para el estado personal

Expandiendo el estado financiero

Para expandir el estado financiero del cliente preguntamos al experto:

IC: Cmo Usted sabe el estado financiero del cliente para sugerir una po-
sicin conservadora?

110 Tpicos y Aplicaciones de la Inteligencia Artificial


EA: Sugerira una posicin conservadora si el total de activos es menor que
su total de pasivos. Tambin, si su total de activos excede su total de pasivos
pero son menor ... pienso ... aproximadamente dos veces sus pasivos ... y ... l
tiene nios, entonces otra vez recomiendo una posicin conservadora.

De estas respuestas podemos escribir las siguientes dos reglas:

Regla 15

IF Total de activos < Total de pasivos


THEN El estado financiero del cliente sugiere \
una posicin conservadora

Regla 16

IF Total de activos > Total de pasivos


AND Total de activos < 2 * Total de pasivos
AND El cliente tiene \ nios
THEN El estado financiero del cliente sugiere \
una posicin conservadora

Continuando nuestra discusin, preguntamos lo siguiente:

IC: Cmo Usted sabe el estado financiero del cliente para sugerir una po-
sicin agresiva?

EA: Sugerira una posicin agresiva si el total de activos excede al total de


pasivos por un factor igual a 2. Adems, si su total de activos excede su total
de pasivos, pero fue menor a dos veces esta cantidad, y l no tiene nios, en-
tonces otra vez recomiendo una posicin agresiva.

De esta discusin podemos escribir las siguientes reglas:

Regla 17

IF Total de activos > 2 * Total de pasivos


THEN El estado financiero del cliente sugiere \
una posicin agresiva

Regla 18

IF Total de activos > Total de pasivos


AND Total de activos < 2 * Total de pasivos
AND El cliente tiene \ no nios
THEN El estado financiero del cliente sugiere \
una posicin agresiva

Red de inferencia del estado financiero

Mg. Juan Gamarra Moreno 111


Para mantener el registro del conocimiento recolectado, aadimos estas nue-
vas reglas a la red de inferencia. La parte asociada con el estado financiero es
mostrada en la figura 3.10.

Estado Estado
financiero = financiero =
conservador Agresivo

Or And

And
Total
activo < Cliente no
total tiene hijos
pasivo
Total Total Total
activo < 2 Cliente activo > 2 activo >
* total tiene hijos * total total
pasivo pasivo pasivo

Figura 3.10. Red de inferencia para el estado financiero

3.4.7. TAREA 5: REFINAR EL SISTEMA

En este punto se tiene ya un sistema completamente funcional que cumple con


los objetivos iniciales. Pero se pueden aadir caractersticas adicionales que
mejoren tanto el desempeo como el mantenimiento.

3.4.8. USO DE VARIABLES PARA NMEROS

Frecuentemente durante el desarrollo de un sistema experto se necesitan em-


plear nmeros dentro de una regla. As en nuestro problema el experto consi-
der una edad de 40 aos a ms para ser viejo. Se captur esta heurstica en
la REGLA 10 donde este nmero se usa explcitamente dentro de la regla. En
un sistema grande basado en reglas este mismo nmero puede aparecer mu-
chas veces a travs de la base de conocimiento. Si luego existiera la necesi-
dad de cambiar este nmero, ser necesario ubicar cada regla y hacer la co-
rreccin, esta tarea puede ser complicada y dificulta el mantenimiento del sis-
tema.

Un mejor enfoque es el de emplear variables para reemplazar los nmeros


usados en las reglas, a las variables se le asigna un valor dentro de la porcin
de inicializacin del programa. Este enfoque le permite ubicar fcilmente la va-
riable que necesita ajuste y requiere un cambio solamente en la asignacin del
valor a la variable y no en las reglas.

112 Tpicos y Aplicaciones de la Inteligencia Artificial


En nuestro sistema ejemplo, los nmeros se emplearon para los siguientes
elementos:

Edad del cliente.

Aos de servicio del cliente

Relacin entre activos y pasivos

Se puede reemplazar el uso explcito de los nmeros usados en estos asuntos


con las siguientes variables y las asignaciones iniciales. As tenemos:

EDAD DEL CLIENTE

Inicializar VEJEZ = 40

Regla 9

IF Edad del cliente < VEJEZ


THEN El cliente ES joven

AOS DE SERVICIO DEL CLIENTE

Inicializar SERVICIO_LARGO = 10
SERVICIO_CORTO = 3

Regla 11

IF Aos de servicio del cliente >=


SERVICIO_LARGO
THEN El trabajo del cliente ES estable

ACTIVOS Y PASIVOS

Inicializar FACTOR DE SEGURIDAD = 2

Regla 17

IF Total de activos > FACTOR DE SEGURIDAD *


Total de pasivos
THEN El estado financiero del cliente sugiere \
una posicin agresiva

3.4.9. RED DE SEGURIDAD INTELIGENTE

En las aplicaciones de programacin tradicional, el usuario probaba el cdigo


para todas las posibles combinaciones de entrada para verificar su operacin.
Esto es posible porque la cantidad de datos de entrada esta frecuentemente
limitada a un nmero finito de posibilidades. Sin embargo, cuando se desarrolla
un sistema experto, generalmente nos encontramos con un nmero grande de
posibles combinaciones de entrada, que no permiten la prueba exhaustiva del

Mg. Juan Gamarra Moreno 113


sistema. En esta situacin, puede existir la posibilidad que el sistema no sea
capaz de alcanzar una recomendacin final.

Para manejar este problema, se necesita desarrollar una red de seguridad


para el sistema. Una red de seguridad es simplemente un curso de accin que
el sistema toma si este falla al tratar de alcanzar una recomendacin. Este
puede ser tan complejo como cargar otra base de conocimientos que tratara de
corregir la situacin, o, tan simple, como una sentencia por defecto que le
muestre al usuario su falla.

Otro enfoque que podra elegirse es elaborar una red de seguridad inteligen-
te. Por inteligente se entiende que le sistema le dice al usuario que se encon-
tr algo que podra interesarle, aunque la recomendacin final no se alcanzo.

La forma ms simple de alcanzar esto es a travs de la agenda de metas. Se


necesita incluir una meta que el sistema persiga solo si la meta primaria no fue
alcanzada. Esta meta deber ser la conclusin de una regla simple que se ga-
rantice se dispare y muestre la informacin apropiada. La premisa de la regla
puede ser un hecho simple, previamente afirmada en la memoria de trabajo, el
que acta slo para disparar la regla.

Para nuestro sistema ejemplo, podemos elegir informar al usuario acerca del
estado personal y financiero del cliente en la red de seguridad. Para cumplir
con esto, primero tendramos que hacer el siguiente ajuste a nuestra agenda
de metas:

1. La sugerencia de Portafolio ES QUE

2. Visualizar por defecto

La primera meta, la que fue previamente desarrollada, se busca primero. Se


necesita estar seguro que la segunda meta ser perseguida slo en el caso
que la primera meta no se alcance.

Es necesario escribir la regla que visualice el texto por defecto al usuario:

Regla 18

IF Recomendacin se desconoce
THEN Visualizar por defecto
AND DISPLAY TEXTO POR DEFECTO

La premisa de esta regla debe ser afirmada en la memoria de trabajo cuando


la sesin comience usando alguna forma de la sentencia INIT (inicializar).
Cuando esta regla se dispara, el texto asociado con la sentencia DISPLAY
TEXTO POR DEFECTO debe ser mostrada al usuario. El texto debe informar
al usuario que el sistema no logr alcanzar una recomendacin y para dar los
hallazgos acerca del estado del cliente:

DISPLAY TEXTO POR DEFECTO

114 Tpicos y Aplicaciones de la Inteligencia Artificial


Lo siento pero no pude determinar un portafolio que cumpla las necesidades
del cliente. Sin embargo sobre la base del estado personal del cliente podra
recomendar [Sugerencias al estado personal del cliente] y en el estado finan-
ciero [Sugerencias al estado financiero del cliente].

Cuando se visualice esto al usuario, los valores encontrados para Sugeren-


cias al estado personal del cliente y Sugerencias al estado financiero del
cliente debera presentarse. Aunque le sistema no tuvo xito, el usuario se
puede beneficiar al obtener esta informacin.

3.4.10. PROVEER HALLAZGOS PRINCIPALES

Algo que es cmodo para el usuario durante la consulta es mantenerlo infor-


mado acerca de los hallazgos principales y direcciones que el sistema toma.

Existen varios lugares en el sistema donde se pueden elegir visualizar los ha-
llazgos intermedios. Por ejemplo, si queremos visualizar la valoracin al estado
personal del cliente. Sera necesario entonces aadir una sentencia a cada
regla que concluya en este asunto, la sentencia debe mostrar la informacin
adecuada. As se considera para la regla 6:

Regla 6

IF El cliente ES viejo
OR El trabajo del cliente ES no estable
THEN El estado personal del cliente sugiere \
una posicin conservadora
AND DISPLAY LA VALORACIN DEL ESTADO PERSONAL
DEL CLIENTE

DISPLAY LA VALORACIN DEL ESTADO PERSONAL

DEL CLIENTE

Despus de considerar los asuntos personales del cliente, podra sugerir [Su-
gerencias al estado personal del cliente]. Continuare ahora con los aspectos
financieros del cliente.

La visualizacin no solo presenta los hallazgos actuales, tambin muestra la


direccin que el sistema tomar prximamente.

3.4.11. TAREA 6: DISEO DE INTERFAZ

El usuario tiene contacto con el sistema a travs de la interfaz del sistema. Mu-
chas veces la aceptacin del sistema depende en como la interfaz se acomoda
a las necesidades del usuario, los diferentes shells ofrecen ayuda en esta ta-

Mg. Juan Gamarra Moreno 115


rea. Podemos considerar varios aspectos que se deben considerar en esta
tarea.

Visualizacin introductoria

Cada sistema experto debera tener una visualizacin introductoria. Como m-


nimo se debera explicar acerca del propsito general del sistema. En el siste-
ma de ejemplo deberamos visualizar una explicacin al usuario que le diga
que el sistema dar una recomendacin de portafolio que rena las necesida-
des del cliente. Tambin podra adicionalmente explicar como el sistema lleva-
r a cabo la tarea primaria, En nuestro caso, se explicar que el sistema explo-
rar tanto asuntos personales como financieros para arribar a una recomenda-
cin.

Preguntas adecuadas

La mayora de los shells automticamente generan preguntas a partir de las


primitivas encontradas en las reglas. Por ejemplo, en el aspecto de los Activos
totales el sistema podra preguntar:

SISTEMA: Activos Totales?

Este tipo de preguntas a parte de ser fras puede confundir al usuario llevndo-
los a contestarlas equivocadamente. Ante tal pregunta, el usuario podra pre-
guntarse Qu activos considero?, o, Ingreso las cantidades en dlares?.

La mayora de los shells permiten colocar las preguntas adecuadas al usuario,


de tal manera que se reciban respuestas confiables. Considere el siguiente
ejemplo:

SISTEMA: Por favor dame la cantidad en dlares total de los activos que el
cliente posee. Incluyendo la tenencia de cuentas bancarias, acciones, bonos,
inmuebles, etc. Por favor ingrese la cantidad en dlares sin comas, por ejemplo
150000.

3.4.12. INDICACIONES DE PANTALLA

Es importante dar instrucciones claras de cada pantalla presentada al usuario.


Muestre claramente cualquier opcin disponible para la pantalla actual y las
indicaciones de su uso. A continuacin se ilustra como dar instrucciones de
pantallas claras.

Continuacin de la sesin

Aqu se considera la tarea de continuar la sesin siguiendo lo que se muestra


en algunos textos o grficos. Por ejemplo si se va a emplear la tecla ENTRAR
o alguna otra tecla para continuar la sesin deberamos colocar, una descrip-
cin corta como continuar. As por ejemplo

116 Tpicos y Aplicaciones de la Inteligencia Artificial


Por favor presiones ENTRAR para continuar la sesin.

Respuesta a preguntas con mltiples respuestas

Se puede ayudar al usuario cuando se tengan preguntas con varias opciones


de respuesta. As se podra mostrar un men de opciones, por ejemplo

SISTEMA: Cul es el nivel de educacin del cliente? Seleccione tantos co-


mo sea necesario y presione F4 para continuar.

Primaria

Secundaria

Bachillerato

Ocupacional

Tcnico

Universitaria

Maestra

Ph. D.

En este caso se le menciona al usuario que puede seleccionar ms de una


opcin y lo que debe hacer para continuar.

Fin de sesin

Cuando se visualice la pantalla final se presente al usuario, se debera explicar


que opciones estn disponibles y como seleccionarlas. Las opciones tpicas
son:

SALIR Parar/Salir del sistema.

COMO Obtener la lnea de razonamiento que llevo a la conclusin.

QUE SI Ver que efectos en la presente recomendacin tendra el cambiar


las respuestas previas.

GUARDAR Almacenar la sesin actual

REINICIAR Reiniciar la sesin

Considere por ejemplo lo siguiente

SISTEMA: Para salir del sistema presione F10. Si se desea reiniciar la se-
sin presione F3.

Mg. Juan Gamarra Moreno 117


Con instrucciones simples como estas el usuario, el usuario sabe que puede
hacerse, y evita la frustracin obvia que resultara cuando las opciones de con-
trol no se presentan.

Visualizacin de Conclusiones

La visualizacin de las conclusiones presenta al usuario los hallazgos del sis-


tema. Para nuestro ejemplo, presentaremos el portafolio recomendado para el
cliente. En muchas aplicaciones esta visualizacin limitada ser suficiente. Pe-
ro en otros casos se pude necesitar presentar un reporte ms detallado acerca
del razonamiento detrs de la recomendacin.

Una caracterstica de los sistemas expertos es la habilidad para explicar CO-


MO (WHY) se derivaron las recomendaciones. La mayora de los shells ofre-
cen respuestas que muestras detalladamente todos los pasos seguidos por el
sistema. En algunas aplicaciones estos detalles son necesarios para que los
usuarios acepten las recomendaciones finales. Sin embargo, en otros casos,
los usuarios estarn satisfechos con una visualizacin de alto nivel de los ha-
llazgos importantes que llevaron a la recomendacin final.

Para comodidad del usuario que slo requiere una visualizacin de alto nivel
del razonamiento, el sistema podra mostrar una sugerencia que permita esta
visualizacin de los hallazgos importantes. Estos hallazgos importantes son
asuntos importantes que considera el sistema para determinar la recomenda-
cin final.

Para nuestro sistema podramos mostrar

DISPLAY RECOMENDACIN FINAL

Recomendara que el cliente invierta el dinero en [Sugerencia del Portafolio].


Recomiendo est inversin porque encontr que el estado personal del cliente
sugiere [Sugerencia al estado personal del cliente] y el estado financiero del
cliente sugiere [Sugerencia al estado financiero del cliente].

Aqu el usuario recibe una recomendacin final y razones de alto nivel de por-
que la recomendacin se hizo.

3.4.13. TAREA 7: EVALUACIN DEL SISTEMA

En este punto nuestro sistema prototipo esta completo. Todas las reglas se
codifican en el sistema y se asume que la interfaz se ha diseado de acuerdo a
las recomendaciones dadas en las secciones previas. Tambin se asume que
el sistema ha pasado satisfactoriamente las pruebas desarrolladas con cada
expansin. El paso que sigue es evaluar el sistema usado en el caso de prue-
bas reales.

Este proceso comienza preguntndole al experto por uno de los casos pasa-
dos. Se asume que el caso involucra un cliente de 30 aos de edad, ha estado
en una compaa 5 aos con una tasa de despido temporal pequea, tiene dos

118 Tpicos y Aplicaciones de la Inteligencia Artificial


hijos, y quiere invertir $50,000. El cliente tambin tiene activos totales de
$100,00 y pasivos totales de $20,000. Para este caso el experto recomend el
Portafolio 2: 60% en acciones, 30% en bonos y 10% en ahorros.

A continuacin se muestran las reglas para implementar el sistema:

INIT FACTOR DE SEGURIDAD = 2


INIT VEJEZ = 40
INIT SERVICIO_LARGO = 10
INIT SERVICIO_CORTO = 3
INIT Recomendacin se desconoce

La sugerencia ES
Visualizar por defecto

RULE Visualizar por defecto


IF Recomendacin se desconoce
THEN Visualizar por defecto
AND DISPLAY TEXTO POR DEFECTO

------------------------------------------
Reglas de Sugerencia de Inversin
------------------------------------------

RULE Sugerencia de 100% de inversin en el mercado de


dinero poco dinero
IF Cantidad de inversin del cliente 1000
THEN La sugerencia ES invertir el 100% en ahorros
AND DISPLAY RECOMENDACIN FINAL

RULE Sugerencia de 100% de inversin en el mercado


de dinero
IF Cantidad de inversin del cliente >= 1000
AND El estado personal del cliente sugiere \
una posicin conservadora
AND El estado financiero del cliente sugiere \
una posicin conservadora
THEN La sugerencia ES invertir el 100% en ahorros
AND DISPLAY RECOMENDACIN FINAL

RULE Sugerencia de invertir el 60% en acciones, 30% en


bonos y el 10% en el mercado de dinero
IF Cantidad de inversin del cliente >= 1000
AND El estado personal del cliente sugiere \
una posicin conservadora
AND El estado financiero del cliente sugiere \
una posicin agresiva
THEN La sugerencia ES invertir el 60% en acciones, 30%
en bonos y el 10% en ahorros
AND DISPLAY RECOMENDACIN FINAL

RULE Sugerencia de invertir el 20% en acciones, 40% en


bonos y el 40% en el mercado de dinero
IF Cantidad de inversin del cliente >= 1000
AND El estado personal del cliente sugiere \ una
posicin agresiva
AND El estado financiero del cliente sugiere \
una posicin conservadora
THEN La sugerencia ES invertir el 20% en acciones,

Mg. Juan Gamarra Moreno 119


40% en bonos y el 40% en ahorros
AND DISPLAY RECOMENDACIN FINAL

RULE Sugerencia de invertir el 100% en acciones


IF Cantidad de inversin del cliente >= 1000
AND El estado personal del cliente sugiere \
una posicin agresiva
AND El estado financiero del cliente sugiere \
una posicin agresiva
THEN La sugerencia ES invertir el 100% en acciones
AND DISPLAY RECOMENDACIN FINAL

------------------------------------------
Determinar el estado personal del cliente
------------------------------------------

RULE Inversiones conservadoras personales por la vejez


o trabajo no estable
IF El cliente ES viejo
OR El trabajo del cliente ES no estable
THEN El estado personal del cliente sugiere \
una posicin conservadora
AND DISPLAY LA VALORACIN DEL ESTADO PERSONAL DEL
CLIENTE

RULE Inversiones conservadoras personales por ser joven


y tener nios
IF El cliente ES joven
AND El trabajo del cliente ES estable
AND El cliente tiene \ nios
THEN El estado personal del cliente sugiere \
una posicin conservadora
AND DISPLAY LA VALORACIN DEL ESTADO PERSONAL DEL CLIENTE

RULE Inversiones agresivas personales por ser joven y no


tener nios
IF El cliente ES joven
AND El trabajo del cliente ES estable
AND El cliente tiene \ no nios
THEN El estado personal del cliente sugiere \
una posicin agresiva
AND DISPLAY LA VALORACIN DEL ESTADO PERSONAL DEL
CLIENTE

------------------------------------------
Determinar el estado financiero del cliente
------------------------------------------

RULE Inversin financiera conservadora porque los


pasivos exceden a los activos
IF Total de activos < Total de pasivos
THEN El estado financiero del cliente sugiere \
una posicin conservadora
AND DISPLAY LA VALORACIN DEL ESTADO PERSONAL DEL
CLIENTE

RULE Inversin financiera conservadora porque no existen


suficientes activos para los nios
IF Total de activos > Total de pasivos
AND Total de activos < FACTOR DE SEGURIDAD *

120 Tpicos y Aplicaciones de la Inteligencia Artificial


Total de pasivos
AND El cliente tiene \ nios
THEN El estado financiero del cliente sugiere \
una posicin conservadora
AND DISPLAY LA VALORACIN DEL ESTADO PERSONAL DEL
CLIENTE

RULE Inversin financiera agresiva porque existen


suficientes activos y no se tiene nios
IF Total de activos > Total de pasivos
AND Total de activos < FACTOR DE SEGURIDAD *
Total de pasivos
AND El cliente tiene \ no nios
THEN El estado financiero del cliente sugiere \
una posicin agresiva
AND DISPLAY LA VALORACIN DEL ESTADO PERSONAL DEL
CLIENTE

RULE Inversin financiera agresiva porque existen


suficientes activos
IF Total de activos > FACTOR DE SEGURIDAD *
Total de pasivos
THEN El estado financiero del cliente sugiere \
una posicin agresiva
AND DISPLAY LA VALORACIN DEL ESTADO PERSONAL DEL
CLIENTE

------------------------------------------
Determinar la edad del cliente
------------------------------------------

RULE El cliente ES joven


IF Edad del cliente < VEJEZ
THEN El cliente ES joven

RULE El cliente ES viejo


IF Edad del cliente >= VEJEZ
THEN El cliente ES viejo

------------------------------------------
Determinar la estabilidad del trabajo del cliente
------------------------------------------

RULE El trabajo ES estable a causa de los varios aos


de servicio del cliente
IF Aos de servicio del cliente >= SERVICIO_LARGO
THEN El trabajo del cliente ES estable

RULE El trabajo ES estable a causa de los aos de


servicio moderado y baja tasa de despido temporal
en la organizacin
IF Aos de servicio del cliente >= SERVICIO_CORTO
AND Aos de servicio del cliente < SERVICIO_LARGO
AND La tasa de despidos temporal ES baja
THEN El trabajo del cliente ES estable

RULE El trabajo ES no estable a causa de los aos de


servicio moderado y alta tasa de despido temporal
en la organizacin
IF Aos de servicio del cliente >= SERVICIO_CORTO

Mg. Juan Gamarra Moreno 121


AND Aos de servicio del cliente < SERVICIO_LARGO
AND La tasa de despidos temporal ES alta
THEN El trabajo del cliente ES no estable

RULE El trabajo ES no estable


IF Aos de servicio del cliente < SERVICIO_CORTO
THEN El trabajo del cliente ES no estable

El sistema tambin incluye texto (que no se muestra) para mostrar la introduc-


cin, preguntas, visualizaciones intermedias, y la visualizacin de conclusio-
nes. La siguiente interaccin entre el sistema experto y el usuario ilustra la
operacin del sistema:

PASO 1

SISTEMA: Bienvenido al SISTEMA EXPERTO DE ASESORA DE


INVERSIN

Intentar determinar el portafolio de inversin para su


cliente. Le har preguntas tanto personales como financie-
ras acerca del cliente. A partir de esta informacin deber
ser capaz de determinar una inversin ya sea conservado-
ra o agresiva.

Por favor presione ENTRAR para comenzar la sesin

USUARIO: ENTRAR.

PASO 2

SISTEMA: Cunto dinero en dlares el cliente quiere invertir? Por


favor ingrese la cantidad en dlares sin comas, por ejem-
plo, 10000.

USUARIO: ENTRAR.

PASO 3

SISTEMA: Cul es la edad del cliente?

USUARIO: 30

PASO 4

SISTEMA: Cuntos aos ha estado el cliente con la compaa ac-


tual?

USUARIO: 5

122 Tpicos y Aplicaciones de la Inteligencia Artificial


PASO 5

SISTEMA: La tasa de despidos temporales en la organizacin es:

Baja

Alta

USUARIO: Baja

COMENTARIO: El usuario puede tener proble-


mas al responder esta pregunta. Este es un
problema tpico encontrado cuando se esta
ejecutando el sistema las primeras veces
en el proyecto. Sera necesario preguntar
al experto cmo determina si los despidos
temporales son bajos o altos, y aadir
las reglas apropiadas a nuestro sistema

PASO 6

SISTEMA: El cliente:

tiene nios

no tiene nios

USUARIO: tiene nios

PASO 7

SISTEMA: Despus de considerar los aspectos personales del clien-


te, le sugiero una posicin conservadora. Ahora continuar
con el anlisis de los aspectos financieros.

Por favor presione ENTRAR para continuar la sesin

USUARIO: ENTRAR

PASO 8

SISTEMA: Por favor dame la cantidad en dlares total de los activos


que el cliente posee. Incluyendo la tenencia de cuentas
bancarias, acciones, bonos, inmuebles, etc.

Por favor ingrese la cantidad en dlares sin comas, por


ejemplo, 150000.

USUARIO: 100000

Mg. Juan Gamarra Moreno 123


PASO 9

SISTEMA: Por favor dame la cantidad en dlares total de los pasivos


que el cliente tiene. Incluyendo elementos como prsta-
mos, hipotecas, etc.

Por favor ingrese la cantidad en dlares sin comas, por


ejemplo, 150000.

USUARIO: 20000

PASO 10

SISTEMA: Despus de considerar los aspectos financieros del cliente,


le sugiero una posicin agresiva. Ahora continuar con el
anlisis de los aspectos financieros.

Por favor presione ENTRAR para continuar la sesin.

USUARIO: ENTRAR

PASO 11

SISTEMA: Recomendara que el cliente invierta el dinero en 60% de


acciones, 30% en bonos y 10% en ahorros.

Las razones principales por la que recomiendo esta inver-


sin son porque se ha encontrado que el estado personal
del cliente sugiere una posicin conservadora y el estado
financiero sugiere una posicin agresiva.

Para salir del sistema presione F10. Si gusta reiniciar la


sesin presione F3.

Revisin de la sesin

Lo primero que se debera observar que el sistema de la misma recomenda-


cin que la hecha por el experto. Obtener un acuerdo entre los hallazgos del
sistema y lo que dice el experto es uno de los asuntos crticos cuando se eva-
la un sistema experto. Para un estudio de evaluacin real se probarn varios
casos.

Otro aspecto que se debe notar en esta evaluacin es que el sistema result
cmodo para el usuario a travs de toda la sesin.

Apectos futuros

124 Tpicos y Aplicaciones de la Inteligencia Artificial


Luego de tener este pequeo prototipo, se deberan extender sus capacidades.
Por ejemplo se puede codificar el conocimiento en portafolios adicionales. O,
se podra expandir el sistema para recomendar medios de inversin especfica
dentro de cada una de las categoras de inversin general. La facilidad con la
que estn expansiones se pueda realizar depender mucho de la flexibilidad
del diseo del prototipo.

Recomendar Portafolios Adicionales

Si se quiere considerar portafolios adicionales se requiere escribir reglas meta


adicionales. No se necesitarn metas adicionales ya que el sistema ahora tiene
una sentencia meta que es variable. Cada nueva regla meta que se ingrese
debe recomendar uno de los nuevos portafolios.

Las reglas meta actuales, consideran al recomendar un portafolio dos aspectos


principales, el estado personal y financiero del cliente. Las reglas metas usan
estos dos aspectos con los valores de conservadora y agresiva. Para ser
capaz de distinguir entre portafolios adicionales, se deber expandir los valores
introduciendo modificadores. Por ejemplo, se pueden usar valores como: con-
servadora ligeramente, conservadora moderadamente, y muy conservadora. Si
se toma en cuenta estos valores, ser necesario desarrollar un conjunto de
reglas ms profundas que podran inferir estos nuevos valores modificados.

Otro enfoque que se podra tomar al modificar las reglas meta existentes para
incluir los portafolios adicionales sera el de aadir premisas adicionales. Por
ejemplo, podramos considerar otros asuntos tales como los objetivos de inver-
sin del cliente, periodo de inversin, o an condiciones financieras mundiales.
Para este enfoque ser necesario desarrollar tambin un conjunto de reglas
ms profundas que podran inferir estos nuevos valores modificados.

En general, cuando se expanda el sistema para considerar metas adicionales


(pero similares), se debe observar primero por las formas en la que se puede
modificar las reglas meta presentes. Las modificaciones usualmente tomarn
la forma de valores adicionales para los aspectos presentes, y/o la adicin
nuevos aspectos. Estos tipos de modificaciones se ilustran en la siguiente re-
gla:

IF Estado personal del cliente valor nuevo


AND Estado personal del cliente valor nuevo
AND Nuevo aspecto
THEN La sugerencia de portafolio ES
nuevo portafolio

Recomendacin de medios de inversin

Se puede expandir el sistema para escoger el medio de inversin con cada


categora de inversin general modificando primero la agenda meta de tal for-
ma que esta tarea siga naturalmente la seleccin del portafolio. Esta modifica-

Mg. Juan Gamarra Moreno 125


cin se ilustra en la siguiente agenda meta, con la adicin de la metas multiva-
lor Sugerencia de Medio:

La sugerencia de Portafolio ES QUE


1.1. La sugerencia del medio ES QUE
Visualizar por defecto

Las reglas meta escritas para esta nueva meta (ejemplo, 1.1.) necesitarn in-
formacin acerca de la recomendacin de portafolio. Para ello, primero se de-
be modificar las reglas del sistema y capturar las categoras de inversin gene-
ral en una sentencia simblica multivalor y el porcentaje a ser invertido como
se observa en la modificacin de la REGLA1:

IF Cantidad de inversin del cliente 1000


THEN La sugerencia de portafolio ES invertir
100%
en ahorros
AND Categora de Inversin ES ahorros
AND Porcentaje_de_ahorros = 100

Se puede entonces escribir las reglas en


la siguiente forma general para determinar
los medios de inversin especficos.
IF Categora de Inversin ES ...
AND ....
....
THEN Sugerencia del medio ES ....

Las premisas dentro de estas reglas podra contener asuntos que pueden dis-
tinguir entre los varios medios dentro de cada categora. La cantidad actual a
invertirse en algn medio sera decido usando informacin de la cantidad del
total de la inversin y el porcentaje de la inversin para la categora de inver-
sin general, tal como Porcentaje de ahorros.

3.4.14. RESUMN DEL DISEO DE UN SISTEMA CON ENCADENA-


MIENTO HACIA ATRS

El proceso de diseo de un Sistema con Encadenamiento hacia atrs es alta-


mente cclico, donde el conocimiento se recolecta del experto, es codificado,
es probado, luego refinado a travs interacciones adicionales con el experto.
Existen algunos elementos claves para este proceso de diseo:

El diseo de un sistema experto con encadenamiento hacia atrs es un


proceso altamente iterativo.

El sistema debera probarse inmediatamente despus de la introduccin de


nuevas reglas.

126 Tpicos y Aplicaciones de la Inteligencia Artificial


El sistema debera expandirse en un aspecto a la vez.

Una tabla de decisin puede emplearse para adquirir fcilmente el cono-


cimiento para la toma de decisiones del experto.

El uso de la sentencia ELSE puede ocasionar problemas de mantenimiento


del sistema.

Un rbol de inferencia brinda un registro grfico de la reglas recolectadas.

Los sistemas con encadenamiento hacia atrs pueden estar diseados pa-
ra desarrollar bsqueda exhaustiva o no exhaustiva.

Para las reglas que usan nmeros para las operaciones de relacin, man-
tengan los nmeros en la forma de variable que se le asignan en una sec-
cin de inicializacin del programa.

Es importante que una interfaz se disee para cumplir con las necesidades
del usuario.

3.5. DISEO DE SISTEMAS BASADO EN EL


CONOCIMIENTO CON ENCADENAMIENTO HACIA
ADELANTE A TRAVS DE DIAGRAMAS DE
DEPENDENCIA
Esta gua permite mostrar una visin del diseo bsico y el proceso de desa-
rrollo de una base de conocimiento con diagramas de dependencia.

Las etapas para desarrollar un Sistema Basado en el Conocimiento (SBC) es:

Etapa 1: Aislar el rea para desarrollar el SBC.

Etapa 2: Precisar el problema del rea designada para el desarrollo del


SBC.

Etapa 3: Crear un diagrama de dependencia.

Etapa 4: Crear tablas de decisin.

Etapa 5: Escribir las reglas IF-THEN.

Etapa 6: Construir la interface de usuario.

3.5.1. ETAPA 1: AISLAR EL REA PARA DESARROLLAR EL SBC.

Aislar el rea bajo estudio a travs de un diagrama de bloque.

Para nuestro caso, el objetivo general del sistema experto es que ayude en la
manutencin de la salud. La rpida subida de los costos en el cuidado de la
salud, combinado con el incremento de la competencia en este rubro, ha gene-

Mg. Juan Gamarra Moreno 127


rado un mtodo alternativo para el financiamiento y entrega de los servicios de
cuidado de la salud. Muchas formas de entrega de servicios mdicos se han
desarrollado para resolver los problemas del ascenso de los costos. Existen
algunas instituciones que trabajan con el pago por adelantado ms que un pa-
go por el servicio brindado.

Una variacin importante en los servicios de pago por adelantado es la organi-


zacin de la manutencin de la salud (OMS). Los OMS proporcionan servicios
mdicos a sus miembros que realizan un pago por adelantado. Para que estos
operen en forma lucrativa deben de reducir los costos.

Generalmente la OMS debe tener xito en proporcionar una continua atencin


basada en las necesidades de sus miembros. Estas organizaciones tienen que
alcanzar bajos costos en hospitalizacin, tasas que son bajos en el sector que
tiene el pago por el servicio brindado. Adems para reducir los costos la OMS
debe racionalizar la disponibilidad de servicio ambulatorio.

Para alcanzar el objetivo de asegurar que tan serio es el problema de la salud


se obtienen prioridades de acceso al tratamiento sobre casos de prioridad baja.
En este ejemplo utilizaremos un sistema basado en el conocimiento que asisti-
r a los usuarios en la toma de decisiones para la atencin de la salud.

3.5.2. ETAPA 2: PRECISAR EL PROBLEMA DEL REA DESIGNADA


PARA EL DESARROLLO DEL SBC

Los clientes rutinariamente requieren apoyo mdico para nuevos casos o para
seguimientos de casos. Mientras algunos clientes requieren informacin u
otros servicios, los clientes que no son miembros son los primeros candidatos
para solicitar la membresa a OMS.

La decisin esta basado en los factores crticos que se muestra en el diagrama


de bloques de la figura 3.11. Los tres factores crticos son:

a) Estado OMS: Esta el cliente autorizado a los servicios de los miembros?,


dos tems influencian la respuesta: la declaracin de membresa del cliente
seguido de la verificacin del nmero de identificacin que tiene la membresa.

128 Tpicos y Aplicaciones de la Inteligencia Artificial


Recomendacin

Problema Razn Estado OMS

Temperatura Sntomas
Miembro ID

Figura 3.11. Diagrama de bloquesdel caso OMS


b) Razn: Cul es la razn para venir a la OMS?, la respuesta esta dada por
si es un nuevo caso, un seguimiento de caso, bsqueda de informacin u otra
visita.

c) Problema: Qu tan serio es la condicin actual del cliente?, dos tems in-
fluencian la respuesta. Una temperatura anormal u otro sntoma presentado
que requiere servicio de atencin inmediata.

Recomendaciones que da el sistema

De acuerdo a las respuestas del cliente se puede ofrecer los siguientes servi-
cios:

Ayuda de nivel 1, para miembros con casos serios.

Ayuda de nivel 2, para miembros con nuevos casos que no son serios.

Ayuda de nivel 3, para miembros con seguimiento de casos que no son se-
rios.

Informacin u otros servicios para miembros.

Servicios para clientes que no son miembros.

3.5.3. ETAPA 3: CREAR UN DIAGRAMA DE DEPENDENCIA

Un diagrama de dependencia indica las relaciones (dependencias) entre los


factores crticos, interrogantes, reglas, valores y recomendaciones hechas por
el sistema. El diagrama es una herramienta grafica que sirve para documentar
la base de conocimientos.

Para la creacin del diagrama de dependencia debemos basarnos en el dia-


grama de bloques. Las caractersticas del diagrama de dependencia son:

Dibujar rectngulos con un tringulo abierto para cada factor crtico identifi-
cado en el diagrama de bloques.

Dibujar una lnea recta que conecte a cada tringulo, escriba una frase que
describa al tem que llega al tringulo, el cual influenciar en la salida del
factor crtico. Adems bajo la lnea o entre parntesis escriba los valores
que puede tomar el tem anterior.

En cada rectngulo escriba el nombre del factor crtico y debajo escriba los
valores de este factor crtico. Realice lo mismo para el rectngulo que tiene
a las recomendaciones o conclusiones.

El diagrama de dependencia para nuestro caso se muestra en la figura 3.12.


Miembro
(si, no)
Identificacin valida Estado de
membresa
(si, no)
Ok, no_ok

Razn Recomendacin
de ayuda
(nuevo caso, seguimiento de caso, otra informacin)

- Nivel 1
- Nivel 2
- Nivel 3
- Otra in-
formacin.
- No es
Temperatura miembro
(Normal, anormal, desconocido)
Problema

Otros sntomas
Serio
(Si, No) No es serio

Figura 3.12.
3.5.4. ETAPA 4: CREAR TABLAS DE DECISIN

En esta etapa se debe crear una tabla de decisin con la siguiente recomen-
dacin:

Definir el nmero de filas que se necesita en la tabla. Este puede determi-


narse listando todos los factores, ahora llamado condiciones, que llegan al
tringulo en consideracin.

La cantidad de filas para la tabla de decisin que tiene a las recomendaciones


se muestra en la tabla 3.3.

Tabla 3.3

Condiciones Nmero de valores

Estado de membresa (Ok, 2

no_ok)

Razn (nuevo caso, seguimiento de ca- 3

so, otra informacin)

Problema (Serio, No es serio) 2

Total de filas=2 x 3 x 2 12

La tabla de decisin para las recomendaciones se muestra en la tabla 3.4.

La tabla de decisin reducida para las recomendaciones se muestra en la tabla


3.5.

La reduccin de la tabla de decisin se debe a que algunas condiciones no


tienen sentido.

La cantidad de filas para la tabla de decisin que define el estado de membre-


sa se muestra en la tabla 3.6.

La tabla de decisin que define el estado de membresa se muestra en la tabla


3.7.
La tabla de decisin reducida que define el estado de membresa se muestra
en la tabla 3.8.

La cantidad de filas para la tabla de decisin que define el problema se mues-


tra en la tabla 3.9.

La tabla de decisin que define el problema se muestra en la tabla 3.10.

La tabla de decisin reducida que define el problema se muestra en la tabla


3.11.

Tabla 3.4
Regla Estado de Razn Problema Recomendacin
membresa
A1 Ok Nuevo caso Serio Nivel 1
A2 Ok Nuevo caso No es serio Nivel 2
A3 Ok seguimiento Serio Nivel 1
de caso
A4 Ok seguimiento No es serio Nivel 3
de caso
A5 Ok Otra informa- Serio Otra informacin
cin
A6 Ok Otra informa- No es serio Otra informacin
cin
A7 no_ok Nuevo caso Serio No es miembro
A8 no_ok nuevo caso No es serio No es miembro
A9 no_ok seguimiento Serio No es miembro
de caso
A10 no_ok seguimiento No es serio No es miembro
de caso
A11 no_ok Otra informa- Serio No es miembro
cin
A12 no_ok Otra informa- No es serio No es miembro
cin

Mg. Juan Gamarra Moreno 133


Tabla 3.5
Regla Estado de Razn Problema Recomendacin
membresa

B1 Ok Nuevo caso Serio Nivel 1

B2 Ok Nuevo caso No es serio Nivel 2

B3 Ok seguimiento Serio Nivel 1


de caso

B4 Ok seguimiento No es serio Nivel 3


de caso

B5 Ok Otra informa- --- Otra informacin


cin

B6 no_ok --- --- No es miembro

Tabla 3.6
Condiciones Nmero de valores

Miembro (si, no) 2

Identificacin valida(si, no) 2

Total de filas = 2 x 2 4

Tabla 3.7
Reglas Miembro Identificacin valida Estado de membresa

A1 Si Si Ok

A2 Si No No ok

A3 No Si No ok

A4 No No No ok

Tabla 3.8
Reglas Miembro Identificacin valida Estado de membresa

B1 Si Si Ok

B2 --- No No ok

B3 No --- No ok

134 Tpicos y Aplicaciones de la Inteligencia Artificial


Tabla 3.9
Condiciones Nmero de
valores

Temperatura (Normal, anormal, des- 3


conocido)
Otros sntomas (Si, No) 2

Total de filas=3 x 2 6

Tabla 3.10
Regla Temperatura Otros sntomas Problema

A1 Normal Si Serio

A2 Normal No No es serio

A3 Anormal Si Serio

A4 Anormal No Serio

A5 Desconocido Si Serio

A6 Desconocido No Serio

Tabla 3.11
Regla Temperatura Otros sntomas Problema

B1 Normal Si Serio

B2 Normal No No es serio

B3 Anormal --- Serio

B4 Desconocido --- Serio

3.5.5. ETAPA 5: ESCRIBIR LAS REGLAS IF THEN

Las reglas para las tablas de decisin son:

Mg. Juan Gamarra Moreno 135


Subject:
ORGANIZACION DE LA MANUTENCION DE LA SALUD

Author:
EPG

Uses all non-redundant rules in data derivations.

Probability System: 0 (false) or 1 (true)

DISPLAY THRESHOLD: 1

QUALIFIERS:

1 ESTADO DE MEMBRESIA

OK
NO OK

Display at end

2 LA RAZON POR LA QUE VINO EL CLIENTE ES

NUEVO CASO
SEGUIMIENTO DE CASO
OTRA INFORMACION

Display at end

3 EL PROBLEMA QUE TIENE EL CLIENTE

ES SERIO
NO ES SERIO

Display at end

4 EL CLIENTE ES MIEMBRO

NO
SI

Display at end

5 LA IDENTIFICACION DEL CLIENTE ES VALIDA

SI
NO

Display at end

6 LA TEMPERATURA DEL CLIENTE ES

NORMAL
ANORMAL
DESCONOCIDO
Display at end

7 EL CLIENTE TIENE OTROS SINTOMAS

136 Tpicos y Aplicaciones de la Inteligencia Artificial


SI
NO

Display at end

CHOICES:
1 LA RECOMENDACION ES AYUDA DE NIVEL 1

2 LA RECOMENDACION ES AYUDA DE NIVEL 2

3 LA RECOMENDACION ES AYUDA DE NIVEL 3

4 EL CLIENTE VINO POR OTRA INFORMACION

5 EL CLIENTE NO ES MIEMBRO

RULES:

----------------------------------------

RULE NUMBER: 1
IF:
ESTADO DE MEMBRESIA OK
and LA RAZON POR LA QUE VINO EL CLIENTE ES OTRA INFORMACION

THEN:
EL CLIENTE VINO POR OTRA INFORMACION - Confidence=1
and STOP

----------------------------------------

RULE NUMBER: 2
IF:
ESTADO DE MEMBRESIA OK
and LA RAZON POR LA QUE VINO EL CLIENTE ES NUEVO CASO
and EL PROBLEMA QUE TIENE EL CLIENTE ES SERIO

THEN:
LA RECOMENDACION ES AYUDA DE NIVEL 1 - Confidence=1
and STOP

----------------------------------------

RULE NUMBER: 3
IF:
ESTADO DE MEMBRESIA OK
and LA RAZON POR LA QUE VINO EL CLIENTE ES NUEVO CASO
and EL PROBLEMA QUE TIENE EL CLIENTE NO ES SERIO

THEN:
LA RECOMENDACION ES AYUDA DE NIVEL 2 - Confidence=1
and STOP

----------------------------------------

Mg. Juan Gamarra Moreno 137


RULE NUMBER: 4
IF:
ESTADO DE MEMBRESIA OK
and LA RAZON POR LA QUE VINO EL CLIENTE ES SEGUIMIENTO DE CASO
and EL PROBLEMA QUE TIENE EL CLIENTE ES SERIO

THEN:
LA RECOMENDACION ES AYUDA DE NIVEL 1 - Confidence=1
and STOP

----------------------------------------

RULE NUMBER: 5
IF:
ESTADO DE MEMBRESIA OK
and LA RAZON POR LA QUE VINO EL CLIENTE ES SEGUIMIENTO DE CASO
and EL PROBLEMA QUE TIENE EL CLIENTE NO ES SERIO

THEN:
LA RECOMENDACION ES AYUDA DE NIVEL 3 - Confidence=1
and STOP

----------------------------------------

RULE NUMBER: 6
IF:
ESTADO DE MEMBRESIA NO OK

THEN:
EL CLIENTE NO ES MIEMBRO - Confidence=1
and STOP

----------------------------------------

RULE NUMBER: 7
IF:
EL CLIENTE ES MIEMBRO NO

THEN:
ESTADO DE MEMBRESIA NO OK

----------------------------------------

RULE NUMBER: 8
IF:
LA IDENTIFICACION DEL CLIENTE ES VALIDA NO

THEN:
ESTADO DE MEMBRESIA NO OK

----------------------------------------

RULE NUMBER: 9
IF:
EL CLIENTE ES MIEMBRO SI

138 Tpicos y Aplicaciones de la Inteligencia Artificial


and LA IDENTIFICACION DEL CLIENTE ES VALIDA SI

THEN:
ESTADO DE MEMBRESIA OK

----------------------------------------

RULE NUMBER: 10
IF:
LA TEMPERATURA DEL CLIENTE ES NORMAL
and EL CLIENTE TIENE OTROS SINTOMAS SI

THEN:
EL PROBLEMA QUE TIENE EL CLIENTE ES SERIO

----------------------------------------

RULE NUMBER: 11
IF:
LA TEMPERATURA DEL CLIENTE ES NORMAL
and EL CLIENTE TIENE OTROS SINTOMAS NO

THEN:
EL PROBLEMA QUE TIENE EL CLIENTE NO ES SERIO

----------------------------------------

RULE NUMBER: 12
IF:
LA TEMPERATURA DEL CLIENTE ES ANORMAL

THEN:
EL PROBLEMA QUE TIENE EL CLIENTE ES SERIO

----------------------------------------

RULE NUMBER: 13
IF:
LA TEMPERATURA DEL CLIENTE ES DESCONOCIDO

THEN:
EL PROBLEMA QUE TIENE EL CLIENTE ES SERIO

3.5.6. ETAPA 6: CONSTRUIR LA INTERFAZ DE USUARIO

Se debe disear una interfaz adecuada que permita una interaccion con el
usuario que sea lo ms amigable posible.

Utilice las caractersticas de algun shell para construir la interfaz de usuario.

Mg. Juan Gamarra Moreno 139


3.6. LGICA DIFUSA

3.6.1. TEORA DE LA CERTEZA

Una alternativa a la teora de la probabilidad para el razonamiento inexacto en


los sistemas expertos es la teora de la certeza.

Los expertos a menudo toman juicios cuando resuelven un problema. La in-


formacin que se tiene puede ser incompleta y el conocimiento utilizado para
interpretar la informacin puede crear desconfianza en el resultado final.

Una pregunta para un problema medico puede ser la siguiente : Tiene una
fuerte jaqueca?. La respuesta es incierta, porque es subjetiva y requiere que el
usuario elabore un juicio al contestar la pregunta; por supuesto el usuario se
siente mejor al contestar con verdadero o falso. Por otro lado, el usuario po-
dra contestar asignando un nmero subjetivo a su respuesta entre 0 y 1, tal
como 0.7, que significa 70% de certeza en su respuesta. El nmero no tiene
base estadstica ni probabilstica, ms bien es el nivel de creencia de la res-
puesta dada.

3.6.2. FACTOR DE CERTEZA

Medida de la creencia que tiene un experto humano en la ocurrencia de un


hecho.

Nmero que refleja el nivel de creencia de una hiptesis.

La figura 3.13 muestra como se interpreta la teora de la certeza.

Falso Verdadero

Factor de
certeza
Figura 3.13. Factor de Certeza

3.6.3. FACTORES DE CERTEZA EN SISTEMAS BASADOS EN RE-


GLAS

Los sistemas basados en reglas utilizan la siguiente representacin:

SI (CONDICION ) ENTONCES (CONCLUSION)

140 Tpicos y Aplicaciones de la Inteligencia Artificial


Aadiremos ahora el factor de certeza (FC) a los elementos de la regla de la
siguiente forma:

Rx : SI p Y q ENTONCES r

FCx FCp FCq FCr

Para obtener la certeza de la conclusin en una regla de condicin simple,


se tiene que dado:

Rx : SI p ENTONCES r

FCx FCp FCr

El Factor de certeza de la conclusin es:

FCr = FCp * FCx

La certeza de una conclusin en reglas de condicin mltiple, se obtiene


considerando si existe conjuncin o disyuncin.

Para reglas donde exista conjuncin, se tiene que dado:

Rx : SI p Y q Y r ..Y.. z ENTONCES c

FCx FCp FCq FCr FCz FCc

El Factor de certeza de la conclusin es:

FCc = min (FCp, FCq, FCr, ... , FCz)* FCx

La funcin min retorna el mnimo valor del conjunto de nmeros.

Para reglas donde exista disyuncin, se tiene que dado:

Rx : SI p O q O r ..O.. z ENTONCES c

FCx FCp FCq FCr FCz FCc

El Factor de certeza de la conclusin es:

FCc = max (FCp, FCq, FCr, ... , FCz)* FCx

La funcin max retorna el mximo valor del conjunto de nmeros.

Mg. Juan Gamarra Moreno 141


Ejemplo: Encontrar el factor de certeza de x (FCx=?). Si se tienen las siguien-
tes reglas:

R1 : SI a Y b ENTONCES c

0.9 0.8 0.85 FCc

R2 : SI c O d ENTONCES e

1.0 0.90 FCe

R3 : SI e Y f ENTONCES x

0.8 0.8 FCx


Solucin:

Hallando FCc

FCc = min(0.8, 0.85)*0.9 = 0.8*0.9 = 0.72

Hallando FCe

FCe = max(FCc, 0.9)*1.0 = max(0.72, 0.9)*1.0

FCe = 0.9 * 1.0 = 0.9

Hallando FCx

FCx = min(FCe, 0.8)*0.8 = min(0.9, 0.8)*0.8

FCx = 0.8 * 0.8 = 0.64 (Respuesta)

Si las conclusiones son similares dado dos o ms reglas como se muestra a


continuacin:

Dados

R1 : SI a Y b ENTONCES x

FCR1 FCa FCb FCx_R1

R2 : SI c O d ENTONCES x

FCR2 FCc FCd FCx_R2

El factor de certeza se calcula utilizando la siguiente expresin:

142 Tpicos y Aplicaciones de la Inteligencia Artificial


FCx_R1_R2 = FCx_R1 + FCx_R2 FCx_R1 * FCx_R2

El clculo de FCx_R1 y FCx_R2 utiliza los procedimientos ya mencionados


anteriormente.

3.6.4. LGICA DIFUSA

HISTORA DE LA LGICA DIFUSA

Los conjuntos difusos fueron introducidos por primera vez en 1965; la creciente
disciplina de la lgica difusa provee por s misma un medio para acoplar estas
tareas. En cierto nivel, la lgica difusa puede ser vista como un lenguaje que
permite trasladar sentencias sofisticadas en lenguaje natural a un lenguaje ma-
temtico formal. Mientras la motivacin original fue ayudar a manejar aspectos
imprecisos del mundo real, la prctica temprana de la lgica difusa permiti el
desarrollo de aplicaciones prcticas. Aparecieron numerosas publicaciones
que presentaban los fundamentos bsicos con aplicaciones potenciales. Esta
frase marc una fuerte necesidad de distinguir la lgica difusa de la teora de
probabilidad. Tal como la entendemos ahora, la teora de conjuntos difusos y la
teora de probabilidad tienen diferentes tipos de incertidumbre.

En 1994, la teora de la lgica difusa se encontraba en la cumbre, pero esta


idea no es nueva, para muchos, estuvo bajo el nombre de lgica difusa durante
25 aos, pero sus orgenes se remontan hasta 2,500 aos. An Aristteles
consideraba que existan ciertos grados de veracidad y falsedad. Platn haba
considerado ya grados de pertenencia.

En el siglo XVIII el filsofo y obispo anglicano Irlands, George Berkeley y Da-


vid Hume describieron que el ncleo de un concepto atrae conceptos similares.
Hume en particular, crea en la lgica del sentido comn, el razonamiento ba-
sado en el conocimiento que la gente adquiere en forma ordinaria mediante
vivencias en el mundo. En Alemania, Immanuel Kant, consideraba que solo los
matemticos podan proveer definiciones claras, y muchos principios contradic-
torios no tenan solucin. Por ejemplo la materia poda ser dividida infinitamen-
te y al mismo tiempo no poda ser dividida infinitamente. Particularmente la
escuela americana de la filosofa llamada pragmatismo fundada a principios de
siglo por Charles Sanders Peirce, cuyas ideas se fundamentaron en estos con-
ceptos, fue el primero en considerar ''vaguedades'', ms que falso o verdadero,
como forma de acercamiento al mundo y a la forma en que la gente funciona.

La idea de que la lgica produce contradicciones fue popularizada por el filso-


fo y matemtico britnico Bertrand Russell, a principios del siglo XX. Estudio
las vaguedades del lenguaje, concluyendo con precisin que la vaguedad es
un grado. El filosofo austraco Ludwing Wittgenstein estudi las formas en las
que una palabra puede ser empleada para muchas cosas que tienen algo en
comn. La primera lgica de vaguedades fue desarrollada en 1920 por el fil-
sofo Jan Lukasiewicz, visualiz los conjuntos con un posible grado de perte-
nencia con valores de 0 y 1, despus los extendi a un nmero infinito de valo-
res entre 0 y 1. En los aos sesentas, Lofti Zadeh invent la lgica difusa, que

Mg. Juan Gamarra Moreno 143


combina los conceptos de la lgica y de los conjuntos de Lukasiewicz mediante
la definicin de grados de pertenencia.

QUE ES LA LGICA DIFUSA?

Es una rama de la lgica que usa grados de membresa (pertenencia) a los


conjuntos en lugar de pertenecer a ellos como verdadero o falso

El trmino difuso procede de la palabra inglesa fuzz que sirve para denomi-
nar la pelusa que recubre el cuerpo de lo polluelos al poco de salir del huevo.
Este trmino ingls significa confuso, borroso, indefinido o desenfocado. Este
trmino se traduce por flou en frances y aimai en japones. Aunque la teora
de conjuntos difusos presente cierta complejidad, el concepto bsico es fcil-
mente comprensible.

Tomemos como ejemplo el concepto de mediana edad. Al escuchar el ter-


mino mediana edad, nuestra mente asocia automticamente la imagen de
ciertas personas o tipos de personas. Pero este es un concepto con lmites
imprecisos que no puede ser tratado por el programa de un ordenador, que
ordinariamente exige que las cosan sean definidas. Es aqu donde entra la L-
gica Difusa. Supongamos que hemos llegado a la conclusin de que la edad
mediana son los 45 aos. Sin embargo no podemos descartar a las personas
de 35 o 55 aos como edad mediana. Por el contrario, los menores de 30 aos
y los mayores de 60 tampoco se pueden considerar radicalmente como no de
mediana edad. De tal forma creamos tres crculos. El primero, el de los jvenes
va de los 0 hasta los treinta y cinco aos, el segundo el de la mediana edad
va de los treinta hasta los cincuenta y cinco aos, y por ultimo el de la tercera
edad que va de los cincuenta en adelante. Podemos observar que desde el
punto de vista de los conjuntos difusos el periodo de edad de los treinta a los
treinta y cinco puede considerarse tanto dentro del crculo joven como el de
mediana edad. Otro tanto ocurre entre los cincuenta y los cincuenta y cinco
aos que pueden concebirse dentro de la mediana edad y de la tercera
edad.

Estas transiciones de valoracin facilitan la expresin matemtica de las ex-


presiones difusas o indefinidas, y con ello dan la posibilidad de hacer progra-
mas para ordenadores que interpreten las expresiones humanas que normal-
mente son imprecisas para la matemtica tradicional.

3.6.5. VARIABLES LINGSTICAS

Los Conjuntos Difusos son capaces de captar por s mismos la vaguedad lin-
gstica de palabras y frases comnmente aceptadas, como "gato pardo" o
"ligero cambio". La habilidad humana de comunicarse mediante definiciones
vagas o inciertas es un atributo importante de la inteligencia.

Una Variable Lingstica es aquella variable cuyos valores son palabras o sen-
tencias son vagas o imprecisas. Para estas variables lingsticas se utilizar un
nombre y un valor lingstico sobre un Universo de Discurso.

144 Tpicos y Aplicaciones de la Inteligencia Artificial


Los Conjuntos Difusos pueden utilizarse para representar expresiones tales
como:

x es PEQUEO. (X es una variable lingstica)

La velocidad es RPIDA. (velocidad es una variable lingstica)

El ganso es CLARO. (ganso es una variable lingstica)

Las expresiones anteriores pueden dar lugar a expresiones lingsticas ms


complejas como:

x no es PEQUEO.

La velocidad es RPIDA pero no muy RPIDA.

El ganso es CLARO y muy ALEGRE.

Tambin se puede utilizar los distintos modificadores lingsticos como muy,


poco, rpido, lento, etc.

3.6.6. TEORA DE CONJUNTOS DIFUSOS

Una buena estrategia para presentar la teora de Conjuntos Difusos, consiste


en recordar algunos aspectos de la teora de conjuntos convencionales (que
llamaremos conjuntos concretos), y a partir de all hacer una extensin a los
conjuntos difusos:

Un conjunto concreto se define como una coleccin de elementos que existen


dentro de un Universo. As, si el universo consta de los nmeros enteros no
negativos menores que 10:

U={0,1,2,3,4,5,6,7,8,9}

entonces podemos definir algunos conjuntos como, por ejemplo:

A={0,2,4,6,8}

B={1,3,5,7,9}

C={1,4,7}, etc.

Con estas definiciones hemos establecido que cada uno de los elementos del
Universo pertenecen o no a un determinado conjunto. Por lo tanto, cada con-
junto puede definirse completamente por una funcin de pertenencia, que ope-
ra sobre los elementos del Universo, y que le asigna un valor de 1 si el elemen-
to pertenece al conjunto, y de 0 si no pertenece.

Tomando como ejemplo el conjunto C enumerado arriba, su funcin de perte-


nencia uC(x) sera de la siguiente forma:

Mg. Juan Gamarra Moreno 145


uC(0)=0, uC(1)=1, uC(2)=0, uC(3)=0, uC(4)=1, uC(5)=0, uC(6)=0, uC(7)=1,
uC(8)=0, uC(9)=0

Ahora bien, un Conjunto Difuso se define de forma similar, con una diferencia
conceptual importante: un elemento puede pertenecer parcialmente a un con-
junto.

De esta forma, un conjunto difuso D definido sobre el mismo universo U puede


ser el siguiente:

D={20%/1,50%/4,100%/7}5

La definicin anterior significa que el elemento 1 pertenece en un 20% al con-


junto D (y por tanto pertenece en un 80% al complemento de D), en tanto que
el elemento 4 pertenece en un 50%, y el elemento 7 en un 100% .

En forma alternativa, diramos que la funcin de pertenencia uD(x) del conjunto


D es la siguiente:

uD(0)=0.0, uD(1)=0.2, uD(2)=0.0, uD(3)=0.0, uD(4)=0.5, uD(5)=0.0, uD(6)=0.0,


uD(7)=1.0, uD(8)=0.0, uD(9)=0.0

Las primeras diferencias que se hacen evidentes entre los Conjuntos Concre-
tos y los Conjuntos Difusos son las siguientes:

La funcin de pertenencia asociada a los conjuntos concretos slo puede te-


ner dos valores: 1 0, mientras que en los conjuntos difusos puede tener cual-
quier valor entre 0 y 1.

Unelemento puede pertenecer (parcialmente) a un conjunto difuso y simult-


neamente pertenecer (parcialmente) al complemento de dicho conjunto.

Lo anterior no es posible en los conjuntos concretos, ya que constituira una


violacin al principio del tercer excluido.

Las fronteras de un conjunto concreto son exactas, en tanto que las de un


conjunto difuso son, precisamente, difusas, ya que existen elementos en las
fronteras mismas, y estos elementos estn a la vez dentro y fuera del conjunto.

Qu sentido puede tener el pertenecer parcialmente a un conjunto? En mu-


chos casos puede tener ms sentido que pertenecer totalmente a un conjunto;
veamos algunos ejemplos:

Ejemplo 1: Supngase que se desea definir el conjunto de los estudiantes de la


carrera de Ingeniera de Sistemas de la Universidad que estn cursando el
quinto semestre de la carrera. Cmo clasificar a un estudiante que cursa dos
materias de cuarto semestre, tres de quinto y una de sexto? y a otro que to-
ma una materia de quinto semestre, y cinco de sexto? Evidentemente ambos
son en parte miembros del conjunto Estudiantes de quinto semestre, pero slo lo
son parcialmente.

5
Se ha empleado una notacin frecuente, en donde el signo "/" no significa "dividido por".

146 Tpicos y Aplicaciones de la Inteligencia Artificial


Ejemplo 2: Supngase que se desea clasificar a los miembros de un equipo de
ftbol segn su estatura en tres conjuntos, Bajos, Medianos y Altos. Podra
plantearse que se es Bajo si se tiene una estatura inferior a, por ejemplo, 160
cm, que se es Mediano si la estatura es superior o igual a 160 cm e inferior a
180 cm, y se es alto si la estatura es superior o igual a 180 cm, con lo que se
lograra una clasificacin en conjuntos concretos.

Sin embargo, qu tan grande es la diferencia que existe entre dos jugadores
del equipo, uno con estatura de 179.9 cm y otro de 180.0 cm? Ese milmetro
de diferencia quizs no represente en la prctica algo significativo, y sin em-
bargo los dos jugadores han quedado rotulados con etiquetas distintas: uno es
Mediano y el otro es Alto. Si se optase por efectuar la misma clasificacin con
conjuntos difusos estos cambios abruptos se evitaran, debidos a que las fron-
teras entre los conjuntos permitiran cambios graduales en la clasificacin.

La figura 3.14 muestra cmo podra hacerse tal clasificacin: El universo de


discurso sera el conjunto continuo de todas las posibles estaturas (el interva-
lo [130cm, 210]cm por ejemplo). Las funciones de pertenencia de cada uno de
los tres conjuntos Bajo, Mediano y Alto se han graficado. La forma de estas
funciones de pertenencia no debe ser necesariamente la de la ilustracin 2,
pues depende de lo que se entienda por "Bajo", "Mediano" y "Alto". Las figuras
3.15 y 3.16 muestran otras alternativas para definir dichas funciones.

Mg. Juan Gamarra Moreno 147


Figura 3.14 Funciones de pertenencia del ejemplo 2.

Figura 3.15 Representacin alternativa del ejemplo 2.

Figura 3.16 Representacin alternativa del ejemplo 2.

Ejemplo 3: Tmese un individuo x cuya edad sea de 20 aos. Como se puede


observar en la figura 3.17, pertenece al Conjunto Difuso "Joven" y al Conjunto
Difuso "Maduro".

148 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 3.17. Ejemplo de Conjuntos Difusos en el universo de la edad.

Se puede observar que posee un grado de pertenencia A(x) de 0.6 para el


Conjunto Difuso "Joven" y un grado de 0.4 para el Conjunto Difuso "Maduro";
tambin posee un grado de 0 para "Viejo". De este ejemplo se puede deducir
que un elemento puede pertenecer a varios Conjuntos Difusos a la vez aunque
con distinto grado. As, nuestro individuo x tiene un grado de pertenencia ma-
yor al conjunto "Joven " que al conjunto "Maduro"(0.6 > 0.4), pero no se puede
decir, tratndose de Conjuntos Difusos, que x es joven o que x es maduro de
manera rotunda.

3.6.7. APROXIMACIN DE LAS FUNCIONES DE PERTENENCIA EN


LOS CONJUNTOS DIFUSOS

Para realizar la aproximacin de las funciones de pertenencia de los conjuntos


difusos, comenzaremos definiendo que conjuntos difusos formaran el universo
de discurso.

Supongamos la variable lingstica edad y sus conjuntos difusos joven y adul-


to, los cuales se obtuvieron en una encuesta a 10 personas para saber cual es
el rango en aos para definir estas edades. Las preguntas utilizadas fueron:

Cul es el rango en aos para un joven?

Cul es el rango en aos para un adulto?

Las respuestas se muestran en las tablas 3.12 y 3.13.

El valor de FREC. Difuso se calcula de acuerdo a la siguiente formula:

FREC
FREC _ DIFUSA
MAXIMO _ FREC

Con el resultado de las tablas 3.12 y 3.13., realizamos una grafica con la
EDAD y FREC DIFUSO que representan a las funciones de pertenencia. Las
funciones de pertenencia se muestran en las figuras 3.18 y 3.19 para edad jo-
ven y edad adulta.

Mg. Juan Gamarra Moreno 149


Tabla 3.12. Rango en aos para definir a un joven

Tabla 3.13 Rango en aos para definir a un adulto

150 Tpicos y Aplicaciones de la Inteligencia Artificial


Tabla 3.13 Rango en aos para definir a un adulto (continuacin)

1,2

0,8

0,6

0,4

0,2

0
15 18 21 24 27 30 33

Figura 3.18 Funcin de pertenencia de edad joven

Mg. Juan Gamarra Moreno 151


1,2

0,8

0,6

0,4

0,2

0
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

Figura 3.19 Funcin de pertenencia de edad adulta

Una vez obtenidas las funciones podramos aproximarlos a una de las funcio-
nes estndar que tiene la lgica difusa.

3.6.8. OPERACIONES ENTRE CONJUNTOS DIFUSOS

Los Conjuntos Difusos se pueden operar entre s del mismo modo que los con-
juntos clsicos. Puesto que los primeros son una generalizacin de los segun-
dos, es posible definir las operaciones de interseccin, unin y complemento
haciendo uso de las mismas funciones de pertenencia:

Interseccin: (u)=min( (u), (u)) u

Unin: (u)=max( (u), (u)) u

Complemento: (u)=1- (u), (u)) u

Las ilustraciones de la interseccin, unin y complemento de la figura 3.20, se


muestran en las figuras 3.21, 3.22 y 3.23 respectivamente.

3.6.9. DESARROLLO DE UN SISTEMA DIFUSO BASADO EN REGLAS

DEFINICIN DEL PROBLEMA

Se desea disear un sistema difuso para estimar las ventas mensuales de


computadoras teniendo como datos de entrada el precio de la computadora y
el nivel de ingresos del cliente.

152 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 3.20. Funciones de pertenencia del ejemplo 2

Figura 3.21 Interseccin de la figura 3.20.

Figura 3.22 Unin de la figura 3.20.

Mg. Juan Gamarra Moreno 153


Figura 3.23 Complemento de la figura 3.20.

DEFINICIN DE LAS VARIABLES LINGSTICAS

Las variables son:

Precio de la computadora y Nivel de ingreso: Variables independientes.

Ventas: Variables dependientes.

Precio Sistema Ventas


Difuso
Nivel de
Ingreso

El universo de discurso de cada variable ser:

Precio de la computadora: $500 - $2500

Nivel de ingresos del cliente: $100 - $1000

Ventas mensuales de computadoras: $10 000 - $50 000

DEFINICIN DE LOS CONJUNTOS DIFUSOS

Para cada una de las variables, definimos los conjuntos difusos, de acuerdo a
los adjetivos tpicos utilizados en relacin con estas variables.

A continuacin se muestra la definicin de los conjuntos difusos para cada va-


riable:

154 Tpicos y Aplicaciones de la Inteligencia Artificial


VARIABLE ADJETIVOS RANGO

Barato 500 - 1500

Precio Accesible 1000 2000

Caro 1500 - 2500

Bajo 100 500


Nivel de Ingre-
Medio 300 - 800
so ($)
Alto 600 1000

Baja 10 30 (x 103)
Ventas
Normal 10 50 (x 103)
($)
Alta 30 50 (x 103)

La representacin de las funciones de pertenencia se muestra en las figuras


3.24, 3.25 y 3.26.

Accesible
Caro

Barato

500 1000 1500 2000 2500

Figura 3.24 Funciones de pertenencia para la variable Precio de la Computadora

Mg. Juan Gamarra Moreno 155


Bajo Medio Alto

100 200 300 500 600 800 900 1000

Figura 3.25 Funciones de pertenencia para la variable Nivel de Ingreso del Cliente.

Baja Normal Alta

10 20 30 40 50
Figura 3.26 Funciones de pertenencia para la variable Ventas mensuales

3.6.10. DEFINICIN DE LA REGLAS DIFUSAS

Para definir las reglas utilizamos la siguiente tabla de decisiones:

156 Tpicos y Aplicaciones de la Inteligencia Artificial


VARIABLES DE ENTRADA VARIABLE DE SA-
LIDA
Precio Nivel de ingre- Ventas
so
(barato, accesi- (baja, normal y
ble y caro) (bajo, medio y alta)
alto)
Barato Bajo Baja
Barato Medio Normal
Barato Alto Alta
Accesible Bajo Baja
Accesible Medio Baja
Accesible Alto Normal
Caro Bajo Baja
Caro Medio Baja
Caro Alto Normal

Las reglas sern:


----------------------------------------
RULE NUMBER: 1
IF:
PRECIO DE COMPUTADORA BARATO
and NIVEL DE INGRESO CLIENTE BAJO
THEN:
VENTAS MENSUALES BAJA
----------------------------------------
RULE NUMBER: 2
IF:
PRECIO DE COMPUTADORA BARATO
and NIVEL DE INGRESO CLIENTE MEDIO
THEN:
VENTAS MENSUALES NORMAL
----------------------------------------
RULE NUMBER: 3
IF:
PRECIO DE COMPUTADORA BARATO
and NIVEL DE INGRESO CLIENTE ALTO
THEN:
VENTAS MENSUALES ALTA
----------------------------------------
RULE NUMBER: 4
IF:
PRECIO DE COMPUTADORA ACCESIBLE
and NIVEL DE INGRESO CLIENTE BAJO

Mg. Juan Gamarra Moreno 157


THEN:
VENTAS MENSUALES BAJA
----------------------------------------
RULE NUMBER: 5
IF:
PRECIO DE COMPUTADORA ACCESIBLE
and NIVEL DE INGRESO CLIENTE MEDIO
THEN:
VENTAS MENSUALES BAJA
----------------------------------------
RULE NUMBER: 6
IF:
PRECIO DE COMPUTADORA ACCESIBLE
and NIVEL DE INGRESO CLIENTE ALTO
THEN:
VENTAS MENSUALES NORMAL
----------------------------------------
RULE NUMBER: 7
IF:
PRECIO DE COMPUTADORA CARO
and NIVEL DE INGRESO CLIENTE BAJO
THEN:
VENTAS MENSUALES BAJA
----------------------------------------
RULE NUMBER: 8
IF:
PRECIO DE COMPUTADORA CARO
and NIVEL DE INGRESO CLIENTE MEDIO
THEN:
VENTAS MENSUALES BAJA
----------------------------------------
RULE NUMBER: 9
IF:
PRECIO DE COMPUTADORA CARO
and NIVEL DE INGRESO CLIENTE ALTO
THEN:
VENTAS MENSUALES NORMAL
----------------------------------------

3.6.11. CONSTRUIR EL SISTEMA

Esta tarea involucra la codificacin de los conjuntos difusos, reglas y procedi-


mientos para desarrollar funciones de lgica difusa tal como la inferencia difu-
sa. Se puede construir el sistema utilizando un lenguaje de programacin o
construir el sistema utilizando un Shell.

3.6.12. PROBAR EL SISTEMA

Esta tarea sirve para ver si el sistema alcanza las especificaciones dados en la
definicin del problema.

158 Tpicos y Aplicaciones de la Inteligencia Artificial


Para el ejemplo que se esta desarrollando se probar con los siguientes datos
de entrada:

Precio de la computadora = 1400

Nivel de Ingreso del Cliente = 450

El grado de pertenencia para la variable Precio de la Computadora se muestra


en la figura 3.27

Barato Accesible
Caro

500 1000 1500 2000 2500


1400
Figura 3.27 Grado de pertenencia para la variable Precio de la Computadora
El grado de pertenencia a los conjuntos difusos del precio de la computadora
es:

barato(precio) = 0.2

accesible(precio) = 0.8

Obteniendo el grado de pertenencia de la variable Nivel de ingreso del cliente


de acuerdo a la figura 3.28 se tiene:

Bajo Medio Alto

100 200 300 500 600 800 900 1000

450

Figura 3.28 Grado de pertenencia para la variable Nivel de Ingreso del Cliente.

Mg. Juan Gamarra Moreno 159


El grado de pertenencia a los conjuntos difusos del Nivel de ingreso del cliente
es:

bajo(Nivel de ingreso) = 0.167

medio(Nivel de ingreso) = 0.5

Las reglas que se dispararn son las reglas 1, 2, 4 y 5 con las siguientes ca-
ractersticas:

----------------------------------------
RULE NUMBER: 1
IF:
PRECIO DE COMPUTADORA BARATO (0.2)
and NIVEL DE INGRESO CLIENTE BAJO (0.167)
THEN:
VENTAS MENSUALES BAJA (FCvmb=0.167)
----------------------------------------
RULE NUMBER: 2
IF:
PRECIO DE COMPUTADORA BARATO (0.2)
and NIVEL DE INGRESO CLIENTE MEDIO (0.5)
THEN:
VENTAS MENSUALES NORMAL (FCvmn=0.2)

----------------------------------------
RULE NUMBER: 4
IF:
PRECIO DE COMPUTADORA ACCESIBLE (0.8)
and NIVEL DE INGRESO CLIENTE BAJO (0.167)
THEN:
VENTAS MENSUALES BAJA (FCvmb=0.167)

----------------------------------------
RULE NUMBER: 5
IF:
PRECIO DE COMPUTADORA ACCESIBLE (0.8)
and NIVEL DE INGRESO CLIENTE MEDIO (0.5)
THEN:
VENTAS MENSUALES BAJA (FCvmb=0.5)

----------------------------------------

El factor de certeza de las VENTAS MENSUALES NORMAL es FCvmn=0.2


(RESPUESTA)

El factor de certeza de las VENTAS MENSUALES BAJA se calcula teniendo


en cuenta las reglas 1, 4 y 5.

160 Tpicos y Aplicaciones de la Inteligencia Artificial


RULE NUMBER: 1 (FCR1=FCvmb=0.167)
----------------------------------------
RULE NUMBER: 4 (FCR4=FCvmb=0.167)
----------------------------------------
RULE NUMBER: 5 (FCR5=FCvmb=0.5)
----------------------------------------

Para calcular el Factor de certeza final FCvmb se tiene:

FCR1R4 = FCR1 + FCR4 FCR1*FCR4

FCR1R4 = 0.167 + 0.167 - 0.167 * 0.167 = 0.3061

FCR1R4R5 = FCR1R4 + FCR5 FCR1R4 * FCR5

FCvmb = FCR1R4R5 = 0.3061 + 0.5 - 0.3061 * 0.5

FCvmb = FCR1R4R5 = 0.6530 (RESPUESTA)

El sistema difuso arroja las siguientes conclusiones:

Las Ventas Mensuales es BAJA (Factor de Certeza = 0.653) y es NORMAL


(Factor de Certeza = 0.2)

3.6.13. DEFUZZIFICACIN DE LA VARIABLE DE SALIDA

Para defuzzificar la variable de salida, se tiene en cuenta el grado de perte-


nencia de las conclusiones, de aquellas reglas que se dispararon.

----------------------------------------
RULE NUMBER: 1
IF:
PRECIO DE COMPUTADORA BARATO (0.2)
and NIVEL DE INGRESO CLIENTE BAJO (0.167)
THEN:
VENTAS MENSUALES BAJA ((y1)=FCvmb=0.167)
----------------------------------------
RULE NUMBER: 2
IF:
PRECIO DE COMPUTADORA BARATO (0.2)
and NIVEL DE INGRESO CLIENTE MEDIO (0.5)
THEN:
VENTAS MENSUALES NORMAL ((y2)=FCvmn=0.2)

----------------------------------------
RULE NUMBER: 4
IF:
PRECIO DE COMPUTADORA ACCESIBLE (0.8)
and NIVEL DE INGRESO CLIENTE BAJO (0.167)

Mg. Juan Gamarra Moreno 161


THEN:
VENTAS MENSUALES BAJA ((y3)=FCvmb=0.167)

----------------------------------------
RULE NUMBER: 5
IF:
PRECIO DE COMPUTADORA ACCESIBLE (0.8)
and NIVEL DE INGRESO CLIENTE MEDIO (0.5)
THEN:
VENTAS MENSUALES BAJA ((y4)=FCvmb=0.5)

----------------------------------------

Una vez ubicado el grado de pertenencia de las conclusiones, se debe encon-


trar el centroide para los conjuntos difusos BAJA Y NORMAL. Este procedi-
miento se muestra en la figura 3.29.

Para defuzzificar las ventas mensuales se utilizan la siguiente expresin:

Y K YK
K 1
VARIABLE N

Y
K 1
K

Donde:

YK = Centroide del conjunto difuso involucrado en la conclusin, cuando se


dispara una regla.

(YK)= Grado de pertenencia al conjunto difuso de la conclusin.

Para el ejemplo que estamos desarrollando y1, y2, y3 y y4 son los centroides
de los conjuntos difusos que estn en las conclusiones de las reglas 1, 2, 4 y 5
respectivamente.

162 Tpicos y Aplicaciones de la Inteligencia Artificial


Baja
Normal Alta

10 20 30 40 50

Y1=Y3=Y4=Centroide BAJA=16.7 Y2=Centroide NORMAL = 30

Figura 3.29 Grado de pertenencia para la variable Ventas mensuales

La venta mensual es:

Venta = y1*(y1)+ y2*(y2)+ y3*(y3)+ y4*(y4)


Mensual (y1)+ (y2)+ (y3)+ (y4)

Venta = 16.7*0.167+30*0.2+ 16.7*0.167+ 16.7*0.5


Mensual 0.167 + 0.2 + 0.167 + 0.5

Venta = 19.272534 x 103


Mensual

Venta = 19272.5 = $ 19273 (Respuesta)


Mensual

3.6.14. EJEMPLO 2 DEL USO DE LGICA DIFUSA

Un ejemplo adicional se muestra en el


apndice B.

Mg. Juan Gamarra Moreno 163


164 Tpicos y Aplicaciones de la Inteligencia Artificial
CAPITULO CUATRO
APRENDIZAJE CON REDES NEURONALES
ARTIFICIALES

Una red neuronal artificial es, bsicamente, el resultado de los intentos por re-
producir mediante computadores el funcionamiento del cerebro humano. Su
principal aplicacin es en torno a las tareas en que los seres humanos fcil-
mente superan a los computadores tradicionales, como en procesamiento de
seales, procesamiento de imgenes, procesamiento de voz, en robtica y
otros.

Nuestro cerebro est formado por miles de millones de neuronas interconec-


tadas entre s en forma variable y compleja. Cada neurona recibe seales de
las otras neuronas, o seales provenientes del exterior de la red, las procesa,
ponderando o dndole distinta importancia a cada una de ellas, y genera una
nica seal de salida que se transmite a las otras neuronas.

La informacin que procesa una red neuronal se encuentra dispersa entre to-
das sus interconexiones, lo que la hace fundamentalmente diferente a un
computador tradicional, en que la informacin se encuentra totalmente locali-
zada y no distribuida como en este caso. Esta cualidad hace que las redes
neuronales posean una gran tolerancia a fallas.

4.1. FUNDAMENTOS BIOLGICOS


La figura 4.1 muestra el modelo biolgico de la neurona, elemento base de las
redes de neuronas.

Mg. Juan Gamarra Moreno 165


Figura 4.1. Modelo de la Neurona Biolgica

Como se aprecia en esta figura, cada neurona en el cerebro est compuesta


bsicamente por un cuerpo, axones y dendritas. Las dendritas forman un "cepi-
llo filamentoso" muy fino que rodea el cuerpo de la neurona. El axn puede
considerarse como un tubo largo y fino que se subdivide en numerosas ramas
que terminan en pequeos bulbos, los cuales tienen contacto con las dendritas
de las otras clulas. La pequea separacin entre una terminacin y una den-
drita es llamada sinapsis. El axn de una neurona puede formar conexiones
sinpticas con muchas otras neuronas.

Funcionalmente, las dendritas reciben seales desde otras clulas a travs de


los puntos de conexin llamados sinapsis. La fuerza de una conexin dada es
determinada por la eficiencia de la transmisin sinptica. Desde ah las seales
son pasadas al cuerpo de la clula. Las seales que llegan de las dendritas
pueden ser excitatorias o inhibitorias, y si la suma ponderada de stas, realiza-
da dentro del cuerpo de la neurona, supera su "umbral de activacin" dentro de
un tiempo suficiente, la neurona se disparar, enviando un impulso nervioso a
travs de su axn.

4.2. LA NEURONA ARTIFICIAL


En la figura 4.2 se presenta el esquema tpico de la neurona artificial.
X 1
W 1 j

X 2
W 2 j
Y j
:. Z j= W i jX i F ( Z j )

:
X n
W n j

A x o n e s S in a p s is D e n d r ita s C u e r p o d e la N e u r o n aA x n

Figura 4.2: Modelo de la Neurona Artificial

166 Tpicos y Aplicaciones de la Inteligencia Artificial


El cuerpo de la neurona ser a menudo representada por la suma ponderada
de las entradas, Zj, seguida por una funcin lineal o no lineal, Yj = F( Zj). La
eficiencia sinptica es representada por los "pesos de interconexin", Wij. La
funcin F(Zj) es llamada "funcin de activacin", que usa los valores de entra-
da para determinar la actividad de la neurona. El modelo de la neurona es lla-
mado neurona de McCulloch-Pitts .

4.2.1. PESOS DE INTERCONEXIN

Los pesos de interconexin, representan la fuerza de interconexin entre las


neuronas, y pueden ser positivos (excitatorios) o negativos (inhibitorios); ade-
ms pueden ser fijos o adaptables. Las redes con pesos adaptables usan leyes
de aprendizaje para ajustar los valores de la fuerza de interconexin. Si la red
neuronal usa pesos fijos las tareas a ser ejecutadas deben estar bien definidas
a priori.

4.2.2. FUNCIONES DE ACTIVACIN

Existen distintos tipos de redes neuronales que usan diferentes funciones de


activacin, F(Z), pero la estructura interna de la neurona , es decir la suma
ponderada seguida por la funcin F(Z), es comn en la mayora de las redes.
Entre las funciones de activacin ms usadas y conocidas se encuentran las
que se muestran en la figura 4.3.

Figura 4.3. Funciones de Activacin

Mg. Juan Gamarra Moreno 167


4.3. REDES DE NEURONAS
Una red de neuronas consiste en varios de estos elementos (neuronas) traba-
jando juntos. Usualmente estos elementos se organizan en grupos conocidos
con el nombre de capas. Una red tpica consiste en una sucesin de capas
conectadas entre ellas en forma total o aleatoria. Estas redes poseen dos ca-
pas que tienen contacto con el exterior, que son la capa de entrada y la de sa-
lida. Las capas que no se conectan con el exterior reciben el nombre de capas
ocultas. La figura 4.4 presenta el esquema tpico de una red de neuronas.

4.3.1. REDES MONOCAPA (1 CAPA)

En las redes monocapa, como la red de HOPFIELD y la red BRAIN-STATE-IN-


A-BOX, se establecen conexiones laterales entre las neuronas que pertenecen
a-la nica capa que constituye la red. Tambin pueden existir conexiones au-
torrecurrentes (salida de una neurona conectada a su propia entrada), aunque
en algn modelo, como el de HOPFIELD, esta recurrencia no se utiliza.

:
:

: :
:
:

C a p a d e e n tr a d a C a p a e s c o n d i d aC a p a d e s a l i d a

Figura 4.4 Esquema tpico de una red de neuronas

Una topologa equivalente a la de las redes de 1 capa es la denominada topo-


loga crossbar (barras cruzadas). Una red de este tipo (por ejemplo, la red
LEARNING MATRIX) consiste en una matriz de terminales (de entrada y sali-
da) o barras que se cruzan en unos puntos a los que se les asocia un peso.
Esta representacin crossbar suele utilizarse como etapa de transicin cuando
se pretende implementar fsicamente una red monocapa, puesto que es relati-
vamente sencillo desarrollar como hardware una estructura como la indicada
(por ejemplo, las barras cruzadas seran cables, y los puntos de conexin, re-
sistencias cuyos valores representaran los pesos de la red).

Finalmente, hay que indicar que las redes monocapa se utilizan tpicamente en
tareas relacionadas con lo que se conoce como autoasociacin; por ejemplo,

168 Tpicos y Aplicaciones de la Inteligencia Artificial


para regenerar informaciones de entrada que se presentan a la red incompleta
o distorsionada.

En la tabla 4.1 se muestran las caractersticas topolgicas de los modelos de


redes monocapa ms conocidos.

Tabla 4.1. modelos de redes monocapa ms conocidos.

TIPOS DE CONEXIONES MODELO DE RED


CONEXIONES BRAIN-STATE-IN-A-BOX
AUTORRE- ADDITIVE GROSSBERG (AG)
CURRENTES SHUNTING GROSSBERG (SG)
CONEXIONES OPTIMAL LINEAR ASOCIATIVE
LATERALES MEMORY
EXPLCITAS
NO AUTO- HOPFIELD
RECURRENTES BOLTZMANN MACHINE
CAUCHY MACHINE
CROSSBAR LEARNING MATRIX (LM)

La figura 4.5 muestra el modelo de red neuronal de Hopfield.

Figura 4.5 Red de Hopfield

4.3.2. REDES NEURONALES MULTICAPAS

En el caso de las redes multicapas, sus unidades se clasifican en tres tipos:

Mg. Juan Gamarra Moreno 169


Unidades de entrada: al igual que el caso de la red de una sola capa, estas
unidades son las que reciben el patrn de entrada directamente.

Unidades ocultas o escondidas: estas no reciben entradas directamente y


no poseen realimentacin directa. Ellas permiten tener una representacin
interna del patrn en cuestin.

Unidades de salida: estas son las que entregan el resultado de la red.

Las redes multicapa son aquellas que disponen de conjuntos de neuronas


agrupadas en varios (2, 3, etc.) niveles o capas. En estos casos, una forma
para distinguir la capa a la que pertenece una neurona, consistira en fijarse en
el origen de las seales que recibe a la entrada y, el destino de la seal de sa-
lida. Normalmente, todas las neuronas de una capa reciben seales de entra-
da de otra capa anterior, ms cercana a la entrada de la red, y envan las se-
ales de salida a una capa posterior, ms cercana a la salida de la red. A es-
tas conexiones se les denomina conexiones hacia adelante o feedforward (Fig.
4.7).

Sin embargo, en un gran nmero de estas redes tambin existe la posibilidad


de conectar las salidas de las neuronas de capa posteriores a las entradas de
las capas anteriores, a estas conexiones se les denomina conexiones hacia
atrs o feedback (Fig. 4.6).

Figura 4.6. Red feedback

Un modelo de red neuronal multicapa es el Perceptron multinivel o multica-


pa (Figura 4.7), el cual es una red de tipo feedforward compuesta de varias
capas de neuronas entre la entrada y la salida de la misma.

Las capacidades del Perceptron con dos tres y cuatro niveles o capas y con
una nica neurona en el nivel de salida, se muestra en la figura 4.8.

170 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.7 Perceptron multinivel (red feedforward multicapa)

Figura 4.8 Distintas formas de las regiones generadas por un perceptron multinivel

En la segunda columna se muestra el tipo de regin de decisin que se puede


formar con cada una de las configuraciones. En la siguiente columna se indica
el tipo de regin de decisin que se formara para el problema de la XOR. En
las dos ltimas columnas se muestran las regiones formadas para resolver el

Mg. Juan Gamarra Moreno 171


problema de clases con regiones mezcladas y las formas de regiones ms ge-
nerales para cada uno de los casos.

El Perceptron bsico de dos capas (la de entrada con neuronas lineales y la de


salida) slo puede establecer dos regiones separadas por una frontera lineal
en el espacio de patrones de entrada.

Un Perceptron con tres niveles de neuronas puede formar cualquier regin


convexa en este espacio. La regin de decisin resultante ser regiones con-
vexas con un nmero de lados a lo sumo igual al nmero de neuronas de la
segunda capa.

Un Perceptron con cuatro capas puede formar regiones de decisin arbitraria-


mente complejas. El proceso de separacin en clases que se lleva a cabo con-
siste en la particin de la regin deseada en pequeos hipercubos (cuadrados
para dos entradas de la red).

El anlisis anterior demuestra que no se requieren ms de cuatro capas en una


red de tipo Perceptron, pues, como se ha visto una red con cuatro niveles,
puede generar regiones de decisin arbitrariamente complejas.

El Perceptron es de inters histrico, dado que ha abierto el camino para el


desarrollo de otras redes neuronales, entre ellos el BackPropagation, que se
analizar ms adelante.

4.4. OPERACIN DE UNA RED NEURONAL


Las redes neuronales operan en dos fases: aprendizaje y evocacin o recuer-
do.

El aprendizaje es el proceso en el cual se adaptan o modifican los pesos de las


conexiones en respuesta a un estmulo que ha sido presentado en sus entra-
das y opcionalmente a su salida. El estmulo presentado a la salida correspon-
de a la salida deseada para una determinada entrada; esta salida deseada de-
be ser entregada por un "instructor". En tal caso se habla de un aprendizaje
supervisado o entrenamiento supervisado.

La evocacin o recuerdo se refiere a cmo la red procesa los estmulos pre-


sentados en sus entradas y genera una respuesta en su salida. A menudo la
evocacin o recuerdo es una parte del aprendizaje; esto sucede cuando la sa-
lida deseada debe ser comparada con la salida actual de la red para originar la
seal de error.

4.5. ENTRENAMIENTO DE UNA RED NEURONAL


El entrenamiento de una red es todo el proceso de aprendizaje que realiza una
red neuronal. Su objetivo es lograr que la aplicacin de un conjunto de entra-
das produzca el conjunto de salidas deseadas (o uno al menos consistente).

172 Tpicos y Aplicaciones de la Inteligencia Artificial


Dicho entrenamiento se realiza aplicando secuencialmente vectores de entra-
da (patrones de entrenamiento), a la vez que se ajustan los pesos de la red de
acuerdo a un procedimiento predeterminado (cada modelo define su procedi-
miento), los cuales convergen gradualmente a valores tales que cada vector de
entrada produce el vector de salida deseado.

En cuanto a los tipos de aprendizaje, existen dos tipos: el aprendizaje supervi-


sado y el no supervisado.

4.5.1. ENTRENAMIENTO SUPERVISADO

Se selecciona un nmero suficientemente grande de vectores de entrada con


sus correspondientes vectores de salida. Cada vector de entrada se aplica a la
red calculndose la salida, la que posteriormente se compara con la salida
deseada, determinando el error. Dicho error es realimentado a travs de la red,
modificando los pesos de acuerdo a un algoritmo que lo minimice. Los vectores
del conjunto de entrenamiento se aplican secuencialmente, calculando los
errores y modificando los pesos hasta que el error del conjunto total de entre-
namiento converja a un nivel aceptable.

A continuacin se muestra como se realiza el entrenamiento de una red neuro-


nal multicapa:

Lo primero que necesitamos son patrones de entrenamiento (cada fila de


la tabla) que contengan el conocimiento de algn dominio en particular. Pa-
ra nuestro ejemplo (Tabla 4.2) tenemos patrones que permiten identificar si
un animal es un mamfero (1) o un ave (0).

Ahora necesitamos una red neuronal que permita tomar los patrones de
entrada y de salida para el entrenamiento, tal como se muestra en la figura
4.9.

Los 6 primeros patrones (patrones de entrada) debe suministrar a las neuronas


que estn en la parte superior (neuronas de entrada) y la ltima columna se
debe suministrarse como salida deseada.

Se puede elaborar un programa que permita entrenar la red neuronal y luego


de este entrenamiento, se debe probar si el aprendizaje fue correcto o no.

Para el primer patrn de entrenamiento, la prueba consiste en ingresar el pa-


trn de entrada (6 primeras columnas) y esperar que se tenga la salida desea-
da dada en el entrenamiento (ltima columna que debe ser igual o cercano a
1), vea la figura 4.10.

Para esta ejecucin se tiene que el valor devuelto por la red neuronal es muy
cercano a 1, tal como se dio en el entrenamiento (la red neuronal aprendi).

Mg. Juan Gamarra Moreno 173


Tabla 4.2 Patrones de entrenamiento que permiten identificar si un animal es un mamfero (1) o un
ave (0)

Entrenamiento de una red neuronal


Entradas Salida
(1=
Mamifer
o
0=Ave)
Tiene Toma Vuela? Pone Tiene Nada?
pelo? leche? huevos? plumas?

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

Entrenamiento de una red


neuronal:
Tiene Toma Pone Tiene
Vuela? Huevos? Nada?
Pelo? leche? Plumas?

Salida

Figura 4.9 Red neuronal que permite tomar los patrones de la tabla 4.2.

174 Tpicos y Aplicaciones de la Inteligencia Artificial


Al ejecutar un programa que use el aprendizaje de esta red neuronal, con el
ltimo patrn de entrenamiento, se tiene que la salida tambin es correcta (fi-
gura 4.11).

Figura 4.10 Resultado que muestra un programa que contiene a la red neuronal entrenada de la
figura 4.9.

Figura 4.11 Resultados que muestra otra ejecucin del programa que contiene a la red neuronal
entrenada de la figura 4.9.

Para salidas binarias (0 1), si la salida deseada es 1, un valor aceptable ser


cuando la salida sea mayor que 0.9 (salida>0.9); de la misma manera si la sa-
lida deseada es 0, un valor aceptable ser cuando la salida sea menor que 0.1
(salida<0.1).

Lo que debemos probar ahora es la capacidad de generalizacin de la red neu-


ronal. Para realizar esta prueba, suministramos a la red neuronal, slo la ca-
racterstica toma leche y la red neuronal generaliza e identifica a este como un
mamfero (valor cercano o igual a 1). Debemos notar que estas entradas no
han sido dadas en el entrenamiento, por lo que la respuesta que se obtiene, es
por generalizacin, vea la figura 4.12.

Mg. Juan Gamarra Moreno 175


Figura 4.12 Resultados que muestra la genearlizacin del programa que contiene a la red neuronal
entrenada de la figura 4.9.

4.5.2. ENTRENAMIENTO NO SUPERVISADO

El aprendizaje no supervisado ocurre cuando la red es provista slo de los va-


lores de entrada, y la red ajusta la fuerza de interconexin basada solamente
en los valores de la entrada y la salida de la red en progresin. En otras pala-
bras, el proceso de entrenamiento extrae las propiedades estadsticas del con-
junto de entrenamiento y agrupa vectores familiares en clases. Puesto que no
es posible determinar el patrn de salida especfico generado por una clase de
vectores en forma previa al entrenamiento, se requiere transformar la salida
generada por la red a una forma que sea comprensible. Este tipo de entrena-
miento fue desarrollado por Kohonen (1984) y otros en lo que se conoce
con el nombre de la teora de la "autoorganizacin".

4.6. TIPOS DE REDES NEURONALES MS IMPORTANTES


La tabla 4.3 muestra el resumen de los tipos de redes ms conocidos, comen-
tando esquemticamente las aplicaciones ms importantes de cada una, sus
ventajas e inconvenientes y quin o quines fueron sus creadores y en qu
ao.

176 Tpicos y Aplicaciones de la Inteligencia Artificial


Tabla 4.3. Tipos de redes ms conocidos.6
Nombre de la Ao Aplicaciones Comentarios Limitaciones
Inventada/
red ms Desarrollada
importantes por
Avalancha 1967
Reconoci- Ninguna red No es fcil Stephen
miento de ha- sencilla alterar la Grossberg.
bla continua. puede hacer velocidad o
Control todo esto. interpolar el
brazos robot. movimiento.

Teora reso- 1986 Reconocimiento Sofistica- Sensible a la Gail


nancia adapta- de patrones (ra- da. translacin, Carpenter,
tiva (ART) dar, Poco utili- distorsin y Stephen
zada. escala. Gressberg.
Sonar, etc.).
ADALINE / MA- 1960 Filtrado Rpida, f- Slo es posi- Bernand
DALINE de seales. cil de im- ble clasifi- Widrow.
Ecualiza- plementar car espacios
dor adaptati- con circui- linealmente
vo. tos anal- separados.
gicos o
Modems.
VLSI.

Back propaga-
1974- Sntesis Red ms popu- Necesita mu- Paul Werbos,

tion 85 de voz desde lar. Numerosas cho tiempo David Par-

texto. para el ker,


aplicacio-
Control de aprendizaje y David
nes con
robots. muchos ejem- Rumelhart.
xito. Fa-
Predic- plos.
cilidad de
cin.
aprendiza-
Reconoci-
je. Poten-
miento de pa-
te.
trones.

6
Hilera J, Martinez V. Redes Neuronales Artificiales: Fundamentos, modelos y Aplicacio-
nes. Espaa: Editorial RA-MA; 1995.

Mg. Juan Gamarra Moreno 177


Tabla 4.3. Tipos de redes ms conocidos (continuacin)
Nombre de la Ao Aplicaciones Comentarios Limitaciones Inventada/
red ms Desarrolla-
importantes da por

Memoria aso- 1985 Memoria hete- Aprendi- Baja capaci- Bart Kosko.

ciativa bidi- roasociativa za.je y ar- dad de alma-

reccional de acceso por quitectura cenamiento.

contenido. simples. Los datos

deben ser

codificados.

Mquinas de
1985- Reconoci- Redes sim- La mquina de Jeffrey

Boltzmann y 86 miento de ples. Capa- Boltzmann Hinton,

Cauchy patrones cidad de necesita un Terry

(imgenes, representa- tiempo muy Sejnowski,

sonar y ra- cin ptima largo de Harold Szu.

dar). de patro- aprendizaje.

Optimiza- nes.

cin.
Brain-Estate-in-a-
Box. 1977 Extraccin de Posiblemen- Realizacin y James

conocimiento te mejor potenciales Anderson

de bases de realizacin aplicaciones

datos que las re- no estudiadas

des de totalmente.

Hopfield.

178 Tpicos y Aplicaciones de la Inteligencia Artificial


Tabla 4.3. Tipos de redes ms conocidos (continuacin)

Nombre de la Ao Aplicaciones Comentarios Limitaciones Inventada/


red ms Desarrolla-
importantes da por

Cerebellatron 1969 Control del Semejante a Requiere com- David Marr,

movimiento de Avalancha. plicadas en- James Al-

los brazos de tradas de bus,

un robot. control. Andres

Pellionez.

Counter- 1986 Comprensin Combinacin Numerosas Robert He-

propagation de imgenes. de Per- neuronas y cht-

ceptron y conexiones. Nielsen

TPM.

Hopfield 1982 Reconstruc- Puede im- Capacidad y John

cin de pa- plementarse estabilidad. Hopfield

trones y en VLSI.

optimizacin. Fcil de

conceptua-

lizar
Neocognitron 1978- Reconocimien- Insensible Requiere mu- K. Fukushi-
84 to de carac- a la Trans- chos elemen- ma
teres manus- lacin, ro- tos de proce-
critos tacin y so, niveles y
escala. conexiones.

Perceptron 1957 Reconocimien- La red ms No puede re- Frank Ro-


to de carac- antigua. conocer ca- senblatt
teres impre- Construida racteres com-
sos en HW. plejos.

Mg. Juan Gamarra Moreno 179


Tabla 4.3. Tipos de redes ms conocidos (continuacin)
Nombre de la Ao Aplicaciones Comentarios Limitaciones Inventada/
red ms Desarrolla-
importantes da por

Self- 1980- Reconocimien- Realiza ma- Requiere mu- Teuvo Koho-


Organizing-Map 84 to de patro- pas de ca- cho entrena- nen
(SOM). nes, codifi- ractersti- miento.
Topology- cacin de cas comunes
Preserving- datos, opti- de los
Map (TPM). mizacin. datos
aprendidos.

4.7. APLICACIONES DE LAS REDES NEURONALES


Las redes neuronales son una tecnologa computacional emergente que puede
utilizarse en un gran nmero y variedad de aplicaciones, tanto comerciales
como militares. Se pueden desarrollar redes neuronales en un perodo de
tiempo razonable y pueden realizar tareas concretas mejor que otras tecnolo-
gas convencionales, incluyendo los sistemas expertos. Cuando se implemen-
tan mediante hardware (redes neuronales en chips VLSI), presentan una alta
tolerancia a fallos del sistema y proporcionan un grado de paralelismo en el
proceso de datos muy grande. Eso har posible insertar redes neuronales de
bajo coste en sistemas existentes y recientemente desarrollados.

Hay muchos tipos diferentes de redes neuronales, cada uno de los cuales tiene
una aplicacin particular ms apropiada. Relacionamos ejemplos de algunas
aplicaciones comerciales separndolas en grupos segn las distintas discipli-
nas:

Biologa

Aprender ms acerca del cerebro y otros sistemas.

Obtencin de modelos de la retina.

Empresa

Evaluacin de probabilidad de formaciones geolgicas y petrolferas.

Identificacin de candidatos para posiciones especficas.

Explotacin de bases de datos.

Optimizacin de plazas y horarios en lneas de vuelo.

Reconocimiento de caracteres escritos.

Medio ambiente

180 Tpicos y Aplicaciones de la Inteligencia Artificial


Analizar tendencias y patrones.

Previsin del tiempo.

Finanzas

Previsin de la evolucin de los precios.

Valoracin del riesgo de los crditos.

Identificacin de falsificaciones.

Interpretacin de firmas.

Manufacturacin

Robots automatizados Y sistemas de control (visin artificial y sensores


de presin, temperatura, gas, etc.)

Control de produccin en lneas de proceso.

Inspecci6n de la calidad.

Medicina

Analizadores del habla para la ayuda de audicin de sordos profundos.

Diagnstico y tratamiento a partir de sntomas y/o de datos analticos


(electrocardiograma, encefalograma, anlisis sanguneo, etc.).

Monitorizacin en ciruga.

Prediccin de reacciones adversas a los medicamentos.

Lectores de rayos X.

Entendimiento de la causa de los ataques epilpticos.

Militares

Clasificacin de las seales de radar.

Creacin de armas inteligentes.

Optimizacin del uso de recursos escasos.

Reconocimiento y seguimiento en el tiro al blanco.

Podemos buscar hechos comunes en esta lista de aplicaciones; la mayora de


ellas consisten en realizar un reconocimiento de patrones: buscar un patrn en

Mg. Juan Gamarra Moreno 181


una serie de ejemplos, clasificar patrones, completar una seal a partir de valo-
res parciales o reconstruir el patrn correcto partiendo de uno distorsionado.
Muchos de los ejemplos tienen que trabajar con datos sensoriales y de per-
cepcin (seales visuales, auditivas y otras) y, otros realizan filtrado o mapeo
de seales de entrada. En general, los ejemplos mostrados indican que son
caractersticos ms de las personas que de los ordenadores convencionales.

4.8. LA RED BACKPROPAGATION6


En 1986, Rumelhart, Hinton y Williams, basndose en los trabajos de otros
investigadores formalizaron un mtodo para que una red neuronal aprendiera
la asociacin que existe entre los patrones de entrada a la misma y las clases
correspondientes, utilizando ms niveles de neuronas que los que utiliz Ro-
senblatt para desarrollar el Perceptron. Este mtodo, conocido en general co-
mo backpropagation (propagacin del error hacia atrs), est basado en la ge-
neralizacin de la regla delta y, a pesar de sus propias limitaciones, ha amplia-
do de forma considerable el rango de aplicaciones de las redes neuronales.

El algoritmo de propagacin hacia atrs. o retropropagacin, es una regla de


aprendizaje que se puede aplicar en modelos de redes con ms de dos capas
de clulas. Una caracterstica importante de este algoritmo es la representa-
cin interna del conocimiento que es capaz de organizar en la capa intermedia
de las clulas para conseguir cualquier correspondencia entre la entrada y la
salida de la red. Ya se ha mostrado en este captulo que en muchos casos,
como la resolucin del problema de la OR exclusiva, es imposible encontrar los
pesos adecuados para establecer la correspondencia entre la entrada y la sali-
da mediante una red sin capas intermedias. Con una capa de neuronas ocul-
tas, s es posible establecer dicha correspondencia.

De forma simplificada, el funcionamiento de una red backpropagation (back-


propagation net, BPN) consiste en un aprendizaje de un conjunto predefinido
de pares de entradas-salidas dados como ejemplo, empleando un ciclo propa-
gacin-adaptacin de dos fases: primero se aplica un patrn de entrada como
estmulo para la primera capa de las neuronas de la red, se va propagando a
travs de todas las capas superiores hasta generar una salida, se compara el
resultado obtenido en las neuronas de salida con la salida que se desea obte-
ner y se calcula un valor del error para cada neurona de salida. A continua-
cin, estos errores se transmiten hacia atrs, partiendo de la capa de salida,
hacia todas las neuronas de la capa intermedia que contribuyan directamente a
la salida, recibiendo el porcentaje de error aproximado a la participacin de la
neurona intermedia en la salida original. Este proceso se repite, capa por ca-
pa, hasta que todas las neuronas de la red hayan recibido un error que descri-
ba su aportacin relativa al error total. Basndose en el valor del error recibi-
do, se reajustan los pesos de conexin de cada neurona. de manera que en la
siguiente vez que se presente el mismo patrn, la salida est ms cercana a la
deseada; es decir, el error disminuya.

La importancia de la red backpropagation consiste en su capacidad de auto-


adaptar los pesos de las neuronas de las capas intermedias para aprender la
relacin que existe entre un conjunto de patrones dados como ejemplo y sus

182 Tpicos y Aplicaciones de la Inteligencia Artificial


salidas correspondientes. Para poder aplicar esa misma relacin, despus del
entrenamiento, a nuevos vectores de entrada con ruido o incompletas, dando
una salida activa si la nueva entrada es parecida a las presentadas durante el
aprendizaje. Esta caracterstica importante, que se exige a los sistemas de
aprendizaje, es la capacidad de generalizacin, entendida como la facilidad de
dar salidas satisfactorias a entradas que el sistema no ha visto nunca en su
fase de entrenamiento. La red debe encontrar una representacin interna que
le permita generar las salidas deseadas cuando se le dan las entradas de en-
trenamiento, y que pueda aplicar, adems, a entradas no presentadas durante
la etapa de aprendizaje para clasificarlas segn las caractersticas que com-
partan con los ejemplos de entrenamiento.

4.8.1. LA REGLA DELTA GENERALIZADA

La regla propuesta por Widrow en 1960 (regla delta) ha sido extendida a redes
con capas intermedias (regla delta generalizada) con conexiones hacia adelan-
te (feedforward) y cuyas clulas tienen funciones de activacin continuas (li-
neales o sigmoidales), dando lugar al algoritmo de retropropagacin (backpro-
pagation). Estas funciones continuas son no decrecientes y derivables. La
funcin sigmoidal pertenece a este tipo de funciones, a diferencia de la funcin
escaln que se utiliza en el Perceptron, ya que esta ltima no es derivable en
el punto en el que se encuentra la discontinuidad.

Este algoritmo utiliza tambin una funcin o superficie de error asociada a la


red, buscando el estado estable de mnima energa o de mnimo error a travs
del camino descendente de la superficie del error. Por ello, realimenta el error
del sistema para realizar la modificacin de los pesos en un valor proporcional
al gradiente decreciente de dicha funcin de error.

FUNCIONAMIENTO DEL ALGORITMO

El mtodo que sigue la regla delta generalizada para ajustar los pesos es exac-
tamente el mismo que el de la regla delta utilizada en el Perceptron y, ADALI-
NE; es decir, los pesos se actualizan de forma proporcional a la delta, o dife-
rencia entre la salida deseada y la obtenida ( = sal. deseada - sal. obtenida).

Dada una neurona (unidad Ui) y la salida que produce, yi (Figura 4.13), el cam-
bio que se produce en el peso de la conexin que une la salida de dicha neu-
rona con la unidad Uj (wji) para un patrn de aprendizaje p determinado es:

w ji t 1 pj y pi
En donde el subndice p se refiere al patron de aprendizaje concreto, y es la
constante o tasa de aprendizaje.

Mg. Juan Gamarra Moreno 183


Figura 4.13 Conexin entre una neurona de una capa oculta con una neurona de salida.

El punto en el que difieren la regla delta Generalizada de la regla delta es en el


valor concreto de pj. Por otro lado, en las redes multinivel, a diferencia de las
redes sin neuronas ocultas, en principio no se puede conocer la salida desea-
da de las neuronas de las capas ocultas para poder determinar los pesos en
funcin del error cometido. Sin embargo, inicialmente s podemos conocer la
salida deseada de las neuronas de salida. Segn esto, si consideramos la
unidad Uj de salida (Figura 4.13), entonces definimos

pj d pj y pj f 1 net j
donde dpj es la salida deseada de la neurona j para el patrn p y netj es la en-
trada neta que recibe la neurona j.

Esta frmula es como la de la regla delta, excepto en lo que se refiere a la de-


rivada de la funcin de transferencia. Este trmino representa la modificacin
que hay que realizar en la entrada que recibe la neurona j. En el caso de que
dicha neurona no sea de salida, el error que se produce estar en funcin del
error que se cometa en las neuronas que reciban como entrada la salida de
dicha neurona. Esto es lo que se denomina procedimiento de propagacin del
error hacia atrs.

Segn esto, en el caso de que Uj no sea una neurona de salida (ver Figura
4.14), el error que se produce est en funcin del error que se comete en las
neuronas que reciben como entrada la salida de Uj:


pj pk wkj f 1 net j
k
donde el rango de k cubre todas aquellas neuronas a las que est conectada la
salida de Uj. De esta forma, el error que se produce en una neurona oculta es
la suma de los errores que se producen en las neuronas a las que est conec-

184 Tpicos y Aplicaciones de la Inteligencia Artificial


tada la salida de sta, multiplicando cada uno de ellos por el peso de la cone-
xin.

Figura 4.14 Conexiones entre neuronas de la capa oculta con la capa de salida.

ADICIN DE UN MOMENTO EN LA REGLA DELTA GENERALIZADA

El mtodo de retropropagacin del error, tambin conocido como del gradiente


descendente, requiere un importante nmero de clculos para lograr el ajuste
de los pesos de la red. En la implementacin del algoritmo, se toma una ampli-
tud de paso que viene dada por la tasa de aprendizaje . A mayor tasa de
aprendizaje, mayor es la modificacin de los pesos en cada iteracin, con lo
que el aprendizaje ser ms rpido, pero, por otro lado. puede dar lugar a osci-
laciones. Rumelhart, Hinton y Williams sugirieron que para filtrar estas oscila-
ciones se aada en la expresin del incremento de los pesos un trmino (mo-
mento), , de manera que dicha expresin quede:

w ji t 1 w ji t pj y pi w ji t w ji t 1

w ji t 1 pj y pi w ji t

Mg. Juan Gamarra Moreno 185


donde es una constante (momento) que determnale efecto en t+1 del cam-
bio de los pesos en el instante t.

Con este momento se consigue la convergencia de la red en menor nmero de


iteraciones, ya que si en t el incremento de un peso era positivo y en t+l tam-
bin, entonces el descenso por la superficie de error en t+l es mayor. Sin em-
bargo, si en t el incremento era positivo y en t+l es negativo, el paso que se da
en t+1 es ms pequeo, lo cual es adecuado, ya que eso significa que se ha
pasado por un mnimo y que los pasos deben ser menores para poder alcan-
zarlo.

Resumiendo, el algoritmo backpropagation queda finalmente:


w ji t 1 w ji t w ji t 1


w ji t 1 w ji t pj y pi w ji t

donde:

pj d pj y pj f 1 net j
si Uj es una neurona de salida y


pj pk wkj f 1 net j
k
si Uj no es una neurona de salida.

ESTRUCTURA Y APRENDIZAJE DE LA RED BACKPROPAGATION

En una red backpropagation existe una capa de entrada con n neuronas y una
capa de salida con m neuronas y al menos una capa oculta de neuronas inter-
nas. Cada neurona de una capa (excepto las de entrada) recibe entradas de
todas las neuronas de la capa anterior y enva su salida a todas las neuronas
de la capa posterior (excepto las de salida). No hay conexiones hacia atrs
feedback ni laterales entre neuronas de la misma capa.

La aplicacin del algoritmo backpropagation tiene dos fases, una hacia adelan-
te y otra hacia atrs. Durante la primera fase el patrn de entrada es presenta-
do a la red y propagado a travs de las capas hasta llegar a la capa de salida.
Obtenidos los valores de salida de la red, se inicia la segunda fase, comparn-
dose estos valores con la salida esperada para obtener el error. Se ajustan los
pesos de la ltima capa proporcionalmente al error. Se pasa a la capa anterior

186 Tpicos y Aplicaciones de la Inteligencia Artificial


con una retropropagacin del error (backpropagation), ajustando conveniente-
mente los pesos y continuando con este proceso hasta llegar a la primera ca-
pa. De esta manera se han modificado los pesos de las conexiones de la red
para cada ejemplo o patrn de aprendizaje del problema, del que conocamos
su valor de entrada y la salida deseada que debera generar la red ante dicho
patrn (fig. 4.15).

A diferencia de la regla delta en el caso del Perceptron, la tcnica backpropa-


gation o generalizacin de la regla delta, requiere el uso de neuronas cuya fun-
cin de activacin sea continua, y por tanto, diferenciable. Generalmente, la
funcin utilizada ser del tipo sigmoidal (Fig. 4.16).

A continuacin se presentan, a modo de sntesis. los pasos y frmulas a utilizar


para aplicar el algoritmo de entrenamiento:

Paso 1

Inicializar los pesos de la red con valores pequeos aleatorios.

Paso 2

Presentar un patrn de entrada, Xp: xp1,.xp2,...,xpn, y especificar la salida


deseada que debe generar la red: d1, d2,..., dM (si la red se utiliza como un
clasificador, todas las salidas deseadas sern cero, salvo una, que ser la de
la clase a la que pertenece el patrn de entrada).

Paso 3

Calcular la salida actual de la red, para ello presentamos las entradas a la red
y vamos calculando la salida que presenta capa hasta llegar a la capa de sali-
da sta ser la salida de la red y1, y2,...,yM. Los pasos son los siguientes:

Se calculan las entradas netas para las neuronas ocultas procedentes de


las neuronas de entrada.

Para una neurona j oculta:

N
net whji
h
pj x pi jh
i 1

en donde el ndice h se refiere a magnitudes de la capa oculta (hidden); el


subndice p, al p-simo vector de entrenamiento, y j a la j-sima neurona
oculta. El trmino puede ser opcional, pues acta como una entrada
ms.

Mg. Juan Gamarra Moreno 187


Figura 4.15 Modelo de arquitectura de una red backpropagation. Pueden existir neuronas ficticias
de salida y pesos umbral de entrada al resto de las neuronas de cada capa.

188 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.16 Funcin de activacin sigmoidal: y=1/1+e-x

Se calculan las salidas de las neuronas ocultas:


y pj f jh net hpj
Se realizan los mismos clculos para obtener las salidas de las neuronas
de salida (capa o: output)

L
net o
pk wkjo y pj ko
j 1


y pk f ko net opk

Paso 4

Calcular los trminos de error para todas las neuronas.

Si la neurona k es una neurona de la capa de salida, el valor de la delta es:

Mg. Juan Gamarra Moreno 189


o
pk d pk y pk f net
k
o1 o
pk

La funcin f, como se cit anteriormente, debe cumplir el requisito de ser deri-


vable, lo que implica la imposibilidad de utilizar una funcin escaln. En gene-
ral, disponemos de dos formas de funcin de salida que nos pueden servir: la
funcin lineal de salida (fk(netjk) = netjk) y la funcin sigmoidal representada en
la figura 4.16 y definida por la expresin:

f k net jk
1
net
1 e jk

La seleccin de la funcin de salida depende de la forma en que se decida re-


presentar los datos de salida: si se desea que las neuronas de salida sean bi-
narias, se utiliza la funcin sigmoidal, puesto que esta funcin es casi biestable
y, adems, derivable. En otros casos es tan aplicable una funcin como otra.

Para la funcin lineal, tenemos: f k


o1
1 mientras que la derivada de una
funcin f sigmoidal es:


f ko f ko 1 f ko y pk 1 y pk
1

por lo que los trminos de error para las neuronas de salida quedan:

opk d pk y pk
para la salida lineal, y

opk d pk y pk y pk 1 y pk

para la salida sigmoidal.

Si la neurona j no es de salida, entonces la derivada parcial del error no puede


ser evaluada directamente. Por tanto, se obtiene el desarrollo a partir de valo-
res que son conocidos y otros que pueden ser evaluados.

La expresin obtenida en este caso es:

190 Tpicos y Aplicaciones de la Inteligencia Artificial


1

hpj f jh net hpj o
pk wkjo
k
donde observamos que el error en las capas ocultas depende de todos los
trminos de error de la capa de salida. De aqu surge el trmino de propaga-
cin hacia atrs. En particular, para la funcin sigmoidal:

hpj y pj 1 y pj opk wkjo


k

donde k se refiere a todas las neuronas de la capa superior a la de la neurona


j. As, el error que se produce en una neurona oculta es proporcional a la suma
de los errores conocidos que se producen en las neuronas a las que est co-
nectada la salida de sta, multiplicado cada uno de ellos por el peso de la co-
nexin. Los umbrales internos de las neuronas se adaptan de forma similar,
considerando que estn conectados con pesos desde entradas auxiliares de
valor constante.

Paso 5

Actualizacin de los pesos

Para ello, utilizamos el algoritmo recursivo, comenzando por las neuronas de


salida y trabajando hacia atrs hasta llegar a la capa de entrada, ajustando los
pesos de la forma siguiente:

Para los pesos de las neuronas de la capa de salida:

wkjo t 1 wkjo t wkjo t 1

wkjo t 1 opk y pj
y para los pesos de las neuronas de la capa oculta:

whji t 1 whji t whji t 1

whji t 1 hpj x pi

En ambos casos, para acelerar el proceso de aprendizaje, se puede aadir un

trmino momento de valor: wkjo t wkjo t 1

Mg. Juan Gamarra Moreno 191


en el caso de la neurona de salida, y

whji t whji t 1
cuando se trata de una neurona oculta.

Paso 6

El proceso se repite hasta que el trmino de error

M
Ep 1
2 pk
2

k 1
resulta aceptablemente pequeo para cada uno de los patrones aprendidos.

4.9. IMPLEMENTACIN DE APLICACIONES CON REDES


NEURONALES
Para la implementacin de aplicaciones se utiliza el shell NEUROSHELL y el
Visual Basic .NET.

4.9.1. DETECCIN DE OBSTCULOS POR MEDIO DE UN ROBOT

Descripcin del problema7:

Un robot es un dispositivo automtico que realiza acciones especficas, que


dependen de las necesidades del proceso en que se encuentre involucrado, en
este caso se tiene un robot que cuenta con cuatro sensores de proximidad en
distintas ubicaciones que permanentemente detectan si hay objetos que se
encuentren a una distancia superior o inferior a la preestablecida, con base en
esto se decide si dar marcha adelante o atrs a cada uno de los dos motores
que posee; en las lecturas de los sensores podran darse 16 posibles combi-
naciones (16=24) y para cada combinacin cada uno de los dos motores podra
dar marcha adelante o marcha atrs (figura 4.17).

El comportamiento del robot lo describe la tabla 4.4, cuando los sensores de-
tecten un objeto que se encuentra a una distancia inferior a la predeterminada
se dir que el objeto se encuentra cerca y esto se representa por medio de un
1 y cuando se detecte un objeto que se encuentra a una distancia mayor que la
predeterminada se dir que el objeto esta lejos lo cual se indica con un 1; de-
pendiendo de estas lecturas los motores podrn dar marcha adelante, lo que
se representar por un 1 o dar marcha atrs con un 1.

7
Universidad Tecnolgica de Pereira. Colombia.

192 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.17 Robot

Tabla 4.4 Comportamiento del robot

S1 S2 S3 S4 M1 M2

1 1 1 1 -1 -1

-1 1 1 1 -1 1

1 1 -1 -1 1 -1

-1 -1 -1 -1 1 1

1 -1 1 1 1 -1

1 1 -1 1 -1 1

1 1 1 -1 1 -1

Justificacin del tipo de red

Este tipo de problema generalmente es resuelto suministrndole al robot una


base de datos que contiene todas las posibles situaciones que se podran pre-
sentarse y sus respectivas soluciones, en este caso se necesitara almacenar
las respuestas para ambos motores ante las 16 posibles combinaciones en las
lecturas de los sensores, cuando el nmero de variables de entrada y el nme-
ro de salidas es mucho mayor, la cantidad de datos necesarios para especifi-
car cada posible situacin crece indefinidamente, debido a esto se requeriran
dispositivos con gran capacidad de almacenamiento; en contraste una red neu-
ronal puede entrenarse con un nmero representativo de patrones y aprender
el comportamiento del sistema utilizando dispositivos de menos capacidad de
almacenamiento y costo.

Mg. Juan Gamarra Moreno 193


IMPLEMENTACION EN NEUROSHELL

El ingreso al programa al NEUROSHELL se muestra en la figura 4.18.

Figura 4.18 Ingreso al Neuroshell

Luego del ingreso elija FILE, NEW e ingrese un nombre de archivo, como en la
figura 4.19 (no escriba ninguna extensin para el archivo).

Figura 4.19.

Elija Beginners Neural Networks, realice click en el icono (figura 4.20).

194 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.20

Seleccione Data Entry (figura 4.21) e ingrese los datos de la tabla 4.4, para
entrenar la red neuronal (figura 4.22). Se sugiere para el entrenamiento dupli-
car estos datos dos veces salvo el titulo de cada columna.

Figura 4.21

Mg. Juan Gamarra Moreno 195


Figura 4.22

Luego de ingresar los datos cierre la ventana despus de haber grabado estos
con File, Save File.

Ahora elija el icono en la figura 4.21, en la lista desplegable variable


type selection elija input y haga clic debajo del nombre de cada entrada, este
quedar marcado con I, luego elija Actual Output en la lista desplegable ante-
rior y haga clic en el nombre de cada salida para la red neuronal. Ahora elija
Settings y Compute mins/maxs. Cierre la ventana.

Las figuras 4.23 al 4.29 muestran el procedimiento a seguir hasta generar el


cdigo fuente en C o Visual Basic.

En la figura 4.26 elija examinar datos para analizar los datos y los errores ge-
nerados a la salida.

El procedimiento de la figura 4.27 al 4.29 permite generar el cdigo fuente en


C. Para nuestro caso elegiremos Visual Basic source code.

196 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.23

Figura 4.24

Mg. Juan Gamarra Moreno 197


Figura 4.25

Figura 4.26

198 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.27

Figura 4.28

Mg. Juan Gamarra Moreno 199


Figura 4.29

El codigo generado en Visual Basic se genera en un archivo que tiene la ex-


tensin .VB y es un procedimiento en Visual Basic; que contiene el conoci-
miento en una red neuronal. Para nuestro caso el archivo es ROBOT.VB y se
encuentra en la carpeta APLICACIN ROBOT del CD que acompaa al libro,
cuyo contenido es:

' Insert this code into your VB program to fire the


D:\ABRAHAM\FILES2~2\EPG\MAESTA~1\IA\ROBOT network
' This code is designed to be simple and fast for porting to any machine.
' Therefore all code and weights are inline without looping or data storage
' which might be harder to port between compilers.
Sub Fire_ROBOT (inarray(), outarray())

Dim netsum as double


Static feature2(3) as double

' inarray(1) is S1
' inarray(2) is S2
' inarray(3) is S3
' inarray(4) is S4
' outarray(1) is M1
' outarray(2) is M2

if (inarray(1)<-1) then inarray(1) = -1


if (inarray(1)> 1) then inarray(1) = 1
inarray(1) = (inarray(1) + 1) / 2

200 Tpicos y Aplicaciones de la Inteligencia Artificial


if (inarray(2)<-1) then inarray(2) = -1
if (inarray(2)> 1) then inarray(2) = 1
inarray(2) = (inarray(2) + 1) / 2

if (inarray(3)<-1) then inarray(3) = -1


if (inarray(3)> 1) then inarray(3) = 1
inarray(3) = (inarray(3) + 1) / 2

if (inarray(4)<-1) then inarray(4) = -1


if (inarray(4)> 1) then inarray(4) = 1
inarray(4) = (inarray(4) + 1) / 2

netsum = -.7532668
netsum = netsum + inarray(1) * 7.551737
netsum = netsum + inarray(2) * .2998328
netsum = netsum + inarray(3) * 7.341322
netsum = netsum + inarray(4) * -6.852577
feature2(1) = 1 / (1 + exp(-netsum))

netsum = -2.495483
netsum = netsum + inarray(1) * -5.648689
netsum = netsum + inarray(2) * 1.05053
netsum = netsum + inarray(3) * -5.979871
netsum = netsum + inarray(4) * 6.870361
feature2(2) = 1 / (1 + exp(-netsum))

netsum = -4.198974E-02
netsum = netsum + inarray(1) * 4.999131
netsum = netsum + inarray(2) * -3.897346
netsum = netsum + inarray(3) * 2.603323E-05
netsum = netsum + inarray(4) * -3.897321
feature2(3) = 1 / (1 + exp(-netsum))

netsum = .1287855
netsum = netsum + feature2(1) * -2.675452
netsum = netsum + feature2(2) * -2.65109
netsum = netsum + feature2(3) * 6.387748
outarray(1) = 1 / (1 + exp(-netsum))

netsum = 3.821959
netsum = netsum + feature2(1) * -6.030695
netsum = netsum + feature2(2) * 3.957484
netsum = netsum + feature2(3) * 8.61486E-03
outarray(2) = 1 / (1 + exp(-netsum))

outarray(1) = 2 * (outarray(1) - .1) / .8 + -1


if (outarray(1)<-1) then outarray(1) = -1
if (outarray(1)> 1) then outarray(1) = 1

outarray(2) = 2 * (outarray(2) - .1) / .8 + -1


if (outarray(2)<-1) then outarray(2) = -1
if (outarray(2)> 1) then outarray(2) = 1

End Sub

Mg. Juan Gamarra Moreno 201


Ahora debemos generar una aplicacin en Visual Basic 6.0, que nos permita
utilizar el cdigo que contiene a la red neuronal.

Iniciamos creando un formulario que permita manipular las entradas y salidas


que tiene la red neuronal (figura 4.30).

Figura 4.30. Formulario en Visual Basic que manipula las entradas y salidas de la red neuronal.

Luego modificamos el cdigo por defecto que tiene el formulario. El cdigo


modificado debe quedar tal como se muestra en el listado siguiente:

Private Sub Command1_Click()


Dim e(4) As Double
Dim s(2) As Double
' Asignacion de entradas
e(1) = Val(Text1.Text)
e(2) = Val(Text2.Text)
e(3) = Val(Text3.Text)
e(4) = Val(Text4.Text)

' llamada a la red neuronal


Call Fire_ROBOT(e, s)

' mostrar salida

If (s(1) >= 0.9 And s(1) <= 1) Then


Text5.Text = " motor gira hacia adelante"
End If
If (s(1) >= -1 And s(1) <= -0.9) Then
Text5.Text = " motor gira hacia atrs"
End If

If (s(2) >= 0.9 And s(2) <= 1) Then


Text6.Text = " motor gira hacia adelante"
End If

202 Tpicos y Aplicaciones de la Inteligencia Artificial


If (s(2) >= -1 And s(2) <= -0.9) Then
Text6.Text = " motor gira hacia atrs"
End If
End Sub

' Insert this code into your VB program to fire the


D:\ABRAHAM\FILES2~2\EPG\MAESTA~1\IA\ROBOT network
' This code is designed to be simple and fast for porting to any machine.
' Therefore all code and weights are inline without looping or data storage
' which might be harder to port between compilers.
Sub Fire_ROBOT(inarray() As Double, outarray() As Double)

Dim netsum As Double


Static feature2(3) As Double

' inarray(1) is S1
' inarray(2) is S2
' inarray(3) is S3
' inarray(4) is S4
' outarray(1) is M1
' outarray(2) is M2

If (inarray(1) < -1) Then inarray(1) = -1


If (inarray(1) > 1) Then inarray(1) = 1
inarray(1) = (inarray(1) + 1) / 2

If (inarray(2) < -1) Then inarray(2) = -1


If (inarray(2) > 1) Then inarray(2) = 1
inarray(2) = (inarray(2) + 1) / 2

If (inarray(3) < -1) Then inarray(3) = -1


If (inarray(3) > 1) Then inarray(3) = 1
inarray(3) = (inarray(3) + 1) / 2

If (inarray(4) < -1) Then inarray(4) = -1


If (inarray(4) > 1) Then inarray(4) = 1
inarray(4) = (inarray(4) + 1) / 2

netsum = -0.7532668
netsum = netsum + inarray(1) * 7.551737
netsum = netsum + inarray(2) * 0.2998328
netsum = netsum + inarray(3) * 7.341322
netsum = netsum + inarray(4) * -6.852577
feature2(1) = 1 / (1 + Exp(-netsum))

netsum = -2.495483
netsum = netsum + inarray(1) * -5.648689
netsum = netsum + inarray(2) * 1.05053
netsum = netsum + inarray(3) * -5.979871
netsum = netsum + inarray(4) * 6.870361
feature2(2) = 1 / (1 + Exp(-netsum))

netsum = -0.04198974
netsum = netsum + inarray(1) * 4.999131
netsum = netsum + inarray(2) * -3.897346
netsum = netsum + inarray(3) * 0.00002603323
netsum = netsum + inarray(4) * -3.897321
feature2(3) = 1 / (1 + Exp(-netsum))

netsum = 0.1287855

Mg. Juan Gamarra Moreno 203


netsum = netsum + feature2(1) * -2.675452
netsum = netsum + feature2(2) * -2.65109
netsum = netsum + feature2(3) * 6.387748
outarray(1) = 1 / (1 + Exp(-netsum))

netsum = 3.821959
netsum = netsum + feature2(1) * -6.030695
netsum = netsum + feature2(2) * 3.957484
netsum = netsum + feature2(3) * 0.00861486
outarray(2) = 1 / (1 + Exp(-netsum))

outarray(1) = 2 * (outarray(1) - 0.1) / 0.8 + -1


If (outarray(1) < -1) Then outarray(1) = -1
If (outarray(1) > 1) Then outarray(1) = 1

outarray(2) = 2 * (outarray(2) - 0.1) / 0.8 + -1


If (outarray(2) < -1) Then outarray(2) = -1
If (outarray(2) > 1) Then outarray(2) = 1

End Sub
Private Sub Command2_Click()
End
End Sub

Notese que tambin se ha agregado el cdigo generado por el Neuroshell


(contenido del archivo ROBOT.VB)

Una vez modificado el cdigo ejecutamos el programa e ingresamos las entra-


das de la red neuronal y al presionar el boton Determinar la accion de los mo-
tores del robot con una red neuronal se debe obtener la salida que ofrece la
red neuronal. Para nuestro caso se ha realizado la ejecucin con las entradas
del ltimo patrn de entrenamiento de la tabla 4.4, esta ejecucin se muestra
en la figura 4.31.

Figura 4.31. Ejecucin del programa que utiliza la red neuronal.

204 Tpicos y Aplicaciones de la Inteligencia Artificial


Cabe mencionar que las salidas de la red neuronal son cercanas o iguales a 1
-1 y se debe aproximar estas salidas a estos valores. Esta aproximacin se
realiza a travs del siguiente cdigo:

If (s(1) >= 0.9 And s(1) <= 1) Then


Text5.Text = " motor gira hacia adelante"
End If
If (s(1) >= -1 And s(1) <= -0.9) Then
Text5.Text = " motor gira hacia atrs"
End If

If (s(2) >= 0.9 And s(2) <= 1) Then


Text6.Text = " motor gira hacia adelante"
End If
If (s(2) >= -1 And s(2) <= -0.9) Then
Text6.Text = " motor gira hacia atrs"
End If

4.9.2. APLICACIN PARA SNTOMAS Y DIAGNSTICOS DE AUTO-


MVILES

Consideremos un ejemplo concreto de aplicacin de sntomas y diagnsticos.


Emplearemos Como base para nuestro ejemplo una aplicacin de diagnstico
para automviles. Concretamente, nos concentraremos en una aplicacin que
diagnostique por qu no arranca un coche. Primero se definen los distintos sn-
tomas que hay que considerar:

No hace nada: no pasa nada cuando se hace girar la llave del contacto.

Hace clic: cuando se da vuelta a la llave, se oyen fuertes chasquidos.

Molinillo: cuando se da vuelta a la llave se oye un ruido parecido al de un


molinillo.

Arranque: el motor gira como si intentase arrancar, pero no es capaz de


funcionar por s mismo.

Sin chispa: al sacar el cable de una buja y acercarlo al bloque cuando se


intenta arrancar, en el motor no saltan chispas.

Cable caliente: despus de intentar arrancar el motor, el cable que va de la


batera a la bobina del motor de arranque est caliente.

Sin gasolina: al sacar el tubo de gasolina del carburador (o inyector) e in-


tentar arrancar el motor, no sale gasolina por el tubo.

A continuacin, se consideran las posibles causas del problema, basndose en


los sntomas:

Batera: la batera est descargada


Mg. Juan Gamarra Moreno 205
Bobina del motor de arranque: falla la bobina del motor de arranque.

Motor de arranque: falla el motor de arranque.

Cables: fallan los cables del encendido.

Distribuidor: el rotor o la tapa del distribuidor estn corrodos.

Bomba de gasolina: falla la bomba de gasolina.

Aunque nuestra lista no es una representacin Completa de todos los posibles


problemas, los sntomas podran indicar alguno de estos problemas, o una
combinacin de ellos. Para completar el ejemplo vamos a construir una matriz
que indica la correspondencia de los sntomas con sus causas probables. La
matriz se ha ilustrado en la Tabla 4.5.

Al inspeccionar la matriz se aprecia la variedad de problemas que puede indi-


car cualquier sntoma. La matriz tambin ilustra el problema que encontramos
cuando se intenta programar un sistema para llevar a cabo la funcin de diag-
nstico. Es raro que haya una correspondencia biunvoca entre sntomas y
causas. Para tener xito, nuestro sistema automatizado debe ser capaz de co-
rrelacionar muchos sntomas distintos, y, en el caso de que alguno de los sn-
tomas no se aprecie o est ausente, debe ser capaz de "llenar los espacios en
blanco" del problema basndose solamente en los sntomas indicados.

Tabla 4.5. Para el problema de diagnsticos del automvil, se hacen corresponder los sntomas con
las causas.

Causas probables
Sntomas Batera Bobina Motor de Cables Distribuidor Bomba de
arranque gasolina
No hace nada X
Clics X X X
Molinillo X X X X
Gira X X X
Sin chispa X X
Cable caliente X X
Sin gasolina X

La solucin

Empleando los datos de nuestro ejemplo, ser necesaria una red con siete
unidades de entrada y seis unidades de salida. Esto deja nicamente sin de-
terminar el nmero de unidades internas (ocultas). En este caso, no hay nada
que indique cuntas unidades ocultas se van a necesitar para resolver el pro-
blema, y no hay consideraciones de interfaz externa que vayan a limitar el n-
mero de unidades ocultas.

206 Tpicos y Aplicaciones de la Inteligencia Artificial


Una ecuacin emprica segn Sierra8, para calcular el nmero de neuronas de
una capa oculta es:

M 2*M
n
2* N N
donde:

M: Es el nmero de ejemplos con que vamos a entrenar a la red.

N: Es el nmero de unidades de entradas.

n: Es el nmero de neuronas que vamos a situar en capas intermedias

El shell Neuroshell calcula la cantidad de neuronas ocultas para la red neuro-


nal que se esta implementando.

A continuacin, debemos definir los conjuntos de datos que sern utilizados


para entrenar a la red. Volviendo de nuevo a la matriz de nuestro ejemplo, se
pueden considerar los datos de los vectores fila de la matriz como tramas de
entrada de siete dimensiones; esto es, para cada salida de causa probable que
desearamos que aprendiera la red, hay siete sntomas posibles que indican el
problema por su presencia o ausencia. Esta aproximacin proporcionar siete
pares de vectores de entrenamiento, cada uno de los cuales consta de una
trama de sntomas de siete elementos y de una trama de indicacin de pro-
blema formada por seis elementos.

Haremos que la existencia de un sntoma quede indicada por un 1, y que la


ausencia de un sntoma sea representada mediante un 0. Para cualquier vec-
tor de entrada dado, la causa o causas correctas se indican mediante un 1 l-
gico en la posicin correspondiente del vector de salida. Los pares de vectores
de entrenamiento que se producen por la correspondencia de la matriz de sn-
tomas y problemas para este ejemplo se muestran en la tabla 4.6. Si se com-
paran las tablas 4.5 y la tabla 4.6., se notarn pequeas diferencias.

Lo nico que queda ahora es entrenar a la red con estos pares de datos. Una
vez que est entrenada, la red producir una salida que identifique a la causa
probable indicada por el mapa de sntomas de entrada. La red har esto cuan-
do la entrada sea equivalente a una de las entradas de entrenamiento, tal co-
mo se esperaba, y adems producir una salida, indicando la causa probable
del problema, cuando la entrada sea parecida a alguna de las entradas de en-
trenamiento, pero distinta de todas ellas. Esta aplicacin ilustra la capacidad de
la red para realizar la "mejor suposicin" (generalizacin) y pone de manifiesto
la capacidad de la red para enfrentarse a entradas de datos con ruido o incom-
pletas.

8
1. Sierra Molina, Guillermo y otros (1995). Sistemas Expertos en Contabilidad y Ad-
ministracin de Empresas. Editorial Addison Wesley. USA.

Mg. Juan Gamarra Moreno 207


Tabla 4.6. Estos pares de vectores de entrenamiento se utilizan para el problema de diagnsticos
del automvil.
Entrada de sntomas Salida de causas probables

Bomba de gasolina
Motor de arranque
Cable caliente
No hace nada

Sin gasolina

Distribuidor
Sin chispa
Molinillo

Batera

Cables
Bobina
Clics

Gira
1 0 0 0 0 0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 1 1 1 0 0 0
0 0 1 0 0 0 0 0 0 1 1 1 1
0 0 0 1 0 0 0 0 0 0 1 1 1
0 0 0 0 1 0 0 0 0 0 1 1 0
0 0 0 0 0 1 0 0 1 1 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1

Se puede utilizar el Neuroshell, para entrenar a la red neuronal con los datos
de la tabla 4.6 y se debe obtener tambin el codigo fuente en Visual Basic. La
implementacion se encuentra en el CD que se adjunta al libro.

El formulario y la ejecucin del programa en Visual Basic 6.0, teniendo en


cuenta el 4to patron de entrenamiento se muestra en la figura 4.32.

Figura 4.32. Ejecucin del programa en Visual Basic 6.0, teniendo en cuenta el 4 patron de entre-
namiento de la tabla 4.6.

El codigo del formulario debe ser modificado de la siguiente manera:

208 Tpicos y Aplicaciones de la Inteligencia Artificial


Private Sub Command1_Click()
Dim e(7) As Double
Dim s(6) As Double

e(1) = Val(Text1.Text)
e(2) = Val(Text2.Text)
e(3) = Val(Text3.Text)
e(4) = Val(Text4.Text)
e(5) = Val(Text5.Text)
e(6) = Val(Text6.Text)
e(7) = Val(Text7.Text)

Call Fire_DIAGNOST(e, s)

If (s(1) > 0.9 And s(1) <= 1) Then


Text8.Text = "mal"
End If
If (s(1) >= 0 And s(1) < 0.1) Then
Text8.Text = "bien"
End If

If (s(2) > 0.9 And s(2) <= 1) Then


Text9.Text = "mal"
End If
If (s(2) >= 0 And s(2) < 0.1) Then
Text9.Text = "bien"
End If

If (s(3) > 0.9 And s(3) <= 1) Then


Text10.Text = "mal"
End If
If (s(3) >= 0 And s(3) < 0.1) Then
Text10.Text = "bien"
End If

If (s(4) > 0.9 And s(4) <= 1) Then


Text11.Text = "mal"
End If
If (s(4) >= 0 And s(4) < 0.1) Then
Text11.Text = "bien"
End If

If (s(5) > 0.9 And s(5) <= 1) Then


Text12.Text = "mal"
End If
If (s(5) >= 0 And s(5) < 0.1) Then
Text12.Text = "bien"
End If

If (s(6) > 0.9 And s(6) <= 1) Then


Text13.Text = "mal"
End If
If (s(6) >= 0 And s(6) < 0.1) Then
Text13.Text = "bien"
End If
End Sub

Mg. Juan Gamarra Moreno 209


' Insert this code into your VB program to fire the
F:\FILES2~1\ANNOSA~1\ARCHIV~2\CAPITU~3\DIAGNO~1\DIAGNOST network
' This code is designed to be simple and fast for porting to any machine.
' Therefore all code and weights are inline without looping or data storage
' which might be harder to port between compilers.
Sub Fire_DIAGNOST(inarray() As Double, outarray() As Double)

Dim netsum As Double


Static feature2(9) As Double

' inarray(1) is No_hace_Nada


' inarray(2) is Hace_Clics
' inarray(3) is Molinillo
' inarray(4) is Gira
' inarray(5) is Sin_chispa
' inarray(6) is Cable_caliente
' inarray(7) is Sin_gasolina
' outarray(1) is Batera
' outarray(2) is Bobina
' outarray(3) is Motor_de_arranque
' outarray(4) is Cables
' outarray(5) is Distribuidor
' outarray(6) is Bomba_de_gasolina

If (inarray(1) < 0) Then inarray(1) = 0


If (inarray(1) > 1) Then inarray(1) = 1
inarray(1) = inarray(1)

If (inarray(2) < 0) Then inarray(2) = 0


If (inarray(2) > 1) Then inarray(2) = 1
inarray(2) = inarray(2)

If (inarray(3) < 0) Then inarray(3) = 0


If (inarray(3) > 1) Then inarray(3) = 1
inarray(3) = inarray(3)

If (inarray(4) < 0) Then inarray(4) = 0


If (inarray(4) > 1) Then inarray(4) = 1
inarray(4) = inarray(4)

If (inarray(5) < 0) Then inarray(5) = 0


If (inarray(5) > 1) Then inarray(5) = 1
inarray(5) = inarray(5)

If (inarray(6) < 0) Then inarray(6) = 0


If (inarray(6) > 1) Then inarray(6) = 1
inarray(6) = inarray(6)

If (inarray(7) < 0) Then inarray(7) = 0


If (inarray(7) > 1) Then inarray(7) = 1
inarray(7) = inarray(7)

netsum = -0.3115481
netsum = netsum + inarray(1) * 0.7032344
netsum = netsum + inarray(2) * 0.1466639
netsum = netsum + inarray(3) * 2.036957
netsum = netsum + inarray(4) * -0.4733835
netsum = netsum + inarray(5) * -0.4653012
netsum = netsum + inarray(6) * -1.454124
netsum = netsum + inarray(7) * -0.7716009

210 Tpicos y Aplicaciones de la Inteligencia Artificial


feature2(1) = 1 / (1 + Exp(-netsum))

netsum = -0.007483043
netsum = netsum + inarray(1) * -0.7950581
netsum = netsum + inarray(2) * -1.6701
netsum = netsum + inarray(3) * 1.082342
netsum = netsum + inarray(4) * 0.8707346
netsum = netsum + inarray(5) * -0.3615806
netsum = netsum + inarray(6) * -0.6289499
netsum = netsum + inarray(7) * 0.9206671
feature2(2) = 1 / (1 + Exp(-netsum))

netsum = 0.3411922
netsum = netsum + inarray(1) * 1.407685
netsum = netsum + inarray(2) * 1.998027
netsum = netsum + inarray(3) * -1.747856
netsum = netsum + inarray(4) * -1.269704
netsum = netsum + inarray(5) * -2.329731
netsum = netsum + inarray(6) * 1.356552
netsum = netsum + inarray(7) * 1.647663
feature2(3) = 1 / (1 + Exp(-netsum))

netsum = -0.2768248
netsum = netsum + inarray(1) * 2.065744
netsum = netsum + inarray(2) * -1.146601
netsum = netsum + inarray(3) * -0.9325874
netsum = netsum + inarray(4) * -1.517177
netsum = netsum + inarray(5) * 0.2812504
netsum = netsum + inarray(6) * -0.6556798
netsum = netsum + inarray(7) * 1.173773
feature2(4) = 1 / (1 + Exp(-netsum))

netsum = -0.1239126
netsum = netsum + inarray(1) * -1.830723
netsum = netsum + inarray(2) * 0.8275196
netsum = netsum + inarray(3) * 0.2012251
netsum = netsum + inarray(4) * -0.7351373
netsum = netsum + inarray(5) * 0.5414248
netsum = netsum + inarray(6) * 2.384689
netsum = netsum + inarray(7) * -1.566727
feature2(5) = 1 / (1 + Exp(-netsum))

netsum = 0.0145554
netsum = netsum + inarray(1) * -0.4000922
netsum = netsum + inarray(2) * -1.257582
netsum = netsum + inarray(3) * 0.8750437
netsum = netsum + inarray(4) * 1.78116
netsum = netsum + inarray(5) * 1.741183
netsum = netsum + inarray(6) * -2.168171
netsum = netsum + inarray(7) * -0.9200088
feature2(6) = 1 / (1 + Exp(-netsum))

netsum = 0.3624522
netsum = netsum + inarray(1) * -1.666589
netsum = netsum + inarray(2) * -2.92119
netsum = netsum + inarray(3) * 1.415627
netsum = netsum + inarray(4) * 0.1193302
netsum = netsum + inarray(5) * 0.3643235
netsum = netsum + inarray(6) * 1.332756
netsum = netsum + inarray(7) * 1.651392

Mg. Juan Gamarra Moreno 211


feature2(7) = 1 / (1 + Exp(-netsum))

netsum = -0.08557819
netsum = netsum + inarray(1) * 0.3886256
netsum = netsum + inarray(2) * -2.094244
netsum = netsum + inarray(3) * -1.564476
netsum = netsum + inarray(4) * 1.770092
netsum = netsum + inarray(5) * 0.9950833
netsum = netsum + inarray(6) * -1.562377
netsum = netsum + inarray(7) * 1.671334
feature2(8) = 1 / (1 + Exp(-netsum))

netsum = -0.2997127
netsum = netsum + inarray(1) * 1.399435
netsum = netsum + inarray(2) * -0.1395936
netsum = netsum + inarray(3) * -1.913407
netsum = netsum + inarray(4) * -0.9458458
netsum = netsum + inarray(5) * 2.404087
netsum = netsum + inarray(6) * 0.6442617
netsum = netsum + inarray(7) * -1.377198
feature2(9) = 1 / (1 + Exp(-netsum))

netsum = 0.8538765
netsum = netsum + feature2(1) * 1.642975
netsum = netsum + feature2(2) * -1.08525
netsum = netsum + feature2(3) * 1.692052
netsum = netsum + feature2(4) * 0.5226364
netsum = netsum + feature2(5) * -1.016138
netsum = netsum + feature2(6) * 0.3381723
netsum = netsum + feature2(7) * -4.312466
netsum = netsum + feature2(8) * -0.8845294
netsum = netsum + feature2(9) * 0.3042739
outarray(1) = 1 / (1 + Exp(-netsum))

netsum = 0.6356097
netsum = netsum + feature2(1) * -1.699543
netsum = netsum + feature2(2) * -0.8347372
netsum = netsum + feature2(3) * 1.740408
netsum = netsum + feature2(4) * -2.244962
netsum = netsum + feature2(5) * 2.778615
netsum = netsum + feature2(6) * -1.380548
netsum = netsum + feature2(7) * -1.0302
netsum = netsum + feature2(8) * -1.023457
netsum = netsum + feature2(9) * -0.1288214
outarray(2) = 1 / (1 + Exp(-netsum))

netsum = 0.8881556
netsum = netsum + feature2(1) * 1.621511
netsum = netsum + feature2(2) * -0.03661929
netsum = netsum + feature2(3) * 0.1688382
netsum = netsum + feature2(4) * -1.013181
netsum = netsum + feature2(5) * 2.699184
netsum = netsum + feature2(6) * -1.219513
netsum = netsum + feature2(7) * 0.4337809
netsum = netsum + feature2(8) * -3.760823
netsum = netsum + feature2(9) * -1.450161
outarray(3) = 1 / (1 + Exp(-netsum))

netsum = -0.1752312
netsum = netsum + feature2(1) * 0.7248147

212 Tpicos y Aplicaciones de la Inteligencia Artificial


netsum = netsum + feature2(2) * 0.4916552
netsum = netsum + feature2(3) * -3.363693
netsum = netsum + feature2(4) * -1.489237
netsum = netsum + feature2(5) * 0.3150889
netsum = netsum + feature2(6) * 2.669589
netsum = netsum + feature2(7) * 0.2992842
netsum = netsum + feature2(8) * 0.4325282
netsum = netsum + feature2(9) * 0.1342072
outarray(4) = 1 / (1 + Exp(-netsum))

netsum = -0.2363798
netsum = netsum + feature2(1) * 0.8358494
netsum = netsum + feature2(2) * 0.6256061
netsum = netsum + feature2(3) * -3.400938
netsum = netsum + feature2(4) * -1.574203
netsum = netsum + feature2(5) * 0.3605849
netsum = netsum + feature2(6) * 2.502021
netsum = netsum + feature2(7) * 0.2546888
netsum = netsum + feature2(8) * 0.5457298
netsum = netsum + feature2(9) * 0.2242781
outarray(5) = 1 / (1 + Exp(-netsum))

netsum = -0.1454982
netsum = netsum + feature2(1) * 0.7328083
netsum = netsum + feature2(2) * 1.886714
netsum = netsum + feature2(3) * 0.05207601
netsum = netsum + feature2(4) * -1.110788
netsum = netsum + feature2(5) * -1.82287
netsum = netsum + feature2(6) * 0.5481207
netsum = netsum + feature2(7) * 1.574738
netsum = netsum + feature2(8) * 1.149344
netsum = netsum + feature2(9) * -4.210217
outarray(6) = 1 / (1 + Exp(-netsum))

outarray(1) = (outarray(1) - 0.1) / 0.8


If (outarray(1) < 0) Then outarray(1) = 0
If (outarray(1) > 1) Then outarray(1) = 1

outarray(2) = (outarray(2) - 0.1) / 0.8


If (outarray(2) < 0) Then outarray(2) = 0
If (outarray(2) > 1) Then outarray(2) = 1

outarray(3) = (outarray(3) - 0.1) / 0.8


If (outarray(3) < 0) Then outarray(3) = 0
If (outarray(3) > 1) Then outarray(3) = 1

outarray(4) = (outarray(4) - 0.1) / 0.8


If (outarray(4) < 0) Then outarray(4) = 0
If (outarray(4) > 1) Then outarray(4) = 1

outarray(5) = (outarray(5) - 0.1) / 0.8


If (outarray(5) < 0) Then outarray(5) = 0
If (outarray(5) > 1) Then outarray(5) = 1

outarray(6) = (outarray(6) - 0.1) / 0.8


If (outarray(6) < 0) Then outarray(6) = 0
If (outarray(6) > 1) Then outarray(6) = 1

End Sub

Mg. Juan Gamarra Moreno 213


4.9.3. CONCESIN DE AYUDAS POR ESTUDIOS

El problema consiste en determinar cul es el tipo de ayuda, que se puede


conceder por estudios a un trabajador en una empresa, en base a concesiones
otorgadas en otros casos.

Para la concesin se toman los siguientes atributos:

salario del trabajador,

tipo de estudios a realizar, y

antigedad en la empresa.

La empresa cuenta con la informacin de la tabla 4.7 referida a ayudas conce-


didas en ejercicios anteriores.

Tabla 4.7. Ayudas concedidas con ejercicios anteriores

214 Tpicos y Aplicaciones de la Inteligencia Artificial


Tabla 4.7. Ayudas concedidas con ejercicios anteriores (continuacin)

Tabla 4.7. Ayudas concedidas con ejercicios anteriores (continuacin)

Mg. Juan Gamarra Moreno 215


Se puede utilizar el Neuroshell, para entrenar a la red neuronal con los datos
de la tabla 4.7 y se debe obtener tambin el codigo fuente en Visual Basic. La
implementacion se encuentra en el CD que se adjunta al libro.

El formulario y la ejecucin del programa en Visual Basic 6.0, teniendo en


cuenta el 16 avo patrn de entrenamiento se muestra en la figura 4.33.

Figura 4.33. Ejecucin del programa en Visual Basic 6.0, teniendo en cuenta el 16 avo patrn de
entrenamiento de la tabla 4.7.

4.9.4. IMPLEMENTACIN DE OTRAS APLICACIONES CON REDES


NEURONALES ARTIFICIALES

En el CD se encuentra la implementacin
del reconocimiento de los caracteres A y
B, utilizando Neuroshell y Visual Basic
.NET.

Adems se implementa el ejemplo de la


identificacin de animales de la tabla
4.2.

216 Tpicos y Aplicaciones de la Inteligencia Artificial


CAPITULO CINCO
SISTEMAS DE APRENDIZAJE INDUCTIVO Y
RBOLES DE DECISIN

Para la aplicacin de estos sistemas de aprendizaje inductivo se parte de un


conjunto de ejemplos. Cada uno de ellos debe tener la misma estructura con-
sistente en una conclusin (o decisin) y un nmero de caractersticas o atribu-
tos que definen esa conclusin o decisin

El sistema construye un rbol de decisin que representa la relacin existente


entre la conclusin-decisin y sus atributos (figura 5.1.)

5.1. RBOLES DE DECISIN


Caractersticas:

Cada nodo corresponde a un atributo y cada rama al valor posible de ese


atributo.

Una hoja del rbol especifica el valor esperado de la decisin.

La explicacin de una determinada decisin viene dada por la trayectoria


desde la raz a la hoja de una decisin.

Mg. Abraham Gamarra Moreno 217


Figura 5.1. rbol de decisin que representa la relacin existente entre la conclusin-decisin y sus
atributos.

5.2. CONSTRUCCIN DE RBOLES DE DECISIN


Para la construccin vamos a partir de un ejemplo:

El problema consiste en determinar cul es el tipo de ayuda, que se puede


conceder por estudios a un trabajador en una empresa, en base a concesiones
otorgadas en otros casos.

Para la concesin se toman los siguientes atributos:

salario del trabajador,

tipo de estudios a realizar, y

antigedad en la empresa.

La empresa cuenta con la informacin de la tabla 5.1 referida a ayudas conce-


didas en ejercicios anteriores.

Los datos sern los ejemplos que emplear el sistema de induccin para gene-
rar el rbol de decisin.

218 Tpicos y Aplicaciones de la Inteligencia Artificial


Tabla 5.1. Ayudas concedidas con ejercicios anteriores

Tabla 5.1. Ayudas concedidas con ejercicios anteriores (continuacin)

Mg. Abraham Gamarra Moreno 219


Tabla 5.1. Ayudas concedidas con ejercicios anteriores (continuacin)

La construccin lleva a cabo el siguiente proceso

Paso 1:

Clculo de la entropa de la distribucin de probabilidad resultante de dividir el


conjunto de ejemplos en funcin de la decisin.

La entropa se calcula:

E(P)=-(p1 log2(p1) + p2 log2(p2)+. . .+ pk log2(pk))

Donde:

p1, p2, ... , pk probabilidad de ocurrencia

Para el ejemplo dado el valor de la decisin se tiene:

Valor de la decisin No de casos


25 000 2
50 000 5
75 000 4
100 000 5

220 Tpicos y Aplicaciones de la Inteligencia Artificial


La entropa es:

E(P)=-(2/16 log2(2/16) + 5/16 log2(5/16)+

4/16 log2(4/16) + 5/16 log2(5/16))

E(P)=1,92379494

Paso 2:

Divisin del conjunto de ejemplos en funcin de los valores de un determinado


atributo.

Para el ejemplo elegimos el atributo salario y procedemos a dividir el conjunto


de ejemplos en funcin del mismo, obteniendo las siguientes clases:

- T1 (Salario< 1 500)

Valor de la decisin No de Casos


25 000 0
50 000 0
75 000 0
100 000 5

- T2 (1 500 <Salario<2 500 )

Valor de la decisin No de Casos


25 000 0
50 000 2
75 000 4
100 000 0

Mg. Abraham Gamarra Moreno 221


- T3 (Salario>2 500)

Valor de la decisin No de Casos


25 000 2
50 000 3
75 000 0
100 000 0

Paso 3:

Determinacin de la informacin necesaria para identificar la clase de un ele-


mento del conjunto de ejemplos dividido en clases segn el atributo considera-
do en el paso anterior.

La informacin se determina por:

Info(Ti)=E(Pi)

Y tambin se calcula:

Info(X,T)=T1/T Info(T1)+

T2/T Info(T2)+ . . .+

Tk/T Info(Tk)

Para el ejemplo tenemos:

Info(T1)=-[1 Log2(1)]= 0

Info(T2)=-[2/6 Log2(2/6) + 4/6 Log2(4/6)]= 0.918295834

Info(T3)=-[2/5 Log2(2/5)+ 3/5 Log2(3/5)]= 0.970950594

Info(Salario,T)=5/16 Info(T1)+6/16 Info(T2)+5/16 Info(T3) = 0.647782997

Paso 4:

Calculo de la ganancia de la informacin debida al atributo elegido en el paso


2.

Ganancia de informacin(X,T)=

E(P)- Info(X,T)

222 Tpicos y Aplicaciones de la Inteligencia Artificial


Para el ejemplo la ganancia de informacin es:

Ganancia de informacin(Salario,T)=

E(P)-Info(Salario,T)=

1.92379494-0.647782997=1.276011942

Debemos realizar los mismos pasos con los otros atributos.

Paso 2-Estudios

Elegimos el atributo Estudios y procedemos a dividir el conjunto de ejemplos


en funcin del mismo, obteniendo las siguientes clases:

- T1 (Estudios=Especializacin)

VALOR DE LA DECISION No. DE CASOS

50 000 1

75 000 2

100 000 1

- T2 (Estudios=Medios )

VALOR DE LA DECISION No. DE CASOS

100 000 1

50 000 2

25 000 2

- T3 (Estudios=Superiores)

VALOR DE LA DECISION No. DE CASOS

100 000 3

75 000 2

50 000 2

Mg. Abraham Gamarra Moreno 223


Paso 3 -Estudios

Determinacin de la informacin necesaria para identificar la clase de un ele-


mento del conjunto de ejemplos dividido en clases segn el atributo conside-
rado en el paso anterior.

La informacin se determina por:

Info(Ti)=E(Pi)

Y tambin se calcula:

Info(X,T)=T1/T Info(T1)+

T2/T Info(T2)+ . . .+

Tk/T Info(Tk)

Para el ejemplo tenemos:

Info(T1)=-[1/4 Log2(1/4)+2/4 Log2(2/4) +1/4 Log2(1/4)]=1.500000000

Info(T2)=-[1/5 Log2(1/5) + 2/5 Log2(2/5) + 2/5 Log2(2/5)]=1.521928095

Info(T3)=-[3/7 Log2(3/7)+2/7 Log2(2/7) + 2/7 Log2(2/7)]=1.556656707

Info(Estudios,T)=4/16 Info(T1)+5/16 Info(T2)+7/16 Info(T3) =1.531639839

Paso 4-Estudios

Calculo de la ganancia de la informacin debida al atributo elegido en el paso


2.

Ganancia de informacin(X,T)=

E(P)- Info(X,T)

Para el ejemplo la ganancia de informacin es:

Ganancia de informacin(Estudios,T)=

E(P)-Info(Estudios,T)=

1.92379494-1.531639839=

=0.392155101

Paso 2-Antigedad

Elegimos el atributo Antigedad y procedemos a dividir el conjunto de ejemplos


en funcin del mismo, obteniendo las siguientes clases:

224 Tpicos y Aplicaciones de la Inteligencia Artificial


- T1 (Antigedad =Si)

VALOR DE LA DECISION No. DE CASOS

100 00 3

75 000 3

50 000 1

25 000 1

- T2 (Antigedad =No )

VALOR DE LA DECISION No. DE CASOS

100 00 2

75 000 1

50 000 4

25 000 1

Paso 3 - Antigedad

Determinacin de la informacin necesaria para identificar la clase de un ele-


mento del conjunto de ejemplos dividido en clases segn el atributo conside-
rado en el paso anterior.

La informacin se determina por:

Info(Ti)=E(Pi)

Y tambin se calcula:

Info(X,T)=T1/T Info(T1)+

T2/T Info(T2)+ . . .+

Tk/T Info(Tk)

Para el ejemplo tenemos:

Mg. Abraham Gamarra Moreno 225


Info(T1)=-[3/8 Log2(3/8)+3/8 Log2(3/8) +1/8 Log2(1/8) +

1/8 Log2(1/8)]=1.811278124

Info(T2)=-[2/8 Log2(2/8)+1/8 Log2(1/8) +4/8 Log2(4/8) +

1/8 Log2(1/8)]=1.750000000

Info(Antigedad,T)=8/16 Info(T1)+8/16 Info(T2)=1.780639062

Paso 4 - Antigedad

Clculo de la ganancia de la informacin debida al atributo elegido en el paso


2.

Ganancia de informacin(X,T)=

E(P)- Info(X,T)

Para el ejemplo la ganancia de informacin es:

Ganancia de informacin(Antigedad,T)=

E(P)-Info(Antigedad,T)=

1.92379494-1.780639062=

=0.143155878

Eleccin de la ganancia de informacin

Ganancia de informacin(Salario,T)=

1.276011942

Ganancia de informacin(Estudios,T)=

0.392155101

Ganancia de Informacin (Antigedad,T)= 0.143155878

Se elige Salario como nodo del rbol porque tiene mayor ganancia de informa-
cin.

De la raz salario saldrn tres nodos:

< 1 500 ,

1 500 a 2 500 y

2 500

226 Tpicos y Aplicaciones de la Inteligencia Artificial


Para el primer caso la ayuda es de 100000; pero en los casos 2 y 3 las ayudas
concedidas por la empresa son diferentes.

El rbol de decisin formado hasta aqu se muestra en la figura 5.2.

Figura 5.2. rbol de decisin con el primer nodo encontrado.

El proceso anterior se repetir para esas dos ramas en que no existe certi-
dumbre respecto a la decisin habiendo considerado el atributo salario, si bien
los atributos a analizar seran solo los dos restantes (estudios y antigedad).

Los resultados obtenidos sern:

Para el atributo salario rama 1500 a 2500 (elegir slo las filas que tengan este
valor ):

Paso 1

Clculo de la entropa de la distribucin de probabilidad resultante de dividir el


conjunto de ejemplos en funcin de la decisin.

La entropa se calcula:

Mg. Abraham Gamarra Moreno 227


E(P)=-(p1 log2(p1) + p2 log2(p2)+. . .+

pk log2(pk))

Donde:

p1, p2, ... , pk probabilidad de ocurrencia

Para el ejemplo dado el valor de la decisin se tiene:

Valor de la decisin No de casos


50 000 2
75 000 4

La entropa es:

E(P)=-(2/6 log2(2/6) + 4/6 log2(4/6))

E(P)=0.918295834

Paso 2-Estudios

Elegimos el atributo Estudios y procedemos a dividir el conjunto de ejemplos


en funcin del mismo, obteniendo las siguientes clases:

- T1 (Estudios=Especializacin)

VALOR DE LA DECISION No. DE CASOS

75 000 2

- T2 (Estudios=Medios )

VALOR DE LA DECISION No. DE CASOS

50 000 2

228 Tpicos y Aplicaciones de la Inteligencia Artificial


- T3 (Estudios=Superiores)

VALOR DE LA DECISION No. DE CASOS

75 000 2

Paso 3 -Estudios

Determinacin de la informacin necesaria para identificar la clase de un ele-


mento del conjunto de ejemplos dividido en clases segn el atributo conside-
rado en el paso anterior.

La informacin se determina por:

Info(Ti)=E(Pi)

Y tambin se calcula:

Info(X,T)=T1/T Info(T1)+

T2/T Info(T2)+ . . .+

Tk/T Info(Tk)

Para el ejemplo tenemos:

Info(T1)=-[2/2 Log2(2/2)] =0

Info(T2)=-[2/2 Log2(2/2)] =0

Info(T3)=-[2/2 Log2(2/2)] =0

Info(Estudios,T)=2/6 Info(T1)+2/6 Info(T2)+2/6 Info(T3) =0

Paso 4 -Estudios

Calculo de la ganancia de la informacin debida al atributo elegido en el paso


2.

Ganancia de informacin(X,T)=

E(P)- Info(X,T)

Para el ejemplo la ganancia de informacin es:

Ganancia de informacin(Estudios,T)=

E(P)-Info(Estudios,T)=

Mg. Abraham Gamarra Moreno 229


0.918295834 -0.0= 0.918295834

Paso 2-Antigedad

Elegimos el atributo Antigedad y procedemos a dividir el conjunto de ejemplos


en funcin del mismo, obteniendo las siguientes clases:

- T1 (Antigedad =Si)

VALOR DE LA DECISION No. DE CASOS

75 000 3

50 000 1

- T2 (Antigedad =No )

VALOR DE LA DECISION No. DE CASOS

75 000 1

50 000 1

Paso 3 - Antigedad

Determinacin de la informacin necesaria para identificar la clase de un ele-


mento del conjunto de ejemplos dividido en clases segn el atributo conside-
rado en el paso anterior.

La informacin se determina por:

Info(Ti)=E(Pi)

Y tambin se calcula:

Info(X,T)=T1/T Info(T1)+

T2/T Info(T2)+ . . .+

Tk/T Info(Tk)

Para el ejemplo tenemos:

Info(T1)=-[3/4 Log2(3/4)+1/4 Log2(1/4)]

230 Tpicos y Aplicaciones de la Inteligencia Artificial


=0.811278124

Info(T2)=-[1/2 Log2(1/2)+1/2 Log2(1/2)]

=1.000000000

Info(Antigedad,T)=4/6 Info(T1)+2/6 Info(T2)=0.874185416

Paso 4 - Antigedad

Calculo de la ganancia de la informacin debida al atributo elegido en el paso


2.

Ganancia de informacin(X,T)= E(P)- Info(X,T)

Para el ejemplo la ganancia de informacin es:

Ganancia de informacin(Antigedad,T)=

E(P)-Info(Antigedad,T)=

0.918295834 -0.874185416

=0.044110418

Ganancia de informacin(Estudios,T)=

0.918295834

Ganancia de Informacin(Antigedad,T)= 0.044110418

Se elige Estudios como nodo del rbol porque tiene mayor ganancia de infor-
macin.

El rbol que se forma con el atributo estudios se muestra en la figura 5.3.

Para el atributo salario rama >2 500 (elegir slo las filas que tengan este valor):

Paso 1

Clculo de la entropa de la distribucin de probabilidad resultante de dividir el


conjunto de ejemplos en funcin de la decisin.

La entropa se calcula:

E(P)=-(p1 log2(p1) + p2 log2(p2)+. . .+pk log2(pk))

Donde:

p1, p2, ... , pk probabilidad de ocurrencia

Mg. Abraham Gamarra Moreno 231


Figura 5.3. rbol que se forma con el atributo estudios.

Para el ejemplo dado el valor de la decisin se tiene:

Valor de la decisin No de casos


50 000 3
25 000 2

La entropa es:

E(P)=-(3/5 log2(3/5) + 2/5 log2(2/5))

E(P)=0.970950594

Paso 2-Estudios

Elegimos el atributo Estudios y procedemos a dividir el conjunto de ejemplos


en funcin del mismo, obteniendo las siguientes clases:

232 Tpicos y Aplicaciones de la Inteligencia Artificial


- T1 (Estudios=Especializacin)

VALOR DE LA DECISION No. DE CASOS

50 000 1

- T2 (Estudios=Medios)

VALOR DE LA DECISION No. DE CASOS

25 000 2

- T3 (Estudios=Superiores)

VALOR DE LA DECISION No. DE CASOS

50 000 2

Paso 3 -Estudios

Determinacin de la informacin necesaria para identificar la clase de un ele-


mento del conjunto de ejemplos dividido en clases segn el atributo conside-
rado en el paso anterior.

La informacin se determina por:

Info(Ti)=E(Pi)

tambin se calcula:

Info(X,T)=T1/T Info(T1)+

T2/T Info(T2)+ . . .+

Tk/T Info(Tk)

Para el ejemplo tenemos:

Info(T1)=-[1/1 Log2(1/1)] =0

Info(T2)=-[2/2 Log2(2/2)] =0

Mg. Abraham Gamarra Moreno 233


Info(T3)=-[2/2 Log2(2/2)] =0

Info(Estudios,T)=2/6 Info(T1)+2/6 Info(T2)+2/6 Info(T3) =0

Paso 4 -Estudios

Calculo de la ganancia de la informacin debida al atributo elegido en el paso


2.

Ganancia de informacin(X,T)=

E(P)- Info(X,T)

Para el ejemplo la ganancia de informacin es:

Ganancia de informacin(Estudios,T)=

E(P)-Info(Estudios,T)=

0.970950594-0.0= 0.970950594

Paso 2-Antigedad

Elegimos el atributo Antigedad y procedemos a dividir el conjunto de ejemplos


en funcin del mismo, obteniendo las siguientes clases:

- T1 (Antigedad =Si)

VALOR DE LA DECISION No. DE CASOS

25 000 1

- T2 (Antigedad =No)

VALOR DE LA DECISION No. DE CASOS

25 000 1

50 000 3

Paso 3-Antigedad

Determinacin de la informacin necesaria para identificar la clase de un ele-


mento del conjunto de ejemplos dividido en clases segn el atributo conside-
rado en el paso anterior.

La informacin se determina por:

234 Tpicos y Aplicaciones de la Inteligencia Artificial


Info(Ti)=E(Pi)

Y tambin se calcula:

Info(X,T)=T1/T Info(T1)+

T2/T Info(T2)+ . . .+

Tk/T Info(Tk)

Para el ejemplo tenemos:

Info(T1)=-[1/1 Log2(1/1)]=0.0

Info(T2)=-[1/4 Log2(1/4)+3/4 Log2(3/4)]

=0.811278124

Info(Antigedad,T)=

1/5 Info(T1) + 4/5 Info(T2)

=0.649022500

Paso 4 - Antigedad

Calculo de la ganancia de la informacin debida al atributo elegido en el paso


2.

Ganancia de informacin(X,T)=

E(P)- Info(X,T)

Para el ejemplo la ganancia de informacin es:

Ganancia de informacin(Antigedad,T)=

E(P)-Info(Antigedad,T)=

0.970950594-0.649022500

=0.321928095

Eleccin de la ganancia de informacin

Ganancia de informacin(Estudios,T)=

0.970950594

Ganancia de Informacin(Antigedad,T)= 0.321928095

Mg. Abraham Gamarra Moreno 235


Se elige Estudios como nodo del rbol porque tiene mayor ganancia de infor-
macin.

El rbol que se forma con la inclusin del atributo estudios se muestra en la


figura 5.4.

Figura 5.4. rbol formado con la inclusin del atributo estudios.

Ahora debe ir el atributo Antigedad luego de estudios, tanto en la rama salario


1 500 a 2 500 y en la rama >2500.

Aadiendo antigedad al rbol se obtiene la figura 5.5.

Optimizando el rbol se obtiene el resultado de la figura 5.6.

5.3. HERRAMIENTAS PARA CREAR RBOLES DE


DECISIN DESDE DATOS HISTRICOS
Entre la variedad de herramientas que se puede utilizar para crear rboles de
decisin estan XPERTRULE y WEKA:

5.3.1. XPERTRULE

Esta herramienta puede evaluarse desde el siguiente enlace


http://www.xpertrule.com/

236 Tpicos y Aplicaciones de la Inteligencia Artificial


5.3.2. WEKA

Esta herramienta se encuentra en http://www.cs.waikato.ac.nz/~ml/weka/

Figura 5.5. Antigedad aadido al rbol.

Mg. Abraham Gamarra Moreno 237


Figura 5.6. Resultado de optimizar el rbol.

238 Tpicos y Aplicaciones de la Inteligencia Artificial


CAPITULO SEIS
APRENDIZAJE EVOLUTIVO: ALGORITMOS
GENTICOS

En los ltimos aos, las tcnicas de aprendizaje automtico han ido alcanzan-
do un creciente inters dentro de la comunidad cientfica informtica. Muchos
cientficos piensan que los avances ms importantes en inteligencia artificial se
producirn mediante mtodos diseados para permitir a los ordenadores
aprender por s mismos. Dentro de estas tcnicas, los algoritmos genticos,
cuyos primeros desarrollos se deben a Holland, han sido aplicados en un am-
plio campo de problemas de aprendizaje de mquinas.

Como su propio nombre sugiere, los algoritmos genticos tienen un paralelo


biolgico. Estos algoritmos comienzan con una coleccin de datos o patrones
generados aleatoriamente y evolucionan posteriormente hacia una solucin
mediante tcnicas de adaptacin de los patrones iniciales. La solucin no es
necesariamente ptima, pero puede estar muy cerca de ella.

Existen muchas variaciones posibles de los algoritmos genticos, cada una de


las cuales es controlada por determinados parmetros, tales como los ratios de
cruce y mutacin.

Estos algoritmos han sido aplicados en forma exitosa a una variada gama de
tareas de aprendizaje y a otros problemas de optimizacin. Por ejemplo, han
sido utilizados para aprender una coleccin de reglas de control de un robot y
para optimizar la topologa y los parmetros de una red neuronal.

Mg. Abraham Gamarra Moreno 239


6.1. FUNDAMENTO BIOLGICO

6.1.1. CROMOSOMA

Todos los organismos vivos consisten de clulas. En cada clula hay el mismo
conjunto de cromosomas. Los cromosomas son cadenas de ADN y sirve como
un modelo para el organismo completo.

Un cromosoma consiste de genes, bloques de ADN (figura 6.1). Cada gen co-
difica una protena particular. Bsicamente podemos decir que cada gen codifi-
ca una caracterstica, por ejemplo color de ojos.

Figura 6.1. ADN (cido Desoxirribonucleico)

Cada gen tiene su propia posicin en el cromosoma. El conjunto completo de


material gentico (todos los cromosomas) es llamado genoma. Un conjunto
particular de genes en el genoma es llamado genotipo.

6.1.2. REPRODUCCIN

Durante la reproduccin, primero ocurre la recombinacin (o cruce). Genes de


padres forman un nuevo cromosoma completo. La nueva descendencia creada
puede entonces ser mutada. La mutacin significa que los elementos de ADN
es cambiado en una parte. Estos cambios son principalmente causados por
errores en la copia de genes de los padres.

6.1.3. CAPACIDAD

La capacidad de un organismo es medido por el xito del organismo en esta


vida. En su obra magna, El origen de las especies, publicada en 1859, Charles
Darwin defendi el principio de la evolucin mediante la seleccin natural, que,
posteriormente, despus de muchos argumentos acalorados, fue aceptado
universalmente entre los cientficos:

240 Tpicos y Aplicaciones de la Inteligencia Artificial


Cada individuo tiende a transmitir rasgos a su progenie.

Sin embargo, la naturaleza produce individuos con rasgos diferentes.

Los individuos ms adaptados, aquellos que poseen los rasgos ms favo-


rables, tienden a tener ms progenie que aquellos con rasgos no favora-
bles, conduciendo, as, a la poblacin como un todo hacia la obtencin de
rasgos favorables.

Durante largos periodos se puede acumular la variacin, produciendo es-


pecies completamente nuevas cuyos rasgos las hacen especialmente
adaptadas a nichos ecolgicos particulares.

6.2. ESTRUCTURA Y FUNCIONAMIENTO DE LOS


ALGORITMOS GENTICOS
Los algoritmos genticos son una familia de mtodos de bsqueda adaptativa
de soluciones, que reciben su nombre por su analoga con el cambio gentico
que se produce en las poblaciones naturales. Los algoritmos genticos utilizan
una representacin basada en las caractersticas de los individuos o sucesos
mediante un conjunto de estructuras de conocimiento denominadas patrones.
Utilizando una representacin binaria, cada patrn puede representar la pre-
sencia o ausencia (1 0 respectivamente) de un conjunto de propiedades o
caractersticas en un determinado individuo o ejemplo que permiten incremen-
tar la experiencia del sistema al estudiarlo. Por ejemplo, al aprender a diag-
nosticar mejor una enfermedad se puede establecer una lista de posibles sn-
tomas asociados a la misma, de forma que un determinado enfermo para un
sntoma concreto (fiebre) lo presente (1) o no (0). Esto permite representar
todas las posibles combinaciones de sntomas como una serie de ceros y unos
(001100100110), que indicaran posibles perfiles de enfermos. Los patrones
tambin tienen un peso asociado, denominado capacidad del patrn, que re-
coge su representatividad o rendimiento en experiencias pasadas.

6.2.1. REPRESENTACIN DE CROMOSOMAS (PATRONES)

La representacin de cromosomas es uno de los problemas iniciales cuando


se utiliza algoritmos genticos. El patrn depende del problema. A continuacin
se describen algunas representaciones utilizadas relacionadas con sus pro-
blemas de aplicacin.

Codificacin binaria

Cada cromosoma es una cadena de bits 0 1.

Cromosoma:

101100101100101011100101

Mg. Abraham Gamarra Moreno 241


Ejemplo de problema: Problema de la mochila. Hay objetos con valores y ta-
maos dados. La mochila tiene una capacidad dada. Se necesita seleccionar
objetos para maximizar el valor de los objetos en la mochila, pero no se debe
ampliar la capacidad de la mochila.

Patrn: Cada bit dice, s el correspondiente objeto esta en la mochila.

Cdigo de permutacin

Este cdigo puede ser usado en problemas de ordenamiento, optimizacin o


problemas de asignacin.

Cada cromosoma es una cadena de nmeros, que representa nmeros en una


secuencia.

Cromosoma:

1 5 3 2 6 4 7 9 8

Ejemplo de problema: Problema del vendedor viajero (Travelling salesman


problem-TSP). El Problema del agente vendedor viajero, es donde se tiene un
vendedor que debe hacer una gira a lo largo del pas visitando varias ciudades
para luego volver al punto de partida. El vendedor no puede ir ms de una vez
a cualquier ciudad. La meta es inventar un plan de viaje (una gira) qu minimi-
ce la distancia total viajada

Patrn: El cromosoma dice el orden de las ciudades que visitar el vendedor


viajero.

Cdigo de valor

El cdigo de valor directo puede ser utilizado en problemas, donde se tiene


algunos valores complicados, tal como nmeros reales. Usar cdigo binario
para este tipo de problemas puede ser muy dificultoso.

En esta representacin cada cromosoma es una cadena de algunos valores.


Los valores forman nmeros, nmeros reales o caracteres para algunos obje-
tos complicados.

Cromosoma A:

1.2324 5.3243 0.4556 2.3293


Cromosoma B:

ABDJEIFJDHDIERJFDLDFLFEGT

242 Tpicos y Aplicaciones de la Inteligencia Artificial


Cromosoma C:

(atrs), (atrs), (derecha), (adelante), (izquierda)

El cdigo de valor es muy bueno para algunos problemas especiales. Por otra
parte para esta representacin es a menudo necesario desarrollar operaciones
de cruce y mutacin especficos para el problema.

Ejemplo de problema: Encontrar pesos para redes neuronales. Para algunas


arquitecturas se necesita encontrar pesos para las neuronas de entrada con el
objetivo de entrenar la red y encontrar una salida deseada.

Patrn: Valores reales en la representacin de los cromosomas que corres-


pondan los pesos de las entradas.

Cdigo de rbol

Es utilizado principalmente para desarrollar programas o expresiones, para


programacin gentica.

Cada cromosoma es un rbol de algunos objetos, tal como funciones o co-


mandos de lenguaje de programacin.

Cromosoma A:

(+x(/5y))

Mg. Abraham Gamarra Moreno 243


Cromosoma B:

( do_until step wall )

Ejemplo de problema: Encontrando una funcin de valores dados. Algunos va-


lores de entrada y salida son dados. La tarea es encontrar una funcin, que
dar la mejor salida para todas las entradas.

Patrn: Los cromosomas son funciones representadas en rboles.

6.2.2. FUNCIN PARA LA CAPACIDAD

Si nosotros resolvemos algn problema, usualmente vemos por alguna solu-


cin, estamos buscando alguna solucin que ser el mejor entre otras. El es-
pacio de todas las soluciones factibles es llamado espacio de bsqueda.

Cada punto en el espacio de bsqueda representa una solucin factible. Cada


solucin factible puede ser marcado por este valor o su capacidad para el
problema. Nosotros vemos que nuestra solucin, es un punto (o ms) a travs
de soluciones factibles en el espacio de bsqueda.

El buscar una solucin es entonces igual a buscar para algn extremo (mnimo
o mximo) en el espacio de bsqueda. La solucin de un problema con algo-
ritmos genticos puede a menudo ser expresado como buscar el extremo de
una funcin (capacidad).

6.2.3. SELECCIN

La seleccin consiste en elegir cromosomas de la poblacin para ser padres


para el cruzamiento. El problema es como seleccionar estos cromosomas. Hay
muchos mtodos de cmo seleccionar los mejores cromosomas, algunos de
ellos se describen a continuacin.

Seleccin de la rueda de ruleta

244 Tpicos y Aplicaciones de la Inteligencia Artificial


Los padres son seleccionados de acuerdo a sus capacidades. Los mejores
cromosomas son los que tienen ms opcin de ser seleccionados. Imaginemos
una rueda de ruleta donde son colocados todos los cromosomas de la pobla-
cin, estos son puestos de acuerdo a su funcin de capacidad, como se mues-
tra en la Figura 6.2.

Figura 6.2. Seleccin de la rueda de la ruleta.


Entonces una canica es tirada en la ruleta y selecciona el cromosoma. El cro-
mosoma con mejor capacidad ser seleccionado ms veces.

Este puede ser simulado por el siguiente algoritmo:

[Suma] Calcula la suma de las capacidades de todos los cromosomas en


la poblacin.

[Seleccionar] Generar un nmero aleatorio (r) de intervalo (0,S).

[Ciclo] Ir a travs de la poblacin y sumar las capacidades de 0 a suma s.


Cuando la suma s es mayor que r, parar y retornar el cromosoma donde
usted esta.

Por supuesto, el paso 1 es desarrollado una vez para cada poblacin.

Seleccin por jerarqua

La seleccin anterior tiene problemas cuando las capacidades difieren mucho.


Por ejemplo, si la capacidad del mejor cromosoma es 90%, todos los otros
cromosomas tiene poca opcin para ser seleccionados.

La seleccin por jerarqua primero ordena la poblacin y entonces cada cro-


mosoma recibe capacidades de este ordenamiento. El peor tendr capacidad
1, el segundo peor tendr capacidad 2, etc y el mejor tendr capacidad N (n-
mero de cromosomas en la poblacin).

En la Figura 6.3 y la Figura 6.4 se puede ver como cambia la situacin des-
pus de cambiar capacidades a nmero de orden.

Mg. Abraham Gamarra Moreno 245


Figura 6.3. Situacin antes de ordenar (grafico de capacidades)

Figura 6.4. Situacin despus de ordenar (grfico de nmero de orden).

Despus de esto todos los cromosomas tienen una opcin para ser seleccio-
nados. Pero este mtodo puede guiar a una baja convergencia, porque los me-
jores cromosomas no difieren muchos de los otros.

Seleccin de estado estable

La idea principal es que los de mayor capacidad deberan de sobrevivir para la


prxima generacin.

En cada generacin son seleccionados algunos cromosomas -con alta capaci-


dad- para crear una nueva descendencia (hijos). Entonces algunos cromoso-
mas con baja capacidad son removidos y reemplazados por los nuevos hijos.

El resto de la poblacin sobrevive para la nueva generacin.

Elitismo

Elitismo es el nombre del mtodo, que primero copia el cromosoma mejor (o


algunos cromosomas mejores) a la nueva poblacin. El resto es hecho de for-
ma clsica. El elitismo puede muy rpidamente incrementar el desempeo de
los algoritmos genticos, porque este previene la perdida de la mejor solucin
encontrada.

246 Tpicos y Aplicaciones de la Inteligencia Artificial


6.2.4. CRUZAMIENTO Y MUTACIN

Cdigo binario

Cruzamiento

Cruzamiento de punto simple: Un punto simple de cruzamiento es selecciona-


do, la cadena binaria del inicio del cromosoma al punto de cruzamiento es co-
piado de un padre el resto es copiado del segundo padre.

11001011+11011111 = 11001111

Dos puntos de cruzamiento: Dos puntos de cruzamiento son seleccionados, la


cadena binaria del inicio del cromosoma al primer punto de cruzamiento es
copiado de un padre, la parte del primer al segundo punto de cruzamiento es
copiado del segundo padre y el resto es copiado del primer padre.

11001011 + 11011111 = 11011111

Cruzamiento uniforme: Los bits son aleatoriamente copiados del primer o del
segundo padre.

11001011 + 11011101 = 11011111

Cruzamiento aritmtico: Algunas operaciones aritmticas es desarrollada para


crear un nuevo descendiente (hijo).

11001011 + 11011111 = 11001001 (AND)Hijo

Mutacin

Inversin de bits: Seleccionar bits a ser invertidos.

11001001 10001001

Cdigo de valor

Cruzamiento

Todos los cruzamientos del cdigo binario pueden ser utilizados.

Mutacin

Adicionando un pequeo nmero (para cdigo de valores reales): Un nmero


pequeo es adicionado (o restado) a valores seleccionados del cromosoma.

(1.29 5.68 2.86 4.11 5.55)


(1.29 5.68 2.73 4.22 5.55)

Mg. Abraham Gamarra Moreno 247


Cdigo de permutacin

Cruzamiento

Simple punto de cruce. Un punto de cruce es seleccionado. En el cromosoma


descendiente se copia los nmeros del primer padre desde el inicio al punto de
cruce, del segundo padre se aade los valores que no se encuentran en cro-
mosoma descendiente hasta completar el cromosoma. Nota: hay ms formas
de cmo producir el resto del cromosoma despus del punto de cruce.

(1 2 3 4 5 6 7 8 9) + (4 5 3 6 8 9 7 2 1) =
(1 2 3 4 5 6 8 9 7)

Mutacin

Cambiar el orden. Dos nmeros son seleccionados y son cambiados.

(1 2 3 4 5 6 8 9 7) (1 8 3 4 5 6 2 9 7).

Cdigo de rbol

Cruzamiento

Se selecciona un punto de cruce de cada padre y el descendiente se genera al


dividir los padres y cambiar las partes debajo del punto de cruce.

248 Tpicos y Aplicaciones de la Inteligencia Artificial


=

Mutacin

Cambiar: operador, nmero. Los nodos seleccionados son cambiados.

6.2.5. ALGORITMOS

Algoritmo Uno

El procedimiento que se utiliza para implementar programas con algoritmos


genticos es el siguiente:

a) [Inicio]: Generar una poblacin aleatoria de n cromosomas (soluciones


convenientes para el problema).

b) [Capacidad]: Evaluar la capacidad f(x) de cada cromosoma x en la po-


blacin.

c) [Nueva poblacin]: Crear una nueva poblacin repitiendo los pasos


siguientes hasta que la nueva poblacin este completa.

-[Seleccin]: Seleccionar dos cromosomas padres de la pobla-


cin de acuerdo a su capacidad (la mejor capacidad, tiene la ms gran-
de opcin para ser seleccionado).

-[Cruzamiento]: Con una probabilidad de cruce cruzar los padres pa-


ra formar nuevos descendientes (hijos).

-[Mutacin]: Con una probabilidad de mutacin mutar nuevos hijos en


cada posicin del cromosoma.

-[Aceptando]: Colocar los nuevos hijos en una nueva poblacin.

d) [Reemplazando]: Usar la poblacin nueva generada para una posterior


ejecucin del algoritmo.
Mg. Abraham Gamarra Moreno 249
e) [Evaluando]: Si el fin de la condicin es satisfecho, parar, y retornar la
mejor solucin en la poblacin actual.

f) [Ciclo]: Ir al paso b.

Algoritmo Dos

El funcionamiento del algoritmo es el siguiente:

1. Representacin del problema a resolver en una cadena de unos y ceros. La


cadena tendr una longitud desde unos diez bits a varios cientos.

2. Generacin aleatoria de una poblacin de cadenas (patrones) de la longitud


apropiada. El tamao de la poblacin estar comprendido entre 20 y 200 ca-
denas.

3. Evaluacin de la representatividad o rendimiento de cada patrn. Funcin de


evaluacin del rendimiento.

4. Seleccin de los individuos para la nueva generacin basada en su rendi-


miento. Por ejemplo, si se clasifica la poblacin por rendimiento y se divide en
cuartiles, de cara a la nueva generacin, el cuartil superior se duplicar, los
cuartiles intermedios se mantendrn y el cuartil inferior ser eliminado. El ta-
mao de la poblacin permanecer constante.

5. Realizacin de cruces. Aleatoriamente se seleccionan dos individuos y un


punto de cruce (posicin de la cadena a partir de la que se van a intercambiar
los bits). Se intercambian los bits a la derecha del punto de cruce, creando in-
dividuos modificados. La cantidad total de cruces realizados va a depender de
la aplicacin.

6. Realizacin de mutaciones. Se seleccionan aleatoriamente los patrones y


las posiciones sobre las que realizar la mutacin. La mutacin cambia un 1 por
un 0, y viceversa. La cantidad total de mutaciones depender tambin de la
aplicacin.

7. Vuelta al paso nmero 3 y comienzo del ciclo otra vez. La poblacin tender
a mltiples copias de una sola cadena que tenga un rendimiento ptimo o cer-
cano a l.

Existe evidencia, tanto terica como emprica, que demuestra que, incluso en
espacios de bsquedas muy amplias y complejos, los algoritmos genticos
pueden localizar rpidamente estructuras de conocimiento efectivas emplean-
do entre 50 y 100 patrones.

250 Tpicos y Aplicaciones de la Inteligencia Artificial


Algoritmo Tres

t0
Inicializar P(t)
Evaluar P(t)
Mientras (no condicin de terminacin)
t=t+1
Seleccione padres de P(t-1)
alterar P(t)
Evaluar P(t)
Fin_mientras

Algoritmo Cuatro

El procedimiento que se utiliza para implementar programas con algoritmos


genticos es muestra en la Figura 6.5. En el diagrama de flujo Gen es el nme-
ro de generacin, M es el tamao de la poblacin, i es el ndice del individuo en
la poblacin, Pr es la probabilidad de reproduccin, Pc es la probabilidad de
cruce y Pm es la probabilidad de mutacin.

6.2.6. OPERADORES GENTICOS ADICIONALES

Clonacin

La clonacin consiste en la duplicacin de la estructura gentica de un cromo-


soma para la generacin siguiente. Esto hace que ese ejemplar sobreviva in-
tacto para competir en la nueva generacin. La clonacin se puede producir en
forma:

Explcita.- Cuando el software de GA prev que ante ciertas circunstancias un


cromosoma se duplique a si mismo (figura 6.6).

Implcita.- Cuando el programa no prohbe que en el proceso de cruce (crosso-


ver), un cromosoma sea seleccionado como pareja de s mismo para generar
descendencia (figura 6.7).

Inversin

La inversin consiste en la operacin contraria a la clonacin. Puede ser:

Total.- Un cromosoma muta totalmente por su inverso. Ej.: Dado el cromo-


soma 00011, su inverso ser 11100 (figura 6.8).

Parcial.- Un gen o parte de un gen mutan por su inverso. Si la mutacin es


de un solo bit, el efecto es igual al de la mutacin simple. De hecho, la mu-
tacin puede considerarse como un caso especial de la inversin (figura
6.9).

Mg. Abraham Gamarra Moreno 251


Inicio

Gen=0

Creacin poblacin
inicial

Si
Criterio de
finalizacin Resultado
satisfecho?

No
Fin
Evaluacin de la capacidad
gen=gen+1
de cada individuo

Si
I=M?

No

Pr Seleccin de la Pm
operacion gnetica,
probabilisticamente

Pc

Seleccin de los dos


individuos ms idoneos

Seleccin del individuo ms Seleccin del individuo ms


i=i+1
idoneo idoneo

Reproduccin Cruce Mutacin

Copiar en la nueva Insertar hijos en la nueva Insertar mutante en la


poblacin poblacin nueva poblacin

i=i+1

Figura 6.5. Algoritmo bsico para implementar algoritmos genti-


cos

Antes de la clonacin 10000001


Despus de la clonacin 10000001

Figura 6.6. Proceso de clonacin explcita.

252 Tpicos y Aplicaciones de la Inteligencia Artificial


Antes de la clonacin 10000001
10000001
Despus de la clonacin 10000001
(Ejemplar nueva generacin)

Figura 6.7. Proceso de clonacin implcita.

Antes de la inversin 11110001


Despus de la inversin 00001110

Figura 6.8. Inversin total.

Antes de la inversin 11110001


Despus de la inversin 00010001

Figura 6.9. Inversin parcial.

Reversin

La reversin consiste en la operacin que cambia el cromosoma por s mismo


ordenado de atrs para adelante. Esta operacin no existe en la naturaleza ,
pero se basa un la presuncin de que algunos cromosomas poco competitivos
podran revertir su estado en el orden contrario. Al igual que con la inversin ,
la reversin puede ser:

Total.- Un cromosoma se revierte totalmente. Ej.: Dado el cromosoma


00011, su reverso ser 11000 (figura 6.10).

Parcial.- Un gen o parte de un gen cambian por su reverso (figura 6.11).

Antes de la reversin 11110001


Despus de la reversin 10001111

Figura 6.10. Reversin total.

Antes de la reversin 10111111


Despus de la reversin 11011111

Figura 6.11. Reversin parcial.

Anulacin o Pavlov

Este operador ha sido inspirado en la metodologa utilizada por el conocido


mdico ruso, aunque su trabajo no tenga que ver en absoluto con los GA.

Mg. Abraham Gamarra Moreno 253


Pavlov investig durante ms de 20 aos la fisiologa de los mamferos supe-
riores, preponderantemente de los perros. Sus difundidos trabajos sobre refle-
jos condicionados emanan de este hecho. Su metodologa se basaba en la
aislamiento de los componentes anatmicos a estudiar, con independencia del
resto de la morfologa. En otras palabras, el estudio se centraba en un rgano
u rganos especficos cada vez y se trataba de medir la influencia del entorno
en este tejido en particular. Pavlov intentaba aislar alguna variable y medir el
impacto en la misma de cambios en el entorno. De esta manera, poda acos-
tumbrar a un perro a estar a oscuras y sin sonidos para averiguar la preponde-
rancia del olfato ante la estimulacin de la comida en un perro privado del sen-
tido visual. y auditivo. A algunos especimenes se les lleg a cortar las conexio-
nes nerviosas (equivalente a anular las respuestas del rgano conectado) para
lograr el mismo resultado.

El organismo del mamfero superior consta de una serie de sustancias qumi-


cas (asimilables a las variables de un sistema matemtico) que interactan
entre s dinmicamente. Una postura integradora argumentara que la investi-
gacin debe ser hecha sobre el cuerpo tomado como un todo, ya que todas las
variables (las enzimas) estn interrelacionadas. La posicin de Pavlov fue con-
traria, ya que bas su mtodo en inferir el comportamiento de todo estudiando
caractersticas de las partes o deducir el todo anulando alguna de ellas.

Este tipo de planteo es aplicable a los GA, que constan al igual que el cuerpo
de una serie de genes interdependientes. En los seres vivos existen general-
mente mecanismos de compensacin, en donde ciertos genes impulsan accio-
nes en un sentido determinado y ciertos otros en sentido opuesto. La accin
final se produce como consecuencia de la medicin de estas fuerzas La anula-
cin estructurada de alguno de ellos puede servir como base para el entendi-
miento del comportamiento del resto del sistema. En el mbito de la biologa
estos genes reciben el nombre de aleles o alelos. Si se identificaran y anularan
algunos de los genes que condicionan el valor esperado en sentido opuesto,
esto representara una mejora idntica a la de mejorar los valores de los res-
tantes.

Un operador Pavlov anular sistemticamente algunos de los bits del cromo-


soma y medir de esa manera el incremento o no del fitness del mismo.

Dado que el GA tiene los cromosomas estructurados como cadenas binarias,


la anulacin se simplifica enormemente ya que para realizarla es suficiente con
cambiar los valores a "0" de los bits "1" o viceversa.

Antes de pavlov 11111111


Despus de pavlov 00001111
(El gen o el bit ha sido anulado)

Figura 6.12. Operador Pavloviano en un GA.

254 Tpicos y Aplicaciones de la Inteligencia Artificial


6.3. CMO TRABAJAN LOS ALGORITMOS GENTICOS?9
En este tem se discute las acciones de un algoritmo gentico para un proble-
ma de optimizacin con un parmetro. Se empieza con un comentario general;
seguido de un ejemplo detallado.

Notaremos primero que, sin ninguna prdida de generalidad, nosotros pode-


mos asumir slo problemas de maximizacin. Si el problema de optimizacin
es minimizar una funcin f, esto es equivalente a maximizar una funcin g,
donde g = -f, es decir:

min f x max g ( x) max f ( x).

Adems, podemos suponer que la funcin objetivo f toma valores positivos en


su dominio; de lo contrario podemos aadir alguna constante positiva C, es
decir,

max g ( x) maxg ( x) C .

Ahora supongamos que deseamos maximizar una funcin de k variables,


f x1 ,, xk : R k R . Supongamos que cada variable x i , puede tomar valores
de un dominio Di ai , bi R y f x1 ,, xk 0 para todo xi Di . Deseamos
optimizar la funcin f con alguna precisin requerida: supongamos que es
deseable seis lugares decimales para los valores de las variables.

Es claro que para lograr tal precisin cada dominio Di debera estar dentro de
bi ai 10 6 rangos de tamaos iguales. Denotemos por mi al entero mas pe-
queo tal como bi ai 10 6 2 mi 1 . Entonces la representacin que tiene
una variable x i codificado como una cadena binaria de longitud mi claramente
satisface la precisin requerida. Adicionalmente, la siguiente frmula interpreta
cada cadena:

bi ai
xi ai decimal (10010012 )
2 mi 1

donde decimal (cadena 2 ) representa el valor decimal de esa cadena binaria.

Ahora, cada cromosoma (como una solucin potencial) es representado por


una cadena binaria de longitud m i 1 m i ; los primeros m1 bits mapean un
k

valor dentro del rango a1 ,b1 , el siguiente grupo de m2 bits mapea un valor
dentro del rango a2 ,b2 , y as sucesivamente; el ltimo grupo mk bits mapea
un valor dentro del rango ak , bk .

9
Traducido desde el libro: Michalewicz, Z. Genetic Algoritms + Data Structures = Evolu-
tion Programs. USA: Editorial Springer; 1996.

Mg. Abraham Gamarra Moreno 255


Para inicializar una poblacin, podemos simplemente fijar algn nmero tama-
o_pop de cromosomas en una forma binaria. Sin embargo, si nosotros tene-
mos algn conocimiento a cerca de la distribucin ptima potencial, podemos
utilizar tal informacin para arreglar el conjunto inicial (potencial) de soluciones.

El resto del algoritmo es directo, en cada generacin evaluamos cada cromo-


soma (usando la funcin f en la secuencia decodificada de las variables), se-
lecciona una nueva poblacin con respecto a la probabilidad de distribucin
basada en valores de la capacidad, y altera los cromosomas en la nueva po-
blacin con los operadores mutacin o cruce. Despus de algn nmero de
generaciones, cuando no se observa mejora significativa, el mejor cromosoma
representa una solucin ptima (posiblemente el global). Frecuentemente pa-
ramos el algoritmo despus de un nmero fijo de iteraciones dependiendo de
la velocidad y el criterio del recurso.

Para el proceso de seleccin (seleccin de una nueva poblacin con respecto


a la probabilidad de distribucin basado en valores de la capacidad), una rueda
de ruleta con tamao de aberturas de acuerdo a la capacidad es usada. Cons-
truimos tal rueda de ruleta como sigue (aqu asumimos que los valores de ca-
pacidad son positivos).

1. Calcular el valor de la capacidad eval(vi ) para cada cromosoma


( i 1,, tamao _ pob ).

2. Encontrar el total de la capacidad de la poblacin:

F i 1
pop _ size
eval(vi )

3. Calcular la probabilidad de una seleccin p i para cada cromosoma


( i 1,, tamao _ pob ):

pi eval(vi ) / F

4. Calcular una probabilidad acumulada para cada cromosoma


vi
( i 1,, tamao _ pob ):

qi j 1 p j
i

El proceso de seleccin esta basada en hacer girar la rueda de ruleta tama-


o_pop veces; cada vez seleccionamos un simple cromosoma para una nueva
poblacin de la siguiente forma:

1. Generar un nmero aleatorio (flotante) r en el rango 01 .

2. Si r < q1, entonces se selecciona el primer cromosoma (v 1); de otra manera


selecciona el iavo cromosoma v i ( 2 i tamao _ pop ) tal que qi 1 r qi .

256 Tpicos y Aplicaciones de la Inteligencia Artificial


Obviamente, algunos cromosomas son seleccionados ms de una vez. Esto
es en concordancia con el Teorema del Esquema (vea el prximo captulo);
los mejores cromosomas obtienen mas copias, el promedio permanece parejo
y el peor desaparece.

Ahora estamos listos para aplicar el operador de recombinacin, cruce, a los


individuos en la nueva poblacin. Como lo mencionamos antes, uno de los pa-
rmetros un sistema gentico es la probabilidad de cruce p c . Esta probabilidad
nos da el nmero esperado pc tamao _ pob de cromosomas los cuales se
someten a la operacin de cruce. Procedemos de la siguiente forma:

Para cada cromosoma de la (nueva) poblacin:

3. Generar un nmero aleatorio (flotante) r en el rango 01 ;

4. Si r pc , seleccionar el cromosoma dado para cruce.

Ahora apareamos los cromosomas aleatoriamente seleccionados: para cada


par de parejas de cromosomas generamos un nmero entero aleatorio pos del
rango 1m 1 (m es la longitud total nmero de bits en un cromosoma).
El nmero pos indica la posicin del punto de cruce. Dos cromosomas

b b b
1 2 b
pos pos1 bm y c1c2 c posc pos1 cm
son reemplazados por un par de sus descendientes:

b b b
1 2 c
pos pos1 cm y c1c2 c posb pos1 bm

El siguiente operador, mutacin, es realizado en base a un bit-a-bit. Otro pa-


rmetro del sistema gentico, probabilidad mutacin p m , nos da el nmero es-
perado de bits mutados pm m tamao _ pob . Cada bit (en todos los cromoso-
mas de la poblacin entera) tienen una igual oportunidad de igual de someter-
se a la mutacin, es decir, cambiar de 0 a 1 o viceversa. As procedemos de la
siguiente forma:

Para cada cromosoma en la poblacin actual (es decir, despus del cruce) y
para cada bit dentro del cromosoma:

1. Generar un nmero aleatorio (flotante) r en el rango 01 .

2. Si r < p m , mutar el bit.

Siguiendo la seleccin, cruce y mutacin; la nueva poblacin est lista para la


siguiente evaluacin. Esta evaluacin esta usada para construir la probabilidad
de distribucin (para el siguiente proceso de seleccin), es decir, para la cons-
truccin de la rueda de la ruleta con el tamao de las aberturas acorde a los

Mg. Abraham Gamarra Moreno 257


valores actuales de la capacidad. El resto de la evolucin es simplemente una
repeticin cclica de los pasos anteriores (figura 6.13).

Figura 6.13.

El proceso entero es ilustrado por un ejemplo. Corremos una simulacin de un


algoritmo gentico para una funcin de optimizacin. Asumimos que el tamao
de la poblacin tamao_pop = 20, y las probabilidades de los operadores ge-
nticos son pc 0.25 y pm 0.01 .

Asumamos tambin que maximizamos la siguiente funcin:

f ( x1 , x2 ) 21.5 x1 sen(4x1 ) x2 sen(20x2 ) ,

donde: 3.0 x1 12.1 y 4.1 x2 5.8 . El grfico de la funcin f es dado en


la Figura 6.14.

Asumamos adems que la precisin requerida es de cuatro decimales para


cada variable. El dominio de la variable x1 tiene longitud 15.1; la precisin re-
querida implica que el rango [-3.0,12.1] debera ser dividido en al menos en
15.1*10000 rangos de igual tamao. Esto significa que 18 bits son requeridos
como la primera parte del cromosoma:

217151000218
El dominio de la variable x 2 tiene una longitud 1.7; el requerimiento de preci-
sin implica que el rango [4.1,5.8] debera estar dividido en al menos
1.7*10000 rangos de igual tamao. Esto significa que 15 bits son requeridos
como la segunda parte del cromosoma:

21417000215

258 Tpicos y Aplicaciones de la Inteligencia Artificial


La longitud total de un cromosoma (vector solucin) es entonces m=18+15=33
bits, los primeros 18 bits codifican a x1 y los restantes 15 bits (19 - 30) codifican
a x2.

Figura 6.14. Grfico de la funcin f(x1,x2)=21.5+x1 sen(4 x1)+ x2 sen(20 x2)

Consideremos un cromosoma ejemplo:

(010001001011010000111110010100010)
Los primeros 18 bits,

010001001011010000
representa

12.1 (3.0)
x1 3.0 decimal (010001001011010000 2 )
218 1
15.1
3.0 70352 3.0 4.052426 1.052426
262143

Los siguientes 15 bits

111110010100010

Mg. Abraham Gamarra Moreno 259


representa
5.8 4.1
x 2 4.1 decimal (111110010100010 2 )
215 1
1.7
4.1 31906. 4.1 1.655330 5.755330
32767

As el cromosoma

(010001001011010000111110010100010)

corresponde a (x1,x2) = (1.052426,5.755330). El valor de capacidad para este


cromosoma es:

f (1.052426,5.755330) 20.252640 .

Para optimizar la funcin f usando un algoritmo gentico, creamos una pobla-


cin de tamao_pop=20 cromosomas. Todos los 33 bits en todos los cromo-
somas son inicializados aleatoriamente.

Asumir que despus del proceso de iniciacin corregimos la siguiente pobla-


cin:

v1 = (100110100000001111111010011011111)

v2 = (111000100100110111001010100011010)

v3 = (000010000011001000001010111011101)

v4 = (100011000101101001111000001110010)

v5 = (000111011001010011010111111000101)

v6 = (000101000010010101001010111111011)

v7 = (001000100000110101111011011111011)

v8 = (100001100001110100010110101100111)

v9 = (010000000101100010110000001111100)

v10 = (000001111000110000011010000111011)

v11 = (011001111110110101100001101111000)

v12 = (110100010111101101000101010000000)

v13 = (111011111010001000110000001000110)

260 Tpicos y Aplicaciones de la Inteligencia Artificial


v14 = (010010011000001010100111100101001)

v15 = (111011101101110000100011111011110)

v16 = (110011110000011111100001101001011)

v17 = (011010111111001111010001101111101)

v18 = (011101000000001110100111110101101)

v19 = (000101010011111111110000110001100)

v20 = (101110010110011110011000101111110)

Durante la fase de evaluacin decodificamos cada cromosoma y calculamos


los valores de la funcin de capacidad de (x1,x2) apenas decodificados. Obte-
nemos:

Eval(v1) = f(6.084492, 5.652242) = 26.019600

Eval(v2) = f(10.348434, 4.380264) = 7.580015

Eval(v3) = f(-2.516603, 4.390381) = 19.526329

Eval(v4) = f(5.278638, 5.593460) = 17.406725

Eval(v5) = f(-1.225173, 4.734458) = 25.341160

Eval(v6) = f(-1.811725, 4.391937) = 18.100417

Eval(v7) = f(-0.991471, 5.680258) = 16.020812

Eval(v8) = f(4.910618, 4.703018) = 17..959701

Eval(v9) = f(0.795406, 5.381472) = 16.127799

Eval(v10) = f(-2.554851, 4.793707) = 21.278435

Eval(v11) = f(3.130078, 4.996097) = 23.410669

Eval(v12) = f(9.356179, 4.239457) = 15.011619

Eval(v13) = f(11.134646, 5.378671) = 27.316702

Eval(v14) = f(1.335944, 5.151378) = 19.876294

Eval(v15) = f(11.089025, 5.054515) = 30.060205

Eval(v16) = f(9.211598, 4.993762) = 23.867227

Eval(v17) = f(3.367514, 4.571343) = 13.696165

Eval(v18) = f(3.843020, 5.182266) = 15.414128

Mg. Abraham Gamarra Moreno 261


Eval(v19) = f(-1.746635, 5.395584) = 20.095903

Eval(v20) = f(7.935998, 4.757338) = 13.666916

Es claro, el cromosoma v15 es el ms fuerte, y el cromosoma v 2 es el ms d-


bil.

Ahora el sistema construye una rueda de ruleta para el proceso de seleccin.


El total de capacidad de la poblacin es:

F i 1 eval(vi ) 387.776822
20

La probabilidad de una seleccin p i ; para cada cromosoma v i ( i 1,,20 ) es :

p1=eval(v1)/F = 0.067099 p12=eval(v12)/F = 0.038712

p2=eval(v2)/F = 0.019547 p13=eval(v13)/F = 0.070444

p3=eval(v3)/F = 0.050355 p14=eval(v14)/F = 0.051257

p4=eval(v4)/F = 0.044889 p15=eval(v15)/F = 0.077519

p5=eval(v5)/F = 0.065350 p16=eval(v16)/F = 0.061549

p6=eval(v6)/F = 0.046677 p17=eval(v17)/F = 0.035320

p7=eval(v7)/F = 0.041315 p18=eval(v18)/F = 0.039750

p8=eval(v8)/F = 0.046315 p19=eval(v19)/F = 0.051823

p9=eval(v9)/F = 0.041590 p20=eval(v20)/F = 0.035244

p10=eval(v10)/F = 0.054873

p11=eval(v11)/F = 0.060372

Las probabilidades acumuladas q i para cada cromosoma v i ( i 1,,20 ) son:

q1= 0.067099 q6= 0.293917

q2= 0.086647 q7= 0.335232

q3= 0.137001 q8= 0.381546

q4= 0.181890 q9= 0.423137

q5= 0.247240 q10= 0.478009

262 Tpicos y Aplicaciones de la Inteligencia Artificial


q11= 0.538381 q16= 0.837863

q12= 0.577093 q17= 0.873182

q13= 0.647537 q18= 0.912932

q14= 0.698794 q19= 0.964756

q15= 0.776314 q20= 1.000000

Ahora estamos listos para rodar la rueda de la ruleta 20 veces, cada vez selec-
cionamos un solo cromosoma para la nueva poblacin. Asumamos que la se-
cuencia (aleatoria) de 20 nmeros de rango [0..1] es:

0.703899

0.513870 0.389647

0.175741 0.277226

0.308652 0.368071

0.534534 0.983437

0.947628 0.005398

0.171736 0.765682

0.702231 0.646473

0.226431 0.767139

0.494773 0.780237

0.424720

El primer nmero r = 0.513870 es mayor que q10 y menor que q11, significando
que el cromosoma v11 es seleccionado para la nueva poblacin; el segundo
nmero r = 0.175741 es mayor que q3 y menor que q4, significando que el cro-
mosoma v4 es seleccionado para la nueva poblacin.

Finalmente la nueva poblacin consiste de los siguientes cromosomas:

v1 = (011001111110110101100001101111000) (v 11)

v2 =(100011000101101001111000001110010) (v 4)

v3 =(001000100000110101111011011111011) (v7)

Mg. Abraham Gamarra Moreno 263


v4 =(011001111110110101100001101111000) (v 11)

v5 =(000101010011111111110000110001100) (v 19)

v6 =(100011000101101001111000001110010) (v 4)

v7 =(111011101101110000100011111011110) (v 15)

v8 =(000111011001010011010111111000101) (v 5)

v9 =(011001111110110101100001101111000) (v11)

v10 =(000010000011001000001010111011101) (v 3)

v11 =(111011101101110000100011111011110) (v 15)

v12 =(010000000101100010110000001111100) (v 9)

v13 =(000101000010010101001010111111011) (v 6)

v14 =(100001100001110100010110101100111) (v8)

v15 =(101110010110011110011000101111110) (v 20)

v16 =(100110100000001111111010011011111) (v 1)

v17 =(000001111000110000011010000111011) (v 10)

v18 =(111011111010001000110000001000110) (v 13)

v19 =(111011101101110000100011111011110) (v 15)

v20 =(110011110000011111100001101001011) (v 16)

Ahora estamos listos para aplicar el operador de recombinacin, cruce, a los


individuos de la nueva poblacin (vectores vi). La probabilidad de cruce es pc=
0.25; as esperamos que (en promedio) el 25% de los cromosomas (es decir, 5
de 20) se sometan al cruce. Procedemos de la siguiente manera: para cada
cromosoma en la (nueva) poblacin generamos un nmero aleatorio r en el
rango [0...1]; si r < 0.25 seleccionamos el cromosoma dado para cruce.

Asumamos que la secuencia de nmeros aleatorios es:

0.822951 0.917204

0.151932 0.519760

0.625477 0.401154

0.314685 0.606758

0.346901 0.785402

264 Tpicos y Aplicaciones de la Inteligencia Artificial


0.031523 0.581893

0.869921 0.389248

0.166525 0.200232

0.674520 0.355635

0.758400 0.826927

Esto significa que los cromosomas v2 , v11 , v13 y v18 fueron seleccionados
para cruzarse (tuvimos suerte: el nmero de cromosomas seleccionados fue
par, as podemos aparearlos fcilmente. Si el nmero de cromosomas selec-
cionado fue impar, deberamos tambin adicionar cualquier cromosoma extra o
eliminar uno de los cromosomas seleccionados esta seleccin es echo alea-
toriamente tambin). Ahora apareamos los cromosomas seleccionados aleato-
riamente: decimos, los primeros dos (es decir, v2 y v11) y los dos siguientes
(es decir, v13 y v18) son completamente emparejados. Para cada una de estas
dos parejas, generamos un nmero entero aleatorio pos en el rango [1..32] (33
es longitud total - nmero de bits en el cromosoma). El nmero pos indica la
posicin del punto de cruce. El primer par de cromosomas es:

v2 =(100011000 | 101101001111000001110010)

v11 =(111011101 | 101110000100011111011110)

y el nmero generado pos = 9 . Estos cromosomas son cortados despus del


noveno bit y reemplazamos por una pareja de sus descendientes:

v2 = (100011000 | 101110000100011111011110)

v11 = (111011101 | 101101001111000001110010)

El segundo par de cromosomas es:

v13 = (00010100001001010100 | 1010111111011)

v18 = (11101111101000100011 | 0000001000110)

y el nmero generado pos = 20. Estos cromosomas son reemplazados por una
pareja de cromosomas de sus descendientes:

v13 = (00010100001001010100 | 0000001000110)

v18 = (11101111101000100011 | 1010111111011)

La versin actual de la poblacin es:

v1 = (011001111110110101100001101111000)

v2= (100011000101110000100011111011110)

Mg. Abraham Gamarra Moreno 265


v3= (001000100000110101111011011111011)

v4= (011001111110110101100001101111000)

v5= (000101010011111111110000110001100)

v6= (100011000101101001111000001110010)

v7= (111011101101110000100011111011110)

v8= (000111011001010011010111111000101)

v9= (011001111110110101100001101111000)

v10= (000010000011001000001010111011101)

v11= (111011101101101001111000001110010)

v12= (010000000101100010110000001111100)

v13= (000101000010010101000000001000110)

v14= (100001100001110100010110101100111)

v15= (101110010110011110011000101111110)

v16= (100110100000001111111010011011111)

v17= (000001111000110000011010000111011)

v18= (111011111010001000111010111111011)

v19= (111011101101110000100011111011110)

v20= (110011110000011111100001101001011)

El siguiente operador, mutacin, es realizado en base bit a bit. La probabilidad


de mutacin Pm = 0.01, as nosotros esperamos que (en promedio) 1% de bits
se sometern a mutacin. Hay m x tamao_pob = 33 x 20 = 660 bits en la po-
blacin entera, esperamos (en promedio) 6.6 mutaciones por generacin. Cada
bit tiene igual oportunidad para ser mutado, as, para cada bit en la poblacin
generamos un nmero aleatorio r del rango[0..1]; si r < 0,01, mutamos el bit.

Esto significa que tenemos que generar 660 nmeros aleatorios. En una mues-
tra corrida, 5 de estos nmeros fueron ms pequeos que 0.01, el nmero del
bit y el nmero aleatorio son listados abajo:

Bit position Nmero Aleatorio

266 Tpicos y Aplicaciones de la Inteligencia Artificial


112 0.000213

349 0.009945

418 0.008809

429 0.005425

602 0.002836

La siguiente tabla traduce la posicin del bit en el nmero de cromosoma y el


nmero de bit dentro del cromosoma:

Esto significa que 4 cromosomas son afectados por el operador de mutacin,


uno de los cromosomas (el 13avo) tiene dos bits cambiados.

La poblacin final es listada abajo; los bits mutados, estn en negrita.

Dejamos preparado para modificar los cromosomas: la poblacin es listada


como un nuevo vector vi:

v1 = (011001111110110101100001101111000)

v2= (100011000101110000100011111011110)

v3= (001000100000110101111011011111011)

v4= (011001111110010101100001101111000)

v5= (000101010011111111110000110001100)

Mg. Abraham Gamarra Moreno 267


v6= (100011000101101001111000001110010)

v7= (111011101101110000100011111011110)

v8= (000111011001010011010111111000101)

v9= (011001111110110101100001101111000)

v10= (000010000011001000001010111011101)

v11= (111011101101101001011000001110010)

v12= (010000000101100010110000001111100)

v13= (000101000010010101000100001000111)

v14= (100001100001110100010110101100111)

v15= (101110010110011110011000101111110)

v16= (100110100000001111111010011011111)

v17= (000001111000110000011010000111011)

v18= (111011111010001000111010111111011)

v19= (111011111101110000100011111011110)

v20= (110011110000011111100001101001011)

Tenemos completada slo una iteracin (es decir, una generacin) del bucle
while en el procedimiento gentico (Figura 0.1 de la Introduccin). Es intere-
sante examinar el resultado del proceso de evaluacin de la nueva poblacin.
Durante la fase de evaluacin decodificamos cada cromosoma y calculamos la
los valores de la funcin de capacidad de (x 1,x2) valores ya decodificados. Ob-
tenemos:

Eval(v1)=f(3.130078, 4.996097) = 23.410669

Eval(v2)=f(5.279042, 5.054515) = 18.201083

Eval(v3)=f(-0.991471, 5.680258) = 16.020812

Eval(v4)=f(3.128235, 4.996097))=23.412613

Eval(v5)=f(-1.746635, 5.395584))=20.095903

Eval(v6)=f(5.278638, 5.593460))=17.406725

Eval(v7)=f(11.089025, 5.054515))=30.60205

Eval(v8)=f(-1.255173, 4.734458))=25.341160

268 Tpicos y Aplicaciones de la Inteligencia Artificial


Eval(v9)=f(3.130078, 4.996097))=23.410669

Eval(v10)=f(-2.516603, 4.390381))=19.526329

Eval(v11)=f(11.088621, 4.743434) =33.351874

Eval(v12)=f(0.795406, 5.381472))=16.127799

Eval(v13)=f(-1.811725, 4.209937))=22.692462

Eval(v14)=f(4.910618, 4.703018))=17.959701

Eval(v15)=f(7.935998, 4.757338))=13.666916

Eval(v16)=f(6.084492, 5.652242))=26.019600

Eval(v17)=f(-2.554851, 4.793707))=21.278435

Eval(v18)=f(11.134646, 5.65666976))=27.591064

Eval(v19)=f(11.059532, 5.054515))=27.608441

Eval(v20)= f(9.211598, 4.993762))=23.867227

Note que la capacidad total de la nueva poblacin F es 447.049688, ms alto


que la capacidad total de la poblacin anterior, 387.776822. Tambin, el mejor
cromosoma ahora (v11) tiene una mejor evaluacin (33.135864) que el mejor
cromosoma (v15) de la poblacin anterior (30.060205).

Ahora estamos listos para correr el proceso de seleccin otra vez y aplicar los
operadores genticos, evalar la siguiente generacin, etc. Despus de 1000
generaciones la poblacin es:

v1 = (111011110110011011100101010111011)

v2= (111001100110000100010101010111000)

v3= (111011110111011011100101010111011)

v4= (111001100010000110000101010111001)

v5= (111011110111011011100101010111011)

v6= (111001100110000100000100010100001)

v7= (110101100010010010001100010110000)

v8= (111101100010001010001101010010001)

v9= (111001100010010010001100010110001)

v10= (111011110111011011100101010111011)

Mg. Abraham Gamarra Moreno 269


v11= (110101100000010010001100010110000)

v12= (110101100010010010001100010110001)

v13= (111011110111011011100101010111011)

v14= (111001100110000100000101010111011)

v15= (111001101010111001010100110110001

v16= (111001100110000101000100010100001)

v17= (111001100110000100000101010111011)

v18= (111001100110000100000101010111001

v19= (111101100010001010001110000010001)

v20= (111001100110000100000101010111001)

Los valores de la capacidad son:

Eval(v1)=f(11.120940, 5.092514)=30.298543

Eval(v2)=f(10.588756, 4.667358)=26.86.9724

Eval(v3)=f(11.124627, 5.092514)=30.346567

Eval(v4)=f(10.574525, 4.242410)=31.933120

Eval(v5)=f(11.124627, 5.092514)=30.316575

Eval(v6)=f(10.588756, 4.214603)=34.356125

Eval(v7)=f(9.631066, 4.427881)=35.458636

Eval(v8)=f(11.518106, 4.452835)=23.30.9078

Eval(v9)=f(10.574816, 4.427933)=34.393820

Eval(v10)=f(11.124627, 5.092514)=30.306575

Eval(v11)=f(9.623693, 4.427881)=35.477928

Eval(v12)=f(9.631066, 4.427933)=35.456066

Eval(v13)=f(11.124627, 5.092514)=30.316575

Eval(v14)=f(10.588756, 4.242514)=32.932098

Eval(v15)=f(10.606555, 4.653714)=30.746768

Eval(v16)=f(10.588814, 4.214603)=34.359545

270 Tpicos y Aplicaciones de la Inteligencia Artificial


Eval(v17)=f(10.588756, 4.242514)=32.932098

Eval(v18)=f(10.588756, 4.242410)=32.956664

Eval(v19)=f(11.518106, 4.472757)=19.669670

Eval(v20= f(10.588756, 4.242410)=32.956664

Sin embargo, si miramos cuidadosamente el progreso durante la corrida, po-


demos descubrir que en las generaciones tempranas los valores de la capaci-
dad de algunos cromosoma fueron mejores que el valor 35.477938 de el mejor
cromosoma despus de 1000 generaciones. Por ejemplo, el mejor cromosoma
en la generacin 396 tuvo el valor de 38.827953. Esto es debido al error esto-
cstico del muestreo.

Es relativamente fcil guardar la pista del mejor individuo en la evolucin del


proceso. Es costumbre (en aplicaciones de algoritmos genticos) guardar el
individuo el mejor de siempre en una localizacin separada; de esta forma, el
algoritmo reportara el mejor valor encontrado durante el proceso entero (en
oposicin al mejor valor en la poblacin final).

6.4. EJEMPLO DE OPTIMIZACIN DE UNA FUNCIN CON


C++
La funcin a opitimizar es:

f ( x) x * sin(10 * x) 1.0

Utilizando el siguiente algoritmo:

t0
Inicializar P(t)
Evaluar P(t)
Mientras (no condicin de terminacin)
t=t+1
Seleccione padres de P(t-1)
alterar P(t)
Evaluar P(t)
Fin_mientras

Los parmetros utilizados son: tamao de la poblacin igual a 10, probabilidad


de cruce es 0.25 y probabilidad de mutacin es 0.01.

Para almacenar el dominio de 1 a 2 con una cifra de precisin se necesita


3*10 = 30, por lo que la longitud requerida es de 5 bits, porque 24=16 <= 30 <=
25=32.

El programa termina despus de 1000 generaciones y para cada generacin


que sea diferente al anterior se imprime el nmero de generacin, el mejor va-
lor obtenido en esta generacin, el mejor valor obtenido hasta la generacin
ejecutada.

Mg. Abraham Gamarra Moreno 271


El cdigo del programa en C++ es:

#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <iostream.h>

#define TAMANO_POB 10
#define LONG_CROM 5
#define PCRUCE 0.25
#define PMUTACION 0.01

struct poblacion{
double valor;
unsigned int cromosoma[LONG_CROM];
double capacidad;
double frec;
double frec_ac;
};

struct poblacion pob[TAMANO_POB],best,bestgen;


struct poblacion nueva_pob[TAMANO_POB];

void initialize_poblacion();
double funcion(double x);
double valor(int indiv,int pos_ini,int pos_fin,
int lim_inf,int lim_sup);
void evaluar();
void mejor();
float aleatorio();
int alea_int(int lim_inf,int lim_sup);
void seleccion();
void cruce();
void crossover(int parent1,int parent2);
void mutacion();
void mutation(int pos);

void main(){
int t;
double cap_ant;

t=0;
initialize_poblacion();
evaluar();
printf("%10s %10s %10s %10s %10s\n",
"gen", "best val", "best cap", "b gen val",
"b gen cap");
printf(
"%10d %10.6f %10.6f %10.6f %10.6f\n",
t, best.valor, best.capacidad,
bestgen.valor,bestgen.capacidad);
cap_ant=best.capacidad;
while(t<1000){
t++;
seleccion();
cruce();
mutacion();
evaluar();

272 Tpicos y Aplicaciones de la Inteligencia Artificial


if(best.capacidad!=cap_ant){
printf(
"%10d %10.6f %10.6f %10.6f %10.6f\n", t,
best.valor, best.capacidad,
bestgen.valor, bestgen.capacidad);
cap_ant=best.capacidad;
}
}
}

void initialize_poblacion(){
int i,j;

srand( (unsigned)time( NULL ) );


for(i=0;i<TAMANO_POB;i++)
for(j=0;j<LONG_CROM;j++)
pob[i].cromosoma[j]=alea_int(0,1);
}

float aleatorio(){
return (float) (rand()*10001/
(RAND_MAX-1))/10000;
}

int alea_int(int lim_inf,int lim_sup){


return (int) (aleatorio()*
(lim_sup-lim_inf+1))+lim_inf;
}

void evaluar(){
int i;
double suma=0;

for(i=0;i<TAMANO_POB;i++){
pob[i].valor=valor(i,0,LONG_CROM-1,-1,2);
pob[i].capacidad=funcion(pob[i].valor);
suma+=pob[i].capacidad;
}
pob[0].frec=pob[0].capacidad/suma;
pob[0].frec_ac=pob[0].frec;
for(i=1;i<TAMANO_POB;i++){
pob[i].frec=pob[i].capacidad/suma;
pob[i].frec_ac=pob[i-1].frec_ac +
pob[i].frec;
}
mejor();
}

double funcion(double x){


return x*sin(x*10*3.1416)+1.0;
}

double valor(int indiv,int pos_ini,int pos_fin,


int lim_inf,int lim_sup){

double factor,val;
int i;

factor=1;
val=0;

Mg. Abraham Gamarra Moreno 273


for(i=pos_fin;i>=pos_ini;i--){
val+=
(pob[indiv].cromosoma[i] * factor);
factor*=2;
}
val=lim_inf +
(lim_sup-lim_inf) /
(pow(2,pos_fin-pos_ini+1)-1) * val;
return val;
}

void mejor(){
int i;

i=0;
best=pob[i];
for(i=1;i<TAMANO_POB;i++)
if(best.capacidad<pob[i].capacidad)
best=pob[i];
if(bestgen.capacidad<best.capacidad)
bestgen=best;

void seleccion(){
float aleat;
int i,j;

for(i=0;i<TAMANO_POB;i++){
aleat=aleatorio();
j=0;
while(aleat>pob[j].frec_ac &&
j<TAMANO_POB-1) j++;
nueva_pob[i]=pob[j];
}
for(i=0;i<TAMANO_POB;i++)
pob[i]=nueva_pob[i];
}

void cruce(){
int selec[TAMANO_POB],indice,i;
float aleat;

indice=-1;
for(i=0;i<TAMANO_POB;i++){
aleat=aleatorio();
if(aleat<PCRUCE){
indice++;
selec[indice]=i;
}
}
if(indice % 2) indice--;
for(i=0;i<indice/2;i++)
crossover(selec[i],selec[indice/2+i]);
}

void crossover(int padre1,int padre2){


int punto_cruce,i;
unsigned int temp;

274 Tpicos y Aplicaciones de la Inteligencia Artificial


punto_cruce=alea_int(0,LONG_CROM-2);
for(i=punto_cruce+1;i<LONG_CROM;i++){
temp=pob[padre1].cromosoma[i];
pob[padre1].cromosoma[i]=
pob[padre2].cromosoma[i];
pob[padre2].cromosoma[i]=temp;
}
}

void mutacion(){
int selec[TAMANO_POB],indice,i;
float aleat;

indice=-1;
for(i=0;i<TAMANO_POB;i++){
aleat=aleatorio();
if(aleat<PMUTACION){
indice++;
selec[indice]=i;
}
}
for(i=0;i<indice;i++) mutation(selec[i]);
}

void mutation(int pos){


int punto;

punto=alea_int(0,LONG_CROM-1);
pob[pos].cromosoma[punto]=
!pob[pos].cromosoma[punto];
}

La salida del programa es:

El mejor valor de de x= 1.419355 y el mejor valor para la funcin


f ( x) x * sin(10 * x) 1.0 , luego de reemplazar x es 1.810954.

Mg. Abraham Gamarra Moreno 275


276 Tpicos y Aplicaciones de la Inteligencia Artificial
CAPITULO SIETE
PLANIFICACIN

La planificacin en Ia Inteligencia Artificial es la capacidad de sintetizar se-


cuencias de acciones con el objetivo de alcanzar una meta. Por lo tanto la re-
solucin de un problema de planificacin consiste en determinar la secuencia
de acciones que permiten, a partir de un estado inicial, alcanzar un estado
objetivo o meta.

Otra definicin es:

La planificacin consiste en dar un rea de dominio (conjunto de estados y


operadores) y un problema (estado inicial y conjunto de metas); y basado en
lo anterior se obtiene un plan (conjunto de operadores y una ejecucin de or-
den parcial a travs de estos), tal que, cuando se ejecuten, transforman el es-
tado inicial a un estado donde todas las metas son alcanzadas.

Un ejemplo clsico del uso de planificacin es la manipulacin de bloques a


travs de un brazo de robot (Figura 7.1). Los elementos que intervienen son:

Una superficie plana.

Una serie de bloques cbicos.

Un brazo robotizado, que puede coger un bloque cada vez.

Un bloque puede estar sobre la mesa o apilado sobre otro bloque.

Mg. Abraham Gamarra Moreno 277


Estado Inicial Estado Final

Figura 7.1. Manipulacin de bloques a travs de un brazo de robot.

Otro ejemplo es el movimiento de un robot por una rejilla (Figura 7.2), donde el
robot ha de desplazarse, desde una posicin inicial a una posicin final. Los
elementos son:

8 movimientos posibles: N, S, E, O, NO, NE, SO, SE.

En algunas de las rejillas existen obstaculos no franqueables.

Figura 7.2. Movimiento de un robot por una rejilla.

Entre las tcnicas de planificacin se tienen: Strips Algorithms (1970), Partial


Order Planning (1980), Graphplan Planning (1995), SAT Planning(1996), Heu-
ristic Search Planning (1997) y Hierarchical Planning (1994).

278 Tpicos y Aplicaciones de la Inteligencia Artificial


7.1. PLANIFICACIN MEDIANTE STRIPS10
El planteamiento STRIPS (STandford Research Institute Problem Solver) es un
lenguaje para representar problemas de planificacin. El anlisis de la planifi-
cacin mediante STRIPS utiliza la Figura 7.1.

7.1.1. REPRESENTACIN DE UN ESTADO EN STRIPS

La Figura 7.3, muestra la representacin de un estado, del ejemplo de la mani-


pulacin de bloques.

Figura 7.3. Representacin de un estado, del ejemplo de la manipulacin de bloques.

7.1.2. REPRESENTACIN DE OBJETIVOS EN STRIPS

Un objetivo es la descripcin de los estados finales. La Figura 7.4, muestra


algunos ejemplos de objetivos de la manipulacin de bloques.

7.1.3. DESCRIPCIN DE ACCIONES EN STRIPS

La descripcin de la accin de un operador en estilo STRIPS, se representa


mediante:

10
Basado en los apuntes de: Ruiz Jos. Inteligencia Artificial I [en linea]. Espaa:
Universidad de Sevilla; 2007. [fecha de acceso 13 de diciembre de 2007]. URL dispo-
nible en: http://www.cs.us.es/cursos/ia1-2006/

Mg. Abraham Gamarra Moreno 279


Precondicin: lista de literales que deben ser ciertos para que el operador
pueda ser aplicado.

Borrado: lista de tomos que dejan de ser ciertos una vez se ha aplicado el
operador.

Adicin: lista de tomos que pasan a ser ciertos una vez se ha aplicado el
operador.

Los operadores para la manipulacin de bloques, se muestran en la figura Fi-


gura 7.5 y Figura 7.6, donde P es la precondicin, B es borrado y A es adicin.

Figura 7.4. Ejemplos de objetivos de la manipulacin de bloques.

Figura 7.5. Operadores para la manipulacin de bloques I.

280 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 7.6. Operadores para la manipulacin de bloques II.

7.1.4. APLICACIN DE LOS OPERADORES

Si un estado satisface la precondicin de un operador, se dice que este es


aplicable.

Por ejemplo, hablaremos de DESAPILAR(B,A) para referirnos a DESAPI-


LAR(x,y) con la sustitucin {x=A,y=B}

Las Figura 7.7 y Figura 7.8 muestran algunos ejemplos de la aplicacin de


operadores.

Figura 7.7. Ejemplo de la aplicacin del operador DESAPILAR.

Mg. Abraham Gamarra Moreno 281


Figura 7.8. Ejemplo de la aplicacin del operador BAJAR.

7.2. EJEMPLO DE PLANIFICACIN MEDIANTE STRIPS:


CAMBIO DE RUEDA PINCHADA
Para la planificacin del cambio de una rueda pinchada se tienen los siguientes
objetos: RUEDA-REPUESTO, RUEDA-PINCHADA, EJE, MALETERO, SUELO

El predicado es: EN(-,-)

El estado inicial es: EN(RUEDA-PINCHADA,EJE), EN(RUEDA-


REPUESTO,MALETERO)

El estado final es: EN(RUEDA-REPUESTO,EJE)

Las acciones en el cambio de rueda pinchada se muestran en la Figura 7.9.

7.3. EJEMPLO DE PLANIFICACIN MEDIANTE STRIPS:


REPRESENTACIN DEL PROBLEMA DEL MOVIMIENTO
DE ROBOT POR UNA REJILLA
La planificacin de la representacin del problema del movimiento de robot,
considera que un robot ha de desplazarse por una rejilla, desde una posicin
inicial a una final (Figura 7.10).

Se tiene en consideracin lo siguiente:

8 movimientos posibles: N, S, E, O, NO, NE, SO, SE

282 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 7.9. Acciones en el cambio de rueda pinchada.

Figura 7.10. Representacin del problema del movimiento de robot.

Mg. Abraham Gamarra Moreno 283


En algunas de las rejillas existen obstculos no franqueables

Se utiliza los predicados: ROBOT-EN(-,-) y LIBRE(-,-)

El estado inicial (casillas sin obstculos y posicin del robot) es:

LIBRE(1,1),..., LIBRE(6,2), LIBRE(11,2),..., LIBRE(12,12), ROBOT-EN(2,3).

El objetivo es: ROBOT-EN (10,11)

Una de las acciones es (las siete restantes son anlogos):

MOVER-SE(x,y)

P: ROBOT-EN(x,y),LIBRE(x+1,y-1)

B: ROBOT-EN(x,y),LIBRE(x+1,y-1)

A: ROBOT-EN(x+1,y-1),LIBRE(x,y)

7.4. PLANIFICACIN MEDIANTE ENCADENAMIENTO HACIA


ADELANTE
La planificacin mediante encadenamiento hacia adelante, trata de ubicar el
estado que continua al estado actual (Figura 7.11).

Desgraciadamente, el planteamiento obliga a entablar una batalla contra el


crecimiento exponencial del rbol, una batalla que probablemente se perdera
en cualquier problema de tamao razonable, dado que se puede producir mu-
chas ramificaciones, inclusive para acciones irrelevantes.

7.5. PLANIFICACIN MEDIANTE ENCADENAMIENTO HACIA


ATRS
La planificacin mediante encadenamiento hacia atrs, trata de ubicar el esta-
do anterior, que existe, con respecto estado actual (Figura 7.12).

La planificacin mediante encadenamiento hacia atrs, comienza en un objeti-


vo y en cada estado se generan todos los posibles predecesores. Se finaliza
cuando se alcanza un objetivo que es cierto en el estado inicial.

284 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 7.11. Planificacin mediante encadenamiento hacia adelante.

Figura 7.12. Planificacin mediante encadenamiento hacia atrs.

Mg. Abraham Gamarra Moreno 285


7.6. PLANIFICACIN CON PRODIGY 4.011
Este tem explica como utilizar el planificador Prodigy4.0. Un planificador es un
programa de ordenador que permite obtener planes para resolver problemas.
Como ejemplo se utiliza un conocido dominio de planificacin: la logstica de
transporte. En este dominio se intentan resolver problemas en los que se dis-
pone de varios medios de transporte, tales como camiones, barcos, aviones,
etc, cuyo objetivo es transportar mercancas desde un lugar a otro. La solucin
a cada problema viene dada por la secuencia de pasos y los medios de trans-
porte que se usan en cada paso para transportar los objetos a su destino.

Un problema de planificacin es un par (estado inicial, estado final), donde el


estado inicial es la situacin de la que se parte, y el estado final es el estado al
que queremos llegar.

Un plan es la secuencia de pasos que hay que dar para transformar el estado
inicial en el estado final. En la Figura 7.13, se puede ver un problema sencillo
en el dominio logstico, en el que hay que llevar un paquete que est en Bara-
jas a Cuatro Vientos utilizando un avin que inicialmente est en Cuatro Vien-
tos:

Figura 7.13. Dominio logstico: llevar un paquete que est en Barajas a Cuatro Vientos utilizando
un avin que inicialmente est en Cuatro Vientos.

La secuencia de pasos (o plan) a utilizar en el caso anterior sera:

Mover el avin de Cuatro Vientos a Barajas

Cargar la mercanca en el avin (en Barajas)

Mover el avin a Cuatro Vientos

Descargar la mercanca del avin (en Cuatro Vientos)

Los problemas de planificacin de este tipo se pueden representar utilizando


estados y operadores. Los estados representan tanto el estado inicial como
los estados intermedios por los que hay que pasar hasta llegar a la solucin.

Los estados se pueden representar utilizando lgica de predicados, de manera


que la situacin inicial anterior se podra escribir como:

11
Basado en los apuntes de: Aler Ricardo. Tutorial de Prodigy4.0 [en linea]. Espaa:
Dpto. Inteligencia Artificial - UNED; 2007. [fecha de acceso 13 de diciembre de
2007]. URL disponible en: http://www.ii.uned.es/superior/cuarto/IAIngCon/

286 Tpicos y Aplicaciones de la Inteligencia Artificial


Avin_situado_en (avin, Cuatro Vientos)

Mercanca_situada_en (mercanca, Barajas)

Los operadores representan los posibles pasos intermedios que se pueden


dar para cambiar un estado en otro. Por ejemplo, en el dominio logstico se
dispone de los siguientes operadores:

Mover un avin de un aeropuerto a otro.

Mover un camin entre dos oficinas de correos, o entre una oficina y un


aeropuerto.

Cargar mercancas en aviones o camiones.

Descargar mercancas de aviones o camiones.

Estos operadores se pueden representar en un formalismo parecido al de las


reglas SI ... ENTONCES de los sistemas de produccin. Por ejemplo, el opera-
dor para descargar un avin podra representarse como:

OPERADOR Descargar
SI Avin_situado_en (<avin>, <lugar>)
Mercanca_cargada_en_avin (<mercanca>, <avin>)
ENTONCES Quitar Mercanca_cargada_en_avin (<mercanca>, <avin>)
Aadir Mercanca_situada_en (<mercanca>, <lugar>)

(donde <avin>, <lugar> y <mercanca> son variables)

En caso de que se cumplan las condiciones de que un avin est situado en


un lugar y ese mismo avin lleva cargada una mercanca, entonces el operador
anterior podra cambiar el estado actual en otro estado (ver parte derecha de la
regla) en el que se ha eliminado el hecho de que la mercanca estaba cargada
en el avin ("Quitar") y se ha aadido el hecho de que ahora la mercanca est
situada en el lugar ("Aadir"). Ntese que el anterior operador est parametri-
zado: sus variables pueden tomar distintos valores en un mismo estado. Por
ejemplo, si tuvieramos un estado con un avin en Barajas y otro en Cuatro
Vientos y ambos llevaran una mercanca a bordo, las variables del operador de
descarga podra tener dos posibles asignaciones de valores. O bien:

Descargar (<avin> = primer avin,


<lugar> = Cuatro Vientos,
<mercancia> = primera mercanca)

o bien:

Descargar (<avin> = segundo avin,


<lugar> = Barajas,
<mercancia> = segunda mercanca)

Mg. Abraham Gamarra Moreno 287


Cuando a un operador parametrizado se le dan valores a sus variables, se dice
que se ha instanciado. Por tanto, un plan consiste de una secuencia de ope-
radores instanciados. En el ejemplo que nos ocupa, el plan sera;

Mover_avin (<avin>=avin, <desde>=Cuatro Vientos, <hasta>=Barajas)


Cargar_avin (<mercanca>=mercanca, <avin>=avin)
Mover_avin (<avin>=avin, <desde>=Barajas, <hasta>=Cuatro Vientos)
Descargar_avin (<mercanca>=mercanca, <avin>=avin)

Si aplicamos esta secuencia de operadores al estado inicial, veremos que ste


se transforma en el estado final.

En resumen, un problema de planificacin consiste en un estado inicial del


que se parte, y un estado final al que se quiere llegar. La solucin consiste en
encontrar una secuencia de operadores instanciados (o plan) que transfor-
me el estado inicial en el estado final. Los estados se representan utilizando
lgica de predicados. Los operadores se representan utilizando reglas Si
Condiciones ENTONCES Acciones que nos dicen bajo que condiciones pode-
mos utilizar el operador, y en caso afirmativo, las acciones necesarias para
cambiar el estado actual. Al conjunto de los predicados que se necesitan para
representar a los estados y a los operadores se lo denomina dominio. Un pla-
nificador es un programa de ordenador que toma un dominio y un problema y
devuelve un plan.

Como se ha visto en teora, existen diversas maneras de planificar. En particu-


lar, Prodigy4.0 es un planificador no lineal que usa la heurstica medios-fines.
Es decir, parte de los fines (o metas u objetivos) que todava no estn resuel-
tos y determina que operadores pueden alcanzar esas metas (como hace
STRIPS). Una vez hecho eso, substituye la meta original por las precondicio-
nes que son necesarias para aplicar (o ejecutar) el operador. Pero adems,
Prodigy4.0 tambin guarda el estado actual de planificacin, que inicialmente
es el estado inicial del problema a resolver. Si las precondiciones de algn
operador elegido anteriormente son ciertas en dicho estado actual, Prodigy4.0
puede tomar la decisin de aplicarlo, modificando as el estado actual. De esta
manera, Prodigy4.0 es capaz de acercar el estado inicial hacia las metas, de
manera que el mecanismo de medios-fines (que se mueve desde las metas
hacia el estado inicial) sea capaz de llegar antes al estado inicial. En cierto
sentido, Prodigy4.0 avanza en dos direcciones: desde las metas hacia el esta-
do inicial y desde el estado inicial hacia las metas. El problema se resolver
cuando ambos frentes se junten.

7.6.1. ESPECIFICACIN DE DOMINIOS EN PRODIGY4.0

Una vez comprendidos los conceptos bsicos, es necesario saber como se


pueden definir en la prctica dominios y problemas en Prodigy4.0. Se comen-
zar por la descripcin del dominio, es decir, predicados y operadores.

Tipos de las variables

288 Tpicos y Aplicaciones de la Inteligencia Artificial


En Prodigy4.0, las variables de los operadores pueden tener tipos, y estos ti-
pos estn organizados en una jerarqua de tipos. Por ejemplo, en el dominio
logstico hay tipos de objetos: transportes, mercancas, ciudades y lugares
dentro de una ciudad. A su vez, los transportes pueden ser de dos tipos: ca-
miones y aviones. Y los lugares pueden ser tambin de dos tipos: agencias de
transporte y aeropuertos. En el lenguaje de Prodigy4.0, esta jerarqua de tipos
se especificara as:

(ptype-of MERCANCIA :top-type)


(ptype-of TRANSPORTE :top-type)
(ptype-of CAMION TRANSPORTE)
(ptype-of AVION TRANSPORTE)
(ptype-of LUGAR :top-type)
(ptype-of AEROPUERTO LUGAR)
(ptype-of AGENCIA LUGAR)
(ptype-of CIUDAD :top-type)

:top-type es el tipo de mayor nivel, y de l penden aquellos tipos que no tienen


ningn tipo superior (como MERCANCIA, TRANSPORTE, LUGAR y CIUDAD).
(ptype-of tipoa tipob especifica que el tipoa es un subtipo del tipob

En Prodigy4.0, los dominios se definen en un fichero llamado domain.lisp. Ca-


da dominio distinto est en un directorio distinto. Aunque todava no se dispone
de los conocimientos necesarios para construir un dominio completo, se puede
empezar a crear la jerarqua de directorios necesaria para Prodigy4.0, y para el
dominio logstico en particular. Para empezar, crear en el directorio casa el di-
rectorio mis-dominios, donde estarn contenidos todos los dominios. Dentro de
ese directorio, crear el subdirectorio logistica, donde estar contenida la infor-
macin del dominio logstico. Dentro del directorio mis-dominios/logistica, crear
el fichero domain.lisp, y dentro de l, colocar el texto:

;; Dominio logstico
(in-package "USER")

(create-problem-space 'logistica :current t)

(ptype-of MERCANCIA :top-type)


(ptype-of TRANSPORTE :top-type)
(ptype-of CAMION TRANSPORTE)
(ptype-of AVION TRANSPORTE)
(ptype-of LUGAR :top-type)
(ptype-of AEROPUERTO LUGAR)
(ptype-of AGENCIA LUGAR)
(ptype-of CIUDAD :top-type)
Los comandos anteriores no necesitan de ms explicacin, a excepcin de lo
siguiente:

En el lenguaje de definicin de dominios, lo que sigue a ; se considera co-


mo un comentario. En realidad, el lenguaje de descripcin de dominios es
un subconjunto de LISP. Que el ; sea el carcter que indica comentario es
una de sus peculiaridades. El que todas las instrucciones vayan precedi-

Mg. Abraham Gamarra Moreno 289


das de un parntesis de apertura y sucedidos de un parntesis de cierre es
otra.

(in-package "USER") y (create-problem-space 'logistica :current t) son am-


bos necesarios en el fichero domain.lisp, pero no merece la pena entrar en
ms detalles.

Definicin de predicados

Recordemos que los predicados se utilizaban para representar los estados de


planificacin (en particular, el estado inicial y el estado final). Como veremos
ms adelante, tambin se utilizan para especificar las condiciones de los ope-
radores de planificacin. En el dominio logstico podramos utlizar los siguien-
tes predicados:

(camion-en CAMION LUGAR)

(avion-en AVION AEROPUERTO)

(mercancia-en LUGAR)

(en-camion MERCANCIA CAMION)

(en-avion MERCANCIA AVION)

(misma-ciudad LUGAR LUGAR)

(en-ciudad (LUGAR o MERCANCIA o TRANSPORTE) CIUDAD)

Aunque es til para nosotros saber qu predicados vamos a utilizar en nuestra


representacin, no es necesario decirselo explicitamente a Prodigy4.0, puesto
que cada vez que aparezca un predicado en la definicin de sus operadores de
planificacin, Prodigy4.0 lo incluir inmediatamente en su lista de predicados.

Definicin de operadores

Los operadores representan los posibles cambios que se pueden efectuar so-
bre los estados. Para representarlos se utilizan reglas SI Condiciones EN-
TONCES Acciones. Las condiciones dicen cuando el operador se puede apli-
car. Las acciones indican como transformar el estado una vez ha sido aplicado
(aadiendo o borrando hechos). Las condiciones estn compuestas de frmu-
las basadas en lgica de predicados unidas por las conectivas AND, OR y ~
(NOT). Adems, pueden contener variables cuantificadas universal (para todo
x ...) o existencialmente (existe un x que ...). En Prodigy4.0, los operadores
tienen las siguientes partes:

Declaracin de los parmetros que utiliza el operador (params)

290 Tpicos y Aplicaciones de la Inteligencia Artificial


Precondiciones preconds. Es decir, aquellas condiciones que se tienen
que cumplir para poder aplicar el operador). Aqu tambin se definen los ti-
pos de los parmetros y variables usados en el operador.

Efectos (effects). Es decir, la lista de efectos que produce el operador


(aadir hechos en el estado actual, o quitarlos de el). Algunos de los efec-
tos pueden ser condicionales, es decir, slo se producen si se cumple de-
terminada condicin.

A continuacin se muestra la estructura bsica de un operador. Esta estructura


ser explicada en detalle a continuacin.

(OPERATOR nombre_del_operador
(params <parametro1> <parametro2> ...)
(preconds
;; Declaracin de parmetros
(
(<variable o parametro 1> TIPO-DE-LA-VARIABLE1)
(<variable o parametro 2> TIPO-DE-LA-VARIABLE2)
...
)
;; Declaracin de precondiciones
(and
condicin1
condicin2
...
)
)
(effects
(
(<variable-efectos-1> TIPO-VARIABLE1)
(<variable-efectos-2> TIPO-VARIABLE2)
...
)
(
efecto1
efecto2
(if condicion
;; Aqu comienza la lista de efectos condicionales
;; (puede haber varios)
(
efecto-condicional1
efecto-condicional2
...
)
)
)
)
)

Parmetros de un operador (params)

Mg. Abraham Gamarra Moreno 291


En ellos se especifican las variables (o argumentos) del operador. Por ejemplo,
el operador de cargar el camin podra tener dos variables: la mercanca a
cargar y el camin en el que se va a cargar. El lenguaje de Prodigy4.0 lo defini-
ra esos parmetros as (ntese que en Prodigy4.0, las variables van entre < y
>):

(params <mercancia> <camion>)

Precondiciones (preconds)

Son las condiciones que se tienen que cumplir para que se pueda aplicar un
operador. En el caso del operador de cargar el camin son dos: que el camin
est fsicamente en el lugar en el que se quiere realizar la carga, y que el obje-
to est en ese mismo lugar. Esto se expresara as:

(and (camion-en <camion> <lugar>)


(mercancia-en <mercancia> <lugar>)
)

Antes de poner las precondiciones propiamente dichas, es necesario declarar


el tipo de los parmetros y variables que utiliza el operador. Por tanto, las pre-
condiciones completas de este operador seran:

(preconds
((<mercancia> MERCANCIA)
(<camion> CAMION)
(<lugar> LOCATION)
)
(and
(camion-en <camion> <lugar>)
(mercancia-en <mercancia> <lugar>)
)
)

De las precondiciones anteriores hay que sealar lo siguiente: slo funcionan


si dos lugares distintos en dos ciudades distintas no pueden llamarse igual.
Imaginemos que por ejemplo hubiera una agencia1 en Madrid y una agencia1
en Pars. Adems, supongamos que hay una mercanca en la agencia1 de
Madrid y un camin en la agencia1 de Pars. Dada esta situacin o estado, las
precondiciones anteriores se cumpliran (comprobarlo) y se podra cargar la
mercanca que est en Madrid en el camin que est en Pars!. Una manera
de solucionar este problema es aadiendo otro predicado que nos diga en qu
ciudad est un determinado lugar, y comprobando que la mercanca y el ca-
min estn en la misma ciudad:

(preconds
((<mercancia> MERCANCIA)

292 Tpicos y Aplicaciones de la Inteligencia Artificial


(<camion> CAMION)
(<lugar> LOCATION)
(<ciudad> CIUDAD)
)
(and
(en-ciudad <camion> <ciudad>)
(en-ciudad <mercancia> <ciudad>)
(camion-en <camion> <lugar>)
(mercancia-en <mercancia> <lugar>)
)
)

Efectos del operador (effects)

Todava tendramos que aadir las acciones de este operador. En este caso
los efectos del operador son dos:

La mercanca pasa a estar cargada en el camin.

La mercanca deja de estar directamente en el lugar (lo est, pero porque


el camin est en ese mismo lugar).

Esto se expresara as:

(effects
()
((add (en-camion <mercancia> <camion>))
(del (mercancia-en <mercancia> <lugar>))
)
)

Es decir, aadimos el hecho que dice que la mercanca est en el camin, y


borramos el hecho que deca que la mercanca estaba directamente sobre el
lugar.

Efectos condicionales

Si se desea, tambin se pueden aadir efectos condicionales, es decir, efec-


tos que slo tienen lugar si se cumple alguna condicin. Por ejemplo, supon-
gamos que se utiliza el predicado (al-lado mercancia1 mercancia2) para repre-
sentar que una mercanca1 est al lado de otra mercanca2. Si cargamos mer-
canca1 en el camin, dejarn de estar en contacto y habr que borrar el hecho
(al-lado mercancia1 mercancia2). Pero slo en ese caso. Esto se expresara
as:

(effects
;; A continuacin aparece la lista de variables y sus tipos
;; que se utilizan slo en la parte de efectos de la regla
(
(<mercancia2> MERCANCIA)
)
((add (en-camion <mercancia> <camion>))

Mg. Abraham Gamarra Moreno 293


(del (mercancia-en <mercancia> <lugar>))
(if (al-lado <mercancia> <mercancia2>)
;; Aqu comienza la lista de efectos condicionales
;; (puede haber varios)
(
(del (al-lado <mercancia> <mercancia2>))
)
)
)
)

Al final, el operador de cargar el camin quedara as:

(OPERATOR CARGAR-CAMION
(params <mercancia> <camion>)
(preconds
((<mercancia> MERCANCIA)
(<camion> CAMION)
(<lugar> LOCATION)
(<ciudad> CIUDAD)
)
(and
(en-ciudad <camion> <ciudad>)
(en-ciudad <mercancia> <ciudad>)
(camion-en <camion> <lugar>)
(mercancia-en <mercancia> <lugar>)
)
)
(effects
()
((add (en-camion <mercancia> <camion>))
(del (mercancia-en <mercancia> <lugar>))
)
)
)

Y si pusieramos efectos condicionales (en caso de que se utilizara el predicado


al-lado):

(OPERATOR CARGAR-CAMION
(params <mercancia> <camion>)
(preconds
((<mercancia> MERCANCIA)
(<camion> CAMION)
(<lugar> LOCATION)
(<ciudad> CIUDAD)
)
(and
(en-ciudad <camion> <ciudad>)
(en-ciudad <mercancia> <ciudad>)
(camion-en <camion> <lugar>)
(mercancia-en <mercancia> <lugar>)
)
)
(effects
;; A continuacin aparece la lista de variables y sus tipos
;; que se utilizan slo en la parte de efectos de la regla

294 Tpicos y Aplicaciones de la Inteligencia Artificial


(
(<mercancia2> MERCANCIA)
)
((add (en-camion <mercancia> <camion>))
(del (mercancia-en <mercancia> <lugar>))
(if (al-lado <mercancia> <mercancia2>)
;; Aqu comienza la lista de efectos condicionales
;; (puede haber varios)
(
(del (al-lado <mercancia> <mercancia2>))
)
)
)
)
)

Restricciones a los valores de las variables (funciones)

El lenguaje de Prodigy4.0 permite restringir los valores que pueden tomar las
variables del operador. Por ejemplo, supongamos que queremos escribir el
operador que mueve un camin de un lugar a otro. Con lo que ya sabemos,
podramos escribir algo como:

(OPERATOR MUEVE-CAMION
(params <camion> <desde> <hasta>)
(preconds
(
(<camion> CAMION)
(<desde> LUGAR)
(<hasta> LUGAR)
(<ciudad> CIUDAD)
)
(and
(en-ciudad <desde> <ciudad>)
(en-ciudad <hasta> <ciudad>)
(camion-en <camion> <desde>)))
(effects
()
((del (camion-en <camion> <desde>))
(add (camion-en <camion> <hasta>)))))

Lo nico a destacar del operador MUEVE-CAMION es que para mover el ca-


min primero borramos el hecho de que el camin est en un determinado lu-
gar y despus aadimos el hecho de que el camin est en el otro lugar.

Este operador tiene un problema, y es que en ningn lugar se afirma que el


lugar "desde" y el lugar "hasta" tengan que ser distintos. Por tanto, se podra
ejecutar un MUEVE-CAMION que deja al camin donde estaba. Esto no sera
errneo, pero si ineficiente. La solucin consiste en aadir una restriccin a los
valores de "hasta": que tienen que ser distintos de los valores de "desde". En
Prodigy4.0 podemos aadir restricciones de este tipo mediante funciones escri-
tas en LISP. Por ejemplo, para comprobar que dos cosas son distintas en LISP
escribiramos:
Mg. Abraham Gamarra Moreno 295
(not (eq <desde> <hasta>))

La funcin "eq" comprueba que dos cosas son idnticas, mientras que la fun-
cin "not" niega lo que va a continuacin. En particular, la definicin de esa
funcin en LISP, a la que vamos a llamar "diff", se escribe como:

(defun diff (x y)
(not (eq x y)))

La definicin anterior habra que colocarla en el mismo fichero de dominio


("domain.lisp"). Ahora ya slo restara colocar la llamada a la funcin en el lu-
gar correspondiente. Este lugar es el mismo en que se definen los tipos de las
variables. Se hara de la siguiente manera:

(
(<camion> CAMION)
(<desde> LUGAR)
(<hasta> (and LUGAR
(diff <desde> <hasta>)
)
)
(<ciudad> CIUDAD)
)

Para escribir funciones ms complicadas es necesario conocer LISP e incluso


el funcionamiento interno del planificador.

7.6.2. DEFINICIN DE PROBLEMAS DE PLANIFICACIN

Aunque no se ha terminado con el lenguaje de Prodigy4.0, con lo visto hasta


ahora se est en condiciones de definir dominios sencillos de planificacin. En
particular, un dominio logstico simple podra contener simplemente la declara-
cin de tipos y los dos operadores ya vistos (CARGAR-CAMION y MOVER-
CAMION) ms uno similar (DESCARGAR-CAMION). El dominio completo se
muestra en el tem 7.6.7. El lector debera copiar este dominio al fichero
"F:\lisp.exe\mis-dominios\logistica\domain.lisp", o mejor an, teclearlo para ir
practicando la sintaxis.

Para poder comprobar si este dominio funciona, es necesario definir un pro-


blema de planificacin (es decir, un par (estado-inicial, estado-final).

Primero se define el nombre del problema (name)

A continuacin los posibles objetos (valores de variables) (objects),

296 Tpicos y Aplicaciones de la Inteligencia Artificial


el estado inicial (state) y

el estado final (goal)

La definicin de problemas en Prodigy4.0 sigue el siguiente patrn:

(setf (current-problem)
(create-problem
(name <nombre del problema>)
;; posibles valores de variables y sus tipos
(objects
(<valor1> <valor2> ... TIPO-DE-LOS-VALORES)
(<valora> <valorb> ... TIPO-DE-LOS-VALORES)
...
)
;;Estado inicial
(state
(and
<predicado1>
<predicado2>
....
)
) ;; cierra state
;;Estado objetivo
(goal
(and
<predicado1>
<predicado2>
...
)
);; cierra goal
);; cierra create-problem
)

Supongamos que queremos definir un problema llamado problema1, en el que


aparecen una mercanca m1, dos agencias de transporte agencia1 y agencia2,
y un camin camion1. Todos ellos estn en Pars, pero el camin y la mercan-
ca estn en la agencia1, mientras que el objetivo es que dicha mercanca est
fsicamente en la agencia2. Obviamente bastara con cargar la mercanca en el
camin, moverlo a la agencia2 y descargar la mercanca. Veamos primero co-
mo se representara toda esta informacin en Prodigy4.0: Primero, la declara-
cin objects (objetos y tipos) quedara as:

(objects
(m1 MERCANCIA)
(Paris CIUDAD)
(camion1 CAMION)
(agencia1 agencia2 AGENCIA)
)

Adems, sabemos que:

m1 est inicialmente en la agencia1: (en-ciudad camion1 Paris)

Mg. Abraham Gamarra Moreno 297


camion1 est inicialmente en la agencia1: (camion-en camion1 agencia1)

Adems, tenemos que decir en que ciudad est cada uno de sus compo-
nentes:

- (en-ciudad camion1 Paris)

- (en-ciudad m1 Paris)

- (en-ciudad agencia1 Paris)

- (en-ciudad agencia2 Paris)

Con todo esto, se podra representar el estado inicial como:

(state
(and
(en-ciudad camion1 Paris)
(en-ciudad m1 Paris)
(en-ciudad agencia1 Paris)
(en-ciudad agencia2 Paris)
(mercancia-en m1 agencia1)
(camion-en camion1 agencia1)
)
)

Para acabar, el estado final es aquel en el que la mercanca est en la agen-


cia2, luego:

(goal
(and
(mercancia-en m1 agencia2)
)
)

Los problemas en Prodigy4.0 se almacenan en el directorio "F:\lisp.exe\mis-


dominios\logistica\probs", luego editaremos el fichero "F:\lisp.exe\mis-dominios
\logistica\probs\problema1.lisp" (ntese la extensin lisp) y escribiramos en el
la siguiente declaracin completa del problema:

(setf (current-problem)
(create-problem
(name problema1)
(objects
(m1 MERCANCIA)
(Paris CIUDAD)
(camion1 CAMION)
(agencia1 agencia2 AGENCIA)
)

(state
(and

298 Tpicos y Aplicaciones de la Inteligencia Artificial


(en-ciudad camion1 Paris)
(en-ciudad m1 Paris)
(en-ciudad agencia1 Paris)
(en-ciudad agencia2 Paris)
(mercancia-en m1 agencia1)
(camion-en camion1 agencia1)
)
)
(goal
(and
(mercancia-en m1 agencia2)
)
)
)
)

7.6.3. EL SISTEMA PRODIGY4.0

Ejecucin de Prodigy4.0

Ahora ya estamos en condiciones de ejecutar Prodigy4.0 con el dominio y pro-


blema escritos anteriormente. Para ello, seguir el siguiente procedimiento Pro-
digy (en nuestro caso la carpeta lisp.exe debe estar en F:\):

F:\>cd lisp.exe

F:\lisp.exe>lisp -M prodigy.mem

iiiiiii ooooo o ooooooo ooooo ooooo


IIIIIII 8 8 8 8 8 o 8 8
IIIIIII 8 8 8 8 8 8
IIIIIII 8 8 8 ooooo 8oooo
I \ `+' / I 8 8 8 8 8
\ `-+-' / 8 o 8 8 o 8 8
`-__|__-' ooooo 8oooooo ooo8ooo ooooo 8
|
------+------ Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997

> (setf *world-path* "f:/lisp.exe/mis-dominios/")


"f:/lisp.exe/mis-dominios/"

> (domain 'logistica)


;; Loading file F:\lisp.exe\mis-dominios\logistica\domain.lisp ...
;; Loading of file F:\lisp.exe\mis-dominios\logistica\domain.lisp is finished.Ru
nning load-domain.
0.0156001
> (problem 'problema1)
;; Loading file F:\lisp.exe\mis-dominios\logistica\probs\problema1.lisp ...
;; Loading of file F:\lisp.exe\mis-dominios\logistica\probs\problema1.lisp is finished.
T

Mg. Abraham Gamarra Moreno 299


> (run)
Creating object M1 of type MERCANCIA
Creating object PARIS of type CIUDAD
Creating object CAMION1 of type CAMION
Creating objects (AGENCIA1 AGENCIA2) of type AGENCIA

2 n2 (done)
4 n4 <*finish*>
5 n5 (mercancia-en m1 agencia2)
7 n7 <descargar-camion m1 camion1>
8 n8 (en-camion m1 camion1) [1]
10 n10 <cargar-camion m1 camion1> [1]
11 n11 <CARGAR-CAMION M1 CAMION1> [1]
12 n12 (camion-en camion1 agencia2)
14 n14 <mueve-camion camion1 agencia1 agencia2>
15 n15 <MUEVE-CAMION CAMION1 AGENCIA1 AGENCIA2>
15 n16 <DESCARGAR-CAMION M1 CAMION1>
Achieved top-level goals.

Solution:
<cargar-camion m1 camion1>
<mueve-camion camion1 agencia1 agencia2>
<descargar-camion m1 camion1>

#<PRODIGY result: T, 0.0156001 secs, 16 nodes, 1 sol>


>

El simbolo > es un prompt donde se deben escribir las instrucciones del planifi-
cador.

Inicialmente, Prodigy4.0 nos indica que objetos est creando (los mismos que
le dijimos en el fichero que contiene el problema). A continuacin, el planifica-
dor nos muestra la traza de la resolucin del problema (las lneas numeradas
desde 2 hasta 15). Ms adelante veremos como interpretarla. Finalmente, Pro-
digy4.0 nos da la solucin, que como era de esperar, consiste en cargar el ca-
min, moverlo a la agencia2, y descargarlo. Adems, Prodigy4.0 nos da infor-
macin acerca del tiempo que le cost encontrar la solucin, los nodos que
tuvo que expandir para conseguirlo y el nmero de soluciones encontradas:

7.6.4. EL ALGORITMO DE PRODIGY4.0

Antes de poder interpretar la traza, es necesario conocer cual es el algoritmo


de Prodigy4.0. Prodigy4.0 es un planificador que utiliza encadenamiento hacia
atrs (el cual es parecido al encadenamiento hacia atrs de Prolog). Funciona
as puesto que aplica la heurstica medios-fines, es decir, primero determina
cuales son sus metas u objetivos actuales y despus intenta ver que operado-
res podran conseguir esos objetivos (al igual que STRIPS). A diferencia de
STRIPS, Prodigy4.0 es un planificador no lineal, lo que quiere decir que no ne-
cesita resolver las metas en orden, sino que puede dejar de trabajar en una
meta y ponerse a trabajar en otra. Es decir, mientras que STRIPS asume que
las metas son independientes, Prodigy4.0 no lo hace. De esta manera, Pro-
digy4.0 puede resolver problemas como el del cohete chino, mientras que
STRIPS no puede.

300 Tpicos y Aplicaciones de la Inteligencia Artificial


Prodigy4.0 mantiene en todo momento:

la lista de metas u objetivos que le quedan por resolver. Inicialmente, con-


tiene las metas que hay que alcanzar en el estado final del problema de
planificacin.

el estado actual de planificacin. Inicialmente, contiene el estado inicial del


problema de planificacin.

Aunque el mecanismo principal de Prodigy4.0 es la heurstica medios-fines


(encadenamiento hacia atrs), el planificador tambin encadena hacia adelante
(es decir, ejecuta o aplica operadores instanciados para cambiar el estado ac-
tual de planificacin). El objetivo del encadenamiento hacia atrs es acercar las
metas hacia el estado actual, mientras que el encadenamiento hacia adelante
es acercar el estado actual hacia las metas. En cuanto el estado actual y las
metas se encuentran, el problema ha sido solucionado. Entrando ms en deta-
lle, el algoritmo bsico de Prodigy4.0 es el siguiente:

1. Si todas las metas pendientes son ciertas en el esta-


do actual, parar y devolver el plan.
2. Elegir si encadenar hacia adelante (aplicar un opera-
dor instanciado sobre el estado actual) o hacia atrs
(heurstica medios fines).
3. Si se decidi aplicar un operador instanciado, elegir
un operador relevante. Es decir, elegir un operador
cuyas condiciones sean ciertas en el estado actual de
planificacin y cuyas acciones sirvan para conseguir
alguna de las metas pendientes. Volver al punto 1.
4. Si se decidi encadenar hacia atrs:
1. Elegir una de las metas pendientes
2. Elegir un operador que pueda conseguir dicha me-
ta (heurstica medios-fines)
3. Elegir valores para las variables/argumentos del
operador que todava no tengan valores. A este
paso se le denomina elegir "bindings"
4. Substituir la meta que se quera alcanzar, por
las precondiciones del operador elegido
5. Volver a ejecutar al punto 1
En ocasiones, Prodigy4.0 tiene que volver atrs (backtracking), debido a que
ha detectado que el camino actual es un callejn sin salida. Por ejemplo, Pro-
digy4.0 puede detectar que:

Una nueva meta a resolver es idntica a otra que ya est pendiente, luego
no tiene sentido continuar por ese camino.

Mg. Abraham Gamarra Moreno 301


La aplicacin de un operador lleva a una situacin de planificacin por la
que ya ha pasado (luego el sistema se ha metido en un ciclo).

El rbol de bsqueda de Prodigy4.0 ha alcanzado la profundidad mxima


permitida, por lo que hay que volver atrs.

etc.

La vuelta atrs consiste en volver al ltimo de los puntos de decisin de Pro-


digy4.0 (marcados en negrita en la descripcin del algoritmo). Por ejemplo, si
la ltima decisin que tom fue elegir una de las metas pendientes y Pro-
digy4.0 detecta posteriormente que tiene que volver atrs, retrocedera hasta
este punto de decisin y elegira otra meta, y continuara trabajando a partir de
ella. Por supuesto, se puede volver mltiples veces al mismo punto de deci-
sin, tomando una decisin distinta cada vez que se retorna a el. A continua-
cin se describen con ms detalle cada uno de los encadenamientos de Pro-
digy4.0. Prodigy4.0 hace dos tipos de encadenamiento:

Hacia atrs, siguiendo la heurstica medios-fines. Es


decir, para conseguir la meta que est intentando re-
solver en ese momento, utiliza un operador que pueda
alcanzar la meta y substituye la meta a resolver por
aquellas precondiciones que no sean todava ciertas
en el estado actual. Por ejemplo, si Prodigy4.0 quie-
re conseguir la meta de que la mercanca est cargada
en un camin, tiene que conseguir previamente que el
camin ocupe el mismo lugar que la mercanca. Este
encadenamiento consta de tres pasos:
1. Elige la meta en la que se va a trabajar a con-
tinuacin de entre aquellas que todava no hayan
sido resueltas. Por ejemplo, Prodigy4.0 podra
elegir la meta (mercancia-en m1 agencia2).
2. Elige un operador cuya parte derecha pueda al-
canzar dicha meta. Por ejemplo, el operador des-
cargar-camion, que en su parte derecha tiene (add
(mercancia-en <mercancia> <lugar>)).

3. Si quedan variables del operador que todava no


tienen valor, elige valores para dichas varia-
bles. Por ejemplo, el operador descargar-camion
elegido en el paso anterior tiene dos argumentos
(o variables): <mercancia> y <camion>. La variable
<mercancia> ya tiene un valor: m1, puesto que esa
es la mercanca que se desea depositar en la
agencia2. Sin embargo, todava no se ha determina-
do desde que camin se va a descargar la mercan-
ca. En principio, cualquier camin servira pa-
ra descargar la mercanca, por lo que Prodigy4.0
probara con el binding <camion>=camion1. Si por

302 Tpicos y Aplicaciones de la Inteligencia Artificial


alguna razn tuviera que volver a este punto de
decisin (backtracking), probara con el binding
<camion>=camion2, y as sucesivamente, hasta que
diera con el binding adecuado. Normalmente, Pro-
digy4.0 prueba primero aquellos bindings que ha-
cen que sea cierto un nmero mximo de precondi-
ciones del operador que se est intentando uti-
lizar. Por ejemplo, si fuera cierto que en la
situacin actual de planificacin la mercanca m1
est cargada en el camin camin15 ((en-camion m1
camin15)), entonces Prodigy4.0 elegira el bin-
ding <camion> = camion15, puesto que este binding
hace que sea cierta una de las precondiciones
del operador descargar-camion. Por supuesto, esta
decisin podra provocar una vuelta atrs ms
adelante, por lo que Prodigy4.0 podra probar
con otro binding en el futuro en este mismo pun-
to de decisin.
Hacia adelante. En algunas ocasiones, Prodigy4.0 pue-
de decidir aplicar un operador cuyas precondiciones
sean todas ciertas en el estado actual y que sea can-
didato a resolver alguna de las metas pendientes (es
decir, lo que se denomina un operador instanciado re-
levante). El resultado de aplicar un operador es la
modificacin del estado actual. Por ejemplo, si es
cierto que una mercanca est en un camin en el es-
tado actual y el operador de descargar se quera usar
para alcanzar determinada meta (por ejemplo, que la
mercanca est depositada en una determinada agen-
cia), se puede aplicar dicho operador, con lo que se
modificar el estado actual (la mercanca pasar de
estar cargada en el camin a estar depositada en la
agencia).

El objetivo de ambos encadenamientos es el de acercar las metas hacia el es-


tado inicial (encadenamiento hacia atrs) y el de acercar el estado inicial hacia
las metas (encadenamiento hacia adelante). Cuando se encuentren, el pro-
blema habr sido resuelto.

7.6.5. LA TRAZA DE PRODIGY4.0

A continuacin se explicar el significado de la traza devuelta por Prodigy4.0


tras resolver un problema. En el caso anterior, esta traza era:

5 n5 (mercancia-en m1 agencia2)
7 n7 <descargar-camion m1 camion1>
8 n8 (en-camion m1 camion1) [1]
10 n10 <cargar-camion m1 camion1> [1]

Mg. Abraham Gamarra Moreno 303


11 n11 <CARGAR-CAMION M1 CAMION1> [1]
12 n12 (camion-en camion1 agencia2)
14 n14 <mueve-camion camion1 agencia1 agencia2>
15 n15 <MUEVE-CAMION CAMION1 AGENCIA1 AGENCIA2>
15 n16 <DESCARGAR-CAMION M1 CAMION1>

Se parte, del objetivo a resolver: (mercancia-en m1 agencia2) (lnea n5). Aho-


ra Prodigy4.0 buscara aquellos operadores que le permiten alcanzar esa me-
ta. Slo hay uno, el operador DESCARGAR-CAMION (lnea n7), el cual nos permiti-
ra descargar la mercanca m1 en la agencia2, caso de estar el camion1 en di-
cha agencia. Es decir, para poder aplicar el operador DESCARGAR-CAMION, es
necesario que se cumplan sus precondiciones:

(and
(en-camion <mercancia> <camion>)
(camion-en <camion> <lugar>)
)

Por tanto Prodigy4.0 substituye el objetivo de descargar la mercanca en la


agencia2 por dos subobjetivos: el de tener m1 en el camin y el de tener el
camin en el lugar apropiado (agencia2). Intenta resolver primero el de tener m1
cargada en el camin, lo cual manifiesta en la lnea n8.

La nica manera de tener la mercanca cargada en el camin (de no estarlo


ya) es cargarla con CARGAR-CAMION, y esto es lo que nos indica en la lnea n10.
Puesto que el camin y la mercanca ocupan la misma posicin, la mercanca
ser cargada en el camin, es decir, se aplicar el operador. Aplicar el opera-
dor significa que el estado actual cambia al nuevo estado resultante de aplicar
el operador. Esto queda indicado en la lnea n11. Ntese que siempre que
Prodigy4.0 aplica un operador, lo indica con letras maysculas.

Ahora intentar resolver el segundo subobjetivo que se haba planteado ante-


riormente (camion-en camion1 agencia2) (lnea n12). Para conseguirlo, dis-
pone del operador MUEVE-CAMION , cuyas precondiciones son ciertas. Por ello
puede aplicarlo inmediatamente en la lnea n15 (ntese las maysculas). En
este momento, el camin ya est en la agencia2 y dicho camin lleva m1 a
bordo, luego ya puede descargarla. Es decir, ya puede aplicar el operador DES-
CARGAR-CAMION , como se puede ver en la lnea n16. Ahora mismo, el estado
actual contiene el predicado (mercancia-en m1 agencia2) , que era el que re-
presentaba el estado final al que se quera llegar. Por tanto el problema ha sido
resuelto y Prodigy4.0 ya puede devolver la solucin.

En la Figura 7.14 se puede ver el rbol de encadenamiento hacia atrs segui-


do por Prodigy4.0. Aquellos nodos con algo entre parntesis indican un objeti-
vo que Prodigy4.0 quiere satisfacer. Aquellos nodos con algo entre <...> indi-
can un posible operador instanciado que Prodigy4.0 quiere utilizar para alcan-
zar un objetivo (es decir, el medio para obtener el fin). Si ese nodo est en ma-
ysculas, indica que Prodigy4.0 ha aplicado ese operador y por tanto, ha cam-
biado el estado actual. Las flechas indican el orden en el que Prodigy4.0 avan-

304 Tpicos y Aplicaciones de la Inteligencia Artificial


za por los nodos. Las lneas discontinuas unen un operador con la(s) meta(s)
que es necesario que se cumplan para poder aplicar ese operador.

7.6.6. VUELTA ATRS O BACKTRACKING

En el ejemplo anterior, Prodigy4.0 resolvi el problema inmediatamente sin


equivocarse en ninguna de las decisiones que tom. Por ejemplo, al substituir
la meta (mercancia-en m1 agencia2) por las precondiciones:

(en-camion <mercancia> <camion>)


(camion-en <camion> <lugar>)

Dichas precondiciones estn escritas en el operador en el orden adecuado:


primero hay que tener la mercanca cargada en el camin y despus hay que
llevar el camin al lugar donde se va a efectuar la descarga. Pero qu ocurre
si ponemos al revs las precondiciones del operador DESCARGAR-CAMION ?:

(camion-en <camion> <lugar>)


(en-camion <mercancia> <camion>)

El resultado sera el que aparece en la siguiente traza (tras haber salvado el


nuevo dominio, ejecutado (domain 'logistica) , (problem 'problema1) y
(run) ):

5 n5 (mercancia-en m1 agencia2)
7 n7 <descargar-camion m1 camion1>
8 n8 (camion-en camion1 agencia2) [1]
10 n10 <mueve-camion camion1 agencia1 agencia2>
11 n11 <MUEVE-CAMION CAMION1 AGENCIA1 AGENCIA2> [1]
12 n12 (en-camion m1 camion1)
14 n14 <cargar-camion m1 camion1> [1]
15 n15 (camion-en camion1 agencia1)
17 n17 <mueve-camion camion1 agencia2 agencia1> ...applying leads to state loop.
13 n13 cargar-camion
14 n19 <cargar-camion m1 camion1> ...goal loop with node 5
10 n10 <mueve-camion camion1 agencia1 agencia2>
11 n20 (en-camion m1 camion1)
13 n22 <cargar-camion m1 camion1> [1]
14 n23 <CARGAR-CAMION M1 CAMION1>
15 n24 <MUEVE-CAMION CAMION1 AGENCIA1 AGENCIA2>
15 n25 <DESCARGAR-CAMION M1 CAMION1>
.

Mg. Abraham Gamarra Moreno 305


1>

Figura 7.14. rbol de encadenamiento hacia atrs seguido por Prodigy4.0.

306 Tpicos y Aplicaciones de la Inteligencia Artificial


Achieved top-level goals

Solution:
<cargar-camion m1 camion1>
<mueve-camion camion1 agencia1 agencia2>
<descargar-camion m1 camion1>

#<PRODIGY result: t, 0.06 secs, 25 nodes, 1 sol>

Vemos que Prodigy4.0 ha encontrado la solucin a pesar de todo. En resumen,


el razonamiento seguido por Prodigy4.0 ha sido:

Tengo que resolver la meta (mercancia-en m1 agencia2)

5 n5 (mercancia-en m1 agencia2)

Una manera de hacerlo es descargando la mercanca m1 utilizando el ope-


rador DESCARGAR-CAMION

7 n7 <descargar-camion m1 camion1>

Pero para poder utilizarlo, tengo que resolver primero las metas:

- (camion-en camion1 agencia2) y

- (en-camion m1 camion1)

Elijo la primera ((camion-en camion1 agencia2))

8 n8 (camion-en camion1 agencia2) [1]

Para poder conseguirla, puedo utilizar el operador MUEVE-CAMION, para mo-


ver el camin a la agencia2

10 n10<mueve-camion camion1 agencia1 agencia2>

Como estoy en condiciones de aplicar el operador, elijo hacerlo, de mane-


ra que a partir de ahora, el camin est en la agencia2 (Ntese que esto es
erroneo: no tiene sentido mover el camin al lugar de destino antes de car-
gar la mercanca, pero Prodigy4.0 no se ha dado cuenta, puesto que re-
suelve las metas o las precondiciones en el orden que se le dan. Ms ade-
lante, Prodigy4.0 tendr que volver atrs (backtracking) hasta este punto,
elegir no aplicar el operador, y preferir resolver la segunda meta pendiente
(tener la mercanca en el camin), que es lo correcto)

11 n11 <MUEVE-CAMION CAMION1 AGENCIA1 AGENCIA2> [1]

Intento resolver ahora la segunda meta pendiente (en-camion m1 camion1)

12 n12 (en-camion m1 camion1)

Mg. Abraham Gamarra Moreno 307


Puedo utilizar para ello el operador CARGAR-CAMION. Aunque dos de las va-
riables del operador quedan fijadas ( <mercancia>=m1 y <camion>=camion1,
<lugar> no queda fijada, luego hay que decidir uno de los dos posibles
bindings. Elijo el primero <lugar>=agencia1. Caso de equivocarme, tendra
que volver a este punto de decisin y elegir el segundo binding (con la
agencia2). Todo esto es lo que ha ocurrido en el nodo n14. El binding <lu-
gar>=agencia1 no aparece puesto que es una variable interna del opera-
dor. Si quisieramos que apareciera explcitamente, podramos haber decla-
rado la variable <lugar> en el <params> del operador CARGAR-CAMION

14 n14 <cargar-camion m1 camion1> [1]

Por tanto, una de las precondiciones va a ser que el camin est en la


agencia1

n15 (camion-en camion1 agencia1)

Pero para ello, me tengo que traer el camin de vuelta a agencia1.

15 n15 (camion-en camion1 agencia1)

17 n17 <mueve-camion camion1 agencia2 agencia1> ...applying leads to


state loop.

Desgraciadamente, si aplicara el operador MUEVE-CAMION, esto me llevara


a volver a tener el camin camion1 en la agencia1, estado que ya era cierto
inicialmente. He entrado en un ciclo (...applying leads to state loop).

17 n17 <mueve-camion camion1 agencia2 agencia1> ...applying leads to


state loop.

Por tanto, he estado perdiendo el tiempo. Tengo que volver al ltimo punto
de decisin y tomar una decisin distinta a la que haba tomado. Este lti-
mo punto de decisin es cuando eleg el binding <lugar>=agencia1 para el
operador CARGAR-CAMION. Recordar que dicho operador exiga que la mer-
canca y el camin estuvieran en el mismo lugar, pero haba que decidir
qu lugar era ese. Haba decidido que ese lugar era la agencia1. Ahora
elegir el binding <lugar>=agencia2. Con ese binding, la primera precondi-
cin de CARGAR-CAMION ((camion-en camion1 agencia2)) ya es cierta, pues-
to que el camin est en la agencia2 (lo hemos movido all hace un mo-
mento). Luego intentar hacer cumplir la segunda: (mercancia-en m1
agencia2). Sin embargo, esta es la misma meta que intentabamos conse-
guir en el nodo n5, por lo que he entrado en un ciclo: he estado perdiendo
el tiempo ("goal loop with node 5").

14 n19 <cargar-camion m1 camion1> ...goal loop with node 5

Tendr que volver al anterior punto de decisin. En ese punto de decisin


haba intentado aplicar el operador que mova el camin a la agencia2. En

308 Tpicos y Aplicaciones de la Inteligencia Artificial


lugar de aplicar el operador, ahora decidir no aplicarlo y seguir trabajando
en otra meta. Tiempo habr de aplicarlo en el futuro. Por tanto, el camin
vuelve a estar en agencia1 puesto que no se ha movido. Ahora intentar
resolver la segunda meta de MUEVE-CAMION que tena pendiente: (en-
camion m1 camion1) y que haba sido originada al intentar utilizar el opera-
dor MUEVE-CAMION:

10 n10 <mueve-camion camion1 agencia1 agencia2>

11 n20 (en-camion m1 camion1)

Para ello, puedo utilizar el operador CARGAR-CAMION

13 n22 <cargar-camion m1 camion1> [1]

Las precondiciones de dicho operador son ciertas en la situacin inicial,


por lo que puedo aplicarlo:

14 n23 <CARGAR-CAMION M1 CAMION1>

Tambin son ciertas las precondiciones de MUEVE-CAMION. Voy a probar a


aplicarlo (aunque antes me equivoqu).

15 n24 <MUEVE-CAMION CAMION1 AGENCIA1 AGENCIA2>

Finalmente, las precondiciones de DESCARGAR-CAMION ya son ciertas,


por lo que ya puedo aplicar dicho operador.

15 n25 <DESCARGAR-CAMION M1 CAMION1>

En este momento, no quedan metas, por lo que mi trabajo ha concluido.


Devuelvo el plan y acabo.

7.6.7. DOMINIO LOGSTICO SIMPLE

;; Dominio logstico
;; Este fichero debera llamarse F:\lisp.exe\mis-dominios\logistica/domain.lisp

(in-package "USER")

(create-problem-space 'logistica :current t)

(ptype-of MERCANCIA :top-type)


(ptype-of TRANSPORTE :top-type)
(ptype-of CAMION TRANSPORTE)
(ptype-of AVION TRANSPORTE)
(ptype-of LUGAR :top-type)
(ptype-of AEROPUERTO LUGAR)
(ptype-of AGENCIA LUGAR)
(ptype-of CIUDAD :top-type)

Mg. Abraham Gamarra Moreno 309


(OPERATOR CARGAR-CAMION
(params <mercancia> <camion>)
(preconds
((<mercancia> MERCANCIA)
(<camion> CAMION)
(<lugar> LUGAR)
(<ciudad> CIUDAD)
)
(and
(en-ciudad <mercancia> <ciudad>)
(en-ciudad <camion> <ciudad>)
(camion-en <camion> <lugar>)
(mercancia-en <mercancia> <lugar>)
)
)
(effects
()
((add (en-camion <mercancia> <camion>))
(del (mercancia-en <mercancia> <lugar>))
)
)
)

(OPERATOR DESCARGAR-CAMION
(params <mercancia> <camion>)
(preconds
((<mercancia> MERCANCIA)
(<camion> CAMION)
(<lugar> LUGAR)
)
(and
(en-camion <mercancia> <camion>)
(camion-en <camion> <lugar>)
)
)
(effects
()
((del (en-camion <mercancia> <camion>))
(add (mercancia-en <mercancia> <lugar>))
)
)
)

(OPERATOR MUEVE-CAMION
(params <camion> <desde> <hasta>)
(preconds
(
(<camion> CAMION)
(<desde> LUGAR)
(<hasta> (and LUGAR
(diff <desde> <hasta>)
)
)
(<ciudad> CIUDAD)
)
(and
(en-ciudad <desde> <ciudad>)
(en-ciudad <hasta> <ciudad>)
(camion-en <camion> <desde>)))

310 Tpicos y Aplicaciones de la Inteligencia Artificial


(effects
()
((del (camion-en <camion> <desde>))
(add (camion-en <camion> <hasta>)))))

;; Funcin para comprobar que dos cosas son diferentes.


(defun diff (x y)
(not (eq x y)))

7.6.8. PROBLEMA LOGSTICO SIMPLE

(setf (current-problem)
(create-problem
(name problema1)
(objects
(m1 MERCANCIA)
(Paris CIUDAD)
(camion1 CAMION)
(agencia1 agencia2 AGENCIA)
)

(state
(and
(en-ciudad camion1 Paris)
(en-ciudad m1 Paris)
(en-ciudad agencia1 Paris)
(en-ciudad agencia2 Paris)
(mercancia-en m1 agencia1)
(camion-en camion1 agencia1)
)
)
(goal
(and
(mercancia-en m1 agencia2)
)
)
)
) ; Cierra setf

7.6.9. OPCIONES DE EJECUCIN DE PRODIGY4.0

Carga del dominio

Ejecutar el comando "prodigy". Despus, hay que darle valor a la variable que
indica dnde estn los dominios:

(setf *world-path* "~/mis-dominios/")

Es importante poner la ltima barra (/) en el nombre del directorio.

Para cargar el dominio:

Mg. Abraham Gamarra Moreno 311


(domain '<nombre dominio>)
(ejemplo: (domain 'logistica))

La carga del dominio involucra la carga del fichero "domain.lisp" del dominio
correspondiente. Si queremos que Prodigy4.0 se ejecute ms rpido, se puede
pre-compilar el dominio:

(domain '<nombre dominio> :compile: t)

Carga del problema

El comando

(problem '<nombre de problema>)

carga el problema. Todos los problemas deben estar en un subdirectorio del


dominio llamado "probs". Por ejemplo, pueden estar en:
F:/lisp.exe/mis-dominios/logistica/probs/

Ejecutando Prodigy4.0

Una vez cargado el dominio y un problema, se puede ejecutar Prodigy4.0 con


el comando:

(run)

Prodigy4.0 expande un rbol cuya profundidad mxima por omisin es de 30.


Si durante el proceso alcanza la profundidad mxima, realiza un retroceso (ba-
cktracking). En ocasiones, la profundidad necesaria para encontrar la solucin
es mayor de 30, por lo que hay que cambiarla. Esto se puede hacer ejecutando
Prodigy4.0 con:

(run :depth-bound 50)

Para que la profundidad sea mayor (50 en este caso). Tambin podemos limi-
tar a Prodigy4.0 en el tiempo mximo que tiene disponible para solucionar el
problema:

(run :time-bound 100)

El comando anterior ejecutara a Prodigy4.0 durante 100 segundos. Si en ese


tiempo no encuentra una solucin, devolvera fallo. Por supuesto, podemos
usar ambas opciones al mismo tiempo:

(run :depth-bound 50 :time-bound 100)

Es interesante saber que si el plan que devuelve Prodigy4.0 tiene 10 pasos


(es decir, la aplicacin de 10 operadores instanciados), el rbol que debe ex-

312 Tpicos y Aplicaciones de la Inteligencia Artificial


plorar Prodigy4.0 tiene una profundidad de, al menos, 3+(4*10). Es decir, si la
solucin tiene n pasos, la profundidad del rbol tiene que ser de al menos
3+(4*n). Si a Prodigy4.0 le ponemos un depth-bound menor de esa cantidad,
ser incapaz de encontrar la solucin.

En ocasiones no queremos ver la traza, slo la solucin (el plan). Eso se con-
sigue con:

(run :output-level 1)

7.7. EJEMPLOS PROPUESTOS:


Considrese la tarea simple de ir a buscar una caja de una habitacin contigua
con un vehculo robot. Sea el estado inicial del modelo del mundo del robot el
mostrado en la figura 7.15 .

Suponga que existe dos operadores IR_A_TRAVES y EMPUJAR_A_TRAVES


con la siguiente descripcin:

IR_A_TRAVES(d,r1,r2). El robot pasa por la puerta d desde la ha-


bitacin r1 hasta la habitacin r2.

Precondicin: ENHABITACION(ROBOT,r1) and CONE-


XION(d,r1,r2) el robot est en la habitacin r1 y la puerta d conecta
a las habitaciones r1,r2.

Lista de borrado: ENHABITACION(ROBOT,S) para cualquier valor


de S.

Lista de aadidos: ENHABITACION(ROBOT,r2).

EMPUJAR_A_TRAVES(b,d,r1,r2): El robot empuja el objeto b a


travs de la puerta d desde la habitacin r1 hasta la habitacin r2.

Precondicin: ENHABITACION(b,r1) and ENHABITA-


CION(ROBOT,r1) and CONEXION(d,r1,r2).

Lista de borrado: ENHABITACION(ROBOT,S), ENHABITA-


CION(b,S).

Lista de aadidos: ENHABITACION(ROBOT,r2), ENHABITA-


CION(b,r2).

Si se tiene la disposicin inicial siguiente:

ENHABITACION(ROBOT,r1)

CONEXION(d1,r1,r2)

CONEXION(d2,r2,r3)
Mg. Abraham Gamarra Moreno 313
BOX(b1)

ENHABITACION(b1,r2)

Y se desea alcanzar el siguiente objetivo final

BOX(b1) and ENHABITACION(b1,r1)

Realice la solucin.

HABITACION R1 HABITACION R2

Puerta
d1 Caja b1

robot
Puerta
d2

HABITACION R3

Figura 7.15 Modelo del mundo inicial

314 Tpicos y Aplicaciones de la Inteligencia Artificial


SOLUCION:

ENHABITACION(ROBOT,r1)

CONEXION(d1,r1,r2)

CONEXION(d2,r2,r3)

BOX(b1)
Realice la BOX(b1) and

solucin
ENHABITACION(b1,r2)
ENHABITACION(b1,r1)

utilizando
PRODIGY

Mg. Abraham Gamarra Moreno 315


316 Tpicos y Aplicaciones de la Inteligencia Artificial
CAPITULO OCHO
FUNDAMENTOS DE LA VISIN ARTIFICIAL

Al igual que sucede en el ser humano, la capacidad de visin dota al robot con
un sofisticado mecanismo de percepcin que permite a la mquina responder a
su entorno de una forma inteligente y flexible. El uso de la visin y otros es-
quemas de percepcin, estn motivados por la constante necesidad de aumen-
tar la flexibilidad y los campos de aplicacin de los sistemas de robtica. As
como la percepcin de la proximidad del contacto juega un papel significativo
en el perfeccionamiento del comportamiento del robot, la visin se considera
como la ms potente capacidad sensorial de un robot. Como es de suponer,
los sensores, conceptos y hardware de proceso asociados con la visin artifi-
cial son considerablemente ms complejos que los asociados con las capaci-
dades de percepcin con sensores de proximidad, contacto, etc.

La visin artificial puede ser definida como los procesos de obtencin, caracte-
rizacin e interpretacin de informacin de imgenes tomadas de un mundo
tridimensional. Estos procesos, tambin habitualmente llamados visin por
computadora, pueden a su vez ser subdivididos en seis reas principales: 1)
captacin, 2) preprocesamiento, 3) segmentacin, 4) descripcin, 5) reconoci-
miento, 6) interpretacin. La captacin es el proceso a travs del cual se obtie-
ne una imagen visual. El preprocesamiento incluye tcnicas tales como la re-
duccin de ruido y realce de detalles. La segmentacin es el proceso que divi-
de una imagen en objetos que sean de nuestro inters. Mediante los procesos
de descripcin se obtienen caractersticas (por ejemplo, tamao, forma) con-
venientes para diferenciar un tipo de objeto de otro. El reconocimiento es el
proceso que identifica estos objetos (por ejemplo, una llave inglesa, un tornillo,
un soporte de motor). Finalmente, la interpretacin le asocia un significado a
un conjunto de objetos reconocidos.

Es conveniente agrupar estas diversas reas de acuerdo con la complicacin y


delicadeza que lleva aparejada su implementacin. Consideraremos tres nive-

Mg. Abraham Gamarra Moreno 317


les de procesamiento: visin de bajo, medio y de alto nivel. Debido a que no
existen unas fronteras claras entre estos tres niveles, nos ceiremos a un mar-
co de trabajo til para categorizar los diversos procesamientos que componen
un sistema de visin artificial. As asociaremos a la visin de bajo nivel aque-
llos procesos que son primarios en el sentido de que pueden ser considerados
reacciones automticas sin requerir ningn tipo de inteligencia. En esta pre-
sentacin trataremos la percepcin y el preprocesamiento como funciones de
visin de bajo nivel. Partiendo del proceso de formacin de la imagen en s,
pasaremos a compensaciones, tales como la reduccin de ruido, para final-
mente estudiar la obtencin de caractersticas de la imagen primitiva tales co-
mo las discontinuidades de intensidad. Esta sucesin de procesamiento puede
ser comparada con los procesos de percepcin y adaptacin que un hombre
lleva a cabo cuando intenta encontrar un asiento en un teatro oscuro, inmedia-
tamente despus de haber estado paseando durante una tarde soleada. El
proceso inteligente de conseguir una butaca desocupada no podr dar co-
mienzo hasta que no est disponible una imagen adecuada.

Asociaremos a la visin de nivel intermedio aquellos procesos que extraen,


caracterizan y etiquetan componentes de la imagen que se obtiene de la visin
de bajo nivel. En trminos de nuestra divisin en seis apartados, trataremos la
segmentacin, la descripcin y el reconocimiento de objetos individuales como
funciones de visin de nivel intermedio. La visin de alto nivel se refiere a pro-
cesamientos que tratan de emular la cognicin. Mientras que los algoritmos
para la visin de bajo y medio nivel conllevan un espectro de actividades bas-
tante bien definidas, nuestro conocimiento y comprensin de los procesos de
visin de alto nivel son considerablemente ms difusos y especulativos.

Las categoras y subdivisiones antes presentadas estn basadas en la forma


en que son implementados la gran mayora de los sistemas de visin artificial.
Ello no implica que estas subdivisiones sirvan tambin de modelo para la visin
humana ni que puedan llevarse a cabo unas independientes de otras. Sabe-
mos, por ejemplo, que el reconocimiento y la interpretacin son funciones al-
tamente interrelacionadas en el ser humano. Estas relaciones, de todas for-
mas, no son an bien entendidas hasta el punto de que pueden ser modeladas
analticamente. As pues, la subdivisin de funciones que se ha presentado
anteriormente puede ser vista como un esquema prctico para llevar a cabo
nuevas realizaciones de sistemas de visin artificial, usando nuestro nivel de
conocimiento y las herramientas analticas que suelen emplearse en este cam-
po.

Antes de empezar con el anlisis de la Visin Artificial se recomienda leer


los archivos que se encuentran en el CD, que permiten manejar imgenes
en Visual Basic .NET

318 Tpicos y Aplicaciones de la Inteligencia Artificial


8.1. ADQUISICIN DE IMGENES12
La informacin visual se convierte en seales elctricas por los sensores visua-
les. Cuando estas seales elctricas se muestran espacialmente, y se cuantifi-
can en amplitud, obtendremos de ellas una imagen digital.

Los principales dispositivos usados para la visin artificial son las cmaras de
televisin, que estn compuestas por un sensor basado en dispositivo de esta-
do slido o vlvulas electrnicas y electrnica asociada. Aunque un tratamiento
en profundidad de estos dispositivos est ms all del objetivo de la presente
obra. Aqu presentamos los principios de funcionamiento de los sensores de
imagen de estado slido a travs del estudio de los dispositivos de acopla-
miento de carga (CCD), los cuales son uno de los principales exponentes de
esta tecnologa. Los dispositivos de tratamiento de imagen de estado slido
nos ofrecen gran nmero de ventajas sobre las cmaras de tubos, como son
su menor peso, menor tamao, ms larga vida y menor consumo de potencia.
No obstante, la resolucin de algunos tubos est todava por encima de las
capacidades de las cmaras de dispositivos de estado slido.

8.1.1. DISPOSITIVOS CCD

A la hora de tratar los dispositivos CCD es conveniente dividir los sensores en


dos categoras: sensores de exploracin de lnea y sensores de rea. El com-
ponente bsico de un sensor CCD de exploracin de lnea es una hilera de
elementos de silicio llamado photosites. Los fotones de la imagen pasan a tra-
vs de una estructura transparente policristalina de silicio y son absorbidos en
el cristal de silicio, creando as pares electrn-hueco. Los fotoelectrones que
as se obtienen son recogidos en los photosites, siendo la cantidad de carga
acumulada en cada photosite proporcional a la intensidad lumnica en ese pun-
to. Segn se muestra en la figura 8.1a., un sensor de exploracin de lnea tpi-
co esta compuesto por una fila de los elementos de imagen, dos puertas de
transferencias usadas para registrar los contenidos de los elementos de ima-
gen en los as llamados registros de transporte y una puerta de salida usada
para transferir los contenidos de los registros de transporte a un amplificador
cuya salida es una seal de tensin proporcional a los contenidos de la hilera
de photosites.

Los sensores de rea son similares a los de exploracin de lnea, con la dife-
rencia de que los photosites estn reunidos en forma de matriz y existe un con-
junto de registros de transporte y puertas para cada columna de photosites,
segn se observa en la figura 8.1b. Los contenidos de los photosites impares
son secuencialmente transferidos a los registros verticales de transporte y pos-
teriormente al registro horizontal de transporte. El contenido de este registro es
enviado a un amplificador cuya salida es una lnea de vdeo, Repitiendo este
procedimiento para las lneas pares completamos el segundo campo de un
cuadro de televisin. Este mecanismo de exploracin se repite 30 veces por
segundo.

12
Fu K, Gonzalez R, Lee C. Robtica: Control, Deteccin, Visin e Inteligencia. Espaa:
Mc Graw Hill; 1988.

Mg. Abraham Gamarra Moreno 319


Figura 8.1. a) Sensor exploracin de lnea b) Sensor rea CCD.

De las cmaras de exploracin de lnea se obtendr obviamente una lnea por


cada imagen de entrada. Estos dispositivos se ajustan muy bien para aplica-
ciones en las cuales los objetos se mueven enfrentndose al sensor (como en
las cintas transportadoras). El movimiento de un objeto en la direccin perpen-
dicular al sensor produce una. imagen bidimensional. La resolucin de los sen-
sores de exploracin de lneas normales oscilan entre los 256 y los 2048 ele-
mentos. La resolucin de los sensores de reas varia entre 32 x 32 elementos
para un sensor de baja resolucin y 256 x 256 elementos para los sensores de
resolucin media. Los dispositivos de resolucin ms alta actualmente en el
mercado incluyen del orden de 480 x 380 elementos y los sensores CCD expe-
rimentales son capaces de obtener resoluciones de 1024 x 1024 elementos o
mayores.

320 Tpicos y Aplicaciones de la Inteligencia Artificial


A travs de esta obra, usaremos f(x,y) para indicar la imagen bidimensional
que se obtiene con una cmara de televisin u otro dispositivo de imagen,
donde x e y indican las coordenadas espaciales (esto es, el plano de la ima-
gen) y el valor de f en cualquier punto (x,y) es proporcional al brillo (intensidad)
de la imagen en ese punto. La figura 8.2 ilustra este concepto, as como el
convenio de coordenadas en el cual estar basado nuestro estudio. Se usar a
menudo la variable z para indicar las variaciones de intensidad en una imagen
cuando la localizacin espacial de estas variaciones no es de inters.

Para estar en condiciones adecuadas para el procesamiento por computadora,


una funcin de imagen f(x, y) debe ser digitalizada espacialmente y en ampli-
tud (intensidad). La digitalizacin de las coordenadas espaciales (x,y) se de-
nominar muestreo de imagen, mientras que la digitalizacin de amplitud se
llamar cuantizacin de intensidad o nivel de gris. Este ltimo trmino es apli-
cable a las imgenes monocromas y refleja el hecho de que estas imgenes
varan del negro al blanco en tonos del gris. Los trminos intensidad y nivel de
gris se usarn indistintamente.

Figura 8.2. Convenio de coordenadas para representacin de imagen. El valor de cualquier punto
(x, y) viene dado por el valor (intensidad) de f en ese punto.

Supngase que una imagen continua se muestrea uniformemente obtenindo-


se una matriz de N filas y M columnas, donde cada muestra est cuantizada en
intensidad. Esta matriz, llamada imagen digital, puede ser representada como

Mg. Abraham Gamarra Moreno 321


donde x e y son ahora variables discretas: x=0, 1, 2,..., N1; y=0, l, 2, , M
1. Cada elemento de la matriz se llama elemento de imagen o pxel. Tomando
como referencia la matriz anterior, se observa que f(0,0) representa el pixel del
origen de la imagen, f(0,1) el pixel que se encuentra a su derecha, y as suce-
sivamente. Es una prctica habitual hacer que N, M y el nmero de niveles dis-
cretos de intensidad de cada pixel cuantizado sean potencias enteras de 2.

En la figura 8.3 podemos observar los efectos del muestreo y la cuantizacin.

En la parte a) de esta figura se muestra una imagen muestreada en una matriz


de N x N pixels con N = 512, y la intensidad de cada pixel est cuantizada en
uno de 256 niveles discretos. La figura 8.3b a e nos muestra la misma imagen,
pero tomando N = 256, 128, 64 y 32. En todos los casos se mantiene el nme-
ro de niveles de intensidad en 256. Como el rea de pantalla usada para cada
imagen es la misma (512 x 512 puntos de pantalla), los pixels de las imgenes
de ms baja resolucin estn duplicados con objeto de llenar completamente el
espacio de pantalla. Esto produce un efecto de tablero de damas que es parti-
cularmente visible en las imgenes de baja resolucin. Es de destacar que la
imagen de 256 x 256 es razonablemente parecida a la figura 8.3a, pero la cali-
dad de la imagen se deteriora rpidamente para otros valores de N.

La figura 8.4 lustra el efecto producido por la reduccin del nmero del nivel de
intensidad manteniendo constante la resolucin espacial en 512 x 512 Las
imgenes de 256, 128 y 64 niveles son de una calidad aceptable. La imagen
de 32 niveles muestra una ligera degradacin (particularmente en las zonas
con poca variacin de intensidad) debido al uso de demasiado pocos niveles
para representar cada pixel. Este efecto es considerablemente ms visible en
la imagen obtenida por 16 niveles, y posteriormente se incrementa mucho, ob-
tenindose estructuras en forma de cresta (llamados contornos falsos).

El nmero de niveles de intensidad y muestras necesarias para producir una


reproduccin til (en el sentido de visin artificial) de una imagen original de-
pende de la imagen misma y de la aplicacin para la que se usar. Como base
de comparacin, los requerimientos para obtener una calidad comparable a la
de las imgenes de la televisin monocroma son del orden de 512 x 512 pixels
con 128 niveles de intensidad. Como regla un sistema de trabajo de visin arti-
ficial de uso general debe tener una capacidad de resolucin del orden de 256
x 256 pixels con 64 niveles.

322 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 8.3. Efectos de la reduccin del tamao de la rejilla muestreadota. a) 512 x 512. b) 256 x
256. c) 128 x 128. d) 64 x 64. e) 32 x 32.

Mg. Abraham Gamarra Moreno 323


Figura 8.4. Una imagen 512 x 512 visualizada con 256, 28, 64, 32, 16, 8,4 y 2 niveles.

8.1.2. TECNICAS DE ILUMINACIN

La iluminacin de la imagen es un factor importante que suele afectar a la


complejidad de los algoritmos de visin. La iluminacin arbitraria del entorno no

324 Tpicos y Aplicaciones de la Inteligencia Artificial


suele ser aceptable ya que se obtienen imgenes con bajo contraste, reflexio-
nes especulares, sombras y detalles espreos. Un sistema de luces bien dise-
ado ilumina una imagen de forma que la complejidad del grfico que se obtie-
ne sea mnima, aumentndose a su vez la informacin necesaria para la de-
teccin y extraccin del objeto.

En la figura 8.5 se muestran cuatro de las principales tcnicas usadas para


iluminar el rea de trabajo del robot. El uso de la iluminacin difusa presentado
en la figura 8.5a se puede utilizar para objetos caracterizados por superficies
suaves y regulares. Esta forma de iluminacin se suele emplear en aplicacio-
nes donde las caractersticas de la superficie son importantes. En la figura 8.6
se puede observar un ejemplo. La iluminacin desde la parte posterior del ob-
jeto, mostrada en la figura 8.5b, produce imgenes en blanco y negro (sin ma-
tices). Esta tcnica se adapta muy bien a aplicaciones en las cuales las silue-
tas de los objetos son suficientes para el reconocimiento u otras medidas. La
figura 8.7 es un ejemplo de las imgenes obtenidas usando esta tcnica.

Figura 8.5 Cuatro sistemas de iluminacin bsico.

Mg. Abraham Gamarra Moreno 325


La tcnica de iluminacin estructural que se muestra en la figura 8.5c se sirve
de la proyeccin de puntos, franjas o rejillas sobre la superficie de trabajo. Con
esta tcnica tenemos dos ventajas importantes. En primer lugar establece un
patrn de luz conocido sobre la superficie de trabajo y las diferencias con este
patrn indican la presencia de un objeto, simplificndose as el problema de
deteccin del objeto. En segundo lugar, analizando la forma en que el patrn
de luz es distorsionado, es posible obtener informacin de las caractersticas
tridimensionales del objeto. En la figura 8.8 se pueden observar dos ejemplos
del uso de esta tcnica de iluminacin. El primero de ellos nos muestra un pa-
raleleppedo iluminado por planos paralelos de luz que se convierten en franjas
de iluminacin al intersectar con una superficie plana. El ejemplo que se mues-
tra en la figura 8.8b usa dos planos de luz proyectados sobre diferentes direc-
ciones, pero convergentes sobre una nica franja en la superficie, como se
puede observar en la figura 8.9.

Una cmara de exploracin de lnea, situada por encima de la superficie y en-


focada hacia la franja, detectara una lnea continua de luz en la ausencia de
objetos. Esta lnea seria interrumpida por un objeto que atravesase simult-
neamente ambos planos de luz. Esta tcnica se adapta muy bien para objetos
que se muevan en una cinta transportadora enfrentada a la cmara. Se usan
dos fuentes de luz para garantizar que el objeto fragmentar la franja de luz
slo cuando est directamente debajo de la cmara. Es interesante destacar
que la cmara de exploracin de lnea ve slo la lnea en la cual los dos planos
de luz convergen, pero la informacin bidimensional puede ir acumulndose
mientras el objeto se mueve por delante de la cmara.

La tcnica de iluminacin direccional mostrada en la figura 8.5d es til, en prin-


cipio, para la inspeccin de la superficie de los objetos. Los defectos en la su-
perficie tales como hoyos y araazos, pueden ser detectados usando un haz
de luz altamente direccional (por ejemplo, un haz lser) y medir el grado de
dispersin. Para superficies sin desperfectos se difumina un poco de luz en
direccin hacia la cmara. Por otro lado, la presencia de un desperfecto suele
incrementar la cantidad de luz dispersada hacia la cmara, facilitando as la
deteccin del defecto. Se muestra un ejemplo en la figura 8.10.

Figura 8.6. Ejemplo de iluminacin difusa.

326 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 8.7. Ejemplo de retroiluminacin.

Figura 8.8. Dos ejemplos de iluminacin estructurada.

Mg. Abraham Gamarra Moreno 327


Figura 8.9. a) Vista superior de dos pianos de luz que se intersectan en una lnea de luz. b) El obje-
to se ver por la cmara solamente cuando inlerrumpa ambos planos de luz.

328 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 8.10. Ejemplo de iluminacin direccional.

8.2. PREPROCESAMIENTO12
En esta seccin veremos diversas tcnicas de procesamiento usadas en sis-
temas de visin artificial. Aunque el nmero de tcnicas disponibles para el
procesamiento general de datos de imagen es elevado, slo una parte de es-
tos mtodos satisface los requerimientos de velocidad de procesamiento y bajo
coste de implementacin, los cuales son caractersticas esenciales de un sis-
tema industrial de visin. El conjunto de tcnicas de proceso tratadas en esta
seccin son mtodos de uso habitual que satisfacen estos requerimientos.

8.2.1. ALGUNAS RELACIONES BSICAS ENTRE PIXELS

En esta seccin veremos algunas relaciones bsicas, pero importantes, entre


los pixels de una imagen digital. Dado que una imagen viene dada por f(x,y), al
referirnos a un pixel particular usaremos letras minsculas, tales como p y q.
Un subconjunto de pixels de f(x,y) se notar por S.

Vecinos de un. pixel

Un pixel p de coordenadas (x,y) tiene cuatro vecinos horizontales y verticales


cuyas coordenadas vienen dadas por

(x+1,y) (xl,y) (x,y+1)

(x,y1)

Este conjunto de pixels, llamados los 4-vecinos de p, ser llamado N4(p). Cada
uno de estos cuatro pixels se encuentra a una distancia unitaria de (x,y) y al-
gunos de los vecinos de p se encontrarn fuera de la imagen digital si (x,y) es-
t en el borde de la imagen.

Mg. Abraham Gamarra Moreno 329


Los cuatro vecinos diagonales de p tienen coordenadas

(x+l,y+1) (x+l,y1) (x1,y+1)

(xl,y1)

y nos referiremos a ellos como ND(p) Estos puntos, junto con los 4 definidos
antes, se llaman los 8-vecinos de p, y se les nombra N8(p). Como antes, algu-
nos de los puntos de ND(p) y N8(p) se encontrarn fuera de la imagen si (x,y)
est en el borde de la imagen.

La figura 8.11 muestra una vecindad de 3x3 para N8(p).

8.2.2. SUAVIZADO

Las operaciones de suavizado se usan para reducir ruido y otros efectos esp-
reos que pueden estar presentes en una imagen como resultado del mues-
treado, cuantizacin, transmisin o perturbaciones en el entorno durante el
proceso de obtencin de la imagen. En esta seccin consideraremos algunos
mtodos rpidos de suavizado que son apropiados para su uso en un sistema
de visin de un robot

Filtracin de la mediana

Otros mtodos desdibujan los contornos y otros detalles de forma. Este desdi-
bujamiento se suele reducir, en gran medida, usando los llamados filtros de la
mediana, en los cuales sustituimos la media de las intensidades por la media-
na en un entorno de vecindad predefinido de cada pixel.

Recordemos que la mediana M de un conjunto de valores es tal que la mitad


de los valores del conjunto son menores que M y la mitad de los valores son
mayores que M. Con el objeto de realizar una filtracin de la mediana en el
entorno de vecindad de cada pixel, ordenamos los valores de intensidad de
cada pixel y sus vecinos, determinamos la mediana y asignamos esta ltima a
la Intensidad del pixel. Por ejemplo, en un entorno de vecindad de 3 x 3 la me-
diana es el quinto valor ms grande, en un entorno de 5 x 5 la mediana es el
l3o, valor ms grande y as sucesivamente. Cuando varios pixels en el entorno
de vecindad tienen el mismo valor, los agrupamos de la siguiente forma: Su-
pngase que un entono de vecindad 3x3 tiene valores
(10,20,20,20,l5,20,20,25,100). Estos valores se ordenarn
(l0,15,20,20,20,20,20,25,100), obtenindose el valor 20 de mediana. Si pen-
samos un poco nos daremos cuenta de que la principal funcin de la filtracin
de la mediana es hacer que los puntos con intensidades muy distintas se ha-
gan ms parecidos a sus vecinos, eliminando as los picos de intensidad que
aparezcan aislados en el rea de la mscara del filtro.

Ejemplo: La figura 8.12a. muestra la imagen original y la figura 8.12b muestra


la misma imagen pero con aproximadamente el 20 por 100 de los pixels distor-
sionados por ruido de impulso. El resultado del promediado del entorno de
vecindad -no tratado en esta obra- sobre un rea de 5 x 5 se muestra en la

330 Tpicos y Aplicaciones de la Inteligencia Artificial


figura 8.12c y el resultado de la filtracin de la mediana tambin sobre un rea
5 x 5 se muestra en la figura 8.12d. La superioridad de la filtracin de la me-
diana sobre la media del entorno de vecindad no necesita explicacin adicio-
nal. Los tres puntos brillantes que permanecen en la figura 8.12d son el resul-
tado de una gran concentracin de ruido en estos puntos, haciendo variar los
clculos de las medianas. Dos o ms pasadas con un filtro demediana elimina-
ran estos puntos.

Figura 8.11. Una vecindad 3 x 3 alrededor de un punto (x,y) en una imagen.

Mg. Abraham Gamarra Moreno 331


Figura 8.12. a) Imagen original. b) Imagen deteriorada por ruido de impulso. c) Resultado de pro-
mediar la vecindad 5 x 5. d) Resultado de la filtracin de mediana 5 x 5.

8.2.3. EJEMPLO DE SUAVIZADO CON FILTRACIN DE LA MEDIANA.

Vea el proyecto de Visual Basic .Net llamado suavizado para ver el uso de es-
tas funciones.

Ejecucin y cdigo para el botn Suavizado.

332 Tpicos y Aplicaciones de la Inteligencia Artificial


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Dim g As Graphics = Me.CreateGraphics
Dim mipunto As New Point(0, 0)
' Create a Bitmap object from an image file.
Dim myBitmap, mybitmapf As Bitmap
' Get the color of a pixel within myBitmap.
Dim pixelColor, pixelColor1 As Color

Dim resx, resy, x, y, xi, yi As Integer


Dim archivo As String
Dim alfa(25), rojo(25), verde(25), azul(25) As Integer

Dim i As Integer

archivo = "..\"

Select Case ListBox1.SelectedItem


Case "imagen1.bmp"
archivo = archivo + "imagen1.bmp"
Case "imagen2.bmp"
archivo = archivo + "imagen2.bmp"
Case "imagen3.bmp"
archivo = archivo + "imagen3.bmp"

End Select

'dibujar imagen
myBitmap = Bitmap.FromFile(archivo)
g.DrawImage(myBitmap, mipunto)

' copiar mapa de bits

Mg. Abraham Gamarra Moreno 333


mybitmapf = myBitmap

'encontrar dimensiones en pixeles


resy = myBitmap.Height
resx = myBitmap.Width

For x = 2 To resx - 3
For y = 2 To resy - 3
'llenar arreglos con intensidades de color
For i = 1 To 25

Select Case i
Case 1
xi = x - 2
yi = y - 2
Case 2
xi = x - 1
yi = y - 2
Case 3
xi = x
yi = y - 2
Case 4
xi = x + 1
yi = y - 2
Case 5
xi = x + 2
yi = y - 2
Case 6
xi = x - 2
yi = y - 1
Case 7
xi = x - 1
yi = y - 1
Case 8
xi = x
yi = y - 1
Case 9
xi = x + 1
yi = y - 1
Case 10
xi = x + 2
yi = y - 1
Case 11
xi = x - 2
yi = y
Case 12
xi = x - 1
yi = y
Case 13
xi = x
yi = y
Case 14
xi = x + 1
yi = y
Case 15
xi = x + 2
yi = y
Case 16
xi = x - 2
yi = y + 1

334 Tpicos y Aplicaciones de la Inteligencia Artificial


Case 17
xi = x - 1
yi = y + 1
Case 18
xi = x
yi = y + 1
Case 19
xi = x + 1
yi = y + 1
Case 20
xi = x + 2
yi = y + 1
Case 21
xi = x - 2
yi = y + 2
Case 22
xi = x - 1
yi = y + 2
Case 23
xi = x
yi = y + 2
Case 24
xi = x + 1
yi = y + 2
Case 25
xi = x + 2
yi = y + 2
End Select

pixelColor = myBitmap.GetPixel(xi, yi)


alfa(i) = pixelColor.A
azul(i) = pixelColor.B
verde(i) = pixelColor.G
rojo(i) = pixelColor.R
Next i

'ordenar arreglos

Array.Sort(alfa)
Array.Sort(azul)
Array.Sort(rojo)
Array.Sort(verde)

mybitmapf.SetPixel(x, y, pixelCo-
lor1.FromArgb(alfa(13), rojo(13), verde(13), azul(13)))

Next
Next
g.Clear(Color.Cyan)
g.DrawImage(mybitmapf, mipunto)
End Sub

Mg. Abraham Gamarra Moreno 335


8.2.4. REALCE12

Una de las mayores dificultades de muchas tareas de visin de bajo nivel es la


de conseguir la adaptacin automtica a los cambios de iluminacin. La capa-
cidad de compensar efectos tales como las sombras y de eliminar falsos refle-
jos suelen desempear un papel importante en el funcionamiento correcto de
los algoritmos de procesamiento posteriores.

REALCE LOCAL

Utilizaremos el realce local con las intensidades de los pixels incluidos en el


entorno de vecindad. Dos de estas propiedades que se usan frecuentemente a
causa de su importancia sobre el aspecto de la imagen son la media de inten-
sidad y la varianza (o desviacin estndar). La media nos da una medida del
brillo medio y la varianza una medida del contraste. La transformacin local
ms tpica basada en estos conceptos usa los valores de intensidad de una
imagen de entrada f(x, y) para obtener los valores de intensidad de la nueva
imagen g(x, y) llevando a cabo la siguiente transformacin en cada posicin de
pixel (x, y):

en esta ecuacin, m(x, y) y (x, y) son la media de intensidad y la desviacin


estndar calculadas sobre un entorno de vecindad centrado en (x,y), M nos la
media global de f(x,y) y k es una constante que toma valores en el intervalo (0,
1).

Los valores de A, m y son cantidades variables que dependen del entorno de


vecindad de (x, y) predefinido. La aplicacin del factor ocal de ganancia A(x, y)
a la diferencia entre f(x, y) y la media local amplifica las variaciones locales.
Debido a que A(x, y) es inversamente proporcional a la desviacin estndar de
la intensidad, a las zonas de bajo contraste se les aplica una ganancia mayor.
La media se vuelve a sumar para restaurar el nivel de intensidad media de la
imagen en la regin local. En la prctica se suele sumar nada ms que una
fraccin de la media local y se suele tambin restringir las variaciones de A(x,y)
entre dos limites [Amin,Amax] para equilibrar las grandes variaciones de inten-
sidad en las regiones aisladas.

336 Tpicos y Aplicaciones de la Inteligencia Artificial


8.2.5. EJEMPLO CON REALCE LOCAL

Vea el proyecto de Visual Basic .Net llamado suavizado para ver el uso de es-
tas funciones.

Ejecucin y cdigo del botn Realce local.

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button6.Click

Dim g As Graphics = Me.CreateGraphics


Dim mipunto As New Point(0, 0)
' Create a Bitmap object from an image file.
Dim myBitmap, mybitmapf As Bitmap
' Get the color of a pixel within myBitmap.
Dim pixelColor, pixelColor1 As Color

Dim resx, resy, x, y, xi, yi As Integer


Dim archivo As String
Dim alfa(25), rojo(25), verde(25), azul(25) As Integer

Dim i As Integer
Dim salfa, srojo, sverde, sazul As Double
Dim salfa2, srojo2, sverde2, sazul2 As Double
Dim malfa, mrojo, mverde, mazul As Double
Dim dealfa, derojo, deverde, deazul As Double
Dim mgalfa, mgrojo, mgverde, mgazul As Double
Dim Axyalfa, Axyazul, Axyverde, Axyrojo, k As Double
Dim gxyalfa, gxyazul, gxyverde, gxyrojo As Double
Dim gxyalfai, gxyazuli, gxyverdei, gxyrojoi As Integer

Mg. Abraham Gamarra Moreno 337


archivo = "..\"

Select Case ListBox1.SelectedItem


Case "imagen1.bmp"
archivo = archivo + "imagen1.bmp"
Case "imagen2.bmp"
archivo = archivo + "imagen2.bmp"
Case "imagen3.bmp"
archivo = archivo + "imagen3.bmp"

End Select

'dibujar imagen
myBitmap = Bitmap.FromFile(archivo)
g.DrawImage(myBitmap, mipunto)

' copiar mapa de bits


mybitmapf = myBitmap

'encontrar dimensiones en pixeles


resy = myBitmap.Height
resx = myBitmap.Width

'calcular media global


salfa = 0
srojo = 0
sverde = 0
sazul = 0
For x = 0 To resx - 1
For y = 0 To resy - 1
'obtener intensidades de color y sumarlos
pixelColor = myBitmap.GetPixel(x, y)
salfa = salfa + pixelColor.A
sazul = sazul + pixelColor.B
sverde = sverde + pixelColor.G
srojo = srojo + pixelColor.R
Next
Next

'calcular medias globales

mgalfa = salfa / (resx * resy)


mgrojo = srojo / (resx * resy)
mgverde = sverde / (resx * resy)
mgazul = sazul / (resx * resy)

'***************************
' calcular medias y desviacin estandar para la
' vecindad de 5 x 5

For x = 2 To resx - 3
For y = 2 To resy - 3
'llenar arreglos con intensidades de color
For i = 1 To 25

Select Case i
Case 1
xi = x - 2
yi = y - 2
Case 2

338 Tpicos y Aplicaciones de la Inteligencia Artificial


xi = x - 1
yi = y - 2
Case 3
xi = x
yi = y - 2
Case 4
xi = x + 1
yi = y - 2
Case 5
xi = x + 2
yi = y - 2
Case 6
xi = x - 2
yi = y - 1
Case 7
xi = x - 1
yi = y - 1
Case 8
xi = x
yi = y - 1
Case 9
xi = x + 1
yi = y - 1
Case 10
xi = x + 2
yi = y - 1
Case 11
xi = x - 2
yi = y
Case 12
xi = x - 1
yi = y
Case 13
xi = x
yi = y
Case 14
xi = x + 1
yi = y
Case 15
xi = x + 2
yi = y
Case 16
xi = x - 2
yi = y + 1
Case 17
xi = x - 1
yi = y + 1
Case 18
xi = x
yi = y + 1
Case 19
xi = x + 1
yi = y + 1
Case 20
xi = x + 2
yi = y + 1
Case 21
xi = x - 2
yi = y + 2
Case 22
xi = x - 1

Mg. Abraham Gamarra Moreno 339


yi = y + 2
Case 23
xi = x
yi = y + 2
Case 24
xi = x + 1
yi = y + 2
Case 25
xi = x + 2
yi = y + 2
End Select

pixelColor = myBitmap.GetPixel(xi, yi)


alfa(i) = pixelColor.A
azul(i) = pixelColor.B
verde(i) = pixelColor.G
rojo(i) = pixelColor.R
Next i

'calcular medias punto x,y

salfa = 0
srojo = 0
sverde = 0
sazul = 0

For i = 1 To 25
salfa = salfa + alfa(i)
sazul = sazul + azul(i)
sverde = sverde + verde(i)
srojo = srojo + rojo(i)
Next

malfa = salfa / 25

mrojo = srojo / 25
mverde = sverde / 25
mazul = sazul / 25

'calcular desviacin estandar punto x,y

salfa2 = 0
srojo2 = 0
sverde2 = 0
sazul2 = 0

For i = 1 To 25
salfa2 = salfa2 + (alfa(i) - malfa) * (alfa(i) -
malfa)
sazul2 = sazul2 + (azul(i) - mazul) * (azul(i) -
mazul)
sverde2 = sverde2 + (verde(i) - mverde) * (ver-
de(i) - mverde)
srojo2 = srojo2 + (rojo(i) - mrojo) * (rojo(i) -
mrojo)
Next

'condicionales para evitar la divisiin entre cero


If salfa2 = 0 Then salfa2 = 0.00001
If sazul2 = 0 Then sazul2 = 0.00001

340 Tpicos y Aplicaciones de la Inteligencia Artificial


If sverde2 = 0 Then sverde2 = 0.00001
If srojo2 = 0 Then srojo2 = 0.00001

dealfa = Math.Sqrt(salfa2 / 24)


deazul = Math.Sqrt(sazul2 / 24)
deverde = Math.Sqrt(sverde2 / 24)
derojo = Math.Sqrt(srojo2 / 24)
k = 0.7
Axyalfa = k * mgalfa / dealfa
Axyazul = k * mgazul / deazul
Axyverde = k * mgverde / deverde
Axyrojo = k * mgrojo / derojo
gxyalfa = Axyalfa * (alfa(13) - malfa) + malfa
gxyazul = Axyazul * (azul(13) - mazul) + mazul
gxyverde = Axyverde * (verde(13) - mverde) + mverde
gxyrojo = Axyrojo * (rojo(13) - mrojo) + mrojo

If gxyalfa > 255 Then


gxyalfa = 255
End If
If gxyazul > 255 Then
gxyazul = 255
End If
If gxyverde > 255 Then
gxyverde = 255
End If
If gxyrojo > 255 Then
gxyrojo = 255
End If

If gxyalfa < 0 Then


gxyalfa = 0
End If
If gxyazul < 0 Then
gxyazul = 0
End If
If gxyverde < 0 Then
gxyverde = 0
End If
If gxyrojo < 0 Then
gxyrojo = 0
End If
gxyalfai = CInt(gxyalfa)
gxyazuli = CInt(gxyazul)
gxyverdei = CInt(gxyverde)
gxyrojoi = CInt(gxyrojo)

mybitmapf.SetPixel(x, y, pixelCol-
or1.FromArgb(gxyalfai, gxyrojoi, gxyverdei, gxyazuli))
Next
Next
g.Clear(Color.Cyan)
g.DrawImage(mybitmapf, mipunto)
End Sub

Mg. Abraham Gamarra Moreno 341


8.3. SEGMENTACIN12

8.3.1. DETECCIN DE BORDES

La deteccin de bordes juega un papel muy importante en la visin artificial,


sirviendo como el paso inicial de preprocesamiento previo a muchos algoritmos
de identificacin de objetos.

Operadores de gradiente.

El gradiente de una imagen f(x, y) en un punto (x, y) se define como un vector


bidimensional

Por la teora de vectores sabemos que el vector G apunta a la direccin de va-


riacin mxima de f en el punto (x, y). Para la deteccin de bordes resulta de
gran inters conocer el valor de este vector, al que nombraremos gradiente y
representaremos como G[f(x,y)], donde

Usando un entorno de vecindad de 3 x 3 pixels centrado en (x,y) se obtiene Gx


y Gy de la siguiente forma:

342 Tpicos y Aplicaciones de la Inteligencia Artificial


donde se han usado las letras de la a a la i para representar a los vecinos del
punto (x,y).

Existen muchas maneras para generar una imagen de salida, g(x, y), basadas
en el cmputo del gradiente. El mtodo ms simple es suponer que el valor de
g en las coordenadas (x,y) es igual al gradiente de la imagen de entrada f en
ese punto; esto es,

Otra tcnica consiste en crear una imagen binaria usando la siguiente relacin:

en donde T es un valor de umbral no negativo. En este caso, slo los pixels de


contorno cuyos gradientes excedan del valor T se consideran importantes.

8.3.2. EJEMPLO DE BORDES CON GRADIENTE

La ejecucin y cdigo para el botn Bordes Gradiente, se lista a continuacin.

Mg. Abraham Gamarra Moreno 343


Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button7.Click
Dim g As Graphics = Me.CreateGraphics
Dim mipunto As New Point(0, 0)
' Create a Bitmap object from an image file.
Dim myBitmap, mybitmapf As Bitmap
' Get the color of a pixel within myBitmap.
Dim pixelColor, pixelColor1 As Color
Dim Gxalfa, Gxazul, Gxrojo, Gxverde As Integer
Dim Gyalfa, Gyazul, Gyrojo, Gyverde As Integer
Dim Galfa, Gazul, Grojo, Gverde As Integer

Dim resx, resy, x, y, xi, yi As Integer


Dim archivo As String
Dim i As Integer

archivo = "..\"

Select Case ListBox1.SelectedItem


Case "imagen1.bmp"
archivo = archivo + "imagen1.bmp"
Case "imagen2.bmp"
archivo = archivo + "imagen2.bmp"
Case "imagen3.bmp"
archivo = archivo + "imagen3.bmp"

End Select

'dibujar imagen
myBitmap = Bitmap.FromFile(archivo)
g.DrawImage(myBitmap, mipunto)

344 Tpicos y Aplicaciones de la Inteligencia Artificial


' copiar mapa de bits
mybitmapf = myBitmap

'encontrar dimensiones en pixeles


resy = myBitmap.Height
resx = myBitmap.Width

For x = 2 To resx - 3
For y = 2 To resy - 3

Gxalfa = 0
Gxazul = 0
Gxverde = 0
Gxrojo = 0

Gyalfa = 0
Gyazul = 0
Gyverde = 0
Gyrojo = 0

'obtener Gx para cada color


pixelColor = myBitmap.GetPixel(x + 1, y - 1)
Gxalfa = Gxalfa + pixelColor.A
Gxazul = Gxazul + pixelColor.B
Gxverde = Gxverde + pixelColor.G
Gxrojo = Gxrojo + pixelColor.R

pixelColor = myBitmap.GetPixel(x + 1, y)
Gxalfa = Gxalfa + 2 * pixelColor.A
Gxazul = Gxazul + 2 * pixelColor.B
Gxverde = Gxverde + 2 * pixelColor.G
Gxrojo = Gxrojo + 2 * pixelColor.R

pixelColor = myBitmap.GetPixel(x + 1, y + 1)
Gxalfa = Gxalfa + pixelColor.A
Gxazul = Gxazul + pixelColor.B
Gxverde = Gxverde + pixelColor.G
Gxrojo = Gxrojo + pixelColor.R

pixelColor = myBitmap.GetPixel(x - 1, y - 1)
Gxalfa = Gxalfa - pixelColor.A
Gxazul = Gxazul - pixelColor.B
Gxverde = Gxverde - pixelColor.G
Gxrojo = Gxrojo - pixelColor.R

pixelColor = myBitmap.GetPixel(x - 1, y)
Gxalfa = Gxalfa - 2 * pixelColor.A
Gxazul = Gxazul - 2 * pixelColor.B
Gxverde = Gxverde - 2 * pixelColor.G
Gxrojo = Gxrojo - 2 * pixelColor.R

pixelColor = myBitmap.GetPixel(x - 1, y + 1)
Gxalfa = Gxalfa - pixelColor.A
Gxazul = Gxazul - pixelColor.B
Gxverde = Gxverde - pixelColor.G
Gxrojo = Gxrojo - pixelColor.R

'obtener Gy para cada color


pixelColor = myBitmap.GetPixel(x - 1, y + 1)
Gyalfa = Gyalfa + pixelColor.A

Mg. Abraham Gamarra Moreno 345


Gyazul = Gyazul + pixelColor.B
Gyverde = Gyverde + pixelColor.G
Gyrojo = Gyrojo + pixelColor.R

pixelColor = myBitmap.GetPixel(x, y + 1)
Gyalfa = Gyalfa + 2 * pixelColor.A
Gyazul = Gyazul + 2 * pixelColor.B
Gyverde = Gyverde + 2 * pixelColor.G
Gyrojo = Gyrojo + 2 * pixelColor.R

pixelColor = myBitmap.GetPixel(x + 1, y + 1)
Gyalfa = Gyalfa + pixelColor.A
Gyazul = Gyazul + pixelColor.B
Gyverde = Gyverde + pixelColor.G
Gyrojo = Gyrojo + pixelColor.R

pixelColor = myBitmap.GetPixel(x - 1, y - 1)
Gyalfa = Gyalfa - pixelColor.A
Gyazul = Gyazul - pixelColor.B
Gyverde = Gyverde - pixelColor.G
Gyrojo = Gyrojo - pixelColor.R

pixelColor = myBitmap.GetPixel(x, y - 1)
Gyalfa = Gyalfa - 2 * pixelColor.A
Gyazul = Gyazul - 2 * pixelColor.B
Gyverde = Gyverde - 2 * pixelColor.G
Gyrojo = Gyrojo - 2 * pixelColor.R

pixelColor = myBitmap.GetPixel(x + 1, y - 1)
Gyalfa = Gyalfa - pixelColor.A
Gyazul = Gyazul - pixelColor.B
Gyverde = Gyverde - pixelColor.G
Gyrojo = Gyrojo - pixelColor.R

Galfa = CInt(Math.Sqrt(Math.Pow(Gxalfa, 2) +
Math.Pow(Gyalfa, 2)))
Gazul = CInt(Math.Sqrt(Math.Pow(Gxazul, 2) +
Math.Pow(Gyazul, 2)))
Gverde = CInt(Math.Sqrt(Math.Pow(Gxverde, 2) +
Math.Pow(Gyverde, 2)))
Grojo = CInt(Math.Sqrt(Math.Pow(Gxrojo, 2) +
Math.Pow(Gyrojo, 2)))

If Galfa > 255 Then Galfa = 255


If Gazul > 255 Then Gazul = 255
If Gverde > 255 Then Gverde = 255
If Grojo > 255 Then Grojo = 255

mybitmapf.SetPixel(x, y, pixelColor1.FromArgb(Grojo,
Gverde, Gazul))
Next
Next
g.Clear(Color.Cyan)
g.DrawImage(mybitmapf, mipunto)
End Sub

346 Tpicos y Aplicaciones de la Inteligencia Artificial


8.3.3. BORDES CON GRADIENTE Y UMBRAL

Ejecucin y cdigo para el botn Bordes


gradiente y umbral.

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button8.Click
Dim g As Graphics = Me.CreateGraphics
Dim mipunto As New Point(0, 0)
' Create a Bitmap object from an image file.
Dim myBitmap, mybitmapf As Bitmap
' Get the color of a pixel within myBitmap.
Dim pixelColor, pixelColor1 As Color
Dim Gxalfa, Gxazul, Gxrojo, Gxverde As Integer
Dim Gyalfa, Gyazul, Gyrojo, Gyverde As Integer
Dim Galfa, Gazul, Grojo, Gverde As Integer
Dim cad As String
Dim T As Integer 'T umbral

Dim resx, resy, x, y, xi, yi As Integer


Dim archivo As String
Dim i As Integer

archivo = "..\"

Select Case ListBox1.SelectedItem


Case "imagen1.bmp"
archivo = archivo + "imagen1.bmp"
Case "imagen2.bmp"
archivo = archivo + "imagen2.bmp"
Case "imagen3.bmp"
archivo = archivo + "imagen3.bmp"

End Select

'dibujar imagen
myBitmap = Bitmap.FromFile(archivo)
g.DrawImage(myBitmap, mipunto)

Mg. Abraham Gamarra Moreno 347


' copiar mapa de bits
mybitmapf = myBitmap

'encontrar dimensiones en pixeles


resy = myBitmap.Height
resx = myBitmap.Width

cad = InputBox("ingrese un valor de 1 a 255 ", , , , )


T = Val(cad)

For x = 2 To resx - 3
For y = 2 To resy - 3

Gxalfa = 0
Gxazul = 0
Gxverde = 0
Gxrojo = 0

Gyalfa = 0
Gyazul = 0
Gyverde = 0
Gyrojo = 0

'obtener Gx para cada color


pixelColor = myBitmap.GetPixel(x + 1, y - 1)
Gxalfa = Gxalfa + pixelColor.A
Gxazul = Gxazul + pixelColor.B
Gxverde = Gxverde + pixelColor.G
Gxrojo = Gxrojo + pixelColor.R

pixelColor = myBitmap.GetPixel(x + 1, y)
Gxalfa = Gxalfa + 2 * pixelColor.A
Gxazul = Gxazul + 2 * pixelColor.B
Gxverde = Gxverde + 2 * pixelColor.G
Gxrojo = Gxrojo + 2 * pixelColor.R

pixelColor = myBitmap.GetPixel(x + 1, y + 1)
Gxalfa = Gxalfa + pixelColor.A
Gxazul = Gxazul + pixelColor.B
Gxverde = Gxverde + pixelColor.G
Gxrojo = Gxrojo + pixelColor.R

pixelColor = myBitmap.GetPixel(x - 1, y - 1)
Gxalfa = Gxalfa - pixelColor.A
Gxazul = Gxazul - pixelColor.B
Gxverde = Gxverde - pixelColor.G
Gxrojo = Gxrojo - pixelColor.R

pixelColor = myBitmap.GetPixel(x - 1, y)
Gxalfa = Gxalfa - 2 * pixelColor.A
Gxazul = Gxazul - 2 * pixelColor.B
Gxverde = Gxverde - 2 * pixelColor.G
Gxrojo = Gxrojo - 2 * pixelColor.R

pixelColor = myBitmap.GetPixel(x - 1, y + 1)
Gxalfa = Gxalfa - pixelColor.A
Gxazul = Gxazul - pixelColor.B
Gxverde = Gxverde - pixelColor.G
Gxrojo = Gxrojo - pixelColor.R

'obtener Gy para cada color

348 Tpicos y Aplicaciones de la Inteligencia Artificial


pixelColor = myBitmap.GetPixel(x - 1, y + 1)
Gyalfa = Gyalfa + pixelColor.A
Gyazul = Gyazul + pixelColor.B
Gyverde = Gyverde + pixelColor.G
Gyrojo = Gyrojo + pixelColor.R

pixelColor = myBitmap.GetPixel(x, y + 1)
Gyalfa = Gyalfa + 2 * pixelColor.A
Gyazul = Gyazul + 2 * pixelColor.B
Gyverde = Gyverde + 2 * pixelColor.G
Gyrojo = Gyrojo + 2 * pixelColor.R

pixelColor = myBitmap.GetPixel(x + 1, y + 1)
Gyalfa = Gyalfa + pixelColor.A
Gyazul = Gyazul + pixelColor.B
Gyverde = Gyverde + pixelColor.G
Gyrojo = Gyrojo + pixelColor.R

pixelColor = myBitmap.GetPixel(x - 1, y - 1)
Gyalfa = Gyalfa - pixelColor.A
Gyazul = Gyazul - pixelColor.B
Gyverde = Gyverde - pixelColor.G
Gyrojo = Gyrojo - pixelColor.R

pixelColor = myBitmap.GetPixel(x, y - 1)
Gyalfa = Gyalfa - 2 * pixelColor.A
Gyazul = Gyazul - 2 * pixelColor.B
Gyverde = Gyverde - 2 * pixelColor.G
Gyrojo = Gyrojo - 2 * pixelColor.R

pixelColor = myBitmap.GetPixel(x + 1, y - 1)
Gyalfa = Gyalfa - pixelColor.A
Gyazul = Gyazul - pixelColor.B
Gyverde = Gyverde - pixelColor.G
Gyrojo = Gyrojo - pixelColor.R

Galfa = CInt(Math.Sqrt(Math.Pow(Gxalfa, 2) +
Math.Pow(Gyalfa, 2)))
Gazul = CInt(Math.Sqrt(Math.Pow(Gxazul, 2) +
Math.Pow(Gyazul, 2)))
Gverde = CInt(Math.Sqrt(Math.Pow(Gxverde, 2) +
Math.Pow(Gyverde, 2)))
Grojo = CInt(Math.Sqrt(Math.Pow(Gxrojo, 2) +
Math.Pow(Gyrojo, 2)))

If Gazul > T And Gverde > T And Grojo > T Then


Galfa = 255
Gazul = 255
Gverde = 255
Grojo = 255
Else
Galfa = 0
Gazul = 0
Gverde = 0
Grojo = 0
End If

mybitmapf.SetPixel(x, y, pixelColor1.FromArgb(Grojo,
Gverde, Gazul))

Next

Mg. Abraham Gamarra Moreno 349


Next
g.Clear(Color.Cyan)
g.DrawImage(mybitmapf, mipunto)
End Sub

8.3.4. DETECCIN BORDES Y FRONTERA CON UMBRAL

El uso de los umbrales en el tratamiento de imgenes es una de las principales


tcnicas usadas por los sistemas de visin industrial para la deteccin de obje-
tos, especialmente en la que requieran una cantidad elevada de datos. En esta
seccin trataremos aspectos del uso de los umbrales que caen dentro de la
categora de procesamiento de bajo nivel.

Una forma de extraer los objetos del entorno es seleccionar un nivel T que se-
pare los dos tonos de intensidad. De esta forma, un punto (x, y) para el cual
f(x,y) > T ser un punto del objeto; en caso contrario, el punto ser del entorno.

Crearemos una nueva imagen g(x,y) definiendo

Examinando g(x,y) vemos que los pixels a los que se les asigna valor 1 (o
cualquier otro nivel de intensidad segn el caso) corresponden a los objetos,
mientras que los pixels, a los que se les asigna un 0 Corresponden al entorno.
Cuando T depende slo de f(x,y), el umbral se llama global.

8.3.5. EJEMPLO DE DETECCIN DE UMBRAL

La ejecucin y cdigo del botn Bordes umbral se lista a continuacin:

350 Tpicos y Aplicaciones de la Inteligencia Artificial


Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button9.Click
Dim g As Graphics = Me.CreateGraphics
Dim mipunto As New Point(0, 0)
' Create a Bitmap object from an image file.
Dim myBitmap, mybitmapf As Bitmap
' Get the color of a pixel within myBitmap.
Dim pixelColor, pixelColor1 As Color
Dim alfa, azul, rojo, verde As Integer
Dim Galfa, Gazul, Grojo, Gverde As Integer
Dim cad As String
Dim T As Integer 'T umbral

Dim resx, resy, x, y, xi, yi As Integer


Dim archivo As String
Dim i As Integer

archivo = "..\"

Select Case ListBox1.SelectedItem


Case "imagen1.bmp"
archivo = archivo + "imagen1.bmp"
Case "imagen2.bmp"
archivo = archivo + "imagen2.bmp"
Case "imagen3.bmp"
archivo = archivo + "imagen3.bmp"

End Select

'dibujar imagen
myBitmap = Bitmap.FromFile(archivo)
g.DrawImage(myBitmap, mipunto)

' copiar mapa de bits


mybitmapf = myBitmap

Mg. Abraham Gamarra Moreno 351


'encontrar dimensiones en pixeles
resy = myBitmap.Height
resx = myBitmap.Width

cad = InputBox("ingrese un valor de 1 a 255 ", , , , )


T = Val(cad)

For x = 2 To resx - 3
For y = 2 To resy - 3

'obtener color
pixelColor = myBitmap.GetPixel(x, y)
alfa = pixelColor.A
azul = pixelColor.B
verde = pixelColor.G
rojo = pixelColor.R

If azul > T And verde > T And rojo > T Then


alfa = 255
azul = 255
verde = 255
rojo = 255
Else
alfa = 0
azul = 0
verde = 0
rojo = 0
End If

mybitmapf.SetPixel(x, y, pixelColor1.FromArgb(rojo,
verde, azul))

Next
Next
g.Clear(Color.Cyan)
g.DrawImage(mybitmapf, mipunto)
End Sub

8.4. DESCRIPCIN, RECONOCIMIENTO E


INTERPRETACIN
Al inicio de este captulo se mencion que mediante los procesos de descrip-
cin se obtienen caractersticas (por ejemplo, tamao, forma) convenientes
para diferenciar un tipo de objeto de otro. Adems se mencion que el recono-
cimiento es el proceso que identifica estos objetos (por ejemplo, una llave in-
glesa, un tornillo, un soporte de motor). Y finalmente, se dijo que la interpreta-
cin le asocia un significado a un conjunto de objetos reconocidos.

Existen varios algoritmos propuestos para cada una de estas reas; pero en
este libro se trata de reemplazar estas reas, con el reconocimiento de objetos
a travs de redes neuronales.

352 Tpicos y Aplicaciones de la Inteligencia Artificial


8.5. RECONOCIMIENTO A TRAVS DE REDES
NEURONALES

Mg. Abraham Gamarra Moreno 353


CAPITULO NUEVE
ROBTICA

9.1. ORGENES Y DESARROLLO DE LA ROBTICA


La robtica es el intento por reproducir la forma y el comportamiento de los
seres vivos.

Nace con la necesidad de disponer de siervos o esclavos para realizar tareas


tediosas o desagradables.

En 1923 el escritor checo Karel Capek escribe la obra Rossums Universal Ro-
bots de la que surge la palabra robot.

La palabra robot deriva de robotnik que en checo significa siervo.

9.2. ROBTICA INDUSTRIAL


El robot industrial es una mquina que puede efectuar un nmero diverso de
trabajos, automticamente, mediante la programacin previa. Tiene la peculia-
ridad de tener una estructura en forma de brazo y es capaz de tomar decisio-
nes en funcin de la informacin procedente del exterior.

Las figuras 9.1, 9.2 y 9.3, destacan las principales caractersticas de la produc-
cin automatizada y la forma como evolucion.

Los robots industriales son utilizados para el aumento de la productividad, la


mejora de la flexibilidad, potenciar el rendimiento de otras mquinas, una rpi-
da amortizacin de la inversin, la mejora de la calidad, la realizacin de traba-
jos peligrosos, la disminucin de stocks y plazos de entrega.

Mg. Abraham Gamarra Moreno 355


Las tecnologas usadas en la robtica industrial se muestran en la figura 9.4.

La estructura general de un robot industrial se muestra en la figura 9.5

Los tipos de aplicaciones de la robtica industrial se muestran en la figura 9.6.

Las figuras 9.7 y 9.8 muestran dos aplicaciones concretas de la robtica indus-
trial.

Figura 9.1. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

356 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 9.2. . (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Figura 9.3. . (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Figura 9.4. . (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Mg. Abraham Gamarra Moreno 357


Figura 9.5. . (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

358 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 9.6. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Mg. Abraham Gamarra Moreno 359


Figura 9.7. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

360 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 9.8. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

9.3. ROBOTS PARA FORMACIN E INVESTIGACIN


Los robots para formacin e investigacin son de menor tamao que los robots
industriales y nos permiten analizar sus caractersticas, as como programarlos
para diversos tarabajos. Estos robots son utilizados por los estudiantes de las
universidades o de los centros de formacin que estn relacionados con la ro-
btica.

Los robots mviles o microbots son utilizados tambin como robots de forma-
cin e investigacin; e inclusive se realizan concursos entre universidades
donde se pone a prueba la destreza de la programacin de estos robots.

Las figuras 9.9, 9.10 y 9.11; muestran algunos robots de formacin e investiga-
cin

Mg. Abraham Gamarra Moreno 361


Figura 9.9. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Figura 9.10. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

362 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 9.11. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

9.4. LOS MICROBOTS SON UN JUGUETE?


Los microbots son ms que un juguete, aunque la primera impresin nos pu-
diera hacer pensar lo contrario. Pueden tener forma de vehculo, de animal, de
criatura robtica pero todos tienen una caracterstica comn; la inteligencia
necesaria para realizar tareas en un entorno que pueden variar y al cual se
pueden adaptar. La ciencia que estudia los microbots es la Microbtica.

9.5. SENSORES
Los microbots utilizan sensores, que emulan nuestros sentidos, estos sirven
para tomar alguna decisin o para realizar alguna accin.

9.5.1. SENSOR DE GOLPE O BUMPER

Entre los sensores que podemos utilizar se encuentran los sensores de golpe o
bumper, que permiten emular el tacto de las personas. Este sensor detecta si
hemos realizado contacto con un objeto o chocado con ese objeto. Las figuras
9.12 y 9.13 muestran un bumper.

Mg. Abraham Gamarra Moreno 363


Figura 9.12. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Figura 9.13. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

364 Tpicos y Aplicaciones de la Inteligencia Artificial


9.5.2. SENSOR DE RAYOS INFRARROJOS

Otro sensor que se utiliza es el sensor de rayos infrarrojos, que permite reco-
nocer colores claros o colores oscuros. Este sensor emula la vista pero en for-
ma muy rudimentaria. En microbtica es muy utilizada para que los robots
puedan seguir una lnea negra o blanca. Las figuras 9.14 y 9.15 muestran el
sensor de rayos infrarrojos.

Figura 9.14. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Mg. Abraham Gamarra Moreno 365


Figura 9.15. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

9.5.3. SENSOR DE LUMINOSIDAD

Este sensor permite detectar la presencia de luz en el ambiente. La figura 9.16


muestra un sensor de luminosidad.

366 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 9.16. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

9.5.4. MICROCMARAS DE VISIN

Estas microcmaras permiten obtener imgenes que pueden ser utilizados por
los algoritmos de visin artificial.

La figura 9.17 muestra algunos modelos de microcmaras.

9.6. CONSTRUCCIN DE LOS MICROBOTS


Metal, plstico, madera, PVC, cartn y todos los materiales valen en la cons-
truccin de microbots. El motor de juguetes o artefactos electricos, los engra-
najes de la vieja impresora, el panel solar de la calculadora, etc.

Mg. Abraham Gamarra Moreno 367


Figura 9.17. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

En la figura 9.18 se muestra el uso de los motores y ruedas de un avin a con-


trol remoto, as como la tapa de un porta CD.

Figura 9.18.

368 Tpicos y Aplicaciones de la Inteligencia Artificial


9.7. COMPONENTES DE UN MICROBOT
Los componentes bsicos de un microbot son:

La estructura o armazon del robot mvil.

Motores.

Ruedas o patas para la locomocin.

Bateras para un movimiento autnomo.

Sensores.

Una tarjeta microcontroladora que tiene al circuito integrado programable


(PIC) o microcontrolador.

Una tarjeta de potencia que permite elevar la potencia para mover los mo-
tores.

La figura 9.19 muestra estos componentes.

Figura 9.19. Componentes de un robot mvil. (Fuente: El robot Pathfinder. Madrid: F y G edito-
res; 2003.)

El PIC o microcontrolador es un componente esencial para la programacin de


la robtica mvil. Los microcontroladores se encuentran en varias modelos y
marcas (figura 9.20).

Mg. Abraham Gamarra Moreno 369


Figura 9.20. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Un detalle importante es que un microcontrolador tiene un computador comple-


to en el chip tal como se muestra en la figura 9.21, por eso se pueden grabar
los programas para el robot mvil en este microcontrolador.

La figura 9.22 muestra la diferencia de un microprocesador con respecto a un


microconrolador.

Figura 9.21. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

370 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 9.22. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

9.8. PROGRAMACIN DE LOS MICROBOTS


Se puede programar en Basic para PIC, pero no es la nica opcin. Hay varios
lenguajes preparados para el trabajo con microcontroladores, y muchos su-
blenguajes cuyas caractersticas precisas dependen del fabricante. As por
ejemplo tenemos el Basic, el Pascal y el C como lenguajes de alto nivel, todos
ellos en su versin para microcontroladores, y el ensamblador como lenguaje
ms cercano a la mquina.

A la hora de elegir un lenguaje de programacin son importantes varios aspec-


tos. Lo primero es pensar en el microcontrolador con el que se va a trabajar,
tanto en el fabricante como en el modelo.

Los robots MINDSTORMS NXT de Lego, tiene el programa LEGO MINDS-


TORMS NXT SOFTWARE (figura 9.23) que permite programar sus robots en
forma grfica. Otro producto para programar robots mviles es MICROSOFT
ROBOTICS DEVELOPER STUDIO 2008.

Mg. Abraham Gamarra Moreno 371


Figura 9.23. Programa LEGO MINDSTORMS NXT SOFTWARE.

9.8.1. GRABACIN DEL PROGRAMA

El fin ltimo es que el microbot tenga el programa grabado en el microcontrola-


dor para que pueda realizar su funcin de forma autnoma. Las formas de
descargar dicho programa son muy variadas. Algunos microbots no tienen in-
ternamente circuito grabador, de modo que necesitan un sistema independien-
te para que realice esta funcin. Otros, sin embargo, slo precisan conectarse
al ordenador con un cable para que el programa pase de uno a otro. Esta
transferencia puede ser para la grabacin del microcontrolador o para la des-
carga del programa en una memoria auxiliar de donde el microcontrolador lee
las instrucciones posteriormente (figura 9.24). En microbots ms sofisticados
las instrucciones llegan al microbot por rayos infrarrojos o con la lectura de tar-
jetas chip previamente grabadas (figura 9.25).

9.9. APLICACIONES DE LA ROBTICA


Existen cuatro reas en las que la robtica va a propiciar una explosin de po-
sibilidades y ventajas.

1. Robots de mantenimiento e inspeccin.

2. Robots de servicio.

3. Robots para medicina.

4. Microbots.

372 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 9.24. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Figura 9.25. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Mg. Abraham Gamarra Moreno 373


9.9.1. ROBOTS DE INSPECCIN Y MANTENIMIENTO

Todos los sistemas productivos requieren labores de inspeccin y manteni-


miento. En el mantenimiento de reactores nucleares, su montaje y reparacin,
se utilizan desde hace mucho tiempo robots industriales. Tambin se aprecia
un notable incremento de su aplicacin en la inspeccin automtica de aerona-
ves y en las aplicaciones subacuticas. La figura 9.26 muestra un robot de ins-
peccin de piezas fundidas.

Figura 9.26. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

9.9.2. ROBOTS DE SERVICIO

La IFR (International Federation of Robotics) ha acuado el trmino robot de


servicio para los robots que funcionan de manera total o parcialmente aut-
noma para proporcionar servicios de utilidad al ser humano o en instalaciones
y equipos, excluyendo las operaciones de fabricacin. Entre los servicios al ser
humano destacan los de atencin sanitaria y entretenimiento. En cuanto a ser-
vicios de utilidad en instalaciones y equipos se citan la limpieza, el manteni-
miento, la reparacin y la vigilancia. La figura 9.27 muestra algunos usos de los
robots de servicio.

9.9.3. LOS ROBOTS EN LA MEDICINA

Especialmente en ciruga los robots conllevan importantes ventajas: no tiem-


blan, son muy precisos y se pueden gobernar desde un Lugar remoto. Las
principales tareas que realizan Los robots en este campo son:

Se encargan de mover las cmaras endoscpicas.

374 Tpicos y Aplicaciones de la Inteligencia Artificial


Manejan diversos instrumentos quirrgicos.

Se encargan del fresado y modelado de la prtesis de cadera.

Colaboran en intervenciones de rtula.

Posicionamiento de microscopios en operaciones de neurociruga.

Manipuladores ligeros para sillas de ruedas y labores sencillas para discapa-


citados.

Figura 9.27. Usos de los robots de servicio. (Fuente: El robot Pathfinder. Madrid: F y G editores;
2003.)

9.9.4. MICROBOTS

Son pequeos robots mviles que realizan una sencilla tarea con precisin y
velocidad. Dado su pequeo volumen y precio, y teniendo en cuenta que su
potencia casi se duplica cada ao al incorporar los avances tecnolgicos ms
avanzados, es previsible una invasin mundial de estas bestiecillas para fina-
les de la primera dcada del presente siglo.

Las misiones ms interesantes que desarrollan los microbots son:

Limpieza de hogares, oficinas y fbricas.

Vigilancia y supervisin.

Mg. Abraham Gamarra Moreno 375


Conserjes para acompaamiento de visitantes.

Activar y desactivar mandos para gobierno de puertas, ventanas, etc.

Cuidado y limpieza de jardines y huertas.

Cortadores de csped (figura 9.28).

Las misiones ms interesantes que desarrollan los microbots son:

Aplicaciones militares.

Recoger informacin en ambientes hostiles y peligrosos.

Participar en torneos diversos, como partidos de ftbol, tenis, sumo, etc


(figura 9.29).

Mascotas y compaeros (figura 9.30)

Figura 9.28. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

376 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 9.29. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Figura 9.30. (Fuente: El robot Pathfinder. Madrid: F y G editores; 2003.)

Mg. Abraham Gamarra Moreno 377


9.10. CONSTRUCCIN DE ALGUNOS MODELOS DE
MICROBOTS
En el CD se encuentra un archivo de Power Point, llamado MIS MICRO-
BOTS.PPT, que muestra una visin rpida de la construccin de dos micro-
bots.

En el CD tambin est el video del comportamiento del microbot llamado FIS-


BOT y el programa para seguir una lnea negra, implementado en Ensambla-
dor para PIC, el cul se lista a continuacin:

;************************************************************************************
; LINEA NEGRA
;
; Hace que el microbot se mueva siguiendo una trayectoria marcada en el suelo
mediante
;te una lnea negra a modo de pista.
;

LIST P=16C84 ;Tipo de procesador


LISTC=132 ;N de caracteres por lnea
LISTN=66 ;N de lneas por pgina

include "Regx84.inc" ;Definicin de registros


include "Macros.inc" ;Inclusin de macros

#DEFINE J0 PORTB,0 ;Sensor de posicin 1


#DEFINE J1 PORTB,1 ;Sensor de posicin 2
#DEFINE J2 PORTB,2 ;Sensor de obstulo dcho.
#DEFINE J3 PORTB,3 ;Sensor de obstculo izdo.

org 0x00
goto Reset ;Vector de RESET

org 0x05

Reset: clrf PORTA


bsf STATUS,RP0 ;Seleccin de pgina 1
movlw b'00010000'
movwf TRISA ;RA0-RA3 salidas, RA4 entrada
movlw b'11111111'
movwf TRISB ;RB0-RB3 entradas
movlw b'11110000'
movwf OPTION_REG ;RA4 clock del TMR0
bcf STATUS,RP0 ;Pgina 0
bcf INTCON,GIE ;Interrupciones OFF

;Se espera a que se accione cualquier bumper delantero para iniciar la secuecia

;Wait clrwdt
; Stop ;Situacin inicial de parada
; btfss J2 ;Sensor de obsculo dcho. ON ??
; goto Loop ;Si, inicio
; btfscJ3 ;Sensor de obstculo izdo ON ??
; goto Wait ;Si, inicio

;Bucle principal

378 Tpicos y Aplicaciones de la Inteligencia Artificial


Loop: clrwdt
; btfss J2 ;Sensor de obsculo dcho. ON ??
; goto Parada ;Si, parada
; btfscJ3 ;Sensor de obstculo izdo ON ??
; goto No_Obstaculo ;No, arranque
;Parada Stop ;Parar motores
; goto Loop

No_ObstaculobtfscJ1 ;Ha salido por la izquierda ?


goto No_Izda ;No
Dcha ;Si, movimiento a la derecha
goto Loop

No_Izda btfscJ0 ;Ha salido por la derecha ?


goto No_Dcha ;No
Izda ;Si, movimiento a la izquierda
goto Loop

No_Dcha Adelante ;Avance del microbot


goto Loop

end

Adems en el CD est el video del comportamiento del microbot llamado FIS-


TANK y el programa para evitar obstculos, implementado en Ensamblador
para PIC y se lista a continuacin:

;***************************************************************************
;Programa de robot explorador. Avanza y cada vez que se choca con un obstculo (bumpers),
;corrige su trayectoria. En funcin de con qu bumper se choque, reproduce un mensaje
;diferente grabado en su chip de voz. Es necesario introducir dos mensajes (duracin
;mxima 4 segundos), durante los ocho primeros segundos de grabacin del chip de voz.
;Posteriormente el robot se encargar de reproducir cada submensaje de cuatro segundos
;en funcin de qu bumper se haya activado.
;
; MOTORES
;RB0 Y RB1 son para el motor central
;RBO: 1
;RB1: 0 -> Robot gira hacia la derecha
;RB2 y RB3 son para el motor de la rueda izquierda
;RB2: 0
;RB3: 1 -> Robot avanza
;RB4 y RB5 son para el motor de la rueda derecha
;RB4: 1
;RB5: 0 -> Robot avanza
;
; SENSORES
;Cuando los sensores envan un '1' es que ven negro. Si se lee un '0' es que hay blanco
;RC0: Sensor de la izquierda
;RC1: Sensor de la derecha
;RC2: Sensor central
;RA1 y RA2: Bumpers
;RA1: Bumper izquierdo (JP7)
;RA2: Bumper derecho (JP8)
;***************************************************************************

list p=16F870 ;Definicin del tipo de dispositivo

Mg. Abraham Gamarra Moreno 379


include "P16F870.inc" ;Librera con los registros de control

;Variables del programa que sern utilizadas como registros (memoria RAM del Pic)
TEMPO EQU 0x20 ;Variable auxiliar para la modulacin de anchura de pulsos
con el Timer0
AUX EQU 0x21 ;Variable auxiliar para operaciones matemticas
DELAY_VAR EQU 0x24
TEMPO2 EQU 0x25
TIEMPO1 EQU 0x26
TIEMPO2 EQU 0x27
TIEMPO3 EQU 0x28
;Definiciones de valores para algunos parmetros del programa
TON_AVANCE EQU .5
TOFF_AVANCE EQU .8
TON_CENTRAL EQU .5
TOFF_CENTRAL EQU .10
CORRIGE_CENTRAL EQU .10

org 0xB0

;***************************************************************************
;***************** COMIENZO DEL PROGRAMA PRINCIPAL *************************
;***************************************************************************
INICIO:
bsf STATUS, 5 ;Banco 1
clrf PORTB ;PuertaB como salida para los sensores
movlw 0x07
movwf ADCON0 ;PuertaA como entrada digital
movlw 0xff
movwf PORTA
movlw b'00000111'
movwf PORTC
movlw b'00000001'
movwf TMR0 ;Preescaler. Mediante l se escoge la frecuencia de la
seal de modulacin de anchura de pulsos
bcf STATUS, 5 ;Banco 0
movlw b'00100000'
movwf PORTC
bcf INTCON, 7 ;Se deshabilitan las interrupciones
clrf PORTB
movlw TOFF_AVANCE
movwf TEMPO
movlw TOFF_CENTRAL
movwf TEMPO2
call DELAY

SITUAR_MOTOR_CENTRAL:
btfscPORTC, 2
goto BUCLE
call AVANCE_CENTRAL_DERECHA
goto SITUAR_MOTOR_CENTRAL
bsf PORTB, 0 ;Se mueve un poco el motor central
bcf PORTB, 1
call DELAY

;***************************************************************************
;Bucle principal del programa
BUCLE: bcf PORTB, 0 ;Se para el motor central
bcf PORTB, 1
call MOTORES_AVANCE

380 Tpicos y Aplicaciones de la Inteligencia Artificial


btfscPORTA, 2
goto BUMPER_DER_ON
btfscPORTA, 1
goto BUMPER_IZQ_ON
goto BUCLE

BUMPER_DER_ON:
call DELAY
btfssPORTA, 2
goto BUCLE
call DELAY
btfssPORTA, 2
goto BUCLE
goto SENSOR_DERECHA_ON

BUMPER_IZQ_ON:
call DELAY
btfssPORTA, 1
goto BUCLE
call DELAY
btfssPORTA, 1
goto BUCLE
goto SENSOR_IZQUIERDA_ON

;******************************************************************************
;Rutina a ejecutar cuando se ha activado el bumper de la izquierda
SENSOR_DERECHA_ON:
bcf PORTC, 6
bcf PORTC, 7
bcf PORTC, 5
clrf PORTB ;Se paran los motores y se espera a que se reproduzca el
mensaje
call DELAY2
bsf PORTC, 5
clrf TIEMPO1
clrf TIEMPO2
movlw .3
movwf TIEMPO3
ESPERA_RETROCESO_DERECHA:
call MOTORES_RETROCESO
decfsz TIEMPO1,1
goto ESPERA_RETROCESO_DERECHA
decfsz TIEMPO2,1
goto ESPERA_RETROCESO_DERECHA
decfsz TIEMPO3,1
goto ESPERA_RETROCESO_DERECHA
CENTRAL_ENBLANCO_IZQ:
call AVANCE_CENTRAL_IZQUIERDA
btfssPORTC, 2
goto CENTRAL_ENBLANCO_IZQ
ENNEGRO_IZQ:
call AVANCE_CENTRAL_IZQUIERDA
btfscPORTC, 2
goto ENNEGRO_IZQ
bcf PORTB, 0 ;Se para el motor central
bcf PORTB, 1
clrf TIEMPO1
clrf TIEMPO2
movlw .3
movwf TIEMPO3

Mg. Abraham Gamarra Moreno 381


ESPERA_AVANCE_DERECHA:
call MOTORES_AVANCE
decfsz TIEMPO1,1
goto ESPERA_AVANCE_DERECHA
decfsz TIEMPO2,1
goto ESPERA_AVANCE_DERECHA
decfsz TIEMPO3,1
goto ESPERA_AVANCE_DERECHA
CORRIGE_DERECHA:
call AVANCE_CENTRAL_DERECHA
btfssPORTC, 2
goto CORRIGE_DERECHA
bsf PORTB, 0 ;Se mueve un poco el motor central
bcf PORTB, 1
call DELAY
bcf PORTB, 0 ;Se para el motor central
bcf PORTB, 1
goto BUCLE

;******************************************************************************
;Rutina a ejecutar cuando se ha activado el bumper de la izquierda
SENSOR_IZQUIERDA_ON:
bsf PORTC, 6
bcf PORTC, 7
bcf PORTC, 5
clrf PORTB ;Se paran los motores y se espera a que se reproduzca el
mensaje
call DELAY2
bsf PORTC, 5
clrf TIEMPO1
clrf TIEMPO2
movlw .3
movwf TIEMPO3
ESPERA_RETROCESO_IZQUIERDA:
call MOTORES_RETROCESO
decfsz TIEMPO1,1
goto ESPERA_RETROCESO_IZQUIERDA
decfsz TIEMPO2,1
goto ESPERA_RETROCESO_IZQUIERDA
decfsz TIEMPO3,1
goto ESPERA_RETROCESO_IZQUIERDA
CENTRAL_ENBLANCO_DER:
call AVANCE_CENTRAL_DERECHA
btfssPORTC, 2
goto CENTRAL_ENBLANCO_DER
ENNEGRO_DER:
call AVANCE_CENTRAL_DERECHA
btfscPORTC, 2
goto ENNEGRO_DER
bcf PORTB, 0 ;Se para el motor central
bcf PORTB, 1
clrf TIEMPO1
clrf TIEMPO2
movlw .3
movwf TIEMPO3
ESPERA_AVANCE_IZQUIERDA:
call MOTORES_AVANCE
decfsz TIEMPO1,1
goto ESPERA_AVANCE_IZQUIERDA
decfsz TIEMPO2,1

382 Tpicos y Aplicaciones de la Inteligencia Artificial


goto ESPERA_AVANCE_IZQUIERDA
decfsz TIEMPO3,1
goto ESPERA_AVANCE_IZQUIERDA
CORRIGE_IZQUIERDA:
call AVANCE_CENTRAL_IZQUIERDA
btfssPORTC, 2
goto CORRIGE_IZQUIERDA
bcf PORTB, 0 ;Se mueve un poco el motor central
bsf PORTB, 1
call DELAY
bcf PORTB, 0 ;Se para el motor central
bcf PORTB, 1
goto BUCLE

;************************************************************************
;Funcin que se encarga del avance de los motores traseros. A travs de esta rutina
;se controla la velocidad de avance del robot mediante modulacin de anchura de pulsos
MOTORES_AVANCE:
;Control de la modulacin de anchura de pulsos para los motores de avance del robot
btfssINTCON, 2 ;Desbordamiento del Timer
return
bcf INTCON, 2
MOTORES_TRACCION_AUX:
decfsz TEMPO, 1
return
movf PORTB, 0
andlw b'00111100'
movwf AUX
movlw 0
subwf AUX, 0
btfssSTATUS, 2
goto APAGAR_MOTORES
goto ENCENDER_MOTORES
;Mediante el valor introducido en la variable TEMPO en las rutinas de ENCENDER_MOTORES
y APAGAR_MOTORES
;se puede seleccionar el Duty Cicle que se desee para la seal, cuya frecuencia a su vez
tambin es seleccionable
;mediante el preescaler.
ENCENDER_MOTORES:
bcf PORTB, 2
bsf PORTB, 3
bsf PORTB, 4
bcf PORTB, 5
movlw TON_AVANCE
movwf TEMPO
return
APAGAR_MOTORES:
bcf PORTB, 2
bcf PORTB, 3
bcf PORTB, 4
bcf PORTB, 5
movlw TOFF_AVANCE
movwf TEMPO
return
;Rutina para el retroceso del robot con modulacin de anchura de pulsos
MOTORES_RETROCESO:
;Control de la modulacin de anchura de pulsos para los motores de avance del robot
btfssINTCON, 2 ;Desbordamiento del Timer
return
bcf INTCON, 2

Mg. Abraham Gamarra Moreno 383


decfsz TEMPO, 1
return
movf PORTB, 0
andlw b'00111100'
movwf AUX
movlw 0
subwf AUX, 0
btfssSTATUS, 2
goto APAGAR_MOTORES2
goto ENCENDER_MOTORES2
;Mediante el valor introducido en la variable TEMPO en las rutinas de ENCENDER_MOTORES
y APAGAR_MOTORES
;se puede seleccionar el Duty Cicle que se desee para la seal, cuya frecuencia a su vez
tambin es seleccionable
;mediante el preescaler.
ENCENDER_MOTORES2:
bsf PORTB, 2
bcf PORTB, 3
bcf PORTB, 4
bsf PORTB, 5
movlw TON_AVANCE
movwf TEMPO
return
APAGAR_MOTORES2:
bcf PORTB, 2
bcf PORTB, 3
bcf PORTB, 4
bcf PORTB, 5
movlw TOFF_AVANCE
movwf TEMPO
return

;**********************************************************
;Funcin para el avance del motor central cuando este gira hacia la derecha
AVANCE_CENTRAL_DERECHA:
;Control de la modulacin de anchura de pulsos para los motores de avance del robot
btfssINTCON, 2 ;Desbordamiento del Timer
return
bcf INTCON, 2
call MOTORES_TRACCION_AUX
decfsz TEMPO2, 1
return
movf PORTB, 0
andlw b'00000011'
movwf AUX
movlw 0
subwf AUX, 0
btfssSTATUS, 2
goto APAGAR_MOTOR_CENTRAL_DER
goto ENCENDER_MOTOR_CENTRAL_DER
;Mediante el valor introducido en la variable TEMPO en las rutinas de ENCENDER_MOTORES
y APAGAR_MOTORES
;se puede seleccionar el Duty Cicle que se desee para la seal, cuya frecuencia a su vez
tambin es seleccionable
;mediante el preescaler.
ENCENDER_MOTOR_CENTRAL_DER:
bsf PORTB, 0 ;Se mueve un poco el motor central
bcf PORTB, 1
movlw TON_CENTRAL
movwf TEMPO2

384 Tpicos y Aplicaciones de la Inteligencia Artificial


return
APAGAR_MOTOR_CENTRAL_DER:
clrf PORTB
movlw TOFF_CENTRAL
movwf TEMPO2
return

;Funcin para el control del motor central cuando ste gira hacia la izquierda
AVANCE_CENTRAL_IZQUIERDA:
;Control de la modulacin de anchura de pulsos para los motores de avance del robot
btfssINTCON, 2 ;Desbordamiento del Timer
return
bcf INTCON, 2
call MOTORES_TRACCION_AUX
decfsz TEMPO2, 1
return
movf PORTB, 0
andlw b'00000011'
movwf AUX
movlw 0
subwf AUX, 0
btfssSTATUS, 2
goto APAGAR_MOTOR_CENTRAL_IZQ
goto ENCENDER_MOTOR_CENTRAL_IZQ
;Mediante el valor introducido en la variable TEMPO en las rutinas de ENCENDER_MOTORES
y APAGAR_MOTORES
;se puede seleccionar el Duty Cicle que se desee para la seal, cuya frecuencia a su vez
tambin es seleccionable
;mediante el preescaler.
ENCENDER_MOTOR_CENTRAL_IZQ:
bcf PORTB, 0 ;Se mueve un poco el motor central
bsf PORTB, 1
movlw TON_CENTRAL
movwf TEMPO2
return
APAGAR_MOTOR_CENTRAL_IZQ:
clrf PORTB
movlw TOFF_CENTRAL
movwf TEMPO2
return

;**************************************************************
;Funcion de temporizacin empleada por el programa
DELAY:
bsf STATUS, 5
movlw b'00000001'
movwf TMR0
bcf STATUS, 5
movlw CORRIGE_CENTRAL
movwf DELAY_VAR
DEL: btfssINTCON, 2
goto DEL
bcf INTCON, 2
decfsz DELAY_VAR,1
goto DEL
bsf STATUS, 5
movlw b'00000001'
movwf TMR0 ;Preescaler para la modulacin de anchura de pulsos de los
motores
bcf STATUS, 5

Mg. Abraham Gamarra Moreno 385


return

DELAY2: bsf STATUS, 5


movlw b'00000111'
movwf TMR0
bcf STATUS, 5
movlw .100
movwf DELAY_VAR
DEL2: btfssINTCON, 2
goto DEL2
bcf INTCON, 2
decfsz DELAY_VAR,1
goto DEL2
bsf STATUS, 5
movlw b'00000001'
movwf TMR0 ;Preescaler para la modulacin de anchura de pulsos de los
motores
bcf STATUS, 5
return

END ;Fin del programa


;***************************************************************************

386 Tpicos y Aplicaciones de la Inteligencia Artificial


APNDICES

Mg. Abraham Gamarra Moreno 387


388 Tpicos y Aplicaciones de la Inteligencia Artificial
APNDICE A
DIAPOSITIVAS DE PROGRAMACIN LGICA CON PROLOG

PROGRAMACION LOGICA CON


PROLOG

Recopilado por:

Mg. Abraham Gamarra Moreno

Mg. Abraham Gamarra Moreno 389


390 Tpicos y Aplicaciones de la Inteligencia Artificial
Mg. Abraham Gamarra Moreno 391
Luego encuentra el sucesivo
(resatisface la pregunta)

392 Tpicos y Aplicaciones de la Inteligencia Artificial


Mg. Abraham Gamarra Moreno 393
394 Tpicos y Aplicaciones de la Inteligencia Artificial
Mg. Abraham Gamarra Moreno 395
1

<>
juan <> pedro

396 Tpicos y Aplicaciones de la Inteligencia Artificial


predicates
nondeterm varon(symbol)
nondeterm hembra (symbol)
nondeterm padres(symbol,symbol,symbol)
nondeterm hermana_de(symbol,symbol)

Clauses
Solucin varon(alberto).
ejercicios 1. varon(eduardo).
hembra(alicia).
hembra(victoria).
padres(eduardo, victoria, alberto).
padres(alicia, victoria, alberto).
hermana_de(X,Y):-
hembra(X),
padres(X,M,P),
padres(Y,M,P),X<>Y.

goal
hermana_de(alicia,X).

predicates
poblacion(symbol,real)
superficie(symbol,real) Ejemplo 2
densidad(symbol,real)

clauses
/* poblacion(Prov,Pob) <- la poblacin, en miles de habitantes,
de la provincia Prov es Pob */
poblacion(alicante,1149).
poblacion(castellon,432).
poblacion(valencia,2066).
/* superficie(Prov,Sup) <- la superficie, en miles de km2, de la
provincia Prov es Sup */
superficie(alicante,6).
superficie(castellon,7).
superficie(valencia,11).
/* densidad(Prov,Den) <- la densidad de poblacin, habitantes/km2,
de la provincia Prov es Den */
densidad(X,Y) :- poblacion(X,P),
superficie(X,S),
Y=P/S.
goal
densidad(alicante, X).

Mg. Abraham Gamarra Moreno 397


predicates
nondeterm animal(symbol)
nondeterm gusta(symbol,symbol)
nondeterm regalo(symbol,symbol)
Ejemplo 3
clauses
/* animal(Anim) <- Anim es un animal */
animal(mono).
animal(gallina).
animal(araa).
animal(mosca).
animal(cocodrilo).
/* gusta(X,Y) <- a X le gusta Y */
gusta(mono,banana).
gusta(araa,mosca).
gusta(alumno,logica).
gusta(araa,hormiga).
gusta(mosca,espejo).
gusta(cocodrilo,X) :- animal(X).
/* regalo(X,Y) <- Y es un buen regalo para X */
regalo(X,Y) :- animal(X), gusta(X,Y).

goal
write("\n los regalos (Y), para los animales (X) se"),
write(" listan a continuacin: \n\n"), regalo(X,Y).

predicates
nondeterm hijo(string,string)

clauses
Ejemplo 4
hijo(javier, luis).
hijo(ana,luis).
hijo(maria,luis).
hijo(joseph,daniel).

goal
write("\ningrese nombre del padre: "),readln(Padre),
write("\n"),write(Padre),
write(" tiene los siguientes hijos:\n"),
hijo(Hijo,Padre).

398 Tpicos y Aplicaciones de la Inteligencia Artificial


Ejemplo 5: Representacin
del sistema de bloques

A C D

MESA

Vea ejemplo9.pro

Mg. Abraham Gamarra Moreno 399


400 Tpicos y Aplicaciones de la Inteligencia Artificial
APNDICE B
DIAPOSITIVAS DEL EJEMPLO 2 DE LGICA DIFUSA

DESARROLLO DE UN
SISTEMA DIFUSO BASADO
EN REGLAS
Mg. Abraham Gamarra Moreno 18

DEFINICIN DEL PROBLEMA


Sistema de control para regular la
velocidad de un ventilador en funci n
de la temperatura ambiente.
En este caso, la nica entrada del
sistema sera el calor de la
temperatura, por ejemplo en grados
centgrados, y la nica salida, el valor,
en revoluciones por minuto (rpm), de
la velocidad necesaria del ventilador
para conseguir una temperatura ideal.

Mg. Abraham Gamarra Moreno 19

Mg. Abraham Gamarra Moreno 401


DEFINICIN DE LAS
VARIABLES LINGSTICAS
Temperatura SISTEMA Velocidad
DIFUSO
El universo de discurso de cada
variable ser:
Temperatura (C) : 5 40

Velocidad (rpm) : 0 - 60
Mg. Abraham Gamarra Moreno 20

DEFINICIN DE LOS
CONJUNTOS DIFUSOS

Conjuntos difusos para la temperatura

Mg. Abraham Gamarra Moreno 21

402 Tpicos y Aplicaciones de la Inteligencia Artificial


DEFINICIN DE LOS
CONJUNTOS DIFUSOS

Conjuntos difusos para la velocidad


del ventilador
Mg. Abraham Gamarra Moreno 22

DEFINICIN DE LA REGLAS
DIFUSAS
RULE NUMBER: 1
IF:
LA TEMPERATURA AMBIENTE ES
FRIA
THEN:
LA VELOCIDAD DEL VENTILADOR
ES PARADO

Mg. Abraham Gamarra Moreno 23

Mg. Abraham Gamarra Moreno 403


DEFINICIN DE LA REGLAS
DIFUSAS
RULE NUMBER: 2
IF:
LA TEMPERATURA AMBIENTE ES
FRESCA
THEN:
LA VELOCIDAD DEL VENTILADOR
ES LENTA

Mg. Abraham Gamarra Moreno 24

DEFINICIN DE LA REGLAS
DIFUSAS
RULE NUMBER: 3
IF:
LA TEMPERATURA
AMBIENTE ES AGRADABLE
THEN:
LA VELOCIDAD DEL
VENTILADOR ES MEDIA

Mg. Abraham Gamarra Moreno 25

404 Tpicos y Aplicaciones de la Inteligencia Artificial


DEFINICIN DE LA REGLAS
DIFUSAS
RULE NUMBER: 4
IF:
LA TEMPERATURA
AMBIENTE ES CALIDA
THEN:
LA VELOCIDAD DEL
VENTILADOR ES RAPIDA

Mg. Abraham Gamarra Moreno 26

DEFINICIN DE LA REGLAS
DIFUSAS
RULE NUMBER: 5
IF:
LA TEMPERATURA
AMBIENTE ES TRRIDA
THEN:
LA VELOCIDAD DEL
VENTILADOR ES MAXIMA

Mg. Abraham Gamarra Moreno 27

Mg. Abraham Gamarra Moreno 405


CONSTRUIR EL
SISTEMA
Esta tarea involucra la codificacin de los
conjuntos difusos, reglas y
procedimientos para desarrollar
funciones de lgica difusa tal como la
inferencia difusa. Se puede construir el
sistema utilizando un lenguaje de
programacin o construir el sistema
utilizando un Shell.

Mg. Abraham Gamarra Moreno 28

PROBAR EL SISTEMA
Esta tarea sirve para ver si el sistema
alcanza las especificaciones dados en la
definicin del problema.
Para el ejemplo que se esta desarrollando
se probar con los siguientes datos de
entrada:
Temperatura = 18
Evaluando el grado de pertenencia a los
conjuntos difusos se tiene:
Mg. Abraham Gamarra Moreno 29

406 Tpicos y Aplicaciones de la Inteligencia Artificial


PROBAR EL SISTEMA

FRESCA(18) = 0.5
AGRADABLE(18) = 0.167
Mg. Abraham Gamarra Moreno 30

PROBAR EL SISTEMA
LAS REGLAS QUE SE DISPARARN SON:
RULE NUMBER: 2
IF (LA TEMPERATURA AMBIENTE ES
FRESCA)(0.5)
THEN (LA VELOCIDAD DEL VENTILADOR ES
LENTA) (0.5)
RULE NUMBER: 3
IF (LA TEMPERATURA AMBIENTE ES
AGRADABLE)(0.167)
THEN (LA VELOCIDAD DEL VENTILADOR ES
MEDIA) (0.167)
Mg. Abraham Gamarra Moreno 31

Mg. Abraham Gamarra Moreno 407


DEFUZZIFICACION DE LA
VARIABLE DE SALIDA
Una vez ubicado el grado de
pertenencia de las
conclusiones, se debe
encontrar el centroide para los
conjuntos difusos LENTA Y
MEDIA.

Mg. Abraham Gamarra Moreno 32

y1 y2
Conjuntos difusos para la velocidad
del ventilador
Mg. Abraham Gamarra Moreno 33

408 Tpicos y Aplicaciones de la Inteligencia Artificial


DEFUZZIFICACION DE LA
VARIABLE DE SALIDA
Para la defuzzificacin se utiliza la
siguiente expresin:
Donde: Donde:
YK = Centroide del
conjunto difuso
involucrado en la
conclusi
conclusin, cuando
se dispara una
regla.
(YK)= Grado de
pertenencia al
conjunto difuso de
la conclusi
conclusin.
Mg. Abraham Gamarra Moreno 34

DEFUZZIFICACION DE LA
VARIABLE DE SALIDA
La velocidad del ventilador es:
Velocidad = y1*(y1)+ y2*(y2)
(y1) + (y2)

Velocidad = 20*0.5 + 30*0.167


0.5 + 0.167

Velocidad = 22.503 rpm


Mg. Abraham Gamarra Moreno 35

Mg. Abraham Gamarra Moreno 409


410 Tpicos y Aplicaciones de la Inteligencia Artificial
BIBLIOGRAFA

1. Arteaga R, Armijos J. Tutorial de Programacin Heurstica. Ecuador: Tra-


bajo de monografa complementario al curso de pregrado dictado en la
Universidad Central del Ecuador, para la obtencin del ttulo de Ingeniero
en Informtica; 1998.

2. Angulo J, Romero S, Angulo I. Microbtica. Espaa: Editorial ITES Para-


ninfo;. 2001.

3. Benchimol G, Levine P, Pomerol J. Los sistemas expertos en la empresa.


Mxico: Ed. Macrobit; 1990.

4. Dologite D. Developing Knowledge-Based Systems using VP-EXPERT.


USA: Macmillan Publishing Company; 1993.

5. Durkin J. Expert Systems. USA: Ed. Macmillan; 1994.

6. Escolano Francisco. Inteligencia Artificial. Modelos, Tcnicas y reas de


Aplicacin. Espaa: Editorial ITES Paraninfo; 2003.

7. EXSYS Inc. Manual del EXSYS Professional for Windowed Environments.


USA: EXSYS Inc; 1983-1996.

8. Ferber J. Multi-Agent Systems. Gran Bretaa: Ed. Addison-Wesley; 1999.

9. Freeman J, Skapura. Redes Neuronales. USA: Ed. Addison Wesley;


1993.

10. F y G. El robot Pathfinder. Madrid: F y G editores; 2003.

Mg. Abraham Gamarra Moreno 411


11. Fu K, Gonzalez R, Lee C. Robtica: Control, Deteccin, Visin e Inteli-
gencia. Espaa: Mc Graw Hill; 1988.

12. Giarratano J, Riley G. Sistemas Expertos. 3ra. ed. Mxico: Internacional


Thomson Editores; 1998.

13. Hian-Kang W. Neural Networks And Simulation Methods. USA: Editorial


Marcel Dekker INC; 1994.

14. Hilera J, Martinez V. Redes Neuronales Artificiales: Fundamentos, mode-


los y Aplicaciones. Espaa: Editorial RA-MA; 1995.

15. Kong Maynard. Inteligencia Artificial. Lima, Per: Fondo Editorial Pontifi-
cia Universidad Catlica del Per; 1993.

16. La ciencia y el hombre [en lnea]. Veracruz: Revista de divulgacin cienti-


fica y tecnologica de la Universidad Veracruzana; 2004. [fecha de acceso
18 de noviembre de 2007]. URL disponible en:
http://www.uv.mx/cienciahombre/revistae/vol17num3/articulos/inteligencia
/index.htm.

17. Michalewicz, Z. Genetic Algoritms + Data Structures = Evolution Pro-


grams. USA: Editorial Springer; 1996.

18. Pham D, Karaboga D. Intelligent Optimisation Techniques. USA: Spring-


er-Verlag; 2000.

19. Planell Perez. Historia de la Inteligencia Artificial [en lnea]. Espaa:


Ebooks gratis; 2008. [fecha de acceso 16 de noviembre de 2007]. URL
disponible en: http://66.240.239.19/2/7/0/27068.ZIP.

20. Rich E, Knight K. Inteligencia Artificial. 2da. Ed. Espaa: Mc Graw Hill;
1994.

21. Russell S, Norvig Peter. Inteligencia Artificial. Mxico: Prentice Hall; 1996.

22. Schalkoff R. Artificial Intelligence. USA: Mc Graw Hill; 1990.

23. Sierra G. Sistemas Expertos en Contabilidad y Administracin de Empre-


sas. USA: Addison Wesley; 1995.

24. Winston P. Inteligencia Artificial. 3ra. ed. USA: Addison Wesley; 1994.

412 Tpicos y Aplicaciones de la Inteligencia Artificial