La 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.
le entindo a tu codigo, el problema es que no se como correrlo me podrias mandar el script en un archivo html
Me gustaMe gusta
Leonel
Ya te envie el ejemplo en html compactado como SE.rar.
Espero te llegue. Caualquier duda me puedes preguntar.
Saludos,
Me gustaMe gusta
Hola alejandro, muchas gracias por poder publicar este excelente trabajo que hiciste con el problema de las tinas. Por favor serias tan amable de enviarme el ejemplo completo para poder entenderlo mejor y ejecutarlo.
Te agradeceria mucho si me lo envias
Me gustaMe gusta
Pasame el codigo porfavor.
Me gustaMe gusta
Vuelve a leerte el articulo, que ya actualice y ahi se explica como copiarlo y ejecutarlo.
Saludos.
Me gustaMe gusta
Puede descargarlo aqui
Me gustaMe gusta
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 gustaMe 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 gustaMe gusta
hola amigo si me puede enviar el archivo completo para mostrar en una pagina en php
gracias de ante mano..
Me gustaMe gusta
Oye alejandro, tambien a mi me podrias mandar el php o html para correrlo??
Me gustaMe gusta
Una pregunta esto lo puedo implementar para un wap y de alguna manera lo puedo tomar de la base de datos en postgres
Me gustaMe gusta
Podrías compartir el archivo para correrlo??
Saludos.!,!,
Me gustaMe gusta
Hola Vero
Disculpa la demora pero llevaba meses sin conexion.
No tengo aqui el programa. Mañana lo compacto y te lo envio a tu cuenta de correo.
Nuevamente disculpas.
Alejandro
Me gustaMe gusta
Me parece bueno tu aporte, me harías el favor de enviarlo a mi correo para tener el .html, gracias
Me gustaMe gusta
Hola Mario
Ya te lo envié a tu cuenta de correo
Saludos Alejandro
Me gustaMe gusta
me puedes enviar el html
por favor y gracias
Me gustaMe gusta
Hola Juan
Acabo de enviartelo a tu cuenta de correo.
Saludos Alejandro
Me gustaMe gusta
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 gustaMe gusta
Hola Angel
Ya te envie el programa a tu cuenta de correo
Saludos
Alejandro
Me gustaMe gusta
Muchas gracias Alejandro!
Saludos!
Me gustaMe gusta
Holaalejandro me puedes enviar el programa gracias
Me gustaMe gusta
Hola alejandro me podrias enviar el programa .. gracias de antemano.
Me gustaMe gusta
Ya te lo envié
Saludos
Me gustaMe gusta
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 gustaMe gusta
Hola Rafael
Enviame tu cuenta de correo electronico, para enviarte el codigo en html.
yo soy el autor del programa, el mismo esta incluido en los ejemplos de un curso de Inteligencia Artificial que he estado impartiendo en red21.
Puedes utilizarlo señalando la fuente, en este caso el blog http://www.cibernetica.wordpress.com
Saludos Alejandro
Me gustaMe 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 gustaMe gusta
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 gustaMe gusta
Hola Rafael
Lo unico que tienes que hacer es darle doble clic al programa tinas.htm y cuando se presente dar clic en entrar.
Por si acaso, ejecuta antes el navegador que usas, Internet Explorer, Mozilla Firefox, Chrome, etc., y luego el programa en html, como te indique antes.
Red 21 son cursos pagos puedes verlos en http://www.red21.com
Aunque sigo figurando como profesor, actualmente no estoy impartiendo clases.
Puedes ver parte del curso en
https://sites.google.com/site/ciberneticamatematica/
Saludos,
Alejandro
Me gustaMe gusta
Hola Alejandro muy interesante tu trabajo, me podrías enviar el programa, yo voy hacerlo pero en clips. Gracias
Me gustaMe gusta
Hola, que tal, me gustaría saber si me puede mandar a mi correo el código en php.
Mil gracias me ha sido de mucha utilidad sus artículos.
Me gustaMe gusta
Ya te lo envié.
Me gustaMe gusta
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 gustaMe gusta
Hola Alejandro,
Me preguntaba si podrías enviarme el Código Fuente del Sistema Experto al mail para poder revisarlo.
De antemano muchas gracias
Me gustaMe gusta
Hola Pedro
He intentado enviarte el programa pero el correo no sale.
Enviame un mensaje a alejandro.madruga@yahoo.com
A ver si me llega.
Saludos
Alejandro
Me gustaMe gusta
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 gustaMe 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 gustaMe gusta
Pingback: Ejecutar un sistema experto. Ya se puede descargar | Inteligencia Artificial
Disculpa me podria enviar el trabajo a mi correo please!!.. me interesa mucho!! =)
Me gustaMe gusta
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 gustaMe gusta
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 gustaMe 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 gustaMe gusta
hola me podrias pasar el codigo completo por favor
Me gustaMe gusta
hola, buenos dias…. estoy tratando de hacer un sistema experto de animales mamiferos, lo hize mediante java en un programa pero el docente me pide bases de datos. me podrias colabroar con un ejemplo.
wilson198413@hotmail.com
Me gustaMe gusta
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 gustaMe gusta