Está en la página 1de 75

CREACION Y PRORAMACION DE LA

INTELIGENCIA ARTIFICIA-ASPECTOS

BASICOS

NAZARIO CABRERA RAYMOND ARMANDO

MENDOZA CORPUS CARLOS

TECNOLOGÍA DE INFORMACIÓN Y COMUNICACIONES

INGENIERÍA CIVIL
CREACION Y PRORAMACION DE LA INTELIGENCIA ARTIFICIAL-ASPECTOS

BASICOS
INTRODUCCION

Muchas veces, al ver el mundo que nos rodea, tenemos dudas de que realmente el humano es

inteligente o al menos en su mayoría. Sin embargo lo somos, y desde siempre hemos soñado con

crear una inteligencia artificial.

En el campo de las ciencias sobre la computación se denomina inteligencia artificial a la

facultad de razonamiento que ostenta un agente que no está vivo, o mejor dicho; un robot. Cabe

destacar que además de poder razonar, estos son capaces de desarrollar muchas conductas o

actividades especialmente humanas, como por ejemplo el resolver problemas dados, practicar

deporte entre otros.


INDICE

INTRODUCCION ..................................................................................................................... 3

CAPITULO 1: ............................................................................................................................ 7

INTRODUCCION A LA INTELIGENCIA ARTIFICIAL ....................................................... 7

1.1. ¿QUÉ ES LA INTELIGENCIA ARTIFICIAL? .......................................................... 4

1.2. HISTÓRICA Y EVOLUCION ..................................................................................... 4

1.3. PRESENTE Y FUTURO: VENTAJAS Y DESVENTAJAS....................................... 7

CAPITULO 2: .......................................................................................................................... 10

IA Y LA RESOLUCION DE PROBLEMAS .......................................................................... 10

2.1. RESOLVER PROBLEMAS....................................................................................... 11

2.1.1 PROBLEMAS MÁS COMPLEJOS ................................................................... 14

2.2. ALGUNOS TIPOS DE PROBLEMAS ...................................................................... 15

2.2.1 El problema del viajante del comercio ................................................................ 16

2.2.2 El problema de la programación lineal entera ..................................................... 20

2.2.3 Otros problemas: ................................................................................................. 23

CAPITULO 3: .......................................................................................................................... 26

BUSQUEDA INFORMADA Y NO INFORMADA ............................................................... 26

3.1 BÚSQUEDA INFORMADA ..................................................................................... 27

3.1.1 Búsqueda con vuelta atrás (BRACKTRACKING) ............................................. 27


3.1.2 Algoritmo A* ...................................................................................................... 32

3.1.3 Búsqueda local .................................................................................................... 33

3.1.3.1 Algoritmos constructivos voraces ................................................................... 35

3.1.3.2 Búsqueda Tabú ................................................................................................ 37

3.1.3.3 Algoritmos genéticos ....................................................................................... 39

3.2 BÚSQUEDA NO INFORMÁTICA ........................................................................... 40

3.2.1 Búsqueda ............................................................................................................. 40

3.2.2 búsqueda en amplitud .......................................................................................... 40

3.2.3 Búsqueda en profundidad .................................................................................... 41

3.2.4 Búsqueda de coste uniforme ............................................................................... 42

CAPITULO 4: .......................................................................................................................... 44

RAZONAMIENTO.................................................................................................................. 44

4.1. INTRODUCCIÓN ...................................................................................................... 45

4.2. SISTEMAS EXPERTOS ............................................................................................ 45

4.3. SISTEMAS DIFUSOS ............................................................................................... 51

4.3.1. CONJUNTO DIFUSOS ...................................................................................... 51

4.3.2. OPERACIONES DE CONJUNTOS DIFUSOS: ................................................ 53

CAPITULO 5: .......................................................................................................................... 57

APRENDIZAJE ....................................................................................................................... 57

5.1. INTRODUCCIÓN ...................................................................................................... 58


5.2. CLASIFICACIÓN PROBABILÍSTICA .................................................................... 59

5.2.1 Un poco de probabilidad ..................................................................................... 59

5.3. REDES NEURONALES ARTIFICIALES ................................................................ 61

5.3.1 El perceptrón simple............................................................................................ 62

GLOSARIO DE TERMINOS: ................................................................................................. 63

ANEXOS: ................................................................................................................................ 65

INDICE DE ILUSTRACIONES: ............................................................................................ 67

INDICE DE TABLAS: ............................................................................................................ 68

Bibliografía .............................................................................................................................. 69
CAPITULO 1:

INTRODUCCION A LA INTELIGENCIA ARTIFICIAL


1.1. ¿QUÉ ES LA INTELIGENCIA ARTIFICIAL?

La inteligencia artificial (AI) puede ser considerada como una ciencia que se enfoca en la

elaboración de programas basados en comparaciones con la eficiencia del hombre,

contribuyendo más al conocimiento humano.

Es a través de la IA que se desarrollaron los sistemas expertos que pueden limitar la capacidad

mental del hombre, para luego poder hacer juicios acerca de un problema cuya solución se logra

con mayores juicios y más rápido que el ser humano, lo que le permite a algunas empresas

obtener más información sobre sus datos.

Hoy en día la IA está relacionada con todo, desde la actualización de procesos robóticos hasta

la robótica actual.

1.2. HISTÓRICA Y EVOLUCION

Desde la antigüedad existían teorías sobre este fantástico proceso, pero no se conocían como

tal; desde los años 300 A.C hasta la actualidad, a medida en que fue avanzando el tiempo estas

teorías fueron desarrollándose y tomando mayor atención en la gente. A continuación se

presentaras las fechas más importantes que fueron necesarias para la evolución de esta creación:

Se inició en las años 300 A.C con el “SILOGISMO” que fue una manera estructurada de un

conjunto de reglas, donde se describe una parte del funcionamiento de la mente humana y que al

seguirlas paso a paso producen conclusiones relacionas a partir de premisas dadas.

En los años 205 A.C se creó la “PRIMERA MAQUINA AUTOCONTROLADA” que fue

construida por Ctesibio de Alejandria, esta máquina consistía en un regulador del flujo de agua

que actuaba modificando comportamiento “racionalmente” pero sin razonamiento.

4
Hasta los años 1315 D.C nació el “RAZONAMIENTO ARTIFICAL” el cual fue dado por

Ramon Llull, quien fue el precursor del razonamiento automático, ya entendido como un

procedimiento mecánico capaz de razonar por si mismo.

En 1847 D.C se dio la “LOGICA PROPOSIONAL” por George Boole, fue éste quien dio una

nueva dirección a través de la lógica simplificándola a una algebra simple que consistía en un

método para resolver de lógica que ocurre solamente a los binarios 1 y 0. Agudizo la analogía

entre los símbolos algebraicos y aquellos que representan una forma lógica.

En 1879 nace la “LOGICA MATEMATICA AMODERNA”, fue dada por Gottlob Frege,

quien sentó las bases de una nueva era de disciplina que parecía inalterada desde los tiempo de

Aristóteles, mediante la introducción de los llamados cuantificadores.

En 1883 se crea las “TORRES DE HANNOI” que eran capaces de ganar con el mínimo

movimiento posible, esto es muy conocido en la computación y en la mayoría de casos se usa

como introducción a la teoría de algoritmos.

En 1940 se crea el primer “COMPUTADOR ELECTROMECANICO”, este empleaba señales

electromagnéticas para mover las partes mecánicas, le tomaba entre 3 a 5 segundos de cálculo y

era inflexible (la secuencia no se podía cambiar), pero ejecutaba operaciones básicas hasta

complejas sobre el movimiento parabólico.

En 1941 se crea la primera “COMPUTADORA PROGRAMABLE” llamada computadora Z3

que era completamente automática, contenía características usadas para definir a un computador

y el primer lenguaje de programación a un alto nivel.

En 1943 se desarrolló un “MODELO DE NEURONAS ARTIFICIALES” por Warren

McCulloch y Walter Pitts estas pretendían imitar una pequeñísima parte del funcionamiento del

5
cerebro del ser humano con la mayor exactitud posible, por lo cual este se considera el primer

trabajo del campo de inteligencia artificial, aun cuando no se conocía ese término.

En 1950 se realiza la #PRUEBA DE TURING”, esta consistía en una prueba concreta para

determinar si una maquina era inteligente o no; esta prueba fue dada por Turing y gracias a ello

es considerado el padre de la Ineligencia artifical.

Durante todo este tiempo, en el año 1956 por primera vez se la el termino de

“INTELIGENCIA ARTIFICAL” durante una conferencia convocada por McCarthy a la cual

asistieron Minsky, Newell, Shannon y Simon; entre otros.

En 1958 se desarrolla el alto lenguaje “LISP” que fue considerado el segundo lenguaje de

programación más alto y el primer lenguaje en programación funcional. LISP ha cambiado

muchos desde sus inicios hasta la actualidad.

En 1959 se crea la “RED DE PERCEPTRON” que consistía en ilustrar algunas propiedades

fundamentales de los sistemas inteligentes en general, sin entrar en mayores detalles con respecto

a las condiciones específicas y desconocidas para organismos biológicos concretos.

En 1963 se creó el primer programa para ajedrez y enfrentar retadores, esto fue creado con la

finalidad de enfrentar a jugadores de primera fila a nivel mundial.

En 1969 se crea el “BRAZO STANFORD”, quien demuestra las propiedades de la visión

artificial para vehículos auto guiados, se desarrolló un experimento en el que el manipulador

apilaba bloques según. también se desarrollaron los brazos Boston, este ultimo dotado de una

cámara y controlado por computador.

En el año 1969 se creo el “PRIMER ROBOT BIPEDO” que fue diseñado por Ichiro Kato, sus

músculos eran bolsas de aires conectadas al marco, el [4] WAP-3 fue diseñado después y podía

6
caminar en superficies planas así como subir y bajar escaleras y rampas también podía voltear

cuando caminaba-

Desde 1970 hasta 1980 se crean los “SISTEMAS EXPERTOS# llamados así porque emulan

el razonamiento de un experto en un dominio concreto, con esto se busca mejorar la calidad y

mejora en las respuestas, dando así a la mejora de una productividad.

En 1981 llega la quita generación de computadores, que fue desarrollado por un proyecto en

Japón, con el objetivo de que las computadoras utilizaran técnicas y tecnología de la inteligencia

artificial tanto en el hardware como en el software capaces de resolver problemas complejos, y la

naturaleza de una lengua a otra.

En 1987 se creo el “AGENTE INTELIGENTE”, es una entidad capaz de percibir su entorno,

procesar tales percepciones y responder o actuar en su entorno de manera racional, es decir, de

manera correcta y tendiendo a maximizar un resultado esperado.

En 1990 se creó el programa “A.L.I.C.E.” Artificial Linguistic Internet Computer Entity,

quien ganó el premio Loebner al Chatbot más humano en 2000, 2001 y 2004, y en 2007 el

programa U.

En el 2005 se crea el prototipo de robot “NAO”, que es un robot humanoide programable y

autónomo, desarrollado por Aldebaran Robotics, una compañía de robótica francesa con sede en

París. El desarrollo del 2004.

1.3. PRESENTE Y FUTURO: VENTAJAS Y DESVENTAJAS

