miércoles, 21 de noviembre de 2012


Para la entrada de laboratorio número 7 se pidió contestar un problema del libro sistemas de control moderno de Dorf Bishop.

P9.25 Un sistema en lazo cerrado tiene una función de transferencia de lazo



(a)Determinar la ganancia K de forma que el margen de fase sea de 60° cuando T=0.2 (b) Dibujar el margen de fase frete al tiempo de retardo T para la K calculada en el apartado(a).
Cuando el margen de fase es 60° y su T=0.2, la ganancia K es igual a K =2.61.

El diagrama de bode para 

  

cuando la K=2.61


El Margen de Ganancia es la cantidad de ganancia en dB que se puede añadir al lazo del sistema antes de que el mismo se vuelva inestable. Se calcula de la siguiente manera, se toma la frecuencia a la que el ángulo tiene un valor de –180º y a esa misma frecuencia la ganancia me da un valor  en dB, pues ese valor cambiado de signo es el margen de ganancia., 

El margen de fase es la cantidad de retardo puro que se puede añadir al lazo, (de un sistema estable), antes de que el mismo se vuelva inestable.Para el margen de fase, se calcula de la siguiente manera, se toma la frecuencia a la que la ganancia es de 0 dB,   a esa mima frecuencia se toma el ángulo, este ángulo sumado a 180º nos dará el margen de fase .





martes, 20 de noviembre de 2012

Reporte Automatización

Presentación
El proyecto que realizamos , es un carrito seguidor de línea.
El carrito se pondrá en una superficie con una pista marcada, y este deberá de seguirlo.  Aquí esta la foto de la pista que se diseño. 
Una de sus aplicaciones mas importantes, es para la transportación de materias en empresas maquiladoras, industria de manufactura.



Lo que hacen es que ponen un robot para que lleve cosas de un lugar a otro, siguiendo una línea.

Justificacion

Existen distintos tipos de estos tipos de carro por ejemplo. Unos donde la línea es representada por un cable energizado, y el robot lo que hace es detectar el campo electromagnético emitido por la corriente que circula en el cable, y así irlo siguiendo.


Herramientas utilizadas para ingresar el código al lego.
—El proceso fue echo en Windows y se instalo LeJOS.
—Primeramente se instala Java
—Puesto que LeJOS se basa en Java, lo primero que necesitaremos descargarnos es el JDK (Java Development Kit). Este lo podemos encontrar en la siguiente dirección: Descargas de Java Sun y modificar la variable de entorno Path.
—Ahora descargas LeJOS se elije Win32 leJOS NXJ . Y la pones en Mis documentos. Y ya después solo en siguiente.
—Ahora se instala Eclipse.

Y ya por ultimo se modifica en External Tools para poder compilar un programa de estos.

Estructura básica de el carrito
Sensores: Un rastreador detecta la línea a seguir por medio de sensores. Hay muchos tipos de sensores que se pueden usar para este fin; sin embargo, por razones de costos y practicidad los más comunes son los sensores infrarrojos (IR), que normalmente constan de un LED infrarrojo y un fototransistor.
Motores: El robot se mueve utilizando motores. Dependiendo del tamaño, el peso, la precisión del motor, entre otros factores, éstos pueden ser de varias clases: motores de corriente continua, motores paso a paso o servomotores.
Ruedas: Las ruedas del robot son movidas por los motores. Normalmente se usan ruedas de materiales anti-deslizantes para evitar fallas de tracción. Su tamaño es otro factor a tener en cuenta a la hora de armar el robot.
Fuente de energía: El robot obtiene la energía que necesita para su funcionamiento de baterías o de una fuente de corriente alterna, siendo esta última menos utilizada debido a que le resta independencia al robot.
Tarjeta de control: La toma de decisiones y el control de los motores están generalmente a cargo de un microcontrolador. La tarjeta de control contiene dicho elemento, junto a otros componentes electrónicos básicos que requiere el microcontrolador para funcionar.

Armado del carrito


MOTORES Y SENSORES
El modelo NXT usa servo motores, los cuales permiten la detección de giros de la rueda, indicando los giros completos o medios giros, que es controlado por el software. Estos motores se conectan al bloque programable a través de los puertos A, B y C.

Ahora bien, los servos además de incluir un motor eléctrico convencional también incluyen un sensor de posición. Este sensor nos permite saber a que velocidad se está moviendo nuestro motor, y corregirla si es necesario. Podemos saber exactamente cuantos grados a girado el motor en todo momento. Con esto tenemos un control muy preciso del movimiento de nuestro robot.


