Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Toaz - Info Integrar Java Con Clipsdocx PR
Toaz - Info Integrar Java Con Clipsdocx PR
HERRAMIENTAS:
PC con Sistema Operativo Windows XP o superior, preferiblemente en 64bits
JDK (Herramientas de Desarrollo Java) versión 1.5 o superior.
Descargar:
http://www.oracle.com/technetwork/es/java/javase/downloads/index.html
CLIPS: Sistema de Producción Integrado en Lenguaje C)
Descargar: http://clipsrules.sourceforge.net/
IDE Netbeans Versión 6 o superior.
Descarga: https://netbeans.org/
Descarga Alternativa:
http://www.oracle.com/technetwork/es/java/javase/downloads/index.html
IDE Eclipse Versión 3.5 Elios o superior
Descarga: https://www.eclipse.org/
PROCEDIMIENTO:
Nota: Las imágenes de recortes sobre Páginas Web y Ventanas de las
Aplicaciones mencionadas en este instructivo corresponden a las que estaban
disponibles en la fecha de creación de este documento, 19/09/2014.
Descargar e instalar el CLIPS: Descargar la vieron para Windows, para ellos
sugiero seguir los siguientes pasos:
John Carlos Arrieta Arrieta – Universidad de Cartagena
Instructivo para integrar CLIPS con Java usando CLIPSJNI
Ejecutar e iniciar la instalación siguiendo los pasos del asistente presentados por
el programa de instalación, los cuales se resumen en aceptar la licencia y pulsar el
botón siguiente hasta que termine el proceso.
archivo con extensión .clp donde esta almacenada dicha Base de conocimientos,
hasta este punto ya no es necesario tener instalado o ejecutado el entorno de
desarrollo CLIPS.
El siguiente paso es proceder a descargar los siguientes archivos:
CLIPSJNI_0.3.zip
Para el caso de eclipse, en su sitio web oficial existen igualmente varias opciones
descarga según nuestras necesidades:
El proceso de instalación requeriré tener instalado el JDK [2] luego ambos solo
hay que descargar una distribución con asistente de instalación para cada IDE,
aceptar las términos de licencia (ambos Software Libre), seguir los pasos del
asistente y listo de Netbeans [3] o los de Eclipse [4].
A continuación procedemos a crear un proyecto nuevo tipo aplicación Java en
cualquiera Netbeans[5] o Eclipse[6].
Una vez creado el proyecto, debemos incluir copiar en la carpeta principal (raiz)
del proyecto los archivos CLIPSJNI.jar y CLIPSJNI.dll. Para ello usando Netbeans
nos colocamos en el panel de archivos, damos clic derecho sobre la carpeta raíz
del proyecto y pegamos los archivos previamente copiados desde la carpeta
donde descomprimimos el archivo CLIPSJNI.zip, igual se hace con Eclipse.
John Carlos Arrieta Arrieta – Universidad de Cartagena
Instructivo para integrar CLIPS con Java usando CLIPSJNI
El mismo proceso debemos hacerlo sobre el archivo que contiene nuestra base de
conocimientos, en nuestro ejemplo este archivo se llama diagnostico-
automovil.clp, recuerden que para garantizar que la Base de Conocimientos esta
bien construida debemos editarla, depurarla, ejecutarla y probarla con el entorno
CLIPSDOS.exe o CLIPSWin.exe instalado y presentado anteriormente
Posibles problemas:
1. Si durante la ejecución de la aplicación presenta algún probar las siguientes
posibles soluciones:
Si su S.O es de 32bit copiar el archivo CLIPSJNI.dll en
C:\windows\system32
Si su S.O es de 64bit copiar el archivo CLIPSJNI.dll en
C:\Windows\SysWOW64
Para S.O GNU/Linux: copiar libCLIPSJNI.so en /usr/lib/
Para S.O MacOSX: copiar libCLIPSJNI.jnilib en /usr/lib/java/
Environment (Crea una especie de entorno de trabajo entre CLIPS y Java), el uso
más común de esta clase puede ser por ejemplo:
import CLIPSJNI.*;
// …
//…
Como verán existen métodos con los mismos nombres de comandos CLIPS como
son load, assert, eval, build, reset, run, clear, entro otros, los cuales
realizan una operación equivalente a su respectivo omologo en CLIPS, por
ejemplo.
clips.load("ejemplo.clp");
Carga la Base de Conocimientos en la Memoria de trabajo CLIPS, esta BC se
encuentra en un archivo llamado ejemplo.clp, que como lo vimos anteriormente
debe estar ubicado en el mismo sitio donde se encuentra la CLIPSJNI.dll.
clips.build("(defrule prueba (ejemplo ?x)=>(assert (auch ?x)))");
Ingresa estructuras de construcción en la BC, en este ejemplo se ingresa una
regla llamada prueba cuyo antecedente es un Patron que espera el valor de una
variable, si el Patron concuerda con algún hecho afirmado en la BD entonces se
ejecuta el consecuente, que en este caso afirma otro hecho que toma como valor
el contenido de la variable.
clips.eval("(+ 3 4)");
John Carlos Arrieta Arrieta – Universidad de Cartagena
Instructivo para integrar CLIPS con Java usando CLIPSJNI
La clase PrimitiveValue
Permite consultar el estado de los hechos y el valor de sus slots (campos o
casillas), cada slot es tratado e si mismo como una instancia de PrimitiveValue.
Para recuperar los hechos o sus slots se puede hacer de dos formas:
Invocando el método assert(String hecho) mediante una instancia de
Environment, recordemos que este comando agrega o afirma un hecho en la
BC, este método retorna una referencia ( o puntero en C) hacia el hecho agregado
a la BD, referencia representado por una clase java llamada FactAddressValue,
hija de la clase abstracta PrimitiveValue
Invocando el método eval(String instrucción), igualmente usando una
instancia de Environment. Este método evalúa la ejecución de una instrucción
en lenguaje CLIPS sobre la BC o la Maquina de inferencia, generalmente se
invoca mediante el uso de comandos para consultar hechos como por ejemplo
find-fact o find-all-facts.
Una vez se tenga la instancia del hecho ya sea mediante una llamada al método
assert o al método eval, se puede conocer el valor de sus slot igualmente de
dos maneras:
Forma A:
FactAddressValue punteroSlot = clips.assert(“(auto(placa kkc))”);
PrimitiveValue slot = clips.getFactSlot(punteroSlot, “placa”) ;
Forma B:
PrimitiveValue slot = punteroSlot.getFactSlot(“placa”) ;
Para poder obtener el valor de una forma más simple desde java, se puede utilizar
un método por cada tipo de dato Java:
floatValu
integerValue
instanceValue,
instanceAddressValue
multifieldValue
primitiveValue
stringValue
symbolValue
voidValue
El uso de cada método se debe hacer si el tipo de dato del slot es compatible con
el tipo de datos java, si este dato se desconoce, entonces todos los valores sin
importar su tipo se pueden recuperar con stringValue.
En caso de que la consulta retorne más de un hecho o el hecho tenga más de un
slot, se puede utilizar el método size() de la instancia de PrimitiveValue, quien
retorna el numero de slot que tiene el hecho devuelto por la consulta. Para obtener
uno de los slot se utiliza el método get(int pos), quien retorna una instancia de
PrimitiveValue que hace referencia al slot en la posición indicada por el
parámetro pos.
BIBLIOGRAFIA
[1] SISTEMAS DE GESTION INTELIGENTES - MANUAL DE CLIPS
http://elvex.ugr.es/decsai/intelligent/workbook/ai/CLIPS.pdf
[2] INSTALACION DEL JDK
http://www.luiskano.net/blog/2010/04/28/tutorial-instalar-java-jdk-en-windows-7/
[3] Instalación del IDE Netbeans
https://netbeans.org/community/releases/80/install.html
[4] Instalación del IDE Eclipse
http://jarroba.com/instalar-bien-eclipse-un-ide-de-muchos/
[5] Tutorial de Netbenas (Inicio)
http://panamahitek.com/como-crear-nuestro-primer-programa-en-java-con-
netbeans/
[6] Tutorial de Eclipse
http://www.tutorialspoint.com/eclipse/eclipse_create_java_project.htm