El avance tecnológico nos puede llevar a una nueva era de conocimiento si es que aún no lo

estamos, pero así como existen grandes ventajas para la humanidad y el mundo; también existen

riesgos, peligros o desventajas que pueden significar un gran problema para nosotros, e incluso

7
causar el fin de la humanidad, donde los robots tengan el poder y los seres vivos vivan en un

rincón del planeta. Identifiquemos cuales son:

En la parte de los beneficios que esté nos puede ofrecer son:

En el ámbito laboral, estos pueden lograr reducir los costos y salarios adicionales, a lo que

llevaría más ingresos.

Estos podrían desarrollar actividades que el ser humano jamás hubiera podido hacer

Puede llegar a predecir que pudiera ocurrir después, y reducir el tiempo al realizar ciertas

actividades.

Programar a tu robot personal adquiriendo la destreza suficiente para que realice tus trabajos

diarios y tu concentrarte en disfrutar tu vida.

Enviar robot a lugares fuera del plantea, sin preocuparnos por la temperatura o por la

respiración fuera de este planeta, con este gran avance tendíamos ojos y oídos fuera de este

mundo.

Así como podemos observar lo que hay fuera de este mundo, también podríamos investigar

más sobre nuestro planeta, llegar a lugares inimaginables como al fondo de los océanos, el

interior de un volcán y muchas otras cosas más.

Ahora, analizaremos las desventajas que este nos puede traer a nuestras vidas:

Estaríamos regalando nuestra memoria a un segundo plano, ya que hasta hoy en día, muchas

de las personas se reúnen y al tratar de un tema, uno puede olvidarse y entre todos tratar de

recordar, dando una diversión adicional; sin embargo con esto tendríamos la respuesta

fácilmente.

Requiere de un constante mantenimiento, y para su creación mucho tiempo de estudios e

incluso una gran cantidad de dinero.

8
No habría la necesidad de estudiar, ya que con esta máquina no nos haría falta estudiar,

simplemente es él lo puede hacer todo.

Su uso irracional o exagerado nos puede llevar a la dominación de las maquinas sobre el

hombre o depender mucho de ellas.

Ahora, y si las maquias aprenden demasiado, su gran inteligencia para desarrollar problemas

muy complejos e incluso predecir ciertos acontecimientos les puede llevar a una conclusión no

muy favorable para nosotros, como nos advierten muchas de las películas conocidas, por ellos no

se debe dejar de tomar en cuenta la creación de programas para para la lucha contra las IA.

9
CAPITULO 2:

IA Y LA RESOLUCION DE PROBLEMAS

10
2.1.RESOLVER PROBLEMAS

La resolución de problemas es uno de los procesos básicos de razonamiento que la

INTELIGENCIA ARTIFICIAL trata de abordar, con el objetivo de que la maquina ayude a un

experto humano a encontrar la solución a un determinado problema de una forma rápida, más

exacta y fiable.

Para la resolución de problemas mediante la búsqueda de una solución se da generalmente

como un proceso de espacios de estados en los que puede encontrarse el problema, una de las

primeras áreas en donde empezó a trabajar la INTELIGENCIA ARTIFICIAL es en el campo de

juegos de azar, puesto que su ligación con las matemáticas y su naturaleza más relacionada con

el problema en sí que con los mecanismos de la mente.

Mediante este contexto veremos cómo se plantea formalmente tipos de problemas, sus

principales técnicas de resolución por “fuerza bruta” que quiere decir, peinando el espacio de

estados hasta dar con la respuesta y como incorporar técnicas heurísticas para reducir el tiempo

de búsqueda que estos emplean. Finalmente se hará una pequeña incursión a la resolución de

problemas que involucren a un adversario.

2.1.1. EL PROBLEMA PARA RESOLVER LOS PROBLEMAS:

La resolución de problemas como se dijo anteriormente es una búsqueda en un espacio de

estados:

Estados: <Q,R,C>

Dónde:

Q= La estructuras de datos que describe el estado.

R= Las reglas u operaciones que describen las transiciones en el espacio de estados.

C= La estrategia de control.

11
Ahora para poder entender mejor lo mencionado, pongamos un ejemplo: se desea buscar la

salida de un laberinto. Cada estado de problema vendrá definido por:

Q= Mi posición actual en el laberinto.

R= Las posiciones donde tengo permitido ir desde aquí, estas posiciones vendrían determinadas

por la aplicación de las reglas de cambio de estados del problema; no se puede atravesar paredes,

solo saltar posiciones adyacentes.

C= De entre todas las posiciones adyacentes a las que puedo ir, como elijo a cual iré finalmente.

Por ejemplo, en el caso del laberinto una estrategia muy conocida o tradicional es, avanzar

siempre pegado a la derecha,

El estado inicial seria el punto de partida (entrada del laberinto) y el estado final la llegada

(salida del laberinto).

Se ha definido el problema de solucionar laberintos como un problema de movimientos a

través de un espacio de estados, donde cada espacio representa un movimiento legal dentro del

laberinto. La representación como espacios de estados forma la base de la mayoría de los

métodos de la IA, su estructura corresponde con aquellas para resolver problemas por dos

razones importantes:

Permite definir formalmente el problema mediante la necesidad de convertir algunas

situaciones dadas en las situaciones deseada usando conjuntos de operaciones permitidas.

Permite definir el proceso de resolver un problema con una combinación de técnicas

conocidas, representadas por una regla que define el movimiento en el espacio de búsqueda. Es

un proceso de gran importancia en la resolución de problemas difíciles en los que no se dispone

re técnicas más simples.

12
El problema puede resolverse con el uso de las reglas en combinación con una estrategia

apropiada de control para trasladarse a través del espacio problema hasta encontrar una ruta

desde un estado inicial hasta un estado objetivo. De esta forma el proceso de búsqueda es

fundamental en la solución de problemas. La búsqueda es un mecanismo en general que puede

usarse cuando no se conoce otro método más directo. Si la estructura del laberinto se conoce,

puede emplearse técnicas heurísticas para solucionar el laberinto optimizando el recorrido. E n

este caso se emplea el método de búsqueda ya que el laberinto es desconocido-

DEFINICION FORMAL DE UN PROBLEMA:

Pasos:

Definir una representación para los posibles estados del problema.

Determinación del estado inicial.

Determinación del estado final.

Operaciones, reglas de transición o movimiento (permiten transformar un estado del problema

en otro).

Objetivo:

Encontrar una secuencia de reglas (soluciones) que aplicada a una a una descripción de un

problema (estado inicial) lo transformen en otra (estado meta) mediante un proceso de búsqueda

en un espacio de estados.

Espacios de estados:

Conjunto de espacios del problema alcanzables a partir del estado inicial aplicando las reglas

de transición.

Estado inicial:

13
Fase inicial del problema.

Conjunto de acciones, operaciones, reglas de transición:

Descripción del estado que se tratara de alcázar desde un estado contrato, al ejecutar la acción.

Cada acción tiene un coste mayor 0

Estado meta, o prueba de objetivo:

Descripción del estado para saber si es un estado de meta o de objetivo.

2.1.1 PROBLEMAS MÁS COMPLEJOS

TECNICAS DE INTELIGENCIA ARTIFICIAL:

Una técnica de la Inteligencia Artificial es usar un método de conocimientos expresados, de

forma en que representen las generalización y que esto sea comprendido por las personas que lo

proporcionan, que pueda manejarse fácilmente para corregir errores y reflejar los cambios en el

mundo, que pueda usarse en gran cantidad de situaciones aun cuando no sea totalmente preciso o

completo y que pueda usarse para ayudar y superar su propio volumen, acortando el rango de

posibilidades que normalmente pueden considerarse.

Aunque estas técnicas deben desarrollarse de acuerdo a las restricciones impuestas por las IA,

existen ciertos grados de independencia entre los problemas y las técnicas para su solución. Los

programas que solucionan de IA se ponen manifiesto tres importantes técnicas: La búsqueda, el

uso del conocimiento y la abstracción. La búsqueda proporciona una forma en resolver

problemas de manera más rápida y directa, el uso del conocimiento resuelve los problemas

complejos aprovechando la estructura de los objetos involucrados y la abstracción proporciona

14
una forma de separar aspectos y variaciones importantes de aquellos otros sin importancia y que

en algunos casos pueden hacer colapsar los procesos.

Para solucionar problemas complejos, los programas que utilizan técnicas de IA representan

numerosas ventajas contra los que no lo hacen. Los primeros son los m as robustos, los que no se

equivocan frente a una pequeña perturbación en al entrada. El conocimiento del programa es

comprendido fácilmente por la gente. Estos programas pueden trabajar con facilidad en grandes

problemas donde los métodos directos conocidos fallan.

Los esfuerzos dedicados a construir programas que lleven a cabo las tareas del hombre se

dividen en dos clases: Los programas de la primera clase se encargan de aquellos problemas en

el que una computadora puede resolver fácilmente,

2.2.ALGUNOS TIPOS DE PROBLEMAS

Primeramente; con lo mencionado anteriormente, para la resolución de un problema es

necesario conceptualizarlo, eliminar información redundante y utilizar estructuras que sabemos

manejar como las matemáticas.

Al construir uno modelo, hay que tener claro que lo que queremos construir es una solución al

mismo, y no una solución al problema real. Por lo tanto, mientras más mejor se describa un

modelo, mejor se ajustara al problema real.

Cuan hacemos una representación de la conceptualización de un problema, necesitamos

disponer de toda la información. Cuando finalmente hagamos la implementación, este necesitara

ser traducido a estructuras de datos y operaciones que el ordenador será capaz de manejar; y

15
como ya lo hemos hecho anteriormente, vamos a utilizar algunos ejemplos para sacar

conclusiones útiles.

2.2.1 El problema del viajante del comercio

Este problema a tratar es bien conocido en la IA y también puede ser llamado por sus siglas

TSP (Travelling Salesman Problem) y su formulación es muy sencilla:

Tenemos “N” ciudades; todas conectadas por carreteras entre sí, y cuyas distancias entre ellas

es conocida. El objetivo es encontrar una ruta que, empezando por una ciudad acabemos en la

misma, pero pasando una vez por cada ciudad (excepto en la primera que será visitada 2 veces)

y minimice la distancia recorrida.

Tras este simple enunciado, se esconde un amplio problema que muy difícil. Tanto así que

incluso los ordenadores más potentes que existen hoy, son incapaces de resolverlo. Incluso

cuando el nuero de ciudades es moderado. Aun así podemos conseguir aproximaciones muy

buenas usando técnicas de la IA, algunas de las cuales las estudiaremos más adelante.

Primero comenzaremos en construir un modelo que el ordenador pueda manejar. Primero

empecemos con el mapa en sí. Por ejemplo, podemos optar por representar las ciudades en

forma ponderado, En este caso cada nodo del grafo representara un ciudad, y cada arista

representara una carretera con su distancia (peso) asociada. Debe tenerse en cuenta que para el

caso del TSP, la distancia a cubrir desde la ciudad A hasta la ciudad B no tiene que ser la misma

que la ciudad B hasta la ciudad A. De todas formas, simplificaremos el ejemplo y supongamos

que las distancias entre ciudades con independencia del sentido en que vayamos. Se puede