—Sensor de luz : Toma una muestra de luz mediante un bloque modificado que un extremo trae un conductor eléctrico y por el otro una cámara oscura que capta las luces que captan luces entre los rangos de 0,6 a 760 lux. Este valor lo considera como un porcentaje, el cual es procesado por el bloque lógico, obteniendo un porcentaje aproximado de luminosidad.

El bloque RCX calcula con la fórmula para determinar el porcentaje obtenido por la lectura de la luz, tomando una muestra cada 2,9 ms, siendo leído en 100 μs. Este sensor capta grados de luminosidad, no es capaz de distinguir colores, sólo captando la existencia el blanco, negro y los tonos de grises que corresponden a los distintos porcentajes de luz existentes en el medio


Funciones
CODIGO



Forma canonica
En base a nuestra funcion de transferencia obtendremos


PISTA
Superficie 1 m de largo x 0.5 m de ancho, la pista mide aprox 2.90 m

PRUEBAS


 CARRITO TERMINADO
El tiempo aproximado de recorrido es de 13-14 segundos



DEMO





Reporte

Este es el reporte final de el proyecto, se trato de ua red neuronal que  funciona de interfaz para controlar una red neuronal  y utilizando u sensor como entrada .

La red neuronal por medio de electrodos que se colocan en el antebrazo de una persona para que esta pueda determinar los movimientos que quiere realizar. Los datos que manda el cerebro en forma de frecuecias son interceptados en el antebraso y de esa maneracontrola el brazo robotico. Surgieron unos problemas con la aduana y los electrodos ya que lo tomaron como instrumeto medico y se utilizo un EGG.

El modo en que funciona :

Toma entradas del EGG y se van al preprocesamiento , despues se someten a un filtrado para tomar e ignorar los valores que no nos importan. Una vez tomados los datos que de importancia se colocan dentro de una lista que es la que entra a la red neuronal.

Se trabajo con un brazo robótica que se adquirió en Steren y viene un paquete de componentes electrónicos para armar un brazo mecánico que puede lograr movimientos de hasta de 270° y su pinza puede levantar objetos ligeros hasta de 100 gramos.
Dentro de los movimientos, el robot puede abrir o cerrar la tenaza, bajar o subir el brazo y moverlo hacia la derecha o izquierda, todo esto a través del control remoto integrado.


El brazo funciona con 4 pilas tipo “D”, haciéndolo portátil.

El brazo se movera a la derecha o izquierda dependiendo el resultado que mande la red neuronal en su salida ya sea 1 o 0 respectivamente.


El brazo robótico tiene cinco motores de directa, y para utilizarlo se desarmao el dispositivo y controlamos utilizando un Arduino cada motor por separado para mapear cada uno con una salida de nuestra red neuronal y solo le dimos un alcanse de girdo de 180 grados.


Se utilizo Arduino para controlar cada motor de la neurona y también la idea es utilizarlo como interfaz de las señales recibidas del sensor y también para las señales mandadas al brazo robótico.

En este proyecto se realizaron varios perceptrones uno en el que estuve trabajando fue en un perceptron que pudiera realizar una operacion and, con una cantidad de entradas indefinidas.

El Perceptron es un clasificador y que es uno del tipo más simple de red neuronal artificial . Además es un tipo de red que necesita conocer los valores esperados para cada una de las entradas presentadas; su comportamiento está definido por pares de esta forma:
Ronda: 10
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0
Ronda: 20
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0
Ronda: 30
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0
Ronda: 40
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0
Ronda: 50
[Entradas]-> (Salida, Error)
[0,0,0]-> (0, 0)
[0,0,1]-> (0, 0)
[0,1,0]-> (0, 0)
[0,1,1]-> (0, 0)
[1,0,0]-> (0, 0)
[1,0,1]-> (0, 0)
[1,1,0]-> (0, 0)
[1,1,1]-> (1, 0)
Porcentaje de error:  0.0

Cuando pj es aplicado a la red, la salida de la red es comparada con el valor esperado tj.


Se podria trabajar mas en el perceptron para mejorarlo

Codigo del perceptron


El brazo mecanico se mueve con un codigo echo en arduino se le dio un umbral para que no se moviera ma de lo debido, y las salidas se configuraron como puertos que dan corriente a los motores.

