Escolar Documentos
Profissional Documentos
Cultura Documentos
(defrule analiza_valvulas_solenoide_tabelas
(name [SH])
(tipoAcionamento solenoide)
(tipoCentro ?centro)
(name ?bomba)
(podeUsar nao)
(tipoBomba ?tp)
(pressao ?p1);
(vazao ?q1);
(acionamento solenoide)
(centro ?centrov)
(test
)
?f <- (cont ?x)
=>
(send ?bomba put-podeUsar sim) ;seta no objeto da bomba que ela pode ser usada
(retract ?f)
(printout t crlf " Tamanho(s) de valvula(s): " ?tp " pt" ?po ?p1 crlf)
(assert (fim))
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
;---------------------------------------------------------
(defrule seleciona_deslocamento_fixo
?f <- (selecionar deslocamento)
=>
(assert (df))
(retract ?f)
(defrule seleciona_deslocamento_variavel
=>
(assert (dv))
(retract ?f)
(defrule conflito_deslocamento
(selecionar deslocamento)
=>
so contraditorias" crlf)
(assert (fim))
;CENTRO TECNOLOGICO
;PROGRAMA DE POS-GRADUACAO EM ENGENHARIA DE PRODUCAO
;TITULO DO TRABALHO:
;Florianopolis 2016
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
; CLASSES DO SISTEMA
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(slot podeUsar (create-accessor read-write) (visibility public)) ;se a bomba pode ser
utilizada de acordo com a vazao, pressao, desloc...
;...........novos slots
;...........dados en tabelas
(type INTEGER)
(type INTEGER)
(type INTEGER))
(type INTEGER))
(type INTEGER))
(type INTEGER))
;-----------
(type INTEGER)
(type INTEGER)
)
)
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(defmessage-handler Explicacao print-html ()
(printout out
"
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<CENTER>
</CENTER>
<HR>
<TR>
<TD><B>Explicacao</B></TD></TD>
</TR>
<TR>
<TD>
<CENTER>
<CENTER>
<IMG = \" #circuito \" SRC=" ?self:imagem " BORDER =0>
</CENTER>
</TD>
<TD VALIGN=middle>
<P><b>" ?self:textoExplicacao"</b></P>
</TD>
</TR>
</TABLE>
<P>
<HR>
</BODY>
</HTML>
"
(close out)
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(printout t ?question)
(printout t "Erro: ..." crlf"Responda dentro do intervalo:" ?min " - "?max crlf
crlf)
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
m = manual
s = solenoide
R: " m s)
f - fechado
t - tandem
R: " f t)
(send ?self ask_question2 "Qual a pressao de operao da valvula? [10 a 350] (em bar)
R: " 10 350)
Recomendacao:
R: " 1 450)
;)
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(defrule aquisicao_informacoes
(initial-fact)
=>
(load-instances bombas.dat)
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(definstances Objetos
(SH of SistemaHidraulico)
(Interface of ObjetoInterface
(textoEntrada "
********************************************************
Diego Mise
Florianopolis - 2016
********************************************************
")
(resposta 0)
(Explic of Explicacao)
)
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(defrule analiza_valvulas_tabelas
(name [SH])
(tipoAcionamento manual)
(tipoCentro ?centro)
(name ?bomba)
(podeUsar nao)
(tipoBomba ?tp)
(acionamento manual)
(centro ?centrov)
(test
(or
=>
(send ?bomba put-podeUsar sim) ;seta no objeto da bomba que ela pode ser usada
(retract ?f)
(printout t crlf " Tamanho(s) de valvula(s): " ?tp " pt" ?po ?p1 crlf)
(deffunction reta
(defrule analiza_valvulas_figuras
(name [SH])
(tipoAcionamento manual)
(tipoCentro ?centro)
(name ?bomba)
(podeUsar nao)
(tipoBomba ?tp)
(acionamento manual)
(centro ?centrov)
(test
(or
(and (< ?po ?ps) (< ?qo ?qs) (< ?po (reta ?pi ?ps ?qi ?qs ?qo)))
=>
(send ?bomba put-podeUsar sim) ;seta no objeto da bomba que ela pode ser usada
(retract ?f)
(printout t crlf " Tamanho(s) de valvula(s): " ?tp " pt" ?po ?pi crlf)
(printout t crlf " pmax " (reta ?pi ?ps ?qi ?qs ?qo) crlf)
(name [SH])
(tipoAcionamento solenoide)
(tipoCentro ?centro)
(name ?bomba)
(podeUsar nao)
(tipoBomba ?tp)
(acionamento solenoide)
(centro ?centrov)
(test
(or
=>
(send ?bomba put-podeUsar sim) ;seta no objeto da bomba que ela pode ser usada
(retract ?f)
(printout t crlf " Tamanho(s) de valvula(s): " ?tp " pt" ?po ?p1 crlf)
(assert (fim))
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(defrule inicia_segunda_fase
(declare (salience -1))
;(deslocamento ?d)
(cont ?x)
=>
(assert (fim))
(defrule nenhuma_bomba_possivel1
(selecionar bomba)
(tipoAcionamento ?aciona)
(cont 0)
=>
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(cont 1)
(name ?bomba)
(tipoBomba ?tb)
(podeUsar sim)
(prioridade 3)
;(acionamento manual)
(centro ?centrov)
(name [SH])
(pressaoOperacao ?p)
(vazaoOperacao ?v)
;(tipoAcionamento manual)
(tipoCentro ?centro)
)
=>
(cont 2)
(name ?bomba)
(tipoBomba ?tb)
(podeUsar sim)
(prioridade 2)
(acionamento manual)
(centro ?centrov)
)
(object (is-a SistemaHidraulico)
(name [SH])
(pressaoOperacao ?p)
(vazaoOperacao ?v)
(tipoAcionamento manual)
(tipoCentro ?centro)
=>
(cont 3)
(name ?bomba)
(tipoBomba ?tb)
(podeUsar sim)
(prioridade 1)
(acionamento manual)
(centro ?centrov)
(name [SH])
(pressaoOperacao ?p)
(vazaoOperacao ?v)
(tipoAcionamento manual)
(tipoCentro ?centro)
=>
vazao (" (send [SH] get-vazaoOperacao) "lpm) do sistema, com acionamento manual e
centro "(send [SH] get-tipoCentro) " . A utilizao
)
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
(defrule mostrar_resultado
(bomba escolhida)
(name ?bomba)
(tipoBomba ?tb)
(acionamento ?aciona)
(centro ?centrov)
=>
(printout t crlf "------------" crlf "Recomenda-se utilizar: " ?tb " com acionamento "
?aciona " e centro " ?centrov crlf)
(printout t ?te crlf crlf "Abra o arquivo saida.htm para mais detalhes (nao esquea de
clicar
)
(if (eq ?tb "Tamanho da vlvula M16 ") then
(assert (fim))
(defrule mostrar_resultado_sem_bomba
(nenhuma bomba)
=>
(printout t (send [Explic] get-textoExplicacao) crlf crlf "Abra o arquivo saida.htm para
mais detalhes (nao esquea de clicar
(assert (fim))