representar de los dos siguientes formas: como dibujo (FIGURA N°1) o como tabla (TABLA

N°1).

A B C D E

16
A 0 25 52 25 23

B 25 0 13 15 45

C 52 13 0 15 27

D 25 15 15 0 32

E 23 45 27 32 0

Tabla 1 Matriz de adyacencia

Ilustración 1 transformación del mapa grafo

Se debe elegir la representación más simple e intuitiva que sea posible, a no ser que sea más

conveniente utilizar otra estructura de datos más compleja, en nuestro caso, parece que la tabla es

más interesante, ya que puede ser moldeada con un array de dos dimensiones. Si la información

fuera cambiante durante el tiempo de ejecución, entonces sí sería interesante usar el grafo como

estructura de datos dinámica.

Una vez moldeada la información del problema, necesitamos una forma de representar la

solución, es decir, nuestro objetivo. Una forma simple y directa de representarlo es hacer una

lista de ciudades que cumpla con lo siguiente:

La fila comienza y termina por la misma ciudad.

17
En la lista aparecen todas las ciudades.

No se repite ninguna ciudad excepto la primera y la última.

Cualquier lista de ciudades que cuenten con las 3 con las premisas anteriores es posible una

solución, sin embargo estas no son siempre iguales. De hecho buscamos la ruta con menor

distancia. Para ello necesitamos una función que nos muestre la calidad de una solución para

poder compararla con las demás. Para el TSP usaremos la suma de las distancias de cada una de

las ciudades por las que vamos pasando. Por ejemplo:

A-B-E-D-C-A (Función de evaluación: 169)

A-E-D-B-C-A (Función de evaluación: 108)

A-C-D-E-B-A (Función de evaluación: 169)

¿Cómo encontrar la mejor solución? En teoría podemos proceder de la siguiente manera:

Generamos todas las posibles soluciones

Comparamos uno con otra nos quedamos con la que arroje un valor menor de la función de

evaluación.

Analicemos con detalle el primer caso: ¿Cómo generamos todas las posibles soluciones?

¿Cuántas soluciones posibles hay?

Una forma de generar las posibles soluciones a partir de listas de ciudades cualquiera e ir

permutándolas entre ellas. Cada permutación será una posible solución al problema.

Supongamos que la lista es la siguiente:

A-B-E-D-C-A (Función de evaluación: 169)

Si hacemos el cambio en las ciudades B y E

A-E-B-D-C-A (Función de evaluación: 150)

Si ahora efectuamos el cambio de E y D sobre la primera ruta obtenemos:

18
A-D-E-B-C-A (Función de evaluación: 207)

Y así sucesivamente hasta obtener todas las combinaciones posibles ¿Pero cuantas hay? Si

tenemos N ciudades tendremos N! combinaciones posibles, donde:

N!=𝑛. (𝑛 − 1)(𝑛 − 2)(𝑛 − 3) … 2𝑥1

A cada posible solución le allamaremos estado, y al conjunto de ellas le llamaremos espacio

de estados. En nuestro ejemplo con 5 ciudades tenemos 120 posibles soluciones o estados. Un

número manejable por cualquier ordenador.

5!= 5x4x3x2x1 = 120 posibles soluciones

Con 7 ciudades tendríamos 5.040 posibles soluciones

Con 10 ciudades tendríamos 3.648.800 posibles soluciones

Con 20 ciudades tendríamos 2.432.902.008.176.640.000 posibles soluciones

Para tener una idea más clara, si cada permutación lo ocupara 1 micro segundo al ordenador,

con 20 ciudades necesitaríamos 77.147 años para generar todo el espacio del estado. Podemos

observar como es el crecimiento del espacio de estados según el nuero de ciudades. (Figura N°2)

Ilustración 2 Soluciones posibles según el número de ciudades

19
A este tipo de problemas se les llama intratable y decimos que pertenecen a la clase NP, que

son una clase de problemas cuya complejidad hacen que no sean resoluciones en un tiempo

razonable para el ordenador.

Por lo tanto, queda claro que por los métodos computacionales clásicos no es posible resolver

este tipo de problemas. Precisamente la IA trata de cómo abordar este tipo de problemas a través

de diferentes técnicas que serán tratadas más adelante. Quizás no se logre crear programas que

aseguren un mejor resultado posible; pero, si podremos ofrecer una solución cuasi-optima en un

tiempo razonable.

2.2.2 El problema de la programación lineal entera

El problema de la programación lineal entera (PLE) consiste en la optimización de una

función en la que intervienen variables enteras y, además, hay unas restricciones impuestas. Por

ejemplo, sea la función:

𝑓(𝑥1 , 𝑥2 ) = 21𝑥1 + 11𝑥2

Donde 𝑥1 y 𝑥2 son dos variables enteras, y sean también las siguientes restricciones:

7𝑥1 + 4𝑥2 ≤ 13

𝑥1 ≥ 0

𝑥2 ≥ 0

Es decir, si buscamos una asignación de valores enteros para las dos variables que, maximice

(o minimice) el valor de la función f y que a su vez cumplan las restricciones impuestas de ser

mayores o iguales que cero y que la suma de 7𝑥1 𝑦 4𝑥2 sea mayor que 13.

La PLE es un caso particular de la programación (PL) en donde se exige que todas o algunas

variables sean enteras. En el caso de la PL las variables son reales. Pese a lo que pueda parecer a

20
primera vista la PLE es un problema más complejo. Para tener una idea de este tipo de

problemas, planteemos un ejemplo:

Una empresa fabrica 2 tipos de prendas de vestir: camisetas y pantalones. El tiempo necesario

para fabricar un pantalón es de 3 horas y necesita 4 metros de tela. En el caso de la camiseta se

tardan 2 horas y son necesarias 3 metros de tela. También sabemos que la tela disponible para

una semana son 160 metros y con los empleados que hay contratados se puede invertir 150

horas/semana de trabajo. El dueño de la empresa nos ha pedido que a partir de producción y del

precio de venta de las prendas estimemos cuantas camisetas y cuantos pantalones tiene que

fabricar para obtener el máximo de ganancias. (Tabla N°2)

Pantalón Camiseta

Horas producción prendas 7 4

Metros por prenda 6 5

Coste de producción 6 4

Precio de venta 12 8

Tabla 2 Resumen de datos

Comencemos buscando un modelo que represente el problema. Para ello vamos a utilizar dos

variables. Llamaremos 𝑥1 al número de pantalones y 𝑥2 al número de camisetas. Lo que

buscamos es el máximo beneficio con los recursos que disponemos, así que lo definiéremos de la

siguiente forma:

𝑏𝑒𝑛𝑒𝑓𝑖𝑐𝑖𝑜𝑛 = (𝑝𝑟𝑒𝑐𝑖𝑜 𝑣𝑒𝑛𝑡𝑎 − 𝑐𝑜𝑠𝑡𝑜 𝑝𝑟𝑜𝑑𝑢𝑐𝑐𝑖𝑜𝑛) x 𝑢𝑛𝑖𝑑𝑎𝑑𝑒𝑠 𝑣𝑒𝑛𝑑𝑖𝑑𝑎𝑠

Como el beneficio total será la suma de los beneficios de ambas prendas, llegamos a la

siguiente ecuación que representa la función de beneficio para nuestro caso concreto.

𝑓(𝑥1 , 𝑥2 ) = (12 − 6)𝑥1 + (8 − 4)𝑥2

21
Por otro lado, vamos a imponer una serie de restricciones. La primera y más obvia es que

ambas variables han de ser mayores o iguales a 0. No podemos fabricar un numero negativo de

prendas.

𝑥1 ≥ 0

𝑥2 ≥ 0

También sabemos que disponemos de una capacidad de trabajo semanal de 150 horas. Como

fabricar un pantalón se invierte 3 horas y 2 en una camiseta, Hemos de imponer la siguiente

restricción al problema:

7𝑥1 + 4𝑥2 ≤ 150

Lo mismo sucede con la cantidad de metros de tela disponibles semanalmente, que son 160

metros. Como un pantalón necesita 4 metros de tela y una camiseta 3 imponemos la restricción.

6𝑥1 + 5𝑥2 ≤ 160

En resumen, nuestro modelo para el problema de PLE es:

𝑓(𝑥1 , 𝑥2 ) = (12 − 6)𝑥1 + (8 − 4)𝑥2

Restricciones:

7𝑥1 + 4𝑥2 ≤ 150

6𝑥1 + 5𝑥2 ≤ 160

𝑥1 ≥ 0

𝑥2 ≥ 0

Nuestro objetivo es encontrar una asignación de valores enteros para las variables 𝑥1 y 𝑥2 que,

cumpliendo con las restricciones impuestas, hagan que la función f tome el máximo valor

posible.

22
Se puede probar fácilmente que la variable 𝑥1 , está acotada entre 0 y 50, mientras que 𝑥2 , lo

está entre 0 y 75. Por lo tanto, nuestro espacio de estados constara de 50 x 75 = 3.750

posibilidades, que no es un número muy elevado. Es perfectamente tratable por un ordenador.

Sin embargo, en este problema solo entran en juego dos variables y su rango de valores posibles

es muy limitado. Puede demostrase que para mayor número de variables y rango de valores el

problema es intratable.

La función de evaluación para nuestro problema es uy evidente. Podemos usar la misma

función que queremos maximizar para comparar las diferentes asignaciones de variables. A

mayor valor de la función de evaluación, mejor será la calidad de los valores de las variables.

Un problema relacionado con la PLE es el de la programación no lineal (PNL) en el que la

función o alguna de las restricciones es una función no lineal y las variables toman valores

reales.

2.2.3 Otros problemas:

Los problemas propuestos hasta ahora no han sido escogidos al azar. Son problemas bien

conocidos y estudiados ya que son problemas canónicos; es decir, cada uno de estos problemas

representa y se resuelven de la misma manera que una multitud de otros problemas deferentes.

En definitiva, son un modelo que nos permite atacar la resolución de otros similares. Por

ejemplo, el TSP es la base de un problema con mucha mayor aplicación práctica; el problema de

las rutas de vehículos o vehicle problema (VRP). Las distribuidoras de mercancías o las

empresas de reparto tratan siempre de optimizar las rutas de reparto, ya que ello trae consigo un

gran beneficio económico por el ahorro en recursos: tiempo, combustible, vehículos y personal.

El problema consiste en, dado un número arbitrario de clientes a los que hay que servir

mercancía, calcular las rutas que minimicen el número de vehículos necesarios y el número de

23
kilómetros recorridos para cada vehículo. Al resolver el problema de la ruta de vehículos hay que

tener presente que las rutas pueden tener asociadas restricciones como:

Carga máxima de los vehículos: dependiendo de la cantidad, peso o volumen de los pedidos

de cada cliente, un vehículo podrá atender a mas o menos clientes en un viaje.

Horario de los clientes: las rutas tienen que diseñarse de acuerdo con los horarios de los

clientes. De nada sirve que la ruta sea optima si el transportista, que suele cobrar por horas, tiene

que esperar una hora a que habrá el comercio para servir la mercancía.

Horario de transportista: los transportistas pueden tener limitaciones legales en cuanto a la

distancia recorrida o tiempo de trabajo que puede realizar sin descansar.

