Advertisement
CamolasC

SistemasPerificiaisAula7

Apr 18th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 3.82 KB | None | 0 0
  1. % 7.1
  2.  
  3. % a)
  4.  
  5. :- op(800, xfy, e).
  6. :- op(950, xfx, entao).
  7. :- op(850, fx, se).
  8. :- op(750, xfx, com).
  9.  
  10. % R1
  11. se motor=nao e bateria=ma entao problema=bateria com fc=1.
  12. % R2
  13. se luz=fraca entao bateria=ma com fc=0.8.
  14. % R3
  15. se radio=fraco entao bateria=ma com fc=0.8.
  16. % R4
  17. se luz=boa e radio=bom entao bateria=boa com fc=0.8.
  18. % R5
  19. se motor=sim e cheiro_gas=sim entao problema=encharcado com fc=0.8.
  20. % R6
  21. se motor=nao e bateria=boa e indicador_gas=vazio entao problema=sem_gasolina com fc=0.9.
  22. % R7
  23. se motor=nao e bateria=boa e indicador_gas=baixo entao problema=sem_gasolina com fc=0.3.
  24. % R8
  25. se motor=nao e cheiro_gas=nao e ruido_motor=nao_ritmado e bateria=boa entao problema=motor_gripado com fc=0.7.
  26. % R9
  27. se motor=nao e cheiro_gas=nao e bateria=boa entao problema=carburador_entupido com fc=0.9.
  28. % R10
  29. se motor=nao e bateria=boa entao problema=velas_estragadas com fc=0.8.
  30.  
  31. % b)
  32.  
  33. :- dynamic(facto/3).
  34. % facto(A, V, FC).
  35.  
  36. % c)
  37.  
  38. questionavel(motor, 'O motor funciona?', [sim,nao]).
  39. questionavel(luz, 'Como estao as luzes?', [fraca,razoavel,boa]).
  40. questionavel(radio, 'Como esta o radio?', [fraco,razoavel,bom]).
  41. questionavel(cheiro_gas, 'Sente cheiro a gasolina?', [sim,nao]).
  42. questionavel(indicador_gas, 'Como esta o indicador de gasolina?', [vazio,baixo,meio,cheio]).
  43. questionavel(ruido_motor, 'Que ruido faz o motor?', [ritmado,nao_ritmado]).
  44.  
  45.  
  46.  
  47. %limpar a memória de trabalho se, isto quebrar a meio!!  .. ou reinicir o prolog!
  48.  
  49. %se o motor funciona (não e sim) evitar perguntar outra vez.., se já existir um facto!
  50. %acrecentando aqui uma claúsula verifica, atributo e V2 igual a V, quero simplesmente que isto falhe!
  51.  
  52. %se motor = mo e bateria=ma entao problema = bateria com fc =1
  53.  
  54. verifica(A, V, FC):-
  55.     facto(A,V,FC),!.%Velho),!, %facto(A, V, FC). se todas as premissas forem  , atributos motor e bateria , a premissa é um conjunto de condições que pode ser motor = não e bateria = má
  56. %   retract(facto(A,V,FCVelho)),
  57. %   FC is FCNovo +
  58.    
  59.     verifica(A,V,FC):-
  60.         facto(A,V2,-), V2\=V,!,fail.
  61.        
  62.     verifica(A,V,FC):-
  63.         questionavel(A,Perg,LR),
  64.         write(Perg:LR),read(Val),
  65.         write('Certeza[0-1]'),read(FC),
  66.         assert(facto(A,Val,FC)),
  67.         !,V=Val. % fica info, na memória de trabalho que motor igual a Sim! ..
  68.         % em vez de Val , o que tinha era motor de RL e nesta base de conhecimento o que tinha era: atributo bateria era 1024!
  69.        
  70.     verifica(A,V,FC):-
  71.     deduz(A,V,FC). % todos na mesma página aula mais íngrata do semestre no final é que se ve a funcionar
  72.    
  73.     atualiza(A,V,FCNovo):-
  74.   facto(A,V,FCVelho),
  75.   FC is FCNovo + FCVelho *(1-FCNovo),
  76.   retract(facto(A,V,FCVelho)),
  77.   assert(facto(A,V,FC)).
  78.  
  79. atualiza(A,V,FC):-
  80.   assert(facto(A,V,FC)).
  81.    
  82.     deduz(A,V,FC):- %deduz(A,V,FC):-
  83.         se Prems entao A=V com fc=FCRegra,%aqui é um objectivo!
  84.         prova(Prems, FCPrems),
  85.         FCNovo is FCPrems * FCRegra, %é um vezes o outro, fatores de certeza no outro. .. * FCRegra!
  86.         actualiza(A,V,FCNovo),%quero combinar ao chegar ao fim,  com os fatores de certeza! e no atributo o valor fc, coloquei a 1a regra tentei comprovar as premissas... o que vou fazer a seguir!?
  87.         fail. % quero saber o valor para o atributo problema.. Vários factos com o mesmo produto para os fatores problemas
  88.     deduz(A,V,FC):-
  89.         facto(A,V,FC). %é o processamento de uma lista, conjugação de algoritmos miniMax e o núcleo do sistema, está no predicado Verifica etc!
  90.    
  91.     prova(A=V, FC):-
  92.         verifica(A,V,FC).
  93.     prova(A=V e Ps, FC):-
  94.         verifica(A,V,FC1),
  95.         prova(Ps,FC2),
  96.         %e o fator de certeza, predicado.. e um facto de certeza com isso e atributo questionável!?
  97.         FC is min(FC1,FC2). %não se aplica na claúsula e ou seja pode-se aplicar naquela regra!
  98.        
  99.         %como guardo a info , ou atualizo -a ?? , Senão basto mudar o assert! e dúvidas.. certeza que há!
  100.         % facto em prolog e :-
  101.         %guarda info num facto, pode ser importante para o futuro!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement