首页 > 解决方案 > Problog 中的互斥性

问题描述

我们有

每个存储空间一次只能装一个独特的盒子。*但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 中做到这一点,所以语法是不同的。

代码的一些结果

现在在答案的帮助下,我克服了一些问题,我仍然遇到的问题;

提前谢谢你。

标签: prologprobabilitymutual-exclusion

解决方案


推荐阅读