Preferencias: algunos clientes pueden ser más importantes que otros y por lo tanto es posible

que nos interese servirles antes que los demás.

Numero de almacenes: no es lo mismo tener un solo almacén que varios. Si hay varios

almacenes hay que tener en cuenta qué almacenes servirán cada cliente en concreto siguiendo

criterios de cercanía o de existencias de stock en cada almacén.

Recarga: otro condicionante es si los vehículos cargan la mercancía una vez o puedan volver

al almacén a recargar mercancía para seguir haciendo entregas. EN este caso hay que decidir que

clientes se sirven en la primera carga u cuales en la segunda y siguiente.

Evidentemente, si se puede prescindir de un vehículo, la empresa se ahorra un transportista y

al menor número de kilómetros, mayor ahorro en combustible.

A lo largo del libro presentaremos técnicas que nos permitan lidiar con la complejidad

implícita de estos problemas y a resolverlos, o al menos, conseguir aproximaciones los

suficientemente buenas como para ser aceptables.

24
Pero la IA trata de resolver muchos más probables de muy distintos tipo. Estos son algunos de

los campos donde se aplican técnicas de la IA con un resultado prometedor.

Minería de datos.

Reconocimiento del habla.

Reconocimiento de la escritura.

Visión artificial.

Diagnóstico médico.

Robótica.

Entornos industriales.

Planificación y control.

Videojuegos.

Seguridad.

Predicciones financieras.

Predicción de catástrofes.

Marketing especializados.

25
CAPITULO 3:

BUSQUEDA INFORMADA Y NO INFORMADA

26
3.1 BÚSQUEDA INFORMADA

3.1.1 Búsqueda con vuelta atrás (BRACKTRACKING)

Una de las técnicas comúnmente usadas para mejorar el rendimiento temporal de la búsqueda

en profundidad usando una función heurística es la llamada búsqueda con vuelta atrás o

bracktacking. Cuando exploramos una rama del árbol, hay situaciones que sabremos que no nos

llegaran a una solución o en el mejor de los casos, emporaran la solución en que está analizando

en estos momentos. En otras palabras, que el nodo hijo empeora pa situación con respecto al

nodo padre y por lo tanto nos aleja de la situación en vez de acercarnos a ella. Si un movimiento

nos lleva a una rama en la que sabemos que no llegaremos a una solución, decimos que el

camino (la solución) que estamos analizando no es compatible. Como no tiene sentido seguir

explorando una rama que no es compatible, lo que ahcemos es que dejemos de explorar y

volvamos hacia atrás (de hai el nombre de algoritmo).

Función DFS_backtracking (nodo, solución, visitados):

Añadir nodo a visitados

Si nodo ==solución:

Salir con solución

Si no:

Por cada operador:

Nodo_hijo = operador(nodo)

Si nodo_hijo no es visitados y es_completamente (nodo_hijo)

S = DFS_backtracking(nodo_hijo, solución, visitados)

Salir con s

27
Nodo =

Visitados = Lista

Solución = solución

S = DFS_backtracking (nodo_hijo, solución, visitados)

Tabla 3 Pseudocódigo búsqueda con vuelta atrás

Retomemos el problema de la PLE que propusimos en el capítulo anterior. Recordemos que

nos pedía maximizar una función que representara el beneficio resultante de la fabricación de 𝑥1

camisetas y 𝑥2 pantalones.

(𝑥1 , 𝑥2 ) = (12 − 6)𝑥1 + (8 − 4)𝑥2

Restricciones:

7𝑥1 + 4𝑥2 ≤ 150

6𝑥1 + 5𝑥2 ≤ 160

𝑥1 ≥ 0

𝑥2 ≥ 0

Nuestro objetivo es encontrar una asignación de valores enteros para las variables 𝑥1 𝑦 𝑥2

que, cumpliendo con las restricciones impuestas, hagan que la función f tome el máximo valor

posible. Recordemos también que habíamos llegado a la conclusión de que 𝑥1 estaba acotado

entre 0 y 50 y 𝑥2 entre 0 y 75.

Al explorar el árbol y encontrar asignaciones que hacen que se incumplan las restricciones, no

tiene sentido seguir explorando la rama, por lo que podemos seguir con la siguiente. El listado

que sigue demuestra cómo afrontar el problema de la PLE usando técnicas de backtracking. En

ese ejemplo nos vamos a usar la clase Nodo ni a otros problemas tratados, en este no nos

importan los pasos intermedios necesarios para llegar a una solución. Solo el resultado final. En

28
el problema del camino, pero aquí solo nos interesan los valores finales y óptimos de 𝑥1 y 𝑥2 .

Por lo tanto, sí que vamos a realizar una búsqueda en un árbol, pero vamos a ir generando los

nodos según lo vamos a ir necesitando.

Para nuestro problema, que es bastante sencillo ya que solo tiene dos variables, vamos a

necesitar hacer una búsqueda en un árbol de solo dos niveles de profundidad. En el primer nivel

(sin contar el nodo raíz) vamos a generar los posibles valores de 𝑥1 ; es decir, de 0 a 50. En el

segundo nivel, por cada posible valor de 𝑥2 vamos a generar todos los posibles valores de 𝑥2 que

son los valores entre 0 y 75. En total tendremos que examinar 50 x 75 =3.750 nodos. Sin

embargo, ¿es necesario examinarlos todos? Supongamos que 𝑥1 = 25 y recordemos que una de

las restricciones era:

7𝑥1 + 4𝑥2 ≤ 150

Como 7𝑥1 = 7 𝑥 25 = 175 es mayor que 150 , queda claro que esta asignación incumple la

restricción sea cual sea el valor de 𝑥2 . En este escenario no tiene sentido desplegar los 75 nodos

hijo para las asignaciones de 𝑥2 . (FIGURA N°2)

En nuestro ejemplo tenemos solo dos variables y 3.750 nodos por examinar, pero cualquier

problema mediano puede tener bastante variables y un número de nodos mucho mayor, por lo

que nos va a resultar muy interesante aplicar esta técnica.

El listado siguiente muestras la implementación del algoritmo de backtracking para resolver

nuestro problema de fabricación de camisetas y pantalones.

#PLE con backtracking

def backtracking (variables, rango_variables, optimo, profundidad) :

min=rango_variables[profundidad] [0]

29
max=rango_variables [profundidad][1]

for v in range (min, max)

variables [profundidad]=v

In profundidad < len (variables) -1:

# Es completable si no incumple ninguna restricción

If es_completable (variable):

optimo = backtracking (variables [:], rango_variables,

optimo, profundidad +1)

else:

# estaos en una hoja. Comprobamos solución.

sol=evalua_solucion (variables)

if sol>evalua_solucion(optimo) and es_completable(variables) :

Optimo = (variables[0], variables [1] )

return optimo

def evalua_solucion(variables):

X1= variables [0]

X2= variables [1]

Val = (12-6)*x1 + (8-4)*x2

return val

def es_completamente (variables) :

30
X1=variables[0]

X2=variables[1]

Va11=7*x1+4*x2

Va12=6*x1+5*x2

if val1<=150 and val2<=160:

Return true

else:

Return false

if_name_== “_main_”:

# valores de las variables x1 y x2

Variables=[0,0]

# rangos de las variables x1 y x2

rango_variables=[(0,51),(0,76)]

# mejor solución encontrada

optimo= (0,0)

sol=backtracking (variables [:], rango_variables, optimo, 0)

print “Mejor solución:”

print str(sol [0])+ “pantalones. ”

print str(sol [1])+ “camisetas. ”

Print “Beneficio: “str(evalua_solucion(sol))

Tabla 4 ple_backtracking.py

31
La ejecución del programa nos indica que la mejor opción es fabricar 10 pantalones y 20

camisetas, lo que nos dejara un beneficio de 140 euros.

3.1.2 Algoritmo A*

Utilizando el concepto de coste, la búsqueda de coste uniforme nos permite llegar a una

solución óptima. Sin embargo, hay que pagar un precio por ello. En condiciones desfavorables,

la complejidad temporal y espacial del algoritmo puede crecer bastante. El algoritmo A* (A

estrella) trata de paliar la situación intentando que la convergencia hasta la solución sea más

rápida. Para ello, hace uso de una función heurística h(n) que trata de estimar el coste del nodo n

hasta el nodo objetivo.

Recordemos que la búsqueda de coste uniforme hacia uso de la función g(n) que llamábamos

coste(coste acumulado desde el nodo raíz hasta el nodo n), de esta forma a cada nodo se le hacia

corresponder un valor según la siguiente función de evaluación:

F(n)=g(n)

El algoritmo A* se basa en el mismo concepto, pero usa la siguiente función f(n) como la

función de evaluación.

F(n)=g(n) + h(n)

Es decir, la suma del coste acumulado desde el nodo raíz más el coste estimado hasta el nodo

solución. En cada iteración del algoritmo iremos seleccionando aquellos nodos con mayor valor

f(n). Visto de esta manera, la búsqueda de coste uniforme es un caso especial del algoritmo A*

en el que h(n) toma el valor cero.

32
3.1.3 Búsqueda local

Los algoritmos de búsqueda local tratan de mejorar una solución de forma iterativa, haciendo

pequeñas modificaciones sobre una solución inicial en cada iteración, siempre y cuando no se

viole ninguna de las restricciones del problema. Si esa modificación mejora a la original, nos

quedamos con ellas, si no, la descartamos. Hay toda una familia de algoritmos de hill climbing,

búsqueda tabu y algoritmos genéticos.

La búsqueda loca se utiliza en problemas en los que nos interesa el resultado y no las acciones

necesarias para llegar a él, por lo tanto, no necesitaremos almacenar todo el árbol de estados en

memoria. En las búsquedas locales normalmente trabajamos sobre un solo estado, al que

aplicamos alguna modificación con la esperanza de que el nuevo estado resulte que acerque más

a la solución. Al estado resultante tras aplicarse el cambio lo denominamos estado vecino.

Ahora con un ejemplo, supongamos que tenemos la siguiente función booleana:

𝑓(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = (𝑥2 𝑥4 )(𝑥3 𝑥1 )(𝑥2 −𝑥1 )

Queremos encontrar una asignación de valores para las variables en las que la función f sea

verdadera. Imaginamos la siguiente asignación de variables 𝑥1 = 𝐹, 𝑥2 = 𝐹, 𝑥3 = 𝑉, 𝑥4 = 𝐹.

Esta asignación la podemos representar como un número binario en la que la primera cifra

corresponde a la primera variable y así sucesivamente. En este caso, esta asignación podrá

representarse como 0010. ¿Cuáles serían los vecinos de este estado? Sería otra secuencia de 4

dígitos binarios en los que se ha modificado uno de los valores (una de las asignaciones). Los

siguientes estados serian vecinos de 0010:

1010

0011

0110

33
La última asignación 0110 tiene la particularidad de que hace tomar el valor verdadero a la

función y por lo tanto es una solución.

Consideremos ahora el programa TSP (problema del viajante del comercio). Donde veremos

las ciudades y las conexiones en la siguiente figura.

Un posible estado solución (no optima) podrá representarse como ABCED, que representa las

ciudades y el origen en el que se recorren- ¿Cuáles serían los posibles vecinos? En el ejemplo

anterior del TSP usamos como operador para generar los vecinos el cambo de estado de una de

las cifras binarias, es decir, cambiábamos un 1 por un 0, o viceversa. En el caso del TSP una

posible operación para obtener un 1 vecino puede ser intercambiar dos ciudades. De esta forma

algunos vecinos de ABCED son:

BACED

CBAED

AECBD

Al aplicar las operaciones para obtener los vecinos de un estado hay que tener en cuenta las

restricciones propias del problema, ya que algunas pueden estar impuesta por el enunciado del

problema PLE. Otras pueden derivarse de las naturalezas propias del problema. Un ejemplo claro

es el problema de las rutas por carretera Para obtener un vecino podemos intercambiar una

ciudad con otras, tal como lo hicimos con el TSP, pero puede darse el caso que en el intercambio

de lugar a una solución en la que dos cuidades consecutivas no estén conectadas por carreteras,

por ejemplo:

Málaga – Granada – Madrid – Salamanca - Santiago

Obtenemos un vecino intercambiando la ciudad de Málaga por la ciudad de Santiago

34
Santiago – Granada – Madrid – Salamanca - Málaga

Pero según el mapa de carreteras puesto anteriormente, no existen conexiones de carreteras

entre Santiago y Granada.

Al proceso de comprobar si el vecino es verdadero, se le denomina satisfacción de

restricciones.

En la figura se muestra un sistema genérico de cómo se comporta la búsqueda local, en e eje

“X” se representa el espacio de estados y en el eje “Y” el valor de la función objetivo. Nuestro

objetivo es encontrar el mayor valor de la función de evaluación en el eje “Y” (o el menor si es

que se desea obtener el mínimo). Supongamos que el estado actual que estamos analizando es el

que marca la flecha en la figura. Un algoritmo genera los vecinos de este estado y elegirá el

mejor. En el ejemplo, los vecinos son los puntos inmediatamente laterales al estado actual. Tanto

por la izquierda como por la derecha, y esto puede dar a los siguientes dos casos: que el

algoritmo decida que es mejor escoger el vecino de la derecha, en este caso se eran generando

algoritmos mejores conforme se avance a la derecha hasta que llegue al pico (suponiendo que se

busca el valor máximo de la función). El algoritmo interpretara entonces que han encontrado el

máximo de la función, cosa que si nos ponemos a observa en la figura no es muy cierta, a lo que

se le denomina un máximo local; si se hubiera tomado la decisión de avanzar hacia la izquierda,

si habríamos encontrado el máximo global, que es el valor que realmente no interesa.

3.1.3.1 Algoritmos constructivos voraces

En general, para aplicar un algoritmo de búsqueda local necesitamos partir de una solución

inicial que trataremos de ir mejorando. Como solución inicial podemos tomar una solución

aleatoria, pero a veces interesa que la solución, aunque no sea optima, si cumpla una serie de

35
restricciones y condiciones iniciales. Si además la solución es buena aunque no sea perfecta,

mejor que mejor.

Los logaritmos constructivos voraces son aquellos que utilizan una función heurística

consistente en elegir la mejor opción en cada paso para ir construyendo una solución. Suelen

usarse para generar soluciones iniciales y luego intentar mejorarlas mediantes técnicas como hill-

climbing, algoritmos genéticos o algún otro de los que analizaremos en el resto del capítulo.

Aquí también es muy importante la elección de una broma función heurística, ya que además

de asegurarnos una solución cuasi-optima, o al menos aceptable, también influirá en si la

solución es válida o no. No debemos perder de vista que el algoritmo constructivo ha de tener en

cuenta las restricciones del problema. Pongamos un camino para ir de Málaga a Santiago. Como

heurística constructiva elegiremos aquella que en cada paso selecciona el camino más corto

posible. Si empezamos en Málaga, la distancia más corta es la que nos lleva a Granada. Desde

Granada, la ciudad más cercana es Madrid. En Madrid seleccionaremos Salamarca y algoritmo

constructivo ha generado la siguiente ruta a:

Málaga – Granada – Madrid – Salamanca - Santiago

Como ya vimos antes, esta no es la mejor solución, pero no está mal como punto de partida.

¿Y si queremos ir de Barcelona a Valencia? Aplicando nuestra heurística obtenemos la siguiente

ruta:

Barcelona – Zaragoza – Madrid – Salamanca – Santiago – Madrid - Valencia

Teniendo en cuenta que la ruta optima es

Barcelona - Valencia

Nuestra heurística no se ha comportado demasiado bien en este caso.

36
Como se dijo antes, hay que tener en cuenta que la heurística respete las restricciones del

problema, ya que podríamos caer en bucles o llegar a ciudades, que como Sevilla, no tengan

salida, con lo que nunca alcanzaríamos la cuidad de destino.

A pesar de estos problemas, esa técnica puede llegar a ser muy poderosa para construir

soluciones iniciales. Vamos a analizar dos algoritmos constructivos voraces bien conocidos. Se

trata de algoritmo de Dijktra para la construcción del camino mínimo en un grafo y el algoritmo

de los ahorros de Clarke y Wright para el problema VRP (Vehicle Routing Problem)

3.1.3.2 Búsqueda Tabú

La Búsqueda Tabú (BT) es una meta heurística cuya característica distintiva es el uso de

memoria adaptativa y de estrategias especiales de resolución de problemas. Su filosofía se basa

en la explotación de diversas estrategias inteligentes para la resolución de problemas, basadas en

procedimientos de aprendizaje. El marco de memoria adaptativa de BT explota la historia del

proceso de resolución del problema haciendo referencia a cuatro dimensiones principales,

consistentes en la propiedad de ser reciente, en frecuencia en calidad, y en influencia. El

algoritmo de BT simple aplica búsqueda local con el criterio de “best-improvement” como

componente básico y usa una memoria de corto plazo, para poder escapar de ´óptimos locales y

evitar ciclos en la búsqueda. La memoria de corto plazo esta implementada como una lista tabú

que mantiene registro de las soluciones visitadas más recientemente y prohíbe movimientos

hacia ellas. La implementación de la memoria a corto plazo como una lista que contiene

soluciones completas puede no ser efectiva, por lo que en lugar de almacenar soluciones, se

almacenan atributos de soluciones como por ejemplo componentes de soluciones, movimientos o

diferencias entre dos soluciones. De esta forma, se restringe la vecindad de la solución actual a

soluciones que no pertenecen a la lista tabú, previniendo de ciclos infinitos y forzando a la

37
búsqueda a aceptar movimientos que incluso pueden generar soluciones peores. Ya que se puede

considerar más de un atributo, se introduce una lista tabú para cada uno de ellos. El conjunto de

atributos y las listas tabú correspondientes definen la lista de condiciones tabú que se utilizan

para filtrar la vecindad de una solución y generar el conjunto permitido. Almacenar atributos en

lugar de soluciones completas es mucho más eficiente, pero introduce perdida de información, ya

que prohibir un atributo significa asignar la condición de tabú a más de una solución

probablemente. Por lo tanto, es posible que soluciones no visitadas de buena calidad sean

excluidas del conjunto permitido. Para superar este problema, se define criterios de aspiración,

que permiten incluir una solución en el conjunto permitido aunque este prohibida por las

condiciones tabú. Los criterios de aspiración definen las condiciones de aspiración que se

utilizan para construir el conjunto permitido. La lista tabú, identificada usualmente con el uso de

memoria a corto plazo, es solo una de las maneras posibles de aprovechar la historia de la

búsqueda. La información recolectada durante todo el proceso de búsqueda también puede ser

muy ´útil, especialmente para una guía estratégica del algoritmo. Este tipo de memoria a largo

plazo generalmente se agrega a la BT de acuerdo a cuatro principios: lo reciente, frecuencia

calidad e influencia. La memoria basada en lo reciente registra para cada solución (o atributo) la

iteración más reciente en la que estuvo involucrada. En contraposición, la memoria basada en

frecuencia mantiene registro de cuantas veces cada solución (o atributo) ha sido visitada (usado).

Esta información identifica las regiones del espacio de soluciones donde la búsqueda estuvo

concentrada o donde permaneció por mayor número de iteraciones. Es decir, es información que

representa la memoria del proceso de búsqueda y que puede ser explotado para diversificar la

búsqueda. Por su parte, el atributo calidad hace referencia a la habilidad para diferenciar la

bondad de las soluciones visitadas a lo largo del proceso de búsqueda. De esta forma, la memoria

38
puede ser utilizada para la identificación de elementos comunes a soluciones buenas o a ciertos

caminos que conducen a ellas. La calidad constituye un fundamento para el aprendizaje basado

en refuerzos, donde se premian las acciones que conducen a buenas soluciones y se penalizan

aquellas que, por el contrario, conducen a soluciones pobres. Por ´ultimo la cuarta dimensión de

memoria, referida a la influencia, considera el impacto de las decisiones tomadas durante la

búsqueda, no solo en lo referente a la calidad de las soluciones, sino también en lo referente a la

estructura de las mismas

3.1.3.3 Algoritmos genéticos

Los Algoritmos Genéticos (AGs) son métodos adaptativos que pueden usarse para resolver

problemas de búsqueda y optimización. Están basados en el proceso genético de los organismos

vivos. A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con

los principios de la selección natural y la supervivencia de los más fuertes, postulados por

Darwin. Por imitación de este proceso, los Algoritmos Genéticos son capaces de ir creando

soluciones para problemas del mundo real. La evolución de dichas soluciones hacia valores

óptimos del problema depende en buena medida de una adecuada codificación de las mismas.

Un algoritmo genético consiste en una función matemática o una rutina de software que toma

como entradas a los ejemplares y retorna como salidas cuales de ellos deben generar

descendencia para la nueva generación.

Versiones más complejas de algoritmos genéticos generan un ciclo iterativo que directamente

toma a la especie (el total de los ejemplares) y crea una nueva generación que reemplaza a la

antigua una cantidad de veces determinada por su propio diseño. Una de sus características

principales es la de ir perfeccionando su propia heurística en el proceso de ejecución, por lo que

39
no requiere largos períodos de entrenamiento especializado por parte del ser humano, principal

defecto de otros métodos para solucionar problemas, como los Sistemas Expertos.

3.2 BÚSQUEDA NO INFORMÁTICA

3.2.1 Búsqueda

La búsqueda es una técnica para resolver problemas cuya solución consiste en una serie de

pasos que frecuentemente deben determinarse mediante la prueba sistemática de las alternativas.

Desde los inicios de la Inteligencia Artificial, la búsqueda se ha aplicado en diversas clases de

problemas como juegos de dos jugadores, problemas de satisfacción de restricciones y problemas

de pathfinding de un único agente.

3.2.2 búsqueda en amplitud

La Búsqueda en amplitud o en anchura es un algoritmo para recorrer o buscar elementos de

un grafo(usado frecuentemente en arboles). Se inicia por la raíz y se exploran todos los hijos de

este nodo. Después, se explora cada uno de los hijos de los hermanos y así sucesivamente hasta

encontrar la solución al problema.

Pseudocogido Algoritmo:

Establecer nodo origen

Evaluar primer hijo

 si cumple, establecer como origen y salir

 si valido, repetir búsqueda a partir del nuevo estado

 sino valido, repetir búsqueda para todos los hermanos

 si encuentra , establecer como origen y salir

 si no encuentra, marcar al padre como no valido

 establecer origen como abuelo y seguir buscando.

40
Ilustración 3 Búsqueda en amplitud

3.2.3 Búsqueda en profundidad

La búsqueda se realiza por una sola rama del árbol hasta encontrar una solución o hasta que se

tome la decisión de terminar la búsqueda por esa dirección.

Terminar la búsqueda por una dirección se debe a no haber posibles operadores que aplicar

sobre el nodo hoja o por haber alcanzado un nivel de profundidad muy grande.

Si esto ocurre se produce una vuelta atrás (backtracking) y se sigue por otra rama hasta visitar

todas las ramas del árbol si es necesario.

Ilustración 4 Búsqueda en profundidad

41
3.2.4 Búsqueda de coste uniforme

La idea del algoritmo consiste en ir explorando todos los caminos más cortos que parten desde

la raíz y que llevan a todos los nodos, enumerando todos los nodos del espacio de estados por

costes (valores de g) crecientes; cuando se obtiene el camino más corto desde la raíz, a la

estación destino objetivo de la búsqueda, el algoritmo se detiene.

{búsqueda de coste uniforme}

abierta ←s0

Repetir Si

vacío?(abierta) entonces devolver(negativo)

nodo←primero(abierta)

Si meta?(nodo)entonces devolver(nodo)

sucesores←expandir(nodo)

Para cada n∈sucesores hacer

n.padre←nodoordInsertar(n,abierta,g)

Fin{repetir}

En el algoritmo se almacena cada nodo con su valor g y se insertan los nuevos nodos

expandidos en una estructura dinámica (una cola con prioridad) en orden ascendente según su

valor de g; la búsqueda de coste uniforme es completa al ser los costes números enteros

positivos, siendo no acotada la sucesión de valores g, por lo que si el nodo meta existe en el

espacio de estados, será expandido alguna vez; y óptima, puesto que al expandir todos los nodos

del espacio de estados por valores crecientes de g, cuando se expande el primer nodo meta, éste

será el nodo meta de menor valor de g.

42
El análisis de completitud y optimalidad de la búsqueda de coste uniforme se basa en que en

el hecho de que la sucesión de costes (valores de g) nunca disminuye; el problema es que, al

encontrarse éste desinformado sobre la estación destino, realizará una evaluación de recorrido

mínimo desde la estación origen a todos las estaciones contenidas en la Red, deteniéndose su

ejecución al llegar a la estación destino seleccionada, tal como una búsqueda en amplitud hace,

lo cual provoca que no resulte eficiente, pues su uso implica de un gran esfuerzo computacional,

ya que, a diferencia del algoritmo de búsqueda A*, del cual hablaremos a continuación, al no

encontrarse informado sobre la estación “final”, y por tanto no guiado hacia el destino, calcula

rutas mínimas de recorrido desde la estación origen a todas sus adyacentes que nosotros

consideramos candidatas de formar parte del camino mínimo a la estación destino, provocando

que, para estaciones origen y destino muy distanciadas entre sí y algo aisladas, de comunicación

no tan directa (pensemos en una estación destino en una línea con pocas correspondencias con

otras líneas, como por ejemplo, el tramo final de la línea 7), el uso del mismo resulte muy

pesado, con tiempos de ejecución elevados, y con un uso exhaustivo de las prestaciones del

equipo (memoria RAM) sobre el cual se esté utilizando la aplicación, en ocasiones no

permitiendo incluso la obtención de una solución.

Una vez llegados a la fase final de verificación del correcto funcionamiento del sistema,

procederemos a una comparación de los 3 agentes para distintos supuestos (estación origen ->

estación destino) en un banco de pruebas, verificando que cumplen con su cometido y respetan la

especificación impuesta en todos los casos.

43
CAPITULO 4:

RAZONAMIENTO

44
4.1.INTRODUCCIÓN

Los expertos dedican mucho tiempo a estudiar y practicar la disciplina elegida para llegar a

ejercer eficientemente su trabajo. El problema de los expertos humanos es multifacético: su

escaso número, su disponibilidad, el pago de remuneraciones y, por supuesto su calidad de

mortales, que implica, a la larga la pérdida total de la destreza adquirida. Por ese motivo es

comprensible que a muchas empresas les atraiga la idea de codificar esa pericia en programas de

computadora, para poder trabajar con un gran cuerpo de conocimientos sin los inconvenientes

propios de los expertos humanos. El concepto de sistema experto nació en los años setenta,

cuando los investigadores en el campo de la inteligencia artificial pospusieron la creación de

máquinas inteligentes a nivel general y volcaron sus intereses en la solución de problemas del

mundo real centrados en aspectos muy concretos. Por consiguiente, el sistema experto es uno de

los primeros ejemplos de IA aplicada, y las técnicas para sistemas expertos se han extendido

mucho más allá de los confines de laboratorio de investigación en el que fueron concebidas. De

hecho, en cierto modo los sistemas expertos han llevado a la IA al uso práctico cotidiano. Existen

ya sistemas que superan a los seres humanos capacitados en diagnóstico médico, interpretación

de espectrogramas de masa, clasificación de enfermedades de cultivos y otras muchas cosas más.

4.2.SISTEMAS EXPERTOS

Típicamente, un sistema experto se basa en un amplio cuerpo de conocimientos sobre un área

problemática específica. En general, este conocimiento se organiza como un conjunto de reglas

que permita que el sistema extraiga conclusiones a partir de datos o premisas dadas,

capacitándolo, en consecuencia, para ofrecer un consejo inteligente o tomar decisiones

inteligentes. Este enfoque del diseño de sistemas basado en el conocimiento representa un

45
cambio evolutivo en la ciencia de las computadoras, con consecuencias revolucionarias.

Sustituye a la tradicional fórmula de:

DATOS + ALGORITMO = PROGRAMA

Por una nueva arquitectura centrada alrededor de una base de conocimientos y un motor de

inferencias, de modo que:

CONOCIMIENTOS + INFERENCIAS =SISTEMA EXPERTO

Esta fórmula es, obviamente similar, pero con un enfoque lo suficientemente diferente como

para tener profundas implicaciones. Para tener un sistema experto resulta útil la siguiente lista de

verificación de características típicas:

 Un sistema experto se limita a un campo de pericia relativamente delimitado.

 Debe ser capaz de razonar con datos inciertos y reglas no fiables.

 Debe ser capaz de explicar su cadena de razonamiento de una forma exhaustiva.

 Los hechos y los mecanismos de inferencia son "separables".

 El conocimiento no está codificado como parte de los procedimientos deductivos.

 Está diseñado para crecer por incrementos.

 Típicamente se basa en reglas.

 Su salida es un consejo o sugerencia, no tablas de cifras ni gráficos.

La palabra clave es "conocimiento". Está claro que el objetivo de un sistema inteligente para

resolver problemas es omitir la búsqueda ciega o aleatoria. Para hacerlo, un sistema de

computadora ha de explotar la misma ventaja que tiene el experto humano en relación al novato,

es decir, la pericia o el conocimiento organizado: el conocimiento de hechos, de reglas de

inferencia y de estrategias de solución.

Un sistema experto totalmente viable tiene cuatro componentes esenciales:

46
La base de conocimientos.

El motor de inferencia.

El módulo de adquisición de conocimientos.

La interface explicativa.

Los cuatro módulos son críticos. Un sistema basado en el conocimiento puede carecer de

alguno de ellos, pero un auténtico sistema experto no puede carecer de ninguno.

Hablaremos de esos cuatro módulos de uno en uno y explicaremos cómo trabajan todos

juntos.

Una vez puesto en claro lo mencionado, todo sistema experto debe cumplir con ciertas tareas:

Monitorización: Es un caso particular de la interpretación, y consiste en la comparación

continua de los valores de las señales o datos de entrada y unos valores que actúan como criterios

de normalidad o estándares. En el campo del mantenimiento predictivo los Sistemas Expertos se

utilizan fundamentalmente como herramientas de diagnóstico. Se trata de que el programa pueda

determinar en cada momento el estado de funcionamiento de sistemas complejos, anticipándose

a los posibles incidentes que pudieran acontecer. Así, usando un modelo computacional del

razonamiento de un experto humano, proporciona los mismos resultados que alcanzaría dicho

experto.

Diseño: Es el proceso de especificar una descripción de un artefacto que satisface varias

características desde un número de fuentes de conocimiento.

El diseño se concibe de distintas formas:

El diseño en ingeniería es el uso de principios científicos, información técnica e imaginación

en la definición de una estructura mecánica, máquina o sistema que ejecute funciones específicas

con el máximo de economía y eficiencia.

47
El diseño industrial busca rectificar las omisiones de la ingeniería, es un intento consciente de

traer forma y orden visual a la ingeniería de hardware donde la tecnología no provee estas

características.

Los SE en diseño ven este proceso como un problema de búsqueda de una solución óptima o

adecuada. Las soluciones alternas pueden ser conocidas de antemano o se pueden generar

automáticamente probándose distintos diseños para verificar cuáles de ellos cumplen los

requerimientos solicitados por el usuario, esta técnica es llamada “generación y prueba”, por lo

tanto estos SE son llamados de selección. En áreas de aplicación, la prueba se termina cuando se

encuentra la primera solución; sin embargo, existen problemas más complejos en los que el

objetivo es encontrar la solución óptima.

Planificación: es la realización de planes o secuencias de acciones y es un caso particular de la

simulación. Está compuesto por un simulador y un sistema de control. El efecto final es la

ordenación de un conjunto de acciones con el fin de conseguir un objetivo global.

Los problemas que presentan la planificación mediante SE son los siguientes:

Existen consecuencias no previsibles, de forma que hay que explorar y explicar varios planes.

Existen muchas consideraciones que deben ser valoradas o incluirles un factor de peso.

Suelen existir interacciones entre planes de subobjetivos diversos, por lo que deben elegirse

soluciones de compromiso.

Trabajo frecuente con incertidumbre, pues la mayoría de los datos con los que se trabaja son

más o menos probables pero no seguros.

Es necesario hacer uso de fuentes diversas tales como bases de datos.

48
Control: Un sistema de control participa en la realización de las tareas de interpretación,

diagnóstico y reparación de forma secuencial. Con ello se consigue conducir o guiar un proceso

o sistema. Los sistemas de control son complejos debido al número de funciones que deben

manejar y el gran número de factores que deben considerar; esta complejidad creciente es otra de

las razones que apuntan al uso del conocimiento, y por tanto de los SE.

Cabe aclarar que los sistemas de control pueden ser en lazo abierto, si en el mismo la

realimentación o el paso de un proceso a otro lo realiza el operador, o en lazo cerrado si no tiene

que intervenir el operador en ninguna parte del mismo. Reparación, correcta o terapia.

La reparación, corrección, terapia o tratamiento consiste en la proposición de las acciones

correctoras necesarias para la resolución de un problema. Los SE en reparación tienen que

cumplir diversos objetivos, como son: Reparación lo más rápida y económicamente posible.

Orden de las reparaciones cuando hay que realizar varias. Evitar los efectos secundarios de la

reparación, es decir la aparición de nuevas averías por la reparación.

Simulación; Es una técnica que consistente en crear modelos basados en hechos,

observaciones e interpretaciones sobre la computadora, a fin de estudiar el comportamiento de

los mismos mediante la observación de las salidas para un conjunto de entradas. Las técnicas

tradicionales de simulación requieren modelos matemáticos y lógicos, que describen el

comportamiento del sistema bajo estudio.

El empleo de los SE para la simulación viene motivado por la principal característica de los

SE, que es su capacidad para la simulación del razonamiento de un experto humano, que es un

proceso complejo.

En la aplicación de los SE para simulación hay que diferenciar cinco configuraciones

posibles:

49
Un SE puede disponer de un simulador con el fin de comprobar las soluciones y en su caso

rectificar el proceso que sigue.

Un sistema de simulación puede contener como parte del mismo a un SE y por lo tanto el SE

no tiene que ser necesariamente de simulación.

Un SE puede controlar un proceso de simulación, es decir que el modelo está en la base de

conocimiento del SE y su evolución es función de la base de hechos, la base de conocimientos y

el motor de inferencia, y no de un conjunto de ecuaciones aritmético – lógicas.

Un SE puede utilizarse como consejero del usuario y del sistema de simulación.

Un SE puede utilizarse como máscara o sistema frontal de un simulador con el fin de que el

usuario reciba explicación y justificación de los procesos.

Instrucción: Un sistema de instrucción realizara un seguimiento del proceso de aprendizaje. El

sistema detecta errores ya sea de una persona con conocimientos e identifica el remedio

adecuado, es decir, desarrolla un plan de enseñanza que facilita el proceso de aprendizaje y la

corrección de errores.

Recuperación de información: Lo que diferencia a estos sistemas de un sistema tradicional de

recuperación de información es que éstos últimos sólo son capaces de recuperar lo que existe

explícitamente, mientras que un Sistema Experto debe ser capaz de generar información no

explícita, razonando con los elementos que se le dan. Pero la capacidad de los SE en el ámbito de

la recuperación de la información no se limita a la recuperación. Pueden utilizarse para ayudar al

usuario, en selección de recursos de información, en filtrado de respuestas, etc. Un SE puede

actuar como un intermediario inteligente que guía y apoya el trabajo del usuario final.

50
4.3.SISTEMAS DIFUSOS

Los sistemas difusos o la lógica difusa permite a un ordenador razonar en términos

lingüísticos y reglas de una forma estudiaremos dos entidades clave: los conjuntos difusos y las

variables lingüísticas similar a como lo realizan los seres humanos. A diferencia de la lógica

booleana clásica, la lógica difusa es multi-valuada definiendo grados de pertenencia (grados de

verdad).

4.3.1. CONJUNTO DIFUSOS

En la definición sobre grados de pertenencia, la lógica difusa o conjunto difuso emplea

valores continuos entre 0 (que representa hechos totalmente falsos) y 1 (totalmente ciertos). Y

así, la lógica binaria clásica puede verse relacionada con la lógica difusa. Zadeh propone en el

año 1965 la noción de Conjunto Difuso [2]. Este hecho marco el principio de una nueva teoría a

la que hoy en día la conocemos como la Teoría de Conjuntos Difusos.

Los conceptos relacionados con los conjuntos difusos mediante un proceso (asociando los

valores de pertenencia) pueden ser llamados fuzzificación. Una vez que tenemos los valores

fuzzificados podemos trabajar con reglas lingüísticas y obtener una salida, que podrá seguir

siendo difusa o defuzzificada para obtener un valor discreto crisp.

De este modo, a diferencia de la teoría clásica de conjuntos que se basa en el principio básico

de la lógica de forma que un individuo pertenece o no pertenece a un conjunto, la idea básica de

un conjunto difuso es que un elemento forma parte de un conjunto con un

Determinado grado de pertenencia.

De este modo una proposición no es totalmente (sino parcialmente) cierta o falsa. Este grado

se expresa mediante un entero en el intervalo [0, 1].

Un ejemplo claro es la representación de la altura de una población de individuos.

51
Ilustración 5 Descripción de conjuntos crisp

NOMBRE ALTURA CRISP FRUSSY

Paco 2.05 1 1.0

Juan 1.95 1 1.0

Tomas 1.87 1 0.95

Carlos 1.80 1 0.82

Pedro 1.79 0 0.71

Andres 1.60 0 0.36

Tabla 5 Descripción de conjuntos fuzzy

En la representación crisp, se dibuja una línea que separa claramente en 1.8m y separa a los

individuos más altos y a los que no lo son, asociando un valor de partencia estricta a aquellos que

superan la altura establecida. Sin embargo, el conjunto difuso permite expresar que Carlos tiene

un grado de pertenencia al conjunto de los altos en µA(Altura) = 0,82.

52
Así, un conjunto difuso proporciona una transición suave entre los límites de lo que sería un

conjunto crisp. El Universo del discurso se define como todos los posibles valores que puede

tomar una determinada variable (en el caso de la imagen anterior se correspondería con el eje

horizontal de las gráficas, desde 150 a 210cm).

4.3.2. OPERACIONES DE CONJUNTOS DIFUSOS:

Existen tres operaciones básicas cobre estos conjuntos (complemento, unión e intersección),

pueden generalizarse de varias formas en conjuntos difusos. Sin embargo, existe una

generalización partículas de mucha importancia. Cuando se restringe el rango de pertenencia al

conjunto [0, 1], estas operaciones “estándar” sobre conjuntos difusos se comportan de igual

modo que las operaciones sobre conjuntos crisp. Dichas operaciones se definen del siguiente

modo (ver Figura 2.2):

µA(x) = 1 − µA(x)

µA∩B(x) = ⊥ [µA(x), µB(x)]

µA∪B(x) = T [µA(x), µB(x)]

Ilustración 6 Descripción grafica de operaciones estándar con conjuntos difusos

53
Unión: La forma más generalizada de la unión existente es la T-conorma. Que podemos

definirla de la siguiente manera:

⊥: [0, 1] × [0, 1] → [0, 1]

µA∪B(x) = ⊥ [µA(x), µB(x)]

Para que una función se pueda considerar como una unión difusa, debe satisfacer los

siguientes axiomas ∀a, b, c ∈ [0, 1]:

U1) Elemento Neutro: ⊥(a, 0) = a

