You are on page 1of 19

INTELIGENCIA ARTIFICIAL

Temas:

Unidad 1: introducción

 Introducción a I.A.

- ¿Cómo podemos definir a la IA?: podemos definir la IA como la disciplina


informática que estudia teóricamente y desarrolla prácticamente la construcción de
sistemas inteligentes. Es decir, trata de poner un modo de razonamiento a las
máquinas similar al de los seres humanos, con el objetivo de resolver problemas.
- Objetivos de la IA:
- Estudio de procesos cognoscitivos en general.
- Obtener sistemas automáticos capaces de llevar a cabo tareas reservadas,
incluso ahora, a los seres humanos.
- Características de la IA:
- El uso de símbolos no matemáticos.
- El comportamiento de los programas no es descrito explícitamente por el
algoritmo. La secuencia de pasos seguidos es influenciada por el problema
particular presente.
- Las conclusiones del programa no son fijas y son determinadas
parcialmente por las conclusiones intermedias alcanzadas.
- El razonamiento basado en el conocimiento, implica que estos programas
incorporan factores y relaciones del mundo real y del ámbito del conocimiento en
que operan.
- Aplicabilidad a datos y problemas mal estructurados, sin las técnicas de
IA, los programas no pueden trabajar con estos problemas.
- ¿Cómo resolvemos un problema en IA?: Tenemos tres maneras:
1. Algoritmos de búsqueda.
2. Redes Neuronales.
3. Lenguaje Prolog.
- ¿Cuáles son los sistemas convencionales y cuáles los inteligentes?: los
convencionales son aquellos que cumplen funciones de la inteligencia humana que
sabemos muy bien cómo modelar y reemplazar. En cambio, los sistemas
inteligentes, son aquellos que cumplen funciones que en éste momento estamos
aprendiendo a modelar y reemplazar, o que recientemente hemos aprendido a
hacerlo, por ejemplo un Sistema Experto es inteligente.
- ¿Cuándo un programa es inteligente?: un programa es inteligente en la medida en
que posea una gran cantidad de conocimiento específico y de alta calidad, respecto
del problema que pretende resolver.
- ¿Para qué dotar a una máquina con IA?: para que los sistemas actúen y piensen
como humanos; para que los sistemas actúen y piensen racionalmente.
- ¿Qué tipos de conocimientos hay, y cuáles son sus características?:
1. Conocimiento público: incluye las definiciones, hechos y teorías que podemos
encontrar normalmente en los libros de texto y manuales de la especialidad.
2. Conocimiento privado: es el conocimiento que poseen los expertos. Consiste en
reglas prácticas, reunidas en años de experiencia. Es precisamente este
conocimiento, lo que permite al experto resolver problemas, reconocer
rápidamente cuál es el enfoque más apropiado para encararlos.

 I.A. simbólica, IA no simbólica

- Simbólica - Deductiva: a partir de bases de conocimiento estáticas a las que se le


aplica un análisis formal estadístico para emular el comportamiento humano frente
a problemas concretos. Si el problema cambia sus restricciones se requiere
actualizar la base de conocimiento.
- No simbólica - Inductiva: se base en el desarrollo de sistemas capaces de lograr un
aprendizaje a partir de unos datos empíricos mediante la ejecución de algún
algoritmo de optimización.

 Prueba de Turing
Basada en la incapacidad de diferenciar entre entidades inteligentes discutibles y seres
humanos. El ordenador supera la prueba, si un evaluador humano no es capaz de
distinguir si las respuestas a una serie de preguntas, son de una persona o no. El
ordenador debe de poseer:
Procesamiento de lenguaje natural: para comunicarse
Representación del conocimiento: para almacenar lo que se conoce
Razonamiento automático: para usar la información almacenada, para responder
Aprendizaje automático: para adaptarse a las circunstancias y detectar patrones

Unidad 2: Sistemas Expertos


- ¿Definición de sistema experto?: un sistema experto es un sistema de computación
elaborado con técnicas de IA, basado en conocimiento que emula a un experto
humano en la resolución de un problema significativo en un dominio específico.
- ¿Qué es un experto?: llamamos experto a alguien que tiene gran cantidad de
conocimiento que le permite resolver ciertos problemas de manera eficaz que la
mayoría de las personas.
- Estructura de un SE:

 Base de conocimiento: memoria a largo plazo del SE. Contiene las reglas y meta
reglas que resumen el conocimiento del experto humano sobre el dominio del
problema.
 Base de hechos: memoria a corto plazo o de trabajo. Almacena tanto los hechos
proporcionados por el usuario. Como los hechos nuevos que el mismo va
obteniendo.
 Motor de inferencia: contiene el mecanismo de razonamiento que sigue el SE.
Aplica las reglas contenidas en la BD de conocimiento sobre la BD de hechos, y
obtiene nuevo conocimiento que incorpora a la BDH y es susceptible a la
aplicación de las reglas de la BDC.

- Para la construcción de un SE necesitamos:


1. Experto humano: juega un papel fundamental en un SE, ya que sin él no podríamos
construirlo. Los SE no crean conocimiento, lo encapsulan y lo vuelven reutilizable.
2. Ing, en conocimiento: es un profesional cuyo objeto es ayudar al experto humano
a comprender el conocimiento que realmente utiliza para resolver problemas, y encontrar
una adecuada representación formal a este conocimiento, para construir el SE.
3. Usuario: se relaciona normalmente con el SE a través de una estación de trabajo
de la computadora. En muchos sistemas se utilizan capacidades de graficación para
facilitar el diálogo.
Los SE son constituidos por equipos en los que colaboran Expertos del dominio e Ing. en
conocimiento. Una vez construidos son consultados por los usuarios, y se interrelacionan
con otros sistemas y otras fuentes o destinos de datos.
- ¿Cuáles son los tipos de problemas que resuelven los SE? - Clasificación:
1. Sistemas de Interpretación: observa, interpreta y predice algunos datos.
2. Sistemas de Predicción: infieren consecuencias de situaciones dadas.
3. Sistemas de Diagnóstico: funcionamientos incorrectos a partir de los datos.
4. Sistemas de Diseño: desarrollan configuraciones de objetos que satisfacen las
restricciones del problema.
5. Sistemas de Planeamiento: diseñan acciones. Orientados a la programación
automática, robótica.
6. Sistemas de Monitoreo: comparan las observaciones con características
cruciales para el éxito de los planes que se están ejecutando. Monitoreo para
plantas de energía nuclear y tránsito aéreo.
7. Sistemas de Tratamientos: prescriben remedios para el funcionamiento
incorrecto.
8. Sistemas de Reparación: desarrollan y ejecutan planes para administrar un
remedio para un problema diagnosticado.
9. Sistemas de Capacitación: evalúan y tratan la conducta de estudiantes.
10. Sistemas Expertos de control: dirigen todo el comportamiento de un sistema.
- ¿Cuáles son las herramientas para el desarrollo de Sist. Expertos?: la construcción
de SE fue encarada de diversas maneras. En algunos casos se utilizó lenguajes de
alto nivel como Pascal y Fortran. En muchos otros se recurrió a los dos lenguajes
básicos en casi todas las actividades vinculadas con la IA: Lips (lenguaje funcional)
y Prolog (lenguaje de prog. basado en la lógica).
- Distintos tipos de lenguajes:
- Natural: lengua o idioma hablada o escita por los humanos, para propósitos
generales de comunicación. Han sido generadas espontáneamente por un grupo
de hablantes con el propósito de comunicarse.
- Formal: lenguaje cuyos símbolos primitivos y reglas para unir esos
símbolos están formalmente especificados. Al conjunto de símbolos se le llama
alfabeto (o vocabulario), y al conjunto de reglas gramática formal(o sintaxis). A
la cadena de símbolos formada de acuerdo a la sintaxis, se la llama formula bien
formada o palabra.

 Lógica de 1er orden - PROLOG

Ésta lógica se utiliza en lenguajes lógicos, es decir, en base a la información, se


formulan las preguntas sobre el dominio del problema, y el intérprete del lenguaje
lógico trata de encontrar la respuesta automáticamente.
El conocimiento sobre el problema se expresa en forma de predicados (axiomas) que
establecen las relaciones sobre los símbolos que representan los datos del dominio del
problema. Este concepto ésta ligado a un lenguaje llamado PROLOG (programación
en lógica) desarrollado en 1972.
- Prolog: es utilizado para el desarrollo de aplicaciones de IA debido a su forma de
representar conocimiento, facilitando las búsquedas en las BD, la escritura en
compiladores, la construcción de sistemas expertos, etc.
Este es un lenguaje de programación que se utiliza para resolver problemas en los
que existen objetos y relaciones entre objetos. La programación en Prolog consiste
en:
 Declarar hechos sobre los objetos y sus relaciones,
 Definir reglas sobre dichos objetos y relaciones, y
 Hacer preguntas.

- Lógica Proporcional de 1º Orden (PLO): es uno de los formalismos más usados


para representar conocimiento de IA. Utiliza proposiciones y nexos para expresar
sus verdades. Las proposiciones equivalen frases u oraciones del lenguaje hablado
mientras que los Nexos pueden relacionar estas proposiciones mediante la
conjunción (y), la disyunción (o) o la implicación (si).
Los enunciados más básicos de la LPO son los enunciados atómicos que consisten
en algunos nombres conectados por algún predicado.
Ej:
“Ana juega golf” / “Juan vio a Ana”

- Constantes Individuales: son símbolos (nombres) que se usan para referir algún
objeto particular. Ej: “Juan”, es una constante individual para denotar a una persona
en particular.
- Símbolos de Predicado: son utilizados para denotar alguna propiedad de objetos o
alguna relación de objetos. Son expresiones que combinados con una contante o
más, forman enunciados atómicos.
Ej. “JUAN ES PADRE DE ANA” Juan y Ana  Constantes
Individuales
es padre de  Predicado
- Enunciados Atómicos: es un enunciado formado por un predicado seguido por el
número correcto de nombres (encerrados entre paréntesis y separados por coma).
Ej. Mujer (Ana)
Mayor (Juan, Ana)
El orden de los nombres en un enunciado atómico es importante.
Lo que hace un enunciado especial es que hace afirmaciones. Una afirmación es
algo que es verdadero o falso, estos dos casos lo denominamos su valor de verdad.
- Cláusulas de Horn: es un tipo especial de cláusulas o sentencias que define las
relaciones y pueden tener como máximo una conclusión. Estas reglas están
compuestas por dos partes: el consecuente (es la primera parte de la cláusula, es lo
que se quiere probar, la conclusión de la regla) y el antecedente (es la condición que
determina en qué casos el consecuente es verdadero o falso).
Estas pueden adoptar las siguientes formas:
Conclusión B  A1, A2,…… (Implicación)  Regla
Conclusión sin condición B  ……………… (Afirmación)  Hecho
Sin condición _  A1, A2,…… (Negación)  Objetivo

 Los hechos: es una relación entre objetos que representa una verdad que no debe
