Вы находитесь на странице: 1из 11

ESCUELA POLITCNICA NACIONAL FACULTAD DE INGENIERA DE SISTEMAS INGENIERA EN SISTEMAS INFORMTICOS Y DE COMPUTACIN

ASIGNATURA: PROFESOR: PERODO ACADMICO:

Inteligencia Artificial M.Sc. Diego Sa Enero Mayo2013

INFORME DE LABORATORIO Nro.05

TTULO DE LA PRCTICA: Problema de satisfaccin de restricciones (CSP)

FECHA DE REALIZACIN DE LA PRCTICA: 22 de Febrero 2013

ALUMNA
Pilamunga Salazar Norma

FECHA PRESENTACIN DEL INFORME: 1 de Marzo 2013 CALIFICACIN OBTENIDA: FIRMA DEL PROFESOR:

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

TITULO: Problema de satisfaccin de restricciones OBJETIVOS:


Resolver problemas de Criptoaritmtica con satisfaccin de Restricciones. Introduccin conceptual a CLIPS

1. Marco Terico
En los problemas de Criptoaritmtica, las letras representan dgitos. El objetivo es determinar el valor de cada una de las letras de tal manera que la operacin sea correcta aritmticamente. Letras iguales - dgitos iguales, letras diferentes - dgitos diferentes. Ningn nmero inicia con cero. Problema de satisfaccin de restricciones (CSP) La programacin por restricciones es una metodologa software utilizada para la descripcin y posterior resolucin efectiva de cierto tipo de problemas, tpicamente combinatorios y de optimizacin. Estos problemas aparecen en muy diversas reas, incluyendo inteligencia artificial, investigacin operativa, bases de datos y sistemas de recuperacin de la informacin, etc., con aplicaciones en scheduling, planificacin, razonamiento temporal, diseo en la ingeniera, problemas de empaquetamiento, criptografa, diagnstico, toma de decisiones, etc. Estos problemas pueden modelarse como problemas de satisfaccin de restricciones (Constraint Satisfaction Problems - CSP) y resolverse usando tcnicas de satisfaccin de restricciones. En general, se trata de grandes y complejos problemas, tpicamente de complejidad NP. Las etapas bsicas para la resolucin de un problema CSP son su modelizacin y su posterior resolucin

Prof. M.Sc. Diego Sa

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

mediante la aplicacin de tcnicas CSP especficas, que incluyen procesos de bsqueda apoyados con mtodos heursticos y procesos inferenciales. Clpfd(Constraint Logic Programming over Finite Domains) La Programacin con restricciones es un formalismo declarativo que permite describir las condiciones que la solucin debe satisfacer. Esta biblioteca CLP (FD) proporciona, Programacin finitos. Este se utiliza para la combinatorios asignacin. La mayora de los predicados de esta biblioteca son limitaciones finitas de dominio, que son las relaciones ms enteros. Generalizan evaluacin aritmtica de las expresiones de enteros en que la propagacin puede proceder en todas las direcciones. Esta biblioteca tambin ofrece predicados de enumeracin, que permiten sistemticamente la bsqueda de soluciones en las variables cuyos dominios se han convertido en finito. Las limitaciones ms importantes de dominio finitas son: tales como Lgica con Restricciones sobre dominios modelar y resolver diversos y problemas tareas de planificacin, programacin

Las limitaciones en / 2, # = / 2, # \ = / 2, # </ 2, #> / 2, # = </ 2, y #> = / 2 puede ser materializado, lo que significa que refleja sus valores de verdad en valores booleanos representados por los nmeros enteros 0 y 1. Sean P y Q denotan limitaciones refiables o variables booleanas, entonces:

Prof. M.Sc. Diego Sa

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