U2) Conmutatividad: ⊥(a, b) = ⊥(b, a)

U3) Monotonicidad: Si a ≤ c y b ≤ d entonces ⊥(a, b) = ⊥(c, d)

U4) Asociatividad: ⊥(⊥(a, b), c) = ⊥(a, ⊥(b, c))

Algunas T-conormas ampliamente utilizadas son:

Máximo: ⊥(a, b) = max(a, b)

Producto: ⊥(a, b) = (a + b) − (a × b)

Suma limitada (o de Lukasiewick): ⊥(a, b) = min(a + b, 1)

Intersección: La forma general de la intersección se denomina como T-norma. De la siguiente

forma:

T : [0, 1] × [0, 1] → [0, 1]

µA∩B(x) = T [µA(x), µB(x)]

Una T-norma satisface los siguientes axiomas ∀a, b, c ∈ [0, 1]

I1) Elemento unidad: T(a, 1) = a

I2) Conmutatividad: T(a, b) = T(b, a)

I3) Monotonicidad: Si a ≤ c y b ≤ d entonces T(a, b) = T(c, d)

54
I4) Asociatividad: T(T(a, b), c) = T(a, T(b, c))

Algunas T-normas ampliamente utilizadas son:

Mínimo: T(a, b) = min(a, b)