>


Links codigo




perceptron            https://gist.github.com/4117900
brazo mecanico     https://gist.github.com/4117995
preprocesamiento  https://gist.github.com/4118313
repositorio https://github.com/saulG/redesNeuronales

jueves, 15 de noviembre de 2012

Laboratorio 6

Para esta entrada de laboratorio de automatización se eligió un problema del libro y se tenía que contestar.


Yo elegí el problema 11.2



La representación de la función de transferencia de este sistema es.



Entonces, la forma diagonal canónica del sistema es esta.


martes, 13 de noviembre de 2012

Reporte Grupal de Automatizacion

1535212 Roberto  Valenzuela


liga del reporte

http://sergio-hdz.blogspot.mx/2012/11/reporte-grupal.html

Aplicaciones de las redes neuronales

RECONOCIMIENTO AUTOMÁTICO DE CARACTERES MANUSCRITOS Y MARCAS, ORIENTADO AL PROCESADO DE ENCUESTAS



Las redes neuronales tienen muchos tipos de aplicaciones distintas una de ellas es en reconocimiento automático de caracteres manuscritos y marcas. aplicaciones.

Esta entrada es para puntos extras , se busco en scholar google , una aplicación de ellas.
La sociedad actual produce cantidades crecientes de información distribuidos en imágenes,documentos impresos, gráficas y archivos de audio y vídeo impulsando el desarrollo de sistemas de adquisición de información cada vez más complejos y de mayor alcance en servicios.

El procesamiento digital de imágenes ha adquirido en estos años recientes un papel importante en las tecnologías de la información y el computo , y en estos tiempos es la base de una creciente variedad de aplicaciones que incluyen diagnosis médica, percepción remota, exploración espacial, visión por computadora, reconocimiento de patrones, etc.

Se diseño una aplicacion software para reconocimiento de marcas y caracteres mauscritos basada en un procesamiento digital de imagenes y redes neuronales, aplicable a la toma del contenido de una encuesta.

Este proceso tiene grades vetajas como evitar la digitacion manual necesaria para el archivado de grandes cantidades de documentos.

ETAPAS DEL PROCESO IMPLEMENTADO

En general, se puede considerar que el proceso implementado consta de dos bloques principales:

- Captura de documentos.
- Captura de datos.

Aqui se muestra el diagrama de bloques





En este proceso empiesa con la adquisición de las imágenes.

Mediante un scanner se toma la imagen
El algoritmo de reconocimiento de marcas(óvalos) y caracteres se basa en el tratamiento digital de la imagen
en niveles de grises de 8 bits, ya que éste formato es el más apropiado puesto que no requiere gran capacidad de almacenaje y la información que brinda es suficiente para ejecutar tareas de reconocimiento.

Despues sigue con el reconocimiento de marcas

El algoritmo parte de la toma de los parámetros definidos en una hoja de calibración los cuales se aplican
para las demás hojas de la encuesta. El algoritmo de identificación de marcas (óvalos) consta
básicamente de dos etapas:

La primera, lleva a cabo la segmentación en las zonas de respuestas y la segunda, identifica las marcas con base en un porcentaje de pixeles que se encuentren por debajo de un umbral especifico.

Se desarrollan dos métodos para el reconocimiento de marcas (óvalos).

1. Método manual.
2. Método automático.

1) Método Manual. Se ajustan los parámetros manualmente y el desarrollo de la calibración, depende del usuario.

Los parámetros a ajustar son:

- Factor delta x (dx).
- Factor delta y (dy).
- Umbral.
- Porcentaje de referencia (Pr).

Una vez que se halla el Delta x, Delta y para los diferentes grupos en la hoja de calibración, las coordenadas de los centroides de cada celda permanecen fijas, y el tamaño de éstas, dependerán de los valores que
tome el factor dx y dy.

2) Método automático. Es un algoritmo que garantiza y busca el mejor ajuste de los parámetros para la
identificación de marcas u óvalos. Este método se basa en el estudio de los pixeles encendidos en las celdas activas y celdas no activas.

El método automático realiza una búsqueda secuencial de  los parámetros (Umbral, Pr, Factor dx, Factor dy), de manera que la diferencia entre el mínimo porcentaje de pixeles encendidos en las celdas activas y el máximo en las inactivas sea máxima y superior al 8%.

Y despues el Reconocimiento de Caracteres


