Lisp

Iniciado por m@o_614, 16 Mayo 2016, 00:12 AM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

Saludos

Tengo el siguiente codigo en lisp que es un sistema experto para apagar un incendio. El
problema es que no entiendo muy bien el funcionamiento del programa. Primero esta defrule  inicio, y despues esta el initial-fact, pero no se que significa esta instrucción. Despues tenemos(assert (se-quema (read))), que lee el material que se esta quemando, pero apartir de alli ya no se como continua la ejecución del código. Si alguien me lo pudiera explicar se lo agradeceria

Código (lisp) [Seleccionar]
(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)))
)