ser comprobada que ya son verdades por sí mismas. La relación se conoce como
el predicado y los objetos como los argumentos. Su sintaxis es: relación
(objeto1, objeto2, ...).
Los nombres de las relaciones deben comenzar con una letra minúscula y los
objetos se escriben separados por comas y encerrados entre paréntesis. Al final
del hecho debe de ir un punto.
Ej. Persona (Juan, 27).

 Las reglas: se usan cuando la verdad de un hecho depende de la verdad de otro


hecho. Una regla consiste en una cabeza y un cuerpo. El cuerpo puede estar
formado por varios hechos u objetivos. Su sintaxis es: cabeza :- objetivo 1,
objetivo 2, ..., objetivo n.
Los objetivos van separados por comas, especificando conjunción y al final debe
de ir un punto.
EJ. Mayor de edad(X):-persona(X,E),E>18.

 Las variables: se utilizan para describir hechos y reglas generales. Los nombres
de las variables deben comenzar con letra mayúscula o con el carácter ( _ ).

Unidad 3: Sistemas de Producción


 Resolución de problemas

- Pasos para construir un Sist. Básico en IA: para construir un Sistema Básico de IA
capaz de resolver un problema específico, es necesario realizar las siguientes
acciones:
1. Definir de una forma precisa el problema: debe ser la creación de una forma
descriptiva formal y manipulable del problema, a partir de una descripción
informal del mismo. La definición del problema como una búsqueda en el
“espacio de los estados” forma la base de la mayoría de los métodos que se
utilizan para la solución de problemas de IA. El “espacio de estados” puede ser
finito o infinito.
Los mecanismos que se emplean para modificar un estado del sist., toman el
nombre de operadores, producciones o acciones, y se utilizan para enlazar su
estado actual con otro estado objetivo.

2. Analizar el problema: definir formalmente el problema, al poder convertir


alguna situación dada en una situación deseada utilizando un conjunto de
operaciones permitidas.
Nos hacemos la preguntas ¿si encontramos una buena solución nos quedamos
solo con esa o buscamos otras? ¿Toda la información adicional que tengamos de
nuestro problema es necesaria para adquirir conocimiento para poder resolver el
problema o es para ir descartando caminos posibles? Contestando estas
preguntas además de analizar nuestro problema vamos resolviendo un poco más
el camino a seguir. Tenemos que analizar cada una de las acciones a realizar,
antes de llevarlas a cabo.

3. Identificar y representar el conocimiento que es necesario para resolver el


problema: hallar una representación apropiada es parte fundamental de la
resolución del problema. El principio de la representación establece que: una vez
que el problema es descrito mediante una buena representación, el problema está
resuelto.
 Tienen que ser: transparente, completa y concisa.
 Las representaciones tienen cuatro ingredientes fundamentales:
o Léxico: determina símbolos que están permitidos.
o Estructural: describe restricciones sobre la forma que los símbolos pueden
ordenarse.
o Operativa: especifica los procedimientos de accesos que permiten crear
descripciones.
o Semántica: establece una forma de asociar el significado con las
descripciones.

4. Escoger la mejor técnica y aplicarla para la resolución del problema: escoger la


mejor técnica entre varias opciones disponibles.
 Representación del conocimiento

Se la ha definido como un conjunto de convenciones sintácticas y semánticas que hace


posible describir las cosas. Estas convenciones constituyen los llamados lenguajes de
representación, los cuales se dividen en 3 clases fundamentales.

1. Reglas de acción - Sistemas de producción: en los sistemas de producción el


conocimiento se expresa a través de reglas. Las reglas se componen de premisas,
acciones que deben realizarse si se cumplen las premisas; o de condiciones y
conclusiones que pueden extraerse si se cumplen las condiciones.
- “Si condiciones, entonces acciones”.
- “Si condiciones, entonces conclusión”.
- “Si … entonces ...” → Estructura

Su arquitectura consiste en:


a. Memoria de trabajo: base de datos global de símbolos representando hechos y
aserciones acerca del problema.
b. Las reglas (que tienen su estructura); constituyen el programa o memoria de
reglas, cada una de ellas tiene: una parte “si” o condición y otra parte
“entonces” o acción.
c. La máquina de inferencias (motor de inferencias): su misión es ejecutar las
reglas o dispararlas. Elige entre todas las reglas solo una, para que se aplique.
Tiene un ciclo de 3 etapas:
1. Aparear las reglas: seleccionar las reglas que satisfagan la resolución de
nuestro problema.
2. Seleccionar las reglas:
 No permitir que una regla se aplique más de una vez.
 Priorizar los datos recientes.
 No volver a un estado anterior.
3. Ejecutar la regla: pasar de un estado al otro.

2. Lógicas de 1er Orden – Prolog.

3. Objetos estructurados: la estructura básica de los datos está inspirada en los grafos
y las estructuras de los registros. Son:
 Redes semánticas: se caracterizan por el tratamiento de conceptos,
representados por nodos y relaciones entre ellos. Hay dos tipos de nodos,
pueden ser: individuales (que representan descripciones o afirmaciones
referentes a una instancia individual de un objeto) o genéricos (referentes a una
clase o categoría de objetos).
¿Cuál es su razonamiento? la herencia de propiedades. Ejemplo: supongamos
que representamos en una red semántica el hecho de que “los canarios son
pájaros”.
Canario ◊----- es un tipo de -----◊ Pájaro
Incorporamos a la red el hecho particular de que “Pio-Pio” es un canario.
Canario
Pio-Pio ◊----- es un -----◊----- es un tipo de -----◊ Pájaro
Con lo que podemos deducir que pio-pio es un pájaro, siguiendo los arcos.
Canario ----- tiene -----◊ Alas
Pio-Pio ◊----- es un -----◊----- es un tipo de -----◊ Pájaro
Asumiendo que toda propiedad de los nodos “superiores” en la jerarquía lo es
también de los inferiores, sin necesidad de que esté explícitamente expresado
en la red, se puede deducir que los canarios tienen alas y que pio-pio tiene alas.

 Frame: es una descripción estructurada de un objeto, o clase de objetos. El