Las limitaciones de esta tabla son reifiables tambin. Si una variable se produce en el lugar de una restriccin que se est reificado, est implcitamente limitado a los valores booleanos 0 y 1. Por lo tanto, todas las siguientes consultas fallan: ?- # \ 2. , ?- # \ # \ 2. Debido a la importancia de las aplicaciones, las tcnicas de restricciones sobre dominios finitos han sido ampliamente estudiadas en el campo de la Inteligencia Artificial desde 1970.La terminologa ms importante de este paradigma abarca los siguientes conceptos: Una variable dominio es una variable que puede ser instanciada slo a valores de un conjunto finito. Una variable de dominio entero es una variable dominio cuyo dominio contiene slo nmeros enteros. Estas son las nicas variables que son aceptadas en los trminos lineales. El dominio finito de enteros se escribe como Min..Max, con Min<=Max, que representa el conjunto {Min, Min+1,...,Max}. Un trmino lineal es una combinacin entera lineal de variables de dominio entero. Los trminos lineales pueden escribirse incluso en forma no cannica. Por ejemplo puzzle send more money. Problema de las N reinas Un ejemplo de un CSP es el problema de las N reinas, que consiste en colocar N Reinas en un tablero de ajedrez de NxN casillas de tal manera que las reinas no se ataquen entre s. Para la resolucin del problema se asocia una variable a cada columna del tablero y tambin a cada reina, ya que dos reinas no pueden estar situadas en la misma columna. De este modo, el problema se reduce a asignar valores a las variables asociadas a cada reina. Este valor ser la fila dentro de cada columna en la que la reina correspondiente est situada, teniendo en cuenta que dos reinas se atacarn si estn situadas en la misma diagonal o en la misma lnea horizontal. Asumiendo que las columnas estn
Prof. M.Sc. Diego Sa
3

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

numeradas de izquierda a derecha y que Xi denota la columna de la isima Reina, el problema consiste en dar valores a una lista de variables {X1,...,Xn}, tal que se satisfagan las siguientes restricciones: 1XiN para 1iN. Esta restriccin unaria permite asignar valores a las variables dentro de su dominio (de 1 a N). Xi Xj para 1i < jN, corresponde a la restriccin dos reinas no pueden estar en la misma fila o lnea horizontal. |Xi Xj| | i j | para 1i < jN, corresponde a la restriccin dos reinas no pueden estar en la misma diagonal. En la figura 3 puede verse el rbol de bsqueda para el problema de las N reinas, con N=4.

Prof. M.Sc. Diego Sa

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

CLIPS Clips es una Shell para el desarrollo de sistemas expertos. Este lenguaje si distingue entre letras maysculas y minsculas. Clips es un lenguaje que tiene comandos tales como bind que asigna un valor a una variable por ejemplo (bind ?x (read)) tenemos tambin facts que lista hechos, assert que aade un hecho, retract que elimina un hecho , en este grupo tenemos tambin a reset que tiene la funcin de eliminar y aseverar todos los hechos y hechos iniciales respectivamente. Por ltimo tenemos a deffacts que define los hechos iniciales.

Clips fue desarrollado por la Nasa en 1984 y est escrito en el lenguaje de programacin C, teniendo una similitud con Lisp. Este lenguaje provee de un entorno de desarrollo interactivo ya que incluye paradigmas de programacin declarativa, orientada a objetos y procedimental. Es declarativa basada en reglas y procedimental por que usa funciones. porque est

2. Materiales y Mtodos
Para la prctica de laboratorio utilizamos el programa introduciendo cada uno de los comandos en observ que funcin cumpla cada una. Prolog. Se fue dicho programa y luego se

3. Historial
a) Primero empezamos utilizando la librera clpfd el uso comn de esta biblioteca es publicar primero las restricciones deseadas entre las variables de un modelo, y luego usar los predicados de enumeracin para buscar soluciones. Como ejemplo de un problema de satisfaccin de restricciones, es el que a continuacin se muestra en el grafico donde las letras diferentes denotan enteros distintos entre 0 y 9.

Prof. M.Sc. Diego Sa

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

Luego de editar el cdigo llamamos a la funcin sendmoremoney ?- sendmoremoney([S,E,N,D,M,O,R,Y]).