Las etapas implementadas para llevar a cabo el reconocimiento de los caracteres.

1) Preprocesado de la imagen.
Esta etapa requiere las siguientes fases:

Binarización de la imagen.
Depuración de la imagen binarizada.
Ensanchamiento de la imagen depurada.
Extracción del objeto de interés en la imagen ensanchada.
Extracción del contorno del objeto de interés.

2) Representación y descripción.

Los descriptores con mejor comportamiento se describen a continuación.
Firma del Contorno. Es un vector muestreado de la distancia normalizada desde el centroide a cada uno de
los puntos del contorno del carácter .




Eeste procedimiento secciona la imagen en nueve zonas y toma dos descriptores por zona; el primero es la
densidad relativa de píxeles (d1= píxeles del caracter en la zona / píxeles totales), mientras el segundo indica la orientación y ubicación relativa del grupo de píxeles del caracter en la zona. La figura ilustra la implementación de éste método, donde los primeros 9 descriptores corresponden a las densidades y los demás corresponden a las orientaciones por zona.



Para la representación de la imagen de los caracteres se tomó un vector de 42 elementos
conformado por:

-16 Muestras de la firma.

-18 Descriptores de las zonas de la imagen.

- 8 Coeficientes extraídos de los descriptores de fourier .

3) Clasificación de descriptores

Como se mencionó anteriormente, esta etapa se implementó con REDES NEURONALES .

Selección de las Redes Finales

Todas las redes tienen 42 neuronas en la capa de entrada, se entrenaron con 19 tipos de caracteres y luego se validaron con otros 11 tipos. La tabla muestra la arquitectura de las redes seleccionadas




Generación del Archivo de Resultados


Los resultados del procesado de las encuestas se almacenan en un archivo de texto plano. En el caso del
reconocimiento de marcas, la primera columna indica el número de la hoja (NE), la segunda el número de la
pregunta (NP) mientras que de la tercera columna en adelante (letras A, B, C, ..) se indica con uno, la respuesta seleccionada. Para el reconocimiento de caracteres cada fila del archivo corresponde a un campo de la hoja de encuesta .

Referencias  pdf sacado scholar.google.com.mx

martes, 6 de noviembre de 2012

Robotic Assembly of vehicle headliners

Se relaciona con la automatizcion y control ya que el armado de el vehiculo tiene que estar sistematizacion y la manera en que se controla el avanse de el automovil , la pieza que sigue en colocar asi como el tiempo y la posicion donde debera ser colocada.


Este invento se relaciona con el armado mecanizado de un vehiculo y particularmente en el metodo  de usar un robot para instalar el headliner en el cuerpo del vehiculo  y la configuracion del cuerpo del vehiculo , el material y el color como la configuracion de el headliner y son combinados selectivamente cuando se arma.

El armado robotico parece la mejor respuesta pero con la la amplia seleccion de cuerpos de vehiculos y sus headliners con su distintos requerimientos  de instalacion, normalmente se requeriria un numero de robots dedicados para las varias instalaciones de ensamblaje o posiblemente un robot que realize varias tareas .

La forma en que trabaja este invento automatizado es que por la linea de armado el vehiculo va avansando y con el metodo robotizado es elejido el color de el headliner asi como el tamaño necesario que requiere el vehiculo.

Expresion

Esta es mi expresion

L = {x Î {0, 1}* x no contiene ‘00’}
(0 + 1)* 00 (0 + 1)*® Expresión regular del L que contiene ‘00’
(1 + 01)* (0 + l) ® Expresión regular del L que no contiene ‘00’
Los estados 1 y 4 se pueden unir en uno solo.

Se pueden suprimir las transiciones d  (3, 0) = 3 yd  (3, 1) = 3. La idea es que, una vez que M cae en el estado 3, la palabra leída Ï L y, además, cualquier palabra formada por la concatenación la palabra leída, como prefijo, con cualquier x Î S*, como cola, tampoco pertenece a L. Entonces, ¿para qué seguir leyendo?. Una vez suprimidas las dos flechas de salida del estado 3, M queda así:



Qué hace M cuando lee una letra y está en 3?  Nada.

 Queda parado, bloqueado. La función de transición, para la situación de bloqueo, es d(3, 0) = Æ y d(3, 1) =  (subconjunto de estados vacío). Cuando se llega al estado 3 hay situación de bloqueo para " a Î S; S = {0, 1}.