énfasis es sobre la estructura de los tipos, en términos de sus atributos llamados
slots, donde se almacenan los valores de dichos atributos. Por ejemplo: un
frame acerca de sillas tendrá slots que definan el n° de patas, el estilo, el n° de
brazos, etc., así como otros que las liguen a clases más generales (como
muebles) y que definan subclases (como sillas de jardín, sillones, etc).
¿Cuál es su razonamiento?: la herencia y la restricción de valores que se
pueden realizar en un slots, definiendo un rango y un conjunto de “valores
esperados”.
- Cálculo de predicados: en el cálculo de predicados el valor de verdad depende de los
componentes que forman el predicado. Por ejemplo: juan es padre de pedro es una
expresión en cálculo de predicados, que en general podría ser: X es padre de Y, o
simplemente P(X,Y) . Un predicado puede tener una o más variables, y estas pueden
tomar valores de un conjunto específico llamado dominio.
-Predicado : es un enunciado que contiene dos o más variables, no es una proposición,
pero se vuelve una, cuando las variables se sustituyen por constantes.
-Componentes de la lógica:
-Premisas o proposiciones: enunciados que se ofrecen como base informativa.
Puede verificarse si son verdaderos o falsos, pero siempre tienen que estar
correctamente planteados.
-Conclusión: enunciado que se deriva de las premisas, es válido si el proceso de
deducción es correcto. Si no, la conclusión es invalida.
-Proceso deductivo: es un método científico que considera que la conclusión se halla
implícita dentro de las premisas. Esto quiere decir que las conclusiones son una
consecuencia necesaria de las premisas; cuando las premisas resultan verdaderas, y el
razonamiento deductivo es correcto, no hay forma de que la conclusión no sea
verdadera. El método deductivo logra inferir algo observado a partir de una ley general.
Esto es lo diferencia del llamado método inductivo, que se basa en la formulación de
leyes partiendo de los hechos que se observan.

Unidad 4: Métodos de Búsqueda

- Concepto: el concepto de búsqueda en IA se diferencia del que se le da en


ingeniería de software, en que: en la IS se hace referencia a procedimientos cuya
finalidad es encontrar datos dentro de un conjunto de estos. Es decir, le interesa
saber si el dato está presente. Mientras que en la IA es más bien “encontrar un
cierto camino recorrido” hasta el dato, antes que corroborar su existencia.
- Espacio de estados: secuencia de estados que deben alcanzarse sucesivamente
para finalmente lograr un estado objetivo bajo determinadas premisas.

- Características de los algoritmos:


1. Completitud: ¿encontrará una solución?
2. Complejidad temporal: ¿cuánto tardará?
3. Complejidad espacial: ¿cuánta memoria gastará?
4. Optimización: ¿encontrará la solución más óptima?

- Elementos:
1. Estados: inicial, actual y final de un nodo.
2. Espacio de estados: todos los caminos que tengo disponibles para encontrar el
nodo.
3. Descripción del espacio de estados. Nodos:
_ Abiertos: estados generados pero aún sin visitar.
_ Cerrados: nodos que han sido visitados.

- Tipos de algoritmos:

 Algoritmos de búsqueda sin información:

1. Primero en anchura: comienza a recorrer el árbol desde la raíz, explora cado


uno de los vecinos del nodo y a continuación se examinan sus respectivos
vecinos adyacentes hasta que se recorra todo el árbol o hasta que alguna regla
produce algún estado objetivo.
Ventajas: si existe una solución se garantiza que se logra encontrarla y en el
caso de múltiples soluciones permite hallar la más óptima.
Desventajas: mucha memoria y poca velocidad.

2. Primero en profundidad: se centra en expandir un único camino desde la


raíz tan profundamente como sea posible, retornando a niveles superiores
cuando sea necesario. Continúa 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.
Ventajas: requisitos modestos de memoria, fácil implementación, tiene menor
complejidad espacial que búsqueda en amplitud, es completa sólo si no
existen ciclos repetitivos.
Desventajas: puede tener ciclos infinitos y no encontrar el resultado, se
pueden encontrar soluciones que están más alejadas de la raíz que otras, no
es óptima ni completa.
- Heurística: proviene de la palabra eureka. Se refiere a un conocimiento que
intuitivamente se posee. Es debido a la inspiración de quien conoce.
 Algoritmos de búsqueda con información:

1. Generación y prueba: es un algoritmo que consiste primero en generar una


posible solución, a partir de un estado inicial. Verifica si el objetivo elegido
es realmente una solución, comparándolo con el objetivo final: si no se halló
la solución, volver a comenzar; si se halló la solución, termina la búsqueda.
Ventajas: Siempre encontraremos la solución (si existe), es una búsqueda
exhaustiva en el espacio del problema, se limita a responder afirmativa o
negativamente acerca de la validez del camino ensayado.
Desventajas: se deben recorrer caminos completos de antes de realizar
ninguna comprobación, la exploración del espacio de estados puede requerir
demasiado tiempo si el dominio del problema es muy amplio, la lista de
soluciones probadas crece y se podría estar invirtiendo mucho
tiempo verificando si la solución fue probada antes, el conjunto de soluciones
posibles es grande o infinita.

2. Escalada simple: Usan una técnica de mejoramiento iterativo, es decir,


