Взаимно эксклюзивность в Проблоге - PullRequest
0 голосов
/ 01 мая 2018

У нас есть 4 разных места для хранения,

и у нас есть 5 разных ящиков (названных b1, b2, b3, b4, b5), которые они хотели поместить в это пространство хранения. Каждое место для хранения может быть заполнено только одной уникальной коробкой за раз. Но у B5 есть специальное условие, которое позволяет использовать его одновременно в нескольких местах хранения.

Каждому ящику соответствует удельный вес (b1 = 4, b2 = 6, b3 = 5, b4 = 6, b5 = 5).

Каждая ячейка имеет определенную вероятность заполнения в области памяти (b1 = 1, b2 = 0,6, b3 = 1, b4 = 0,8, b5 = 1).

Мы пытаемся получить вероятное содержание областей памяти и их вероятности, если общий вес равен 22.! (который мы будем использовать в качестве механизма доказательства)

"

Например: SS1 - b2 (6) SS2 - b5 (5) SS3 - b4 (6) SS4 - b5 (5) (который будет иметь общий вес 22)

И вероятность этого содержания.

В моем коде ниже я получаю ответ для одного из вероятного содержимого как totalboxweight (b2, b5, b4, b5,22), что для меня нормально, это означает, что первое поле «b2» находится в первом пространстве памяти ». b5 "находится во втором хранилище и т. д.

"

Вот мой код, я также добавляю комментарии, чтобы объяснить мои намерения

но мне нужна помощь, чтобы обновить его, добавить вероятности и применить некоторые условия, о которых я говорил.

box(b1,4).
box(b2,6).
box(b3,5).
box(b4,6).
box(b5,5).    % I tried to define the boxes but I dont know how to assign probabilites to them in this format


total(D1,D2,D3,D4,Sum) :- Sum is D1+D2+D3+D4. % I defined the sum calculation

totalboxweight(A,B,C,D,Sum) :- box(A,D1), box(B,D2) , box(C,D3), box(D,D4), total(D1,D2,D3,D4,Sum). % I am sum up all weights

sumtotal(Sum) :- box(A,D1), box(B,D2) , box(C,D3), box(D,D4), total(D1,D2,D3,D4,Sum). % I difined this one to use it as an evidence

evidence(sumtotal(22),true). % if we know the total weight is 22 

query(totalboxweight(D1,D2,D3,D4,22)). % what is the probable content

Я использую онлайн-редактор проблогов для проверки своего кода. Вы можете найти ссылку ниже,

https://dtai.cs.kuleuven.be/problog/editor.html

И я пытаюсь сделать это в Проблоге, а не в Прологе, поэтому синтаксис другой.

некоторые результаты кода

Прямо сейчас с помощью ответов я преодолеваю некоторые проблемы, проблемы, которые у меня все еще есть;

  • Я не могу применить вероятности
  • Я не смог применить условие (Каждое пространство хранения может быть заполнено только одной уникальной коробкой за раз. Но у B5 есть специальное условие, которое позволяет использовать его одновременно в нескольких пространствах хранения.)

Заранее спасибо.

...