如果原子不存在则回退到默认值

问题描述 投票:0回答:1

这里是 ASP 初学者 :) 当输入中未提供原子时,我需要为原子定义一个默认值。

% creating rooms
cost(create(room(R)), W) :- room(R), roomDomainNew(R), roomCost(W).

在这里,如果

roomCost(W)
未定义,我想回退到
roomCost(0)
零成本。我该怎么做?

当输入有自己的

roomCost(0)
时定义
roomCost
会导致两者共存。

roomCost(0).
roomCost(5).

在其他语言中,我可以这样做:

finalRoomCost = 0
if roomCost:
    finalRoomCost = roomCost

然后我就可以使用

finalRoomCost
。这里可以吗?

logic answer-set-programming clingo gringo
1个回答
0
投票

相关答案here,它说这种可变性是不可能的。

在 ASP 中,真值不会随时间变化,对于特定的答案集,原子是

true
false
,它们不能被覆盖。

所以这是我使用

#max
指令的解决方案:

roomCost(0).
finalroomCost(W) :- roomCost(0), #max {X, 1 : roomCost(X)} = W.
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.