我们有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
我正在使用在线Problog编辑器来测试我的代码。你可以在下面找到链接,
https://dtai.cs.kuleuven.be/problog/editor.html
我试图在Problog而不是Prolog中进行,因此语法不同。
现在,在答案的帮助下,我克服了一些问题,我仍然遇到的问题;
提前谢谢你。