comienzan a partir de un punto (punto actual) en el espacio de búsqueda. En
cada iteración, un nuevo punto es seleccionado de la vecindad del punto
actual. Si el nuevo punto es mejor, se transforma en el punto actual, sino otro
punto vecino es seleccionado y evaluado. El método termina cuando no hay
mejoras, o cuando se alcanza un número predefinido de iteraciones.
Ventajas: muy poco consumo de espacio, reduce el número de nodos analizar,
complejidad espacial: 0 ó 1 (basta guardar 1 espacio), bajo costo
computacional.
Desventajas: no son óptimos ni completos, pueden no encontrar una solución
aunque exista, no siempre llega a la solución, puede quedarse enciclado, se
para sin dar solución cuando hay máximos locales, mesetas o crestas.

3. Escalada por máxima pendiente: consiste en analizar a la vez todos los


nodos sucesores del nodo actual (pudiendo recorrer el nodo en sentido horario
o anti horario) y comparar la información que los mismos poseen y decidir
cuál es el mejor nodo a seguir con el fin de llegar al estado objetivo.
Ventajas: Ahorro de tiempo (reduce el número de nodos a analizar), utiliza
poco espacio.
Desventajas: puede ser que la solución que encuentre no sea la más óptima,
se para sin dar solución cuando hay: máximos locales, mesetas, crestas

4. Enfriamiento simulado: el objetivo es disminuir la probabilidad de caer en


un máximo local, una meseta o una cresta. Por lo tanto se realiza una
exploración con saltos amplios al principio, que se va reduciendo
paulatinamente. Para lograr esto, se plantea minimizar una función objetivo
para alcanzar un estado final de mínima energía, basando el método en los
procesos de enfriamiento de metales, en los que las sustancias físicas
evolucionan hacia configuraciones de más baja energía.
Ventajas: aunque se ha demostrado que el algoritmo converge al óptimo, este
converge en un tiempo infinito. No solo por esta razón, sino que se debe
enfriar lentamente.
Desventajas:

5. Bidireccional: su propósito es encontrar el objetivo en menor tiempo posible,


haciendo dos búsquedas simultáneas una en forma descendente desde el nodo
inicial y otra ascendente desde el nodo meta. Combina la profundidad y la
anchura.
Ventajas: requerimiento de memoria es mínimo, y la uniformidad al expandir
los nodos garantiza la mejor solución de búsqueda.
Desventaja: cuando el algoritmo no encuentra solución es conveniente
imponer un límite máximo de profundidad en la búsqueda.

6. A*: algoritmo informado que basa su comportamiento en la evaluación de


una función expresada del siguiente modo:
o f(n) = g(n) + h(n).
o g(n):es el costo de las movidas realizadas.
o h(n): es la función heurística. Representa el costo estimado del mejor
camino.
Ventajas: encuentra buenas soluciones, no se crean ciclos, se requiere poca
memoria.
Desventajas: requiere de muy buenas heurísticas.

7. Conducida por agenda: se elige la tarea más prometedora de la agenda.


Puede ser una descripción de lo que debe hacerse a continuación o
simplemente una indicación del siguiente nodo o expandir.
Se ejecuta la tarea asignándole un número de recursos determinados por su
importancia. La ejecución de la tarea generará probablemente tareas
adicionales (nodos sucesores). Para cada uno de ellos:
o Si ya se encuentra en la agenda, añadir las nuevas justificaciones. Si no
está, agregarla a la agenda.
o Calcular el valor de la nueva tarea, combinando la evidencia de todas sus
justificaciones.
Desventaja: se pierde tiempo en mantener la agenda en orden, de modo que
en la práctica se ordenan los primeros 5 y 10 lugares; se inserta en el lugar
adecuado o al final de la fila.

8. Primero el mejor: mantiene la lista de nodos abiertos ordenada de modo que


se puedan considerar siempre la alternativa más prometedora de entre todas
las que están siendo consideradas. Combina la búsqueda en profundidad, en
anchura y métodos de escalada.
Una forma de combinar esto es seguir sólo un camino a la vez, y cambiándolo
cuando alguna ruta parezca más prometedora que la que se está siguiendo en
ese momento.
Ventajas: puede encontrar buenas soluciones; resultados más eficientes que
una búsqueda no informada
Desventajas: puede tener ciclos infinitos, requiere diseño de una heurística,
complejidad de programación de la heurística.

Unidad 5: Redes Neuronales


Los RNA se definen como: sistemas de mapeos no lineales cuya estructura se basa en los
principios observados en los sistemas nerviosos de animales y humanos. Se
trata de un sistema de interconexión de neuronas que colaboran entre sí para
producir un estímulo de salida.
- Aplicadas al reconocimiento de patrones, permiten modelar y efectuar
predicciones en sistemas muy complejos.
- Están conformadas por un conjunto de técnicas matemáticas que permiten
modelar las conexiones y relaciones entre un conjunto de datos.
- Una red neuronal se compone: de unidades llamadas neuronas. Cada neurona recibe
una entrada a través de interconexiones y emite una salida, esta salida viene dada
por tres funciones:
1. Función de propagación o también conocida como función de excitación: que
por lo general consiste en el sumatorio de cada entrada multiplicada por el peso
de su interconexión (valor neto). Si el peso es positivo, la conexión se denomina
excitatoria; si es negativo, se denomina inhibitoria.
2. Función de activación: que modifica a la anterior. Puede no existir, siendo en
este caso la salida la misma función de propagación.
3. Función de transferencia: que se aplica al valor devuelto por la función de
activación. Se utiliza para acotar la salida de la neurona y generalmente viene
dada por la interpretación que queramos darle a dichas salidas. Algunas de las
más utilizadas son la función sigmoidea (para obtener valores en el intervalo
[0,1]) y la tangente hiperbólica (para obtener valores en el intervalo [-1,1]).

