【问题标题】:Differences in optimization statement syntax (clingo 3 and clingo 4)优化语句语法的差异(cligo 3 和 cligo 4)
【发布时间】:2015-05-28 19:47:17
【问题描述】:

我在一个逻辑程序中有一个优化语句,用于 cligo3:

#minimize [ batteryFlat(mycar)=1, batteryFlat(yourcar)=1, hasNoFuel(mycar)=1, 
    hasNoFuel(yourcar)=1, brokenIndicator(mycar)=1, brokenIndicator(yourcar)=1].

(基本上,我希望解决方案包含尽可能少的上述内容 - 它们的权重都相同)。

此语法适用于 cligo3,但不适用于 cligo4。 cligo4应该如何重写?

【问题讨论】:

    标签: answer-set-programming clingo


    【解决方案1】:

    这个怎么样:

    #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)}.
    

    现在第一个原子的优先级为 1(我认为至少出现一次),第二个原子的优先级更高。

    或者,如果您有变量,请优先考虑不同接地的数量,如下所示:

    #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/

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多