【问题标题】:How to set mutually exclusive probabilities in Problog?如何在 Problog 中设置互斥概率?
【发布时间】:2019-11-16 01:30:20
【问题描述】:

X 的人可以是 inpatientoutpatient。 鉴于location(X,outpatient) 的事实,Problog 如何推断location(X,inpatient) 的概率为0?

例如我想要一个副作用:

person(1).
location(1,inpatient).
dependent(1,opioids).
receive(1,clonidine).
query(detoxification(1,opioids,success)).

推断location(1,outpatient) 的概率为零。

如果我写location(X,outpatient);location(X,inpatient).,所有查询都以 1 的概率返回。

如果我写P::location(X,outpatient);(1-P)::location(X,inpatient). 会出错,因为我没有为P 指定值。如果我为 P 指定一个值,则该值永远不会更新(正如预期的那样,因为 Prolog 将变量视为代数变量,并且我没有告诉 Problog 更新P

如果我写location(X,outpatient) :- \+ location(X,inpatient). 我会创建一个负循环,如果我要指定反向目标,我必须这样做。

【问题讨论】:

    标签: prolog logic probability


    【解决方案1】:

    一个解决方案:

    P::property(X,location,inpatient);(1-P)::property(X,location, outpatient) :- 
        inpatient(X),
        P is 1. 
    
    P::property(X,location,outpatient);(1-P)::property(X,location, inpatient) :- 
        outpatient(X),
        P is 1. 
    
    P::inpatient(X);(1-P)::outpatient(X) :- 
        property(X,location,inpatient),
        P is 1.
    
    P::outpatient(X);(1-P)::inpatient(X) :-
        property(X,location,outpatient),
        P is 1. 
    

    这会将inpatient/1 绑定到property/3,以获取location 的属性值inpatient

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 2016-01-28
      • 2014-02-17
      • 2013-04-28
      相关资源
      最近更新 更多