Ejecute un sistema experto en HTML

componenteseLa Inteligencia Artificial (IA) sigue siendo una ciencia para elegidos y su utilización es propiedad casi exclusiva de centros de investigación y universidades (actualmente existen muchos laboratorios de IA financiados por las transnacionales de la iformacion). Y es que, aún en estos tiempos, sigue exigiendo por parte del programador de una gran derroche de ingenio, y de gran esfuerzo y dedicación.

Un Sistema Experto simple, consta de:
1. Una base de hechos (BH).
2. Una base de conocimientos (BC).
3. Una máquina o motor de inferencias (MI).

Este es un ejemplo de un programita en Javascript. ¿Conocen el problema de las tinas?

Se tienen dos tinas, una de 3 gls y otra de 4 gls, ambas vacías y una pila o llave de agua, para ir llenándolas. Se quiere dejar dos galones en la tina de 4 gls, ejecutando las acciones de llenar una tina, vaciar una tina en la otra y botar el contenido de una tina.

(La tina es un recipiente para contener agua)

Aquí les va el programa en Javascript.

Programa TINAS

<HTML>
<HEAD>
<TITLE>Tinas</TITLE>
</HEAD>
<BODY>
<CENTER>Programa TINAS <CENTER>
<BR>

function tinas()
{//Base de hechos
var x = 0
var y = 0
if (document.ftinas.tina[0].checked)
{x = eval(document.ftinas.tina[0].value)
document.write(«Llenar la tina de 3 gls (3,0)» + «
» )
}
else
{y = eval(document.ftinas.tina[1].value)
document.write(«Llenar la tina de 4 gls (0,4)» + «
» )
}
//Maquina de inferencia
for (i=1;i» )
break
}
//Base de conocimientos
//Regla 1:
if (x == 0 && y == 0)
{ x = 3
y = 0
document.write(«Llenar la tina de 3 gls (3,0)» + «
» )
continue
}
//Regla 2:
if (x == 0 && y == 0)
{ x = 0
y = 4
document.write(«Llenar la tina de 4 gls (0,4)» + «
» )
continue
}
//Regla 3:
if (x == 3 && y == 0)
{ x = 0
y = 3
document.write(«Vaciar la tina de 3 gls en la de 4 gls (0,3)» + «
» )
continue
}
//Regla 4:
if (x == 0 && y == 4)
{ x = 3
y = 1
document.write(«Vaciar la tina de 4 gls en la de 3 gls (3,1)» + «
» )
continue
}
//Regla 5:
if (x == 0 && y == 3)
{ x = 3
y = 3
document.write(«Llenar la tina de 3 gls (3,3)» + «
» )
continue
}
//Regla 6:
if (x == 3 && y == 1)
{ x = 0
y = 1
document.write(«Botar el contenido de la tina de 3 gls (0,1)» + «
» )
continue
}
//Regla 7:
if (x == 3 && y == 3)
{ x = 2
y = 4
document.write(«Vaciar la tina de 3 gls en la de 4 gls (2,4)» + «
» )
continue
}
//Regla 8:
if (x == 0 && y == 1)
{ x = 1
y = 0
document.write(«Vaciar la tina de 4 gls en la de 3 gls (1,0)» + «
» )
continue
}
//Regla 9:
if (x == 2 && y == 4)
{ x = 2
y = 0
document.write(«Botar el contenido de la tina de 4 gls (2,0)» + «
» )
continue
}
//Regla 10:
if (x == 1 && y == 0)
{ x = 1
y = 4
document.write(«Llenar la tina de 4 gls (1,4)» + «
» )
continue
}
//Regla 11:
if (x == 2 && y == 0)
{ x = 0
y = 2
document.write(«Vaciar la tina de 3 gls en la de 4 gls (0,2)» + «
» )
continue
}
//Regla 12:
if (x == 1 && y == 4)
{ x = 3
y = 2
document.write(«Vaciar la tina de 4 gls en la de 3 gls (3,2)» + «
» )
continue
}

}
}

Cual de las tinas prefiere llenar?
<br>
<form name=»ftinas»>
<input type=»Radio» name=»tina» value=»3″ checked> Tina de 3 gls
<br>
<input type=»Radio» name=»tina» value=»4″> Tina de 4 gls
<br>
<input type=»Button» name=»» value=» Entrar » onclick=»tinas()»>
<br>
</form>
</BODY>
</HTML>

Observen que el programa consta de una base de hechos, una máquina de inferencia y una base de conocimientos, compuesta por 12 reglas. Noten que las reglas impares se refieren a comenzar llenando la tina de 3 gls y las reglas pares son para el llenado de la tina de 4 gls.

La máquina de inferencia, lo único que hace es recorrer todas las reglas y en caso de que se llegue a la solución detiene el proceso.

La base de hechos inicializa los hechos (pone en cero las variables) y prepara las condiciones para la interfaz con el usuario.

Es bueno destacar que la base de conocimientos (BC) y la máquina de inferencias (MI) estan separadas lógicamente (usted puede seguir agregando reglas sin que esto afecte la ejecución del programa), pero físicamente están unidas dentro del mismo programa. En la practica la BC y la MI deben estar separadas lógica y físicamente.

Puede acceder al ejemplo de Sistema Experto en Javascript  aqui