-Caracteristicas:
Procesamiento paralelo: cada neurona realiza su tarea, independientemente de
que otras lo hagan.
Operación en tiempo real: gracias al procesamiento paralelo
Procesamiento distribuido: la información no se almacena localmente, si no en la
sinapsis entre las neuronas
Tolerancia a fallos: si se pierde una neurona, no se pierde toda la información
Adaptabilidad: el sistema es capaz de responder ante casos desconocidos; debido
a su capacidad de aprendizaje (recoger información de las experiencias y aplicarlas en
casos futuros) y a su capacidad de generalización (abstraer información útil).

 Cuatro aspectos que caracterizan a una RNA


1) Topología: organización y disposición de las neuronas en la red, formando capas
o agrupaciones de neuronas.
a. Numero de capas
i. Monocapa: se establecen conexiones laterales entre las neuronas
que pertenecen a la única capa que constituye a la red.
ii. Multicapa: disponen las neuronas agrupadas en varios niveles.
b. Arquitectura: todas las RNA suelen tener las siguientes capas:
i. Entrada: recibe los datos provenientes del exterior. No realiza
procesamiento.
ii. Ocultas: reciben los datos y los procesan. No tienen contacto con
el exterior.
iii. Salida: realizan parte del procesamiento y transfieren los datos al
exterior.
c. Tipos de conexión:
i. Unidireccional: la arquitectura no presenta ciclos de
retroalimentación
ii. Realimentada: se puede trazar un camino de una neurona hacia si
misma.
2) Mecanismos de aprendizaje: es el proceso por el cual una RMA modifica sus
pesos en respuesta a una información de entrada. El proceso termina cuando los
valores de los pesos permanecen estables. Un aspecto importante es determinar
los criterios de la regla de aprendizaje.
a. Aprendizaje supervisado: se proporcionan ejemplos a las RNA y de
alguna manera se los indica como deseados. Se ajustan los pesos para
que la salida sea lo mas parecida a la deseada. Se tiene las siguientes
formas de corrección:
i. Corrección de errores: se ajustan los pesos de acuerdo a la
desviación del valor de salida con respecto al valor deseado.
ii. Aprendizaje por refuerzo: no se indica un valor de salida exacto.
El supervisor envía una señal de refuerzo si la salida obtenida se
ajusta a lo deseado.
iii. Aprendizaje estocástico: se realizan cambios aleatorios en los
calores de los pesos y se evalua el comportamiento de la red. Si
se acerca al deseado, se acepta.
Los algoritmos que usan este tipo de aprendizaje son el Perceptron, Adelaine y
Madelaine (regla delta o del minimo error) y la Regla del Delta Generalizada.
b. Aprendizaje no supervisado: no requieren influencia externa para ajustar
los pesos de las conexiones entre neuronas. Deben de encontrar las
características, regularidades, correlaciones o categorías que se pueden
establecer entre los datos de la entrada.
i. Aprendizaje competitivo y comparativo: cuando se ingresa
información a una red, las neuronas compten por llevar a cabo la
tarea. Se selecciona a la neurona cuyos pesos se asemejen mas al
patrón de entrada. Se refuerzan las conexiones de las neuronas
ganadoras y se debilitan a las perdedoras. Si se ingresa un patrón
nuevo, se intenta clasificarlo; si no se puede, se modifica la
estructura y pesos para reconocerlo.
3) Asociación entre la información de E/S:
Hay que establecer cierta relación o asociación entre la información presentada a
la red, y la salida ofrecida por esta, esto se conoce como memoria asociativa.
Los tipos de redes según esta asociación son:
a. Red heteroasociativa: aprende parejas de datos (E1, S1), de modo que
cuando se presenta E1, se devuelva S1. Debe tener almenos dos capas;
una para retener la entrada, y otra para su información asociada.
b. Red autoasociativa: aprende información A1, A2 … An, de modo que
cuando se representa la información de entrada, responde el dato más
parecido de los que tiene almacenado. Es un sistema monocapa no
supervisado.
4) Representacion de la información de E/S:
a. Redes continuas: procesan datos de entrada de naturaleza analógica y dan
respuestas continuas.
b. Redes discretas: procesan datos discretos. Emiten respuestas discretas.
c. Redes hibridas: poseen entrada analógica y salida discreta.
-RNA y SE:
Ambos sistemas se asemejan en su objetivo (representar el conocimiento), pero
lo consiguen de diferentes maneras:
SE: razonamiento deductivo, obteniendo reglas
RNA: razonamiento inductivo, aprendiendo mediante ejemplos
Ambos modelos pueden integrarse en un mismo sistema.

Unidad 6: Robótica

La robótica es la rama de la tecnología que estudia el diseño y construcción de


máquinas capaces de desempeñar tareas realizadas por el ser humano o que
requieren el uso de la inteligencia.

¿Qué es un robot?
Los robots son entidades virtuales o mecánicas que se utilizan para la realización de
trabajos automáticos y son controlados por medio de computadoras.
Según el Robot Institute of América: “un manipulador multifuncional y reprogramable,
diseñado para mover materiales piezas, herramientas o dispositivos especiales,
mediante movimientos programables y variables que permitan llevar a cabo diversas
tareas”. Para realizar cualquier tarea útil el robot debe interactuar con el entorno, el
cual puede incluir dispositivos de alimentación, otros robots y, lo más importante, gente.
Consideramos que la robótica abarca no solamente el estudio del robot en sí, sino
también las interfaces entre él y sus alrededores.

