prolog - Problog 中的互斥性
问题描述
我们有
- 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)
Where the total weight will be 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 defined 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
我正在使用在线 Problog 编辑器来测试我的代码。这是链接。
我试图在 Problog 而不是 Prolog 中做到这一点,所以语法是不同的。
现在在答案的帮助下,我克服了一些问题,我仍然遇到的问题;
- 我无法应用概率
- 我无法应用条件(每个存储空间一次只能装一个唯一的盒子。但
B5
有一个特殊条件,允许同时在多个存储空间中使用。)
提前谢谢你。