+ All Categories
Home > Documents > Integrar Java con CLIPS.docx

Integrar Java con CLIPS.docx

Date post: 07-Aug-2018
Category:
Upload: arrietajohn
View: 235 times
Download: 1 times
Share this document with a friend

of 14

Transcript
  • 8/21/2019 Integrar Java con CLIPS.docx

    1/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    INTEGRAR JAVA CON CLIPS (POR JOHN CARLOS ARRIETA ARRIETA)

    INTRODUCCIN:

    Este breve instructivo tiene como propsito ensear los pasos necesarios para

    poder integrar el dos lenguajes de programacin Java, de uso multifuncional y

    CLIPS especializado para desarrollar y ejecutar Sistemas Expertos.

    Este instructivo no pretende ser un manual de programacin en Java o CLIPS,

    puesto que solo se limita explicar los pasos para poder integrar estos dos

    lenguajes de programacin ejemplificando el proceso mediante el desarrollo de

    una aplicacin muy simple, de tal manera que podamos tener el conocimiento que

    nos permita dar mayores prestaciones de usabilidad y portabilidad a cualquier

    aplicacin tipo Sistema Experto que en el futuro deseemos construir.

    HERRAMIENTAS:

    PC con Sistema Operativo Windows XP o superior, preferiblemente en 64bits

    JDK (Herramientas de Desarrollo Java) versin 1.5 o superior.

    Descargar:

    http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

    CLIPS: Sistema de Produccin Integrado en Lenguaje C)

    Descargar:http://clipsrules.sourceforge.net/

    IDE Netbeans Versin 6 o superior.

    Descarga:https://netbeans.org/

    Descarga Alternativa:

    http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

    IDE Eclipse Versin 3.5 Elios o superior

    Descarga:https://www.eclipse.org/

    PROCEDIMIENTO:

    Nota: Las imgenes de recortes sobre Pginas Web y Ventanas de lasAplicaciones mencionadas en este instructivo corresponden a las que estaban

    disponibles en la fecha de creacin de este documento, 19/09/2014.

    Descargar e instalar el CLIPS: Descargar la vieron para Windows, para ellos

    sugiero seguir los siguientes pasos:

    http://www.oracle.com/technetwork/es/java/javase/downloads/index.htmlhttp://www.oracle.com/technetwork/es/java/javase/downloads/index.htmlhttp://clipsrules.sourceforge.net/http://clipsrules.sourceforge.net/http://clipsrules.sourceforge.net/https://netbeans.org/https://netbeans.org/https://netbeans.org/http://www.oracle.com/technetwork/es/java/javase/downloads/index.htmlhttp://www.oracle.com/technetwork/es/java/javase/downloads/index.htmlhttps://www.eclipse.org/https://www.eclipse.org/https://www.eclipse.org/https://www.eclipse.org/http://www.oracle.com/technetwork/es/java/javase/downloads/index.htmlhttps://netbeans.org/http://clipsrules.sourceforge.net/http://www.oracle.com/technetwork/es/java/javase/downloads/index.html
  • 8/21/2019 Integrar Java con CLIPS.docx

    2/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    Recorte tomado de:http://clipsrules.sourceforge.net/

    Recorte tomado dehttp://clipsrules.sourceforge.net/Version63Beta.html

    Recorte tomado dehttp://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/

    http://clipsrules.sourceforge.net/http://clipsrules.sourceforge.net/http://clipsrules.sourceforge.net/http://clipsrules.sourceforge.net/Version63Beta.htmlhttp://clipsrules.sourceforge.net/Version63Beta.htmlhttp://clipsrules.sourceforge.net/Version63Beta.htmlhttp://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/http://clipsrules.sourceforge.net/Version63Beta.htmlhttp://clipsrules.sourceforge.net/
  • 8/21/2019 Integrar Java con CLIPS.docx

    3/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    Ejecutar e iniciar la instalacin siguiendo los pasos del asistente presentados por

    el programa de instalacin, los cuales se resumen en aceptar la licencia y pulsar el

    botn siguiente hasta que termine el proceso.

    Recorte tomado del Men Inicio de Windows 7

    Si la instalacin fue correcta, en el men inicio de Windows podremos encontrar

    los accesos directos a la herramienta CLIPS, sugiero seleccionar la opcin

    CLIPSWin para que nos muestre un entorno simple de trabajo basado en

    ventanas y no en consola de D.O.S.

    Recorte tomado de CLIPSWin en ejecucin.

    CLIPS Win es un entorno bsico que provee un editor de texto sobre el cual

    podemos escribir nuestra Base de Conocimientos basada en Hechos, Clases y

    Reglas.

    En este entorno podemos editar, cargar, ejecutar y probar las bases de

    conocimiento de los sistemas Expertos que pensemos construir [1]. Una vez

    diseada y probada nuestra base de conocimientos, procedemos a recuperar el

  • 8/21/2019 Integrar Java con CLIPS.docx

    4/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    archivo con extensin .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

    Recorte tomado de:http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/

    El cual debemos descomprimir y recuperar en otra carpeta cualquiera los archivos

    CLIPSJNI.jar y CLIPSJNI.dll, para el case de los PC con MacOS, se debe

    recuperar tambin el archivo libCLIPSJNI.jnilib, el caso de los PC con GNU/Linux

    es necesario CLIPSJNI.jar y la carpeta library-src, esta ltima carpeta se debe

    recompilar con algn compilador de C para obtener el archivo libCLIPSJNI.so, el

    cual es el equivalente a que es el CLIPSJNI.dll para Windows o libCLIPSJNI.jnilib

    para MacOS.

    El prximo paso es descargar el JDK y un IDE (Entorno de Desarrollo Integrado)

    para Java, por ejemplo NetBeans o Eclipse:

    http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/CLIPSJNI_0.3.zip/downloadhttp://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/CLIPSJNI_0.3.zip/downloadhttp://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/CLIPSJNI_0.3.zip/download
  • 8/21/2019 Integrar Java con CLIPS.docx

    5/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    Recorte tomado de:

    http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

    Para el caso de NetBeans en el mismo sitio de descarga del JDK est disponible

    un instalador de JDK que trae incluido el IDE Netbeans en su ltima versin

    estable, pero si ya tienen el JDK o desean otra versin disponible del IDE por

    ejemplo en espaol, esta se puede descargar desde su sitio web oficial.

    Segn nuestras necesidades de desarrollo podemos escoger una distribucin

    especifica. Recorte tomado dehttps://netbeans.org/downloads/

    O

    http://www.oracle.com/technetwork/es/java/javase/downloads/index.htmlhttp://www.oracle.com/technetwork/es/java/javase/downloads/index.htmlhttps://netbeans.org/downloads/https://netbeans.org/downloads/https://netbeans.org/downloads/https://netbeans.org/downloads/http://www.oracle.com/technetwork/es/java/javase/downloads/index.html
  • 8/21/2019 Integrar Java con CLIPS.docx

    6/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    Para el caso de eclipse, en su sitio web oficial existen igualmente varias opciones

    descarga segn nuestras necesidades:

    Recorte tomado dehttps://www.eclipse.org/downloads/

    El proceso de instalacin requerir tener instalado el JDK [2] luego ambos solo

    hay que descargar una distribucin con asistente de instalacin para cada IDE,

    aceptar las trminos de licencia (ambos Software Libre), seguir los pasos del

    asistente y listo de Netbeans [3] o los de Eclipse [4].

    A continuacin procedemos a crear un proyecto nuevo tipo aplicacin 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 raz

    del proyecto y pegamos los archivos previamente copiados desde la carpeta

    donde descomprimimos el archivo CLIPSJNI.zip, igual se hace con Eclipse.

    https://www.eclipse.org/downloads/https://www.eclipse.org/downloads/https://www.eclipse.org/downloads/https://www.eclipse.org/downloads/
  • 8/21/2019 Integrar Java con CLIPS.docx

    7/14

    John Carlos Arrieta ArrietaUniversidad 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

    Por ltimo, debemos agregar la biblioteca del proyecto el archivo CLIPSJNI.jar, el

    cual contiene las clases Java/CLIPS, quienes son las que verdaderamente nos

    permiten interactuar con CLIPS, dialogando con la base de conocimiento, el motor

    de inferencia, generando entradas y salidas desde Java. Para logar esta operacin

    usando Nebeans debemos colocarnos en el panel de Proyectos, hacer clic

    derecho sobre el tem Bibliotecas y escoger la opcin Agregar archivo

    JAR/Carpeta

    Seguidamente debemos entrar buscar el archivo CLIPSJNI.jar ubicado en el

    proyecto y pulsar Abrir.

  • 8/21/2019 Integrar Java con CLIPS.docx

    8/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    Completado estos pasos la estructura del proyecto en Netbeans debe quedar

    parecida a la siguiente imagen:

    Posibles problemas:

    1. Si durante la ejecucin de la aplicacin presenta algn probar las siguientes

    posibles soluciones:

    Si su S.O es de 32bit copiar el archivo CLIPSJNI.dll enC:\windows\system32

    Si su S.O es de 64bit copiar el archivo CLIPSJNI.dll enC:\Windows\SysWOW64

    Para S.O GNU/Linux: copiar libCLIPSJNI.soen/usr/lib/ Para S.O MacOSX: copiar libCLIPSJNI.jniliben/usr/lib/java/

    2. Una vez creado el paquete de distribucin de la aplicacin, es decir la

    carpeta dist con su subcarpeta liby su archivo.jar, se deben colocar losarchivos CLIPSJNI.dll y la base de conocimientos.clp junto al archivo

  • 8/21/2019 Integrar Java con CLIPS.docx

    9/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    ejecutable.jarde la aplicacin y dentro de la subcarpeta libdebe estar elarchivo CLIPSJNI.jar:

    Esto se hace, ya que aunque el CLIPSJNI.jar contiene clases Java compiladas

    para multiplataformidad, por ende JDNI (arquitectura java que le permitecombinarse con cdigo nativo compilado de forma nativa en otros lenguajes con

    C, CLIPS, etc) necesita los binarios nativos para poder ejecutarse. Dichos binario

    Java los busca primero en el directorio actual de ejecucin de la aplicacin, si no

    los encuentra entonces pasa a buscarlo en directorio de bibliotecas binarias

    nativas del sistema, informacin que se puede consultar mediante

    System.out.println(System.getProperty("java.library.path")); en

    cdigo Java.

    Utilizacin de las clases que se encuentran dentro de la bibliotecaCLIPSJNI,jar:

    Para interactuar con la base de conocimientos y la mquina de inferencia de clips,

    CLIPSJNI proporciona un conjunto de clases entre las que se encuentran

    envueltas en un nico paquete llamado CLIPSJNI, las ms importantes son;

  • 8/21/2019 Integrar Java con CLIPS.docx

    10/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    Environment(Crea una especie de entorno de trabajo entre CLIPS y Java), el uso

    ms comn de esta clase puede ser por ejemplo:

    import CLIPSJNI.*;

    //

    Environment clips = new Environment();

    clips.load("ejemplo.clp");

    clips.build("(defrule prueba (ejemplo ?x)=>(assert (auch ?x))) ");

    clips.eval("(+ 3 4)");

    clips.reset();

    clips.assertString("(ejemplo acertado)");

    clips.run();

    clips.clear();

    clips.destroy();

    //

    Como vern existen mtodos con los mismos nombres de comandos CLIPS como

    son load, assert, eval, build, reset, run, clear, entro otros, los cualesrealizan una operacin 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 construccin en la BC, en este ejemplo se ingresa unaregla llamada prueba cuyo antecedente es un Patron que espera el valor de una

    variable, si el Patron concuerda con algn 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)");

  • 8/21/2019 Integrar Java con CLIPS.docx

    11/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    Evala la ejecucin de alguna consulta o comando sobre la BD o la Maquina de

    inferencia, en este caso evaluamos la suma de dos constantes literales enteras,

    este mtodo retorna una instancia de la clase PrimitiveValue, la cual tiene

    mtodos para obtener el resultado devuelto por la mquina de inferencia.

    clips.reset();

    Reinicia la Memoria de Trabajo a los valores por defecto (hechos inciales)

    clips.run();

    Ejecuta las primeras reglas disponibles en la Memoria de Trabajo

    Mtodos de la clase Environment

  • 8/21/2019 Integrar Java con CLIPS.docx

    12/14

    John Carlos Arrieta ArrietaUniversidad 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 mtodo assert(String hecho) mediante una instancia de

    Environment, recordemos que este comando agrega o afirma un hecho en la

    BC, este mtodo 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 abstractaPrimitiveValue

    Invocando el mtodo eval(String instruccin), igualmente usando una

    instancia de Environment. Este mtodo evala la ejecucin de una instruccin

    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 ofind-all-facts.

    Mtodos de la clase PrimitiveValue

  • 8/21/2019 Integrar Java con CLIPS.docx

    13/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    Otra forma de hacerlo es:

    String comandoCLIPS = "(find-all-facts ((?f state-list))

    TRUE)";

    PrimitiveValue slot = clips.eval(comandoCLIPS);

    slot = slot.get(0);

    slot = slot.getFactSlot("current");

    StingvalorSlot = slot.toString();

    Y en una sola lnea siria:

    PrimitiveValue slot = clips.eval(comandoCLIPS).slot.get(0).

    getFactSlot("current").slot.toString();

    Una vez se tenga la instancia del hecho ya sea mediante una llamada al mtodo

    assert o al mtodo 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 ms simple desde java, se puede utilizar

    un mtodo por cada tipo de dato Java:

    FactAddressValue punteroSlot= clips.assert((llantas 4));

    PrimitiveValue slot= clips.getFactSlot(punteroSlot, llantas) ;

    int cantidadLlantas = slot.intValue(llantas);

    Los mtodos son:

    intValue

    stringValue

  • 8/21/2019 Integrar Java con CLIPS.docx

    14/14

    John Carlos Arrieta ArrietaUniversidad de Cartagena

    Instructivo para integrar CLIPS con Java usando CLIPSJNI

    floatValu

    integerValue

    instanceValue,

    instanceAddressValue

    multifieldValue

    primitiveValue

    stringValue

    symbolValue

    voidValue

    El uso de cada mtodo 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 ms de un hecho o el hecho tenga ms de un

    slot, se puede utilizar el mtodo size() de la instancia de PrimitiveValue, quien

    retorna el numero de slot que tiene el hecho devuelto por la consulta. Para obteneruno de los slot se utiliza el mtodo get(int pos), quien retorna una instancia de

    PrimitiveValue que hace referencia al slot en la posicin indicada por el

    parmetro 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] Instalacin del IDE Netbeans

    https://netbeans.org/community/releases/80/install.html

    [4] Instalacin 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

    http://elvex.ugr.es/decsai/intelligent/workbook/ai/CLIPS.pdfhttp://elvex.ugr.es/decsai/intelligent/workbook/ai/CLIPS.pdfhttp://www.luiskano.net/blog/2010/04/28/tutorial-instalar-java-jdk-en-windows-7/http://www.luiskano.net/blog/2010/04/28/tutorial-instalar-java-jdk-en-windows-7/https://netbeans.org/community/releases/80/install.htmlhttps://netbeans.org/community/releases/80/install.htmlhttp://jarroba.com/instalar-bien-eclipse-un-ide-de-muchos/http://jarroba.com/instalar-bien-eclipse-un-ide-de-muchos/http://panamahitek.com/como-crear-nuestro-primer-programa-en-java-con-netbeans/http://panamahitek.com/como-crear-nuestro-primer-programa-en-java-con-netbeans/http://panamahitek.com/como-crear-nuestro-primer-programa-en-java-con-netbeans/http://www.tutorialspoint.com/eclipse/eclipse_create_java_project.htmhttp://www.tutorialspoint.com/eclipse/eclipse_create_java_project.htmhttp://www.tutorialspoint.com/eclipse/eclipse_create_java_project.htmhttp://panamahitek.com/como-crear-nuestro-primer-programa-en-java-con-netbeans/http://panamahitek.com/como-crear-nuestro-primer-programa-en-java-con-netbeans/http://jarroba.com/instalar-bien-eclipse-un-ide-de-muchos/https://netbeans.org/community/releases/80/install.htmlhttp://www.luiskano.net/blog/2010/04/28/tutorial-instalar-java-jdk-en-windows-7/http://elvex.ugr.es/decsai/intelligent/workbook/ai/CLIPS.pdf

Recommended