CLIPS: un Sistema Experto sencillo.

Cuando empecé a hablar un poco de CLIPS comenté que era un lenguaje que estaba principalmente enfocado al desarrollo de Sistemas Expertos (SS.EE.).

Un Sistema Experto (SE) es una aplicación que intenta simular el comportamiento de un experto humano en un determinado área. El objetivo del desarrollo de sistemas de este tipo no es siempre el de sustituir al propio experto, lo cual por otra parte podría ser inviable (computacionalmente) en algunos casos, sino servir de ayuda a éste o liberarle de algunas tareas. Por ejemplo, existen SS.EE. cuya finalidad es el diagnóstico de enfermedades a partir de los síntomas del paciente. El funcionamiento de estos sistemas se basa en una serie de reglas y razonamientos que, a partir de unos síntomas y las características del paciente (edad, peso, etc.), dan como resultado una o varias enfermedades que con cierta probabilidad puede tener el paciente. Evidentemente el objetivo de estos SS.EE. no es sustituir al médico, sino ayudar a éste.

Bueno, después de esta breve descripción, vamos a ver un pequeño ejemplo hecho en CLIPS que pretende ser un SE bastante simple el cual podría ayudar a un bombero a sofocar un incendio. La idea es la siguiente:

Contamos con distintos tipos de extintores que son útiles para sofocar diferentes tipos de incendio. Los incendios pueden ser de tres tipos (A, B y C) dependiendo del material que esté ardiendo. A su vez, los extintores pueden ser de los tipos A, B y C dependiendo de su composición química. Un incendio de tipo A se sofoca con un extintor de tipo A, uno B se apaga con un extintor B y un fuego C con un extintor de tipo C.

Veamos el código del SE que ayudará al bombero a apagar el incendio:

(deffacts inicio
	(materiales A papel madera tela)
	(materiales B aceite gas lubricante)
	(materiales C magnesio sodio potasio)
	(extintores A agua sustancia-quimica-seca)
	(extintores B co2 sustancia-quimica-seca)
	(extintores C co2 espuma)
)

(defrule tipo-incendio
	(se-quema ?material)
	(materiales ?tipo $? ?material $?)
	=>
	(assert (incendio-tipo ?tipo))
	(printout t "Hay un incendio de tipo " ?tipo crlf)
	(printout t "De que es el extintor?" crlf)
	(assert (tengo-extintor-de (read)))
)

(defrule tipo-extintor
	(tengo-extintor-de ?x)
	(extintores ?tipo $? ?x $?)
	=>
	(assert (tengo-extintor ?tipo ?x))
	(printout t "Tenemos un extintor de " ?x " que es de tipo " ?tipo crlf)
)

(defrule puedo-apagar
	(incendio-tipo ?tipo)
	(tengo-extintor ?tipo ?x)
	=>
	(assert (puedo-apagar))
	(printout t "El incendio se puede apagar con el extintor de " ?x crlf)
)

(defrule inicio
	(initial-fact)
	=>
	(printout t "Que se quema? " crlf)
	(assert (se-quema (read)))
)

En este ejemplo se utilizan la mayoría de conceptos sobre CLIPS que hemos visto en las entradas anteriores. Creo que el código se entiende bien, de todas formas si no veis algo claro o hay algún error podéis comentarlo.

Posts anteriores sobre CLIPS:

About these ads

2 respuestas a CLIPS: un Sistema Experto sencillo.

  1. Nelson dice:

    Hola, el artículo que presentas me parece muy interesante, pero ahora yo tengo un pequeño problema con respecto a los clips, resulta que quiero realizar un sistema experto en php para lo cual ya tengo todo listo con la librería clips.dll lista para usarse, el problema es que ando algo perdido y no se como programar con clips, soy buen programador de PHP pero esto me desconcierta.

    Porfabor, si me puedes ayudar con un ejemplo en php así como el ” hola mundo” o cosas así.

    Desde ya!! te agradezco, esperando su respuesta.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: