В какой среде запустить этот программный код? - Prolog

Узнай цену своей работы

Формулировка задачи:

Здравствуйте этого

узконаправленного

раздела У меня имеется некоторый код и я не могу его запустить. Прошу у Вас помощи! Пробовал запускать в Turbo Prolog (в досбоксе) и SWI-Prolog-е, однако все это не увенчалось успехом. Мне нужно выполнить "запрос" - prob(burglary,[call],p) — простите меня за некорректность и безграмотность в терминологии логического программирования, однако я очень надеюсь, что Вы поймете, что я имею ввиду. Как мне это дело "завести"? Собственно сам код:
Листинг программы
  1. implement bayesNet
  2. open core
  3. constants
  4. className = "bayesNet".
  5. classVersion = "".
  6. clauses
  7. classInfo(className, classVersion).
  8. domains
  9. event = string.
  10. ev = yes(event); not(event).
  11. evList = ev*.
  12. cp = cp(evList, real).
  13. cpList = cp*.
  14. class predicates
  15. parent : (ev E1, ev E2) nondeterm anyflow.
  16. pBase : (ev E, real R) determ (i,o).
  17. p : (ev E, evList L, real P) nondeterm (i,o,o).
  18. prob : (evList L1, evList L2, real Prob) nondeterm (i,i,o).
  19. prob1 : (ev E, evList L2, real Prob) nondeterm (i,i,o).
  20. predecessor : (ev E1, ev E2) nondeterm (i,i).
  21. sum_probs : (cpList CPList, evList L, real P) nondeterm (i,i,o).
  22. member : (ev E, evList L) nondeterm (i,i).
  23. delete : (ev E, evList L1, evList L2) nondeterm (o,i,o).
  24. clauses
  25. % Байесова сеть доверия.
  26. parent(yes("burglary"), yes("sensor")).
  27. parent(yes("lightning"), yes("sensor")).
  28. parent(yes("sensor"), yes("call")).
  29. parent(yes("sensor"), yes("alarm")).
  30. pBase(yes("burglary"), 0.001).
  31. pBase(yes("lightning"), 0.9).
  32. p(yes("sensor"), [yes("burglary"), yes("lightning")], 0.9).
  33. p(yes("sensor"), [yes("burglary"), not("lightning")], 0.9).
  34. p(yes("sensor"), [not("burglary"), yes("lightning")], 0.1).
  35. p(yes("sensor"), [not("burglary"), not("lightning")], 0.001).
  36. p(yes("call"), [yes("sensor")], 0.95).
  37. p(yes("call"), [not("sensor")], 0.001).
  38. p(yes("alarm"), [yes("sensor")], 0.9).
  39. p(yes("alarm"), [not("sensor")], 0).
  40. % Интерпретатор Байесовских сетей доверия.
  41. prob([], _, 1) :- !.
  42. prob([X|Xs], Cond, P) :- !,
  43. prob1(X, Cond, Px),
  44. prob(Xs, [X|Cond], PRest),
  45. P=Px*PRest.
  46. prob1(X, Cond, 1) :- member (X, Cond), !.
  47. prob1(yes(X), Cond, 0) :- member (not(X), Cond), !.
  48. prob1(not(X), Cond, P) :- prob1(yes(X), Cond, P0), P=1-P0.
  49. prob1(X, Cond0, P) :-
  50. delete(Y, Cond0, Cond),
  51. predecessor(X, Y), !,
  52. prob1(X, Cond, Px),
  53. prob1(Y, [X|Cond], PyGivenX),
  54. prob1(Y, Cond, Py),
  55. P=Px*PyGivenX/Py.
  56. prob1(X, _, P) :- pBase(X, P), !.
  57. prob1(X, Cond, P) :- !,
  58. findall(cp(Condi, Pi), p(X, Condi, Pi), CPList),
  59. sum_probs(CPList, Cond, P).
  60. sum_probs([], _, 0).
  61. sum_probs([cp(Cond1, P1)|CondsProbs], Cond, P) :-
  62. prob(Cond1, Cond, PC1),
  63. sum_probs(CondsProbs, Cond, PRest),
  64. P=P1*PC1+PRest.
  65. predecessor(yes(X), not(Y)) :- !, predecessor(yes(X), yes(Y)).
  66. predecessor(X, Y) :- parent(X, Y).
  67. predecessor(X, Z) :- parent(X, Y), predecessor(Y, Z).
  68. member(X, [X|_]).
  69. member(X, [_|L]) :- member(X, L).
  70. delete(X, [X|L], L).
  71. delete(X, [Y|L], [Y|L2]) :- delete(X, L, L2).
  72. /*
  73. Пример вызова по Братко: prob([yes("burglary")], [yes("alarm"), not("lightning")], P).
  74. Ответ: P=0.473934
  75. */
  76. clauses
  77. run():-
  78. console::init(),
  79. prob([yes("burglary")], [yes("alarm"), not("lightning")], P),
  80. console::write("P = ", P),!, _=console::readchar(),
  81. succeed(). % place your own code here
  82. run().
  83. end implement bayesNet
  84. goal
  85. mainExe::run(bayesNet::run).

Решение задачи: «В какой среде запустить этот программный код?»

textual
Листинг программы
  1. constants
  2.     className = "bayesNet".
  3.     classVersion = "".
  4.  
  5. clauses
  6.     classInfo(className, classVersion).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы