私は、STRIPS 形式で与えられた AI 計画の表現に関するいくつかの資料を検討しており、さまざまな人が同じ問題をさまざまな方法で定式化しているように見えることがわかりました。
たとえば、ウィキペディアには、実験室でのサルの問題に関する例があります。問題は次のように述べています。
サルが天井からぶら下がっているバナナに登ると、サルがバナナに到達できるようにするボックスが用意されています。最初は、サルはA、バナナはB、ボックスはCです。サルとボックスの高さは低ですが、サルがボックスに登ると、バナナと同じ高さになります。サルが利用できるアクションには、ある場所から別の場所への移動、ある場所から別の場所へのオブジェクトのプッシュ、オブジェクトへの ClimbUp または ClimbDown、およびオブジェクトの Grasp または UnGrasp が含まれます。サルと物体が同じ高さの同じ場所にある場合、物体をつかむことは物体を保持することになります。
これがウィキペディアの計画です (この問題の説明と正確には一致していませんが、同じ問題であることに注意してください。Ungrasp を実装していないようです。これはこの議論では重要ではありません)。
この計画のどこにもバナナがレベル (高) にあることがわかりません。したがって、これを実際に計画から明らかにする唯一の方法は、アクションのセット全体を読み、そこからモンキーがバナナと対話するには Level(high) にあるため、バナナは Level(high) にある必要があります。
この情報を初期状態に置き、次のようにすることをお勧めします。
サル(m) & バナナ(ba) & ボックス(bx) & レベル(低) & レベル(高) & 位置(A) & 位置(B) & 位置(C) & At(m, A, low) & At (ba, B, 高) & At(bx, C, 低)
このように非常に冗長に見えますが、同時に、読者は初期状態を読むだけでシナリオを理解できます。また、STRIPS のどこにも定数を使用すべきではないと言われたので、A、B、および C を位置として宣言するのは良い考えだと思いました。
一部の人々が別の方法でそれを行うのでしょうか (標準化された言語で物事を表現するという考えが台無しになると思います)、それとも私が提示した方法の 1 つが正しい形式ではないのでしょうか? 私は STRIPS を初めて使用するので、いくつかの重要なポイントが欠けている可能性が十分にあります (そしてその可能性が高いです)。