Características:
 La precisión que tienen a la hora de realizar una acción o movimiento.
 La capacidad de carga, en kilogramos que el robot puede manejar.
 El grado de libertad que tienen con sus movimientos.
 El sistema de coordenadas que especifica a que direcciones se realizaran sus
movimientos y posiciones. Estas pueden ser coordenadas cartesianas
(x,y,z), cilíndricas, al igual que polares.
 La programación de cada robot o el poder de aprendizaje que cada uno tiene.

Tipos de robots:
 Androides: estos artilugios se parecen y actúan como si fueran seres humanos. Este
tipo de robots no existen en la realidad, por lo menos por el momento, sino que son
elementos ficcionales.
 Móviles: estos robots cuentan con orugas, ruedas o patas que les permiten
desplazarse de acuerdo a la programación a la que fueron sometidos. Estos robots
cuentan con sistemas de sensores, que son los que captan la información que dichos
robots elaboran. Los móviles son utilizados en instalaciones industriales, en la mayoría
de los casos para transportar la mercadería en cadenas de producción así como
también en almacenes. Además, son herramientas muy útiles para investigar zonas
muy distantes o difíciles de acceder, es por eso que en se los utiliza para realizar
exploraciones espaciales o submarinas.
 Industriales: los robots de este tipo pueden ser electrónicos o mecánicos y se los utiliza
para la realización de los procesos de manipulación o fabricación automáticos.
También se les llama robots industriales a aquellos electrodomésticos que realizan
simultáneamente distintas operaciones.
 Médicos: bajo esta categoría se incluyen básicamente las prótesis para disminuidos
físicos. Estas cuentan con sistemas de mando y se adaptan fácilmente al cuerpo.
Estos robots lo que hacen es suplantar a aquellos órganos o extremidades, realizando
sus funciones y movimientos. Además existen robots médicos destinados a la
realización de intervenciones quirúrgicas.
 Teleoperadores: estos robots son controlados de manera remota por un operador
humano. Se los utiliza en situaciones extremas como la desactivación de una bomba
o bien, para manipular residuos tóxicos.

De acuerdo a su arquitectura, los robots pueden clasificarse en:


 Poli-articulados: si bien estos pueden tener de diversas configuraciones, lo que tienen
en común estos robots es que son sedentarios. Estos son diseñados para mover sus
terminales con limitada libertad y de acuerdo a ciertos sistemas de coordenadas.
Estos robots son ideales para cuando se precisa abarcar una amplia zona de trabajo.
 Móviles: a diferencia de los anteriores, estos han sido diseñados para desplazarse, ya
sea utilizando un sistema locomotor rodante o bien, mediante plataformas o carros.
Estos se trasladan utilizando sensores que reciben información del entorno o bien, por
telemandos.
 Androides: estos robots buscan imitar de manera parcial o total la el comportamiento
y forma del ser humano. Como no están prácticamente desarrollados se los usa para
la experimentación y el estudio.
 Zoomórficos: la locomoción de estos robots imita a la de distintos animales y se los
puede dividir en caminadores y no caminadores. Estos últimos están aún muy poco
desarrollados mientras que los caminadores sí lo están y resultan útiles para la
exploración volcánica y espacial.

Clasificación de los Robots, según el tiempo:


1°. Generación - Manipuladores: son sistemas mecánicos multifuncionales con un
sencillo sistema de control, bien manual, de secuencia fija o de secuencia variable.
2°. Generación - Robots de aprendizaje: repiten una secuencia de movimientos que ha
sido ejecutado previamente por un operador humano. El modo de hacerlo es a
través de un dispositivo mecánico donde, el operador realiza los movimientos
requeridos mientras el robot y los memoriza.
3°. Generación - Robots con control sensorizado: el controlador es una computadora
que ejecuta las órdenes de un programa y las envía al manipulador para que realice
movimientos necesarios.
4°. Generación - Robots inteligentes: son similares a los anteriores, pero además poseen
sensores que envían información a la computadora de control sobre el estado del
proceso. Esto permite una toma inteligente de decisiones y el control del proceso en
tiempo real.

Partes de un robot:
● Sensores: dispositivos sensibles al ambiente. Pueden ser:

- Analógicos: es aquel que,


como salida, emite una señal
comprendida por un campo
de valores instantáneos que
varían en el tiempo, y son
proporcionales a los efectos
que se están midiendo. Por ej:
un termómetro.

- Digitales: puede adoptar


únicamente dos valores de
salida: 1-0, encendido o
apagado, sí o no. Sus estados
son absolutos y únicos, y se
usan donde se desea verificar
estados de "verdad" o
"negación" en un sistema
automatizado.

● Actuadores: son los encargados de producir el movimiento de los elementos del


robot a partir de las órdenes dadas por la unidad de control. La selección de uno u
otro tipo de actuador viene dada por la evaluación de características: potencia,
peso y volumen, precisión y velocidad, mantenimiento y coste.
Tipos de actuadores: neumáticos, hidráulicos, eléctricos (corriente alterna, corriente
continua, motores paso a paso).
● Sistema de locomoción: le permite moverse en un entorno, es adaptable y
predecible.
● Computador de control: lógica de control.
● Chasis: es la parte del robot que debe soportar los demás elementos (baterías,
motores, electrónica).
● Motores: son los que van a proporcionar tracción a nuestro robot.
● Ruedas: hay que elegirlas bien, puesto que de su diámetro y anchura depende la
velocidad, agarre, etc.
● Alimentación: las baterías son las encargadas de dar la energía a los motores y a la
electrónica.
● Electrónica: dentro de este grupo podemos distinguir el microcontrolador, que es el
cerebro del motor, los sensores, que son los que permiten detectar el entorno, y los
drivers de potencia, que son los circuitos encargados de suministrar la energía
necesaria a los motores para hacerlos rodar.
● Programación: es la única parte del robot que no se ve. Es el software que ejecuta
el microcontrolador, es decir, las órdenes que le dicen al microcontrolador lo que
tiene que hacer.