Producto algebraico: T(a, b) = ab

Diferencia limitada (o de Lukasiewick): T(a, b) = max(0, a + b − 1)

Complemento: El complemento A de un conjunto difuso A, se denota por cA; está definido

por una función del tipo c : [0, 1] → [0, 1]. Tiene que satisfacer los siguientes axiomas:

C1) Condiciones límite o frontera: c(0) = 1 y c(1) = 0.

C2) Monotonicidad: ∀a, b ∈ [0, 1] si a < b entonces c(a) ≥ c(b).

C3) c es una función contínua.

C4) c es involutiva ∀a ∈ [0, 1] tenemos c(c(a)) = a.

Al igual que sucedía con los operadores de unión y de intersección, también para el

complemento existen gran variedad de clases. Uno de los más utilizados, además del

complemento clásico (µA(x) = c(a) = 1−a), es el λ-complemento de Sugeno.

Como se puede observar, si λ = 0, la función se comporta como el complemento clásico.

Además, para cada valor de λ, obtenemos una expresión particular para el complemento. Otro

tipo de complemento borroso muy utilizado es el de Yager.

Al igual que con el complemento de Sugeno, cambiando el valor de w obtenemos distintos

tipos de complemento. Si w = 1 tenemos el complemento clásico.

55
Ilustración 7 Uso del modificador en los conjuntos bajo y alto

56
CAPITULO 5:

APRENDIZAJE

57
5.1.INTRODUCCIÓN

Desde que nosotros nacemos, nuestros sentidos se ponen en contacto con la realidad que está

en un constante cambio a la que debemos adaptarnos para poder sobrevivir. El aprendizaje es una

facultad que nos permite a partir de una información que obtenemos partir del exterior,

desarrollar o modificar hábitos, para adaptarnos mejor al entorno.

En la IA la capacidad de aprendizaje está mucho más limitada que la de los seres humanos.

Tareas que a primera vista pueden parecer sencillas, como reconocer la cara de los conocidos, es

una tarea tremendamente compleja para un ordenador. De hecho, seremos capaces de reconocer

esa cara aunque la persona se ponga unas gafas de sol, se deje la barba o se ponga una bufanda.

Nuestro cerebro seguirá reconocido la cara. Para un ordenador, sin embargo, cualquier cambio,

incluso gestual, complica el proceso de reconocimiento.

La neurociencia actual demuestra que el cerebro está especialmente dotado para el

reconocimiento de patrones, y básicamente es así como asociamos las imagines que recibimos

visualmente con las personas u objetos que conocemos.

El proceso de clasificar cosas, ya sean caras de personas o cualquier otro elemento o

concepto, es una tarea muy interesante con aplicaciones en múltiples campos. A modo de

ejemplo podemos nombrar el reconocimiento óptimo de caracteres (OCR) que permite a una

maquina leer textos, como puedan ser los programas anti-spam que usan nuestros servidores de

correo electrónico. Estos programas son capaces de, a través de un entrenamiento y un

aprendizaje continuo, clasificar cada vez con mayor precisión los correos recibidos para decidir

si son correos basuras o no.

Hay diferentes técnicas que nos permite realizar clasificaciones. Además de las redes

neuronales, los clasificaremos basados en modelos probabilísticos, como los clasificadores

58
bayesianos, dan muy buenos resultados. Con este último tipo de clasificación vamos a comenzar

este capitulo

5.2.CLASIFICACIÓN PROBABILÍSTICA

Los modelos basados en probabilidad son muy utilizados en diversos problemas de

clasificación y aprendizaje. Quizás, las redes bayesianas sean las más conocidas y utilizadas,

pero ahora presentaremos un modelo probabilístico para el problema de la clasificación llamado

clasificador bayesiano ingenuo o naive bayes classifier.

