优化语句语法的差异(clingo 3 和 clingo 4)
Differences in optimization statement syntax (clingo 3 and clingo 4)
我在逻辑程序中有一个优化语句,对于 clingo3:
#minimize [ batteryFlat(mycar)=1, batteryFlat(yourcar)=1, hasNoFuel(mycar)=1,
hasNoFuel(yourcar)=1, brokenIndicator(mycar)=1, brokenIndicator(yourcar)=1].
(基本上,我希望解决方案包含尽可能少的上述内容 - 它们都是同等权重的)。
此语法适用于 clingo3,但不适用于 clingo4。 clingo4应该怎么重写?
这个怎么样:
#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/
我在逻辑程序中有一个优化语句,对于 clingo3:
#minimize [ batteryFlat(mycar)=1, batteryFlat(yourcar)=1, hasNoFuel(mycar)=1,
hasNoFuel(yourcar)=1, brokenIndicator(mycar)=1, brokenIndicator(yourcar)=1].
(基本上,我希望解决方案包含尽可能少的上述内容 - 它们都是同等权重的)。
此语法适用于 clingo3,但不适用于 clingo4。 clingo4应该怎么重写?
这个怎么样:
#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/