Tres leyes de la robótica (Isaac Asimov):


1. Un robot no debe dañar a un ser humano o, por su inacción, dejar que un ser
humano sufra daño.
2. Un robot debe obedecer las órdenes que le son dadas por un ser humano, excepto
si estas órdenes entran en conflicto con la Primera Ley.
3. Un robot debe proteger su propia existencia, hasta donde esta protección no entre
en conflicto con la Primera o la Segunda Ley.

ARDUINO

Es una plataforma de hardware libre, basada en una placa con un microcontrolador y


un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos
multidisciplinares.

Arduino puede tomar información del entorno a través de sus entradas analógicas y
digitales, puede controlar luces, motores y otros actuadores. El microcontrolador en la
placa Arduino se programa mediante el lenguaje de programación Arduino (basado
en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos
hechos con Arduino pueden ejecutarse sin necesidad de conectar a un ordenador.

Controlador
Entrada Salida
+ Estructura
Sensores Actuadores
Software Movil
(Motores)

Lenguaje de programación Arduino


La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en
el lenguaje de programación de alto nivel Processing que es similar a C++.

Entradas y salidas
Cada uno de los 14 pines digitales se puede usar como entrada o como salida.
Funcionan a 5V, cada pin puede suministrar hasta 40 mA. La intensidad máxima de
entrada también es de 40 mA. Cada uno de los pines digitales dispone de una
resistencia de pull-up interna de entre 20KΩ y 50 KΩ que está desconectada, salvo que
nosotros indiquemos lo contrario. Arduino también dispone de 6 pines de entrada
analógicos que trasladan las señales a un conversor analógico/digital de 10 bits.

Funciones básicas y operadores


 Sintaxis básica
- Delimitadores: ; , {}
- Comentarios: //, /* */
- Cabeceras: #define, #include
- Operadores aritméticos: +, -, *, /, %
- Asignación: =
- Operadores de comparación: ==, !=, <, >, <=, >=
- Operadores Booleanos: &&, ||, !
- Operadores de acceso a punteros: *, &
- Operadores de bits: &, |, ^, ~, <<, >>
- Operadores compuestos:
_ Incremento y decremento de variables: ++, --
_ Asignación y operación: +=, -=, *=, /=, &=, |=
 Estructuras de control
- Condicionales: if, if...else, switch case
- Bucles: for, while, do... while
- Bifurcaciones y saltos: break, continue, return, goto
 Variables: en cuanto al tratamiento de las variables también comparte un gran
parecido con el lenguaje C.
- Constantes:
_ HIGH/LOW: representan los niveles alto y bajo de las señales de entrada y
salida. Los niveles altos son aquellos de 3 voltios o más.
_ INPUT/OUTPUT: entrada o salida.
_ false (falso): Señal que representa al cero lógico. A diferencia de las señales
HIGH/LOW, su nombre se escribe en letra minúscula.
_ true (verdadero): Señal cuya definición es más amplia que la de false.
Cualquier número entero diferente de cero es "verdadero", según el álgebra de
Boole, como en el caso de -200, -1 o 1. Si es cero, es "falso".
- Tipos de datos: void, boolean, char, unsigned char, byte, int, unsigned int, word,
long, unsigned long, float, double, string, array.
- Conversión entre tipos: estas funciones reciben como argumento una variable de
cualquier tipo y devuelven una variable convertida en el tipo deseado  char(),
byte(), int(), word(), long(), float().

 Funciones básicas

E/S Digitales Analógicas

Entradas var = digitalRead(pin); var = analogRead(pin);

Salidas digitalWrite(pin, [LOW, HIGH]); analogWrite(pin, valor);


ej: digitalWrite(13, LOW); ej: valor= 0 … 255 (8bits)

Definir previamente el modo en void


setup{ pinMode(pin,[INPUT/OUPUT]); }

Tiempo: delay(ms), delayMicroseconds(microsegundos).

 Estructura básica en un programa de arduino (obligatoria):


1. void setup { aqui va todo lo que yo quiero que haga el programa}
2. void loop {mientras la placa tenga corriente se va a repetir indefinidamente lo
que se encuentre programado aquí}

 Función map: toma el valor de una variable dentro de un rango, y lo lleva a un


subrango. Ej:

X= 0;1;2
Y= 8;-80;-160
Y= map(X,0,2,8,-160);
De digital a analógico: var2=map(var,0,1023,0,255);

 Estructura repetitiva for:

for (arg,arg2,arg3) { arg = valor inicial de var (var=0, int var=0).


arg2 = condición (var<valor).
} arg3 = cómo va a ir cambiando var (var++).

Ejemplo:

int i[3]={13,11,9}; → Declaración de variables global 


delay(500);
void setup() {
Serial.begin(9600); for(int x=0; x<255; x++){ → Disminuye luz led
} for(int y=0; y<=2; y++){
analogWrite(i[y], x);
void loop() { delay(3);
for(int x=0; x<255; x++){ → Incrementa luz led }
for(int y=0; y<=2; y++){ analogWrite(13,x);
analogWrite(i[y], x); delay(10);
delay(3); Serial.println(x);
} }
analogWrite(13,x); delay(500);
delay(10); }
Serial.println(x);
}

You might also like