Es un caso parecido al procesador de una computadora. Cuando el Registro de Instrucciones de la Unidad de Control alberga en la parte CO (Código de Orden) una configuración que no forma parte del repertorio de instrucciones, la máquina queda bloqueada al intentar ejecutar esa supuesta instrucción.

En este caso la parte del autómata suprimida no contiene estados. Pero puede darse el caso de supresión de algún estado. Veámoslo.

En este mismo ejemplo, se puede suprimir el estado 3 si convenimos en que d (2, 0) = Æ quiere decir que ir a ningún estado es rechazar la palabra leída, que es el mismo convenio adoptado anteriormente. En este caso se llega a una situación de bloqueo desde un estado de aceptación.

 

Referencias: http://www.prismmodelchecker.org/lectures/pmc/17-omega%20regular.pdf
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r26805.PDF
http://www.prismmodelchecker.org/lectures/pmc/17-omega%20regular.pdf
http://www.liafa.jussieu.fr/~colcombe/Talks/talk_msob_seattle_14.8.06.pdf

martes, 30 de octubre de 2012

REPORTE

En Esta entrada se realizaron pruebas a el sistema que se usara mas adelante, se utilizo el lenguaje de programacion octave .


Primero se tiene la funcion de transferencia que esta.


Ya teniendo nuestra funcion de transferencia las entradas sera la fuerza que entra al sistema.

"F(s) "


Le di una fuerza de entrada de 30

Codigo



El bode me arroja esto.





y el Step me arroja esto.
 
La funcion podemos ver que es estable, ya que se estabiliza a partir de los 25 segundos y no cuenta 
con ceros en el hiperplano derecho. 
 
. 

lunes, 29 de octubre de 2012

Modelado


Esta tarea se tenia que elegir un sistema y modelarlo , se dijo que podía modelarse ya sea por un sistema de transiciones o de un grafo.

Yo tome un sistema de plumas de una colonia privada.



Componentes:


Pluma de acceso : Es la que baja y sube  para dar acceso al vehiculo.

Persona : La persona en si es parte de el automovil , osea vendria implicito en el auto pero esta es la que lleva el carro hasta la pluma y se mantiene en espera mientras sube la pluma para avanzar.

 

Existen varios estados en este sistema por ejemplo.


Pluma de acceso: Tiene el estado de espera que es cuando no esta ningun vehiculo esperando.

Cuando llega el vehiculo se levanta la pluma y espera a que pase el vehiculo para bajar.

0 - cuando No ahy vehiculo.
1 - cuando llega el vehiculo y la pluma se levanta.
2 - cuando paso el vehiculo y la pluma baja.

Persona Estados:

0 - ( Depende de el horario y si exista fila para entrar enla colonia) : La persona se encuentra haciendo fila para llegar a el acceso .
1 - Espera: La persona espera a que la pluma se levante.

2 - Avance: cuando ya se levanta y acelera el automovil.


Diagrama de transiciones:


Aqui esta el diagrama de transicion .
 
Estados:


0, 1,2  = Estados del componente Persona (Hace fila para llegar al acceso, llega y espera a que se levante , se levanta y acelera)

0, 1, 2,  = Estados del componente Pluma de acceso(Espera, Cuando se levanta, Cuando el carro pasa y la pluma baja.)

0 - cuando No ahy vehiculo.
1 - cuando llega el vehiculo y la pluma se levanta.
2 - cuando paso el vehiculo y la pluma baja.

Para distinguir a cual se refiere  cada una , se manejara el primer numero para Estados de la persona y el segundo para estados de la pluma. En el sistema puede pasar que solo exista un automovil en la fila entonces el sistema regresara a 0,0 , o que exista automoviles en la fila entonces de el ultimo estado que es 2,2 pasaria a 1,0 , directament con un carro esperando a que se levante la pluma.





jueves, 18 de octubre de 2012

PROBLEMA

Esta entrada es relacionada con el lab. de automatización , se eligió un problema y se deberá resolver.


Este es el problema 

Un termómetro requiere de un minuto para alcanzar el 98% del valor final de la respuesta a una entrada escalón. Suponiendo que el termómetro es un sistema de primer orden, encuentre la constante de tiempo. Si el termómetro se coloca en un baño, cuya temperatura cambia en forma lineal a una velocidad de l0’/min, cuánto error muestra el termómetro?

A continuación la solución.




lunes, 15 de octubre de 2012

Aplicación de la lógica predicativa