b) Modificamos sendmoremoney ([S,E,N,D,M,O,R,Y]) y nuevamente llamamos a la funcin modificada aqu hablamos sobre Vars y Label: Como observamos en grafica inferior las variables en la lista Vars son elementos de dominio. Adems que el dominio de Vars debe de ser finito. Label es equivalente a sistemticamente los hasta que termine. labeling esto significa probar valores para el dominio de variables Vars finitas

?- sendmoremoney(Vars),label(Vars).

Prof. M.Sc. Diego Sa

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

c) A continuacin de esto se vio el problema de las

cuatro reinas. Este

consiste en calcular las formas de colocar 4 reinas en un tablero de 4x4 de forma que no haya ms de una reina en cada fila, columna o diagonal. A continuacin vemos una imagen con el cdigo de este juego.

Como observamos vemos que el programa tiene restricciones tales como: X #\= Y, X #\= Y - N, X #\= Y + N, N1 is N + 1, En la que x no debe de ser igual a y por ejemplo. Adems de la que no tienen relacin

funcin Notattack se concluyo que si hay diferencia de un Notattack de 2 argumentos y uno de 3 argumentos ya alguna.

Prof. M.Sc. Diego Sa

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

Luego de ejecutar el cdigo se invoc a la funcin Queens dando como resultado lo siguiente:

d) Luego se corri el problema de las 32 reinas pero con la misma idea que el de las 4 reinas.

Luego de invocar a la funcin se obtuvo:

e) Problema de la cebra Este es un diferentes puzzle famoso de Lewis Carroll, donde hay cinco casas de colores sobre una calle. Cinco hombres de diferentes

nacionalidades, profesiones, gustos y bebidas diferentes, son dueos de un animal de compaa diferente y viven en estas cinco casas.
Prof. M.Sc. Diego Sa
8

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

La tarea consiste en averiguar quin tiene una cebra y quien bebe agua, teniendo en cuenta la siguiente informacin: El ingls vive en la casa roja El espaol tiene un perro El japons es un pintor El italiano bebe t El noruego vive en la primera casa a la izquierda El dueo de la casa verde toma caf La casa verde est a la derecha de la casa blanca El escultor cra caracoles. El diplomtico vive en la casa amarilla Ellos beben leche en la mitad de la casa. El noruego vive al lado de la casa azul El violinista bebe jugo de fruta El zorro est en la casa junto a la del doctor El caballo est en la casa contigua a la del diplomtico.

Al ejecutar el siguiente:

cdigo

correspondiente se genera algo parecido a lo

Prof. M.Sc. Diego Sa

Ingeniera de Sistemas Informticos y de Computacin

Laboratorio de Inteligencia Artificial

4. Conclusiones
La Programacin con restricciones es un formalismo declarativo que permite describir las condiciones que la solucin debe satisfacer.Las etapas fundamentales en la resolucin de problemas CSP son: o La modelizacin del problema, mediante variables, dominios y restricciones. o La aplicacin de mtodos inferenciales, que deducen nueva informacin (nuevas restricciones implcitas). o La aplicacin de tcnicas de bsqueda de soluciones al problema. CLIPS es una herramienta para la construccin de sistemas basados en el conocimiento, concretamente sistemas expertos. La aplicacin de los CSP es muy amplia, especialmente en la ingeniera, medicina e informtica. Esta metodologa resulta til para solucionar problemas combinatorios, temporales, de configuracin etc., cuya resolucin est sujeta a la satisfaccin de un conjunto de restricciones entre las variables del problema. Su utilidad est en aplicaciones de investigacin (identificacin operativa y (generacin de de horarios), bioinformtica ingeniera ordenacin secuencias genticas),

electrnica (diseo de circuitos), telecomunicaciones (asignacin de frecuencias) e informtica (bases de datos y sistemas de recuperacin de la informacin).

5. Referencias

1. http://iiuji.googlecode.com/hg/Prolog/Tema8.pdf 2. http://users.dsic.upv.es/~msalido/papers/capitulo.pdf 3. http://es.softuses.com/39512 4. http://www.cs.us.es/~jalonso/cursos/pd-06/temas/tema-9-2x2.pdf

Prof. M.Sc. Diego Sa

10