我在一个逻辑程序中有一个优化语句,用于clingo3:
#minimize [ batteryFlat(mycar)=1, batteryFlat(yourcar)=1, hasNoFuel(mycar)=1,
hasNoFuel(yourcar)=1, brokenIndicator(mycar)=1, brokenIndicator(yourcar)=1].(基本上,我希望解决方案包含尽可能少的上述内容-它们都具有相同的权重)。
此语法适用于clingo3,但不适用于clingo4。应该如何为clingo4重新编写?
发布于 2015-05-29 12:50:55
这个怎么样:
#minimize {batteryFlat(mycar); batteryFlat(yourcar); hasNoFuel(mycar);
hasNoFuel(yourcar); brokenIndicator(mycar); brokenIndicator(yourcar)}.集合现在与;,然后您可以使用,以连接条件。每个元素都有相同的优先级,但是如果您想要不同的优先级,您可以这样做:
#minimize {1@1: batteryFlat(mycar); 1@2: batteryFlat(yourcar); hasNoFuel(mycar);
hasNoFuel(yourcar); brokenIndicator(mycar); brokenIndicator(yourcar)}.现在第一个原子有优先级一个(我认为至少有一个),第二个原子有一个更高的优先级。
或者,如果有变量,那么优先考虑不同背景的数量,如下所示:
#minimize {X@1: batteryFlat(X); 1@2: batteryFlat(yourcar); hasNoFuel(mycar);
hasNoFuel(yourcar); brokenIndicator(mycar); brokenIndicator(yourcar)}.下面显示了比较:http://sourceforge.net/projects/potassco/files/clingo/4.2.0/
https://stackoverflow.com/questions/30515834
复制相似问题