Tiene muchos tipos de aplicaciones y un uno de ellos es en la  las bases de datos.

Un uso importante de la lógica de predicados o predicativa se encuentra en las bases de datos 
y mas generalmente una noción de "base de conocimientos", que se define como una base de datos más diversas reglas de cálculo

En esta aplicacion es muy común el uso de predicados que contienen variables como consultas. Los propios predicados representan los datos básicos almacenados , predicados computables o combinaciones de los mismo. 
Una consulta le pide al sistema encontrar todos los individuos correspondientes a las variables en la expresión de tal manera que si la expresión se satisface evaluara un 1. Esta idea puede demostrarse consultando en una base de datos utilizando el lenguaje Prolog que si bien no es el lenguaje de consulta mas utilizado sino el SQL , sino que es uno de los mas naturales para utilizarse.  

Un ejemplo de base de datos en Prolog

Existen muchas maneras de representar los predicados en una bae de datos, como por archivos estructurados representando tablas u hojas de cálculos etc. Aquí en este lenguaje una de las formas ara representar un predicado es solo una enumeración de todas las combinaciones de valores para los que el predicado es verdadero.

Se define el predicado madre y el padre de para poder modelar la familia de el arbol.


 

Es posible que una consulta no contenga variables, en cuyo caso se esperaría una respuesta de 1 o 0.
Por ejemplo
madre (Susan, Hank) ⇒ verdadero
madre (Susan, tom) ⇒ falso


Más interesante aún, cuando ponemos las variables en las consultas, esperamos obtener los valores para
aquellas variables que satisfacen el predicado:
mother(alice, X) ⇒ X = tom;  X = carol (two alternatives for X)
father(tom, X) ⇒ false (no such X exists)
mother(X, Y) ⇒ (several alternative combinations for X, Y)
X = alice, Y = tom;
X = alice, Y = carol;
X = carol, Y = george;
X = carol, Y = heather;
X = susan, Y = hank


Tenga en cuenta que los valores X y Y deben estar en correspondencia. No estaría bien que simplemente
se proporcionara el conjunto de X y el conjunto de Y por separado.

El lenguaje Prolog nos permite presentar consultas y recibir una respuesta automática en un estilo similar a la anterior. Por otra parte, Prolog nos permite definir nuevos predicados que utilizan lógica en lugar de la enumeración.


Tal predicado se define por la expresión lógica siguiente:
abuela (X, Y): - madre  (X, Z), padre (Z, Y).


Esto : - se lee como "si" y la coma que separa la madre y el padre se lee como "y". Esto es, en efecto, "X es la abuela de Y si X es la madre de (algunos) Z y Z es el
padre de Y "Aún tenemos que definir padre, pero vamos a hacer esto ahora.:

A continuación: - se lee como "si" y la coma que separa la madre y el padre se lee como "y". esta
Dice, en efecto, "X es la abuela de Y si X es la madre de (algunos) Z y Z es el padre de Y "Aún tenemos que definir padre, pero vamos a hacer esto ahora.:

padre (X, Y): - La madre de (X, Y).
padre (X, Y): - padre (X, Y).

Aquí tenemos dos afirmaciones distintas lógicas, que dice que "X es el padre de Y si X es la madre de Y ", y el otro diciendo algo similar para el padre. Estas afirmaciones no son contradictorio, por el término de enlace: - es "si" no ", si y sólo si". Sin embargo, la recogida de todas las afirmaciones con un símbolo de predicado dado en la lhs agota las posibilidades para ese predicado.

Así, las dos reglas anteriores juntos podría ser tomado como equivalente a:
padre (X, Y) si y sólo si (la madre (X, Y) o padre (X, Y))

Dadas estas definiciones, además de la base de datos, ahora tenemos una "base de conocimiento"
ya que contamos con las normas, así como enumeraciones. Podemos consultar los predicados se definen en la misma manera que consultan los enumerados.


grandmother(alice, Y) ⇒ Y = george; Y = heather
grandmother(X, Y) ⇒ X = alice, Y = george;
X = alice, Y = heather
X = carol, Y = hank
grandmother(susan, Y) ⇒ false


referencias:

http://www.cse.iitd.ernet.in/~kkb/CSL864-1.pdf http://www.cse.iitd.ernet.in/~kkb/CSL864-1.pdf
http://www.cs.hmc.edu/~keller/cs60book/10%20Predicate%20Logic.pdf