У нас есть 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 есть специальное условие, которое позволяет использовать его одновременно в нескольких пространствах хранения.)
Заранее спасибо.