1

clingo3 のロジック プログラムに最適化ステートメントがあります。

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

(基本的に、ソリューションには上記のものをできるだけ少なくしたいと考えています-それらはすべて同じ重量です)。

この構文は clingo3 では機能しますが、clingo4 では機能しません。clingo4 用にどのように書き直す必要がありますか?

4

1 に答える 1

0

これはどう:

#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 になり (少なくとも 1 回は発生すると思います)、2 番目のアトムの優先度が高くなります。

または、変数がある場合は、次のようにさまざまな根拠の数を優先します。

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

于 2015-05-29T12:50:55.920 に答える