Este método está constituido de modelos probabilísticos y hace uso del teorema de bayes

sobre las probabilidades condonadas. Los conocimientos sobre probabilidad necesarios para

comprender y aplicar esta técnica no son muy complejos, aunque convendrá dar un repaso básico

antes de empezar.

5.2.1 Un poco de probabilidad

Si nosotros lanzamos una moneda al aire varias veces, podemos darnos cuenta que

aproximadamente la mitad de las veces nos saldrá cara. De esta forma decimos que hay una

probabilidad del 50% de obtener cara. Pero, si ahora lanzamos un dado, la probabilidad de sacar

un mismo número no es tan evidente como en el caso anterior. Aunque se podría complicar aún

más: ¿Cuál es la probabilidad de sacar un número par? ¿La probabilidad de obtener un 1 o un 6?

Nosotros una vez que lancemos el dado podremos obtener seis resultados entre los cuales

están el 1, 2, 3, 4, 5 y 6. El conjunto de los resultados que podemos obtener se le llama espacio

muestras que se le denomina con un letra griega (Ω), también se dice que el espacio cardinal es

6, ya que se puede obtener seis resultados posibles. Por lo tanto definiremos un suceso como un

espacio maestral en el ejemplo del dado:

A= {2, 4, 6}

59
El espacio cardinal de A es 3, ya que podemos obtener solo tres resultados, también se le

puede escribir como card[A]=3

El suceso de sacar un número mayor o igual a 3 se puede definir de la siguiente manera:

B= {3, 4, 5, 6}. En este caso Card[B]= 4

Y cuál será la probabilidad de sacar un número impar 0 sacar un numero exactamente menor a

3. Y precisamente son los sucesos contrarios de los dos anteriores.

A´= {1, 3, 5} Card[A´]= 3

B´= {1, 2} Card[B´]= 2

A partir de dos sucesos podemos construir otros utilizando operadores de unión (U) o

intersección (∩). La intersección de dos sucesos es otro favorable para ambos, por ejemplo:

A ∩ B= {4, 6}

Ya que son los valores que pertenecen al suceso A como pertenecen al suceso B. Ahora la

unión del suceso A con el suceso B puede darse de la siguiente manera:

A U B= {2, 3, 4, 5. 6}

Son los valores que le pertenecen a A y B o a ambos a la vez. Ósea por todos los valores en

general de ambos.

Pero cuál es la probabilidad de sacar un número par o sacar números mayores que 3? La

probabilidad de un suceso es la probabilidad que tiene este en darse y su valor siempre estará

comprendido entre 0 y 1 usando la regla de LAPLACE.

𝑐𝑎𝑟𝑑(𝑠𝑢𝑐𝑒𝑠𝑜)
𝑝(𝑠𝑢𝑐𝑒𝑠𝑜) =
𝑐𝑎𝑟𝑑(Ω)

Que es lo mismo decir, el número de resultados favorables al suceso dividido entre en número

total de sucesos. Y ahora podemos contestar nuestras preguntas:

60
3 4
𝑝(𝐴) = 𝒚 𝑝(𝐵) =
6 6

Y podemos observar que el valor de la probabilidad en ambos esta entre 0 y 1,esto para

pasarlo a un valor porcentual simplemente lo multiplicamos por 100. Entonces, la probabilidad

de A es del 50 % y la de B es del 66%. Ahora, como la probabilidad de un suceso esta dada entre

0 y 1. La probabilidad complementaria del suceso está dada entre 1- p(A´) (1-0.66=0.33)

5.3.REDES NEURONALES ARTIFICIALES

Desde hace mucho tiempo, los intentos por imitar el funcionamiento del cerebro humano ha

crecido, conforma avanzaba la tecnología. La inteligencia artificial, como ya sabemos, trata de

descubrir aspectos de la inteligencia humana que pueden ser simulados mediante máquinas u

ordenadores. En este sentido, las redes neuronales no son más que otra forma de emular ciertas

características propias de los humanos.

Mientras que otras áreas de la Inteligencia artificial se basan en algoritmos y conexiones

electrónicas, ésta estudia directamente el cerebro humano y trata de crear un modelo artificial y

simplificado de este.

Ahora podemos dar una información más precisa: las redes neuronales son un paradigma de

aprendizaje y procesamiento automático inspirado en la forma en que actúa el sistema nervioso

de los animales. La unidad básica de procesamiento de las redes neuronales está inspirada en la

célula fundamental del sistema nervioso humano, la neurona.

Las redes neuronales, por tanto, pretenden resolver problemas que otras áreas no son capaces.

Esto lo consiguen gracias a que, el estudio de las neuronas humanas permite crear unidades de

procesamiento que pueden intercambiar datos, sirven para reconocer patrones (tales como

imágenes) y tienen capacidad de aprendizaje.

61
Ilustración 8 La Neurona Biológica

5.3.1 El perceptrón simple

El perceptrón simple es una red neuronal artificial que fue desarrollado en 1959. La razón de

su aparición en los años de 1960 mas destacable fue porque tiene la capacidad de aprendizaje y

reconocimiento de patrones linealmente separables. El perceptrón puede ser considerado como

una neurona artificia, una unidad de cálculo que intenta modelar el comportamiento de una

neurona natural, como las de cualquier ser humano existente. Este es un algoritmo capaz de

generar un criterio para hacer la selección de un grupo, entre un grupo de elementos más

grandes.

El perceptrón puede ser entrenado para realizar alguna tarea mediante reglas de aprendizaje:

 Aprendizaje supervisado

 Aprendizaje no supervisado

 Aprendizaje por reforzamiento

Por si solo un perceptrón no tiene mucha utilidad, puesto que es como una neurona. Su

capacidad y funcionalidad se genera cuando se relacionan con más para generar una red.

El perceptrón simple, dejó de ser considerado como una técnica útil, al igual que otros tipos

de redes neuronales, cuando se descubrieron las limitaciones de esta técnica.

62
El perceptrón simple sólo sirve para clasificar problemas linealmente separables, cosa que ya

se podía hacer mediante métodos estadísticos, y de una forma mucho más eficiente.

63
GLOSARIO DE TERMINOS:

algoritmos Que es muy habil y una gran experiencia,


secuencia de instrucciones que 7, 11, 45, 46, 47, 69
representan un modelo, 5, 33, 35, 36, Que es muy hábil y una gran experiencia,
37, 39, 61 49
compatible grafo
que puede existir, al mismo tiempo que representacion simbolica de elemento, 16,
otra cosa, 27 17, 37, 40
complejo heurística
Compuesto por diversos elementos, 21, 49 metodo para aumentar el conocimiento,
difuso 27, 32, 36, 37, 39
Que carece de claridad o precisión, 51 implícita
Que carece de claridad o presicion, 52, 53, Que esta incluido sin necesidad de decirlo,
55 24
diversificar nodos
Hacer diverso algo unico, 38 Union de varios elementos, 29, 32, 42
experto perceptrón
modelo biologico de una neurona, 62, 63

64
ANEXOS:

Tabla 6 rumbos a coordenadas

65
Ilustración 9 Tablas insertadas

Ilustración 10 Grafica de coordenadas

66
INDICE DE ILUSTRACIONES:

Ilustración 1 transformación del mapa grafo ........................................................................... 17

Ilustración 2 Soluciones posibles según el número de ciudades .............................................. 19

Ilustración 3 Búsqueda en amplitud ......................................................................................... 41

Ilustración 4 Búsqueda en profundidad .................................................................................... 41

Ilustración 5 Descripción de conjuntos crisp ........................................................................... 52

Ilustración 6 Descripción grafica de operaciones estándar con conjuntos difusos .................. 53

Ilustración 7 Uso del modificador en los conjuntos bajo y alto ............................................... 56

Ilustración 8 La Neurona Biológica ......................................................................................... 62

Ilustración 9 Tablas insertadas ................................................................................................. 66

Ilustración 10 Grafica de coordenadas ..................................................................................... 66

67
INDICE DE TABLAS:

Tabla 1 Matriz de adyacencia .................................................................................................. 17

Tabla 2 Resumen de datos....................................................................................................... 21

Tabla 3 Pseudocódigo búsqueda con vuelta atrás .................................................................... 28

Tabla 4 ple_backtracking.py .................................................................................................... 31

Tabla 5 Descripción de conjuntos fuzzy .................................................................................. 52

Tabla 6 rumbos a coordenadas ................................................................................................. 65

68
Bibliografía

Anonimo. (2014). 5 ventajas y desventajas de la IA para la evolucion. recueprado de::

https://buhomag.elmundo.es/entretenimiento/5-ventajas-y-5-desventajas-de-la-ia-para-la-

evolucion/c00b11c3-0004-5813-2134-112358132134.

Arenas, G. (1987). Inteligencia artificail y sistemas expertos . Recuperado de::

file:///C:/Users/ASUS/Downloads/171-711-1-PB.pdf.

Ariza, L. M. (2017). Ventajas y riesgos de la Ingenieria Artificial. recuperado de::

https://www.muyinteresante.es/tecnologia/articulo/ventajas-y-riesgos-de-la-inteligencia-

artificial-651449483429.

Diario de yucatan. (2015). Ventajas y desventajas de la Ingenieria Artificial. Recuperado de::

http://yucatan.com.mx/tecnologia/ventajas-y-desventajas-de-la-inteligencia-artificial.

Diaz, D. (2013). Solucion de problemas Inteligencia Artificial. Recuperado de::

https://issuu.com/daviddiaz137/docs/inteligencia-artificial-solucion-problemas.

Gonzales, C. M. (2010). Logica difusa . Recuperado de::

http://www.esi.uclm.es/www/cglez/downloads/docencia/2011_Softcomputing/LogicaDif

usa.pdf .

Grifin, J. (2013). Busqueda en IA. Recuperado de::

https://es.slideshare.net/juankgrifin/busqueda-en-ia.

Julio, V. R. (2007). Inteligencia en las redes de comunicaciones. Recuperado de::

http://ocw.uc3m.es/ingenieria-telematica/inteligencia-en-redes-de-

comunicaciones/material-de-clase-1/02-resolucion-de-problemas.

Loaiza, R. (2017). ¿que es la inteligencia artificial? Recuperado de: :

http://bvs.sld.cu/revistas/san/vol2_2_98/san15298.htm.

69
Pereira, U. t. (2008). TÉCNICAS DE INTELIGENCIA ARTIFICIAL PARA LA SOLUCIÓN DE

LABERINTOS DE ESTRUCTURA DESCONOCIDA. Recuperado de::

file:///C:/Users/ASUS/Downloads/Dialnet-

TecnicasDeInteligenciaArtificialParaLaSolucionDeLa-4742651%20(1).pdf.

Rodriguez, E. (2014). Historia y Evolucion de la Ingeniera Artifical. Recuperado de::

https://line.do/es/historia-y-evolucion-de-inteligencia-artificial/6gx/vertical.

Rouse, M. (2017). Inteligencia artificial o IA. recuperado de::

http://searchdatacenter.techtarget.com/es/definicion/Inteligencia-artificial-o-AI.

Torra, V. (2016). La inteligencia artificial. Recuperado de::

http://www.fgcsic.es/lychnos/es_es/articulos/inteligencia_artificial.

70

También podría gustarte