44 comentarios en “Ejecute un sistema experto en HTML

  1. Hola alejandro veo que eres un experto es IA y sistemas expertos, en estos momentos estoy desarrollando un prototipo de un sistema experto juridico que me permita recomendar una pena al juez en determinados casos, eleji a clips para el desarrollo estoy en el proceso de conocer la herramienta pero es bastante complicada ya que no me indica como maneja el algoritmo en el motor de inferencia.
    Si puedes recomendarme bibliografia o algun software que me sirva de base o la reomendacion que quieras estare agradecido.

    JAIR

    Me gusta

    • El lenguaje que siempre he utilizado ha sido Prolog. Puedes ver algunos ejemplos de como usar prolog en el capitulo sobre prolog de una curso de Inteligencia Artificial que tengo colocado en mi pagina:
      https://sites.google.com/site/ciberneticamatematica/home
      Tambien he utilizado el lenguaje Lisp, pero Prolog tiene la ventaja que ya poses una maquina de inferencia, el curso hablo sobre las carateristicas de su maquina de inferencia.
      Estoy preparando una introducción a Prolog para publcarla en Kindle Amazon.

      Me gusta

  2. Hola Alejandro,
    Me resulta muy interesante el sistema experto hecho en html, y por consiguiente me atrevo a solicitarte también el codigo del SE por favor.

    De antemano muchas gracias!
    Saludos

    Me gusta

  3. HOla, muy interesante la página. me gustaría poder disponer del código para poder implementar el sistema en una web, me dedico a la enseñanza TIC libre y gratuita y me interesa investigar sobre las aplicaciones educativas delos sistemas expertos, pero recien estoy aprendiendo programación web así que necesito ayuda porque no tengo ni idea como implementar el código. (¿a que se refiere separación física?, ¿hay que poner cada script por separado en una hoja vinculada?) – Muchas gracias.

    tmabien seria bueno saber si esta código está bajo licencia creative commons, GNU, o algo así. a ver si se lo puede modificar y reutilizar y los créditos que haya que dar a sus creador. Supongo que usted.

    Me gusta

      • Ok, gracias, es bueno saber que hay gente tan avanzada en estos conocimientos, creo que en un futuro cercano de 50 años, viviremos todos rodeados de robots, pero eso depende de las miles de horas de crear código de los programadores e ingenieros y de que pongan a disposición el conocimiento para los legos y principiantes como yo .
        e dejo mi mail rafaelmessina1970@gmail.com

        Me gusta

  4. No puedo hacer funcionar el Javscript, no entiendo como se corre el programa. se embebe en el body? en el head?,, me interesa probar su funcionamiento, entender la lógica en acción. lo probé en .html y como .js, pero ni modo. te dejé mi mail: rafaelmessina1970@gmail.com,,

    PD no tengo idea de que es red21, ¿podrías decirme la url donde enseñaste sobre este tema?

    Me gusta

  5. Hola señor Alejandro estoy interesado en el código es por motivos de estudio ya que tengo muchas incógnitas para la elaboracion de un sistema experto Web. Por favor le pediría que me envié tambien el codigo php, muchas gracias seria de gran ayuda.

    Me gusta

  6. Hola Sr. Alejandro el codigo es muy interesant y el trabajo muy bueno. Por motivos de estudio necesito exponer un sistema experto.. me podria enviar el programa….
    de antemano muchas gracias

    Me gusta

    • Hola Oscar,
      Ya agregue en el Menú del blog, arriba donde dice Inicio, Acerca de… Puse un enlace: Descargas, ahi puedes entrar al sitio La Cibernetica y al final esta Tinas.html y solo tienes que dar clic en la derecha en la flecha, descargar.

      Me hace falta que me digas si no tuvistes problemas para descargarlo. Ya que acabo de ponerlo.

      Saludos
      Alejandro

      Me gusta

  7. Pingback: Ejecutar un sistema experto. Ya se puede descargar | Inteligencia Artificial

    • Hola Maria,
      Lo puedes descargar directamente en el blog como HTML.
      Para descargarlo, vaya al Menú de este blog arriba donde dice Inicio, Acerca de, Libros, etc., y ve al enlace Descargas, al dar clic irá a la pagina, La Cibernetica. al final esta Tinas.zip y a la derecha donde esta la flecha, dar clic en descargar. Y ahora solo tiene que ejecutar el html en su computadora.
      Si tienes algun problema me escribes.
      Saludos, Alejandro

      Me gusta

  8. hola como esta usted, quiero hace rmi tesis de pregrado en la universidad quiero mandar parametros desde mi aplicativo (en android) a un web service donde se encuentre el SE y que ala ves me devuelva uan respuesta y mostrarla en el telefono movil, puedo usar algun lenguaje en especial(clips,lips,prolog) para esto en web (php o tal ves….no se) osea si se puede conbinar lenguajes php y algun lenguaje de SE como ya los menciona, agradeceria su repsuesta y algunas refencias utiles q me puedar gracias 😀

    Me gusta

    • Hola Jorge
      Yo estoy retirado de la programacion en Prolog, ahora estoy concentrado en la programacion Web. Pero te puedo decir que el CiaoProlog es un sistema muy completo que incluye al lenguaje Prolog y al PHP entre otros, el problema consiste en que es bastante complejo de aprender. Si tienes tiempo, quizas con el puedas resolver. Es un GNU y lo puedes descargar gratis desde Internet.
      Saludos, Alejandro

      Me gusta

  9. Profesor le agradezco mucho por tan didáctico aporte, realmente el ejercicio es inspirador y muy simple para personas como yo que nos interesamos por encontrar conocimiento valioso en tesis doctorales, vídeos y en blogs como el suyo. En el caso de la regla 2 es prácticamente código muerto, es acaso una contradicción este tipo de reglas o me equivoco?

    Me gusta

Deja un comentario