このプロジェクトは、node.js で人工知能の自動計画ライブラリ ストリップを使用するデモです。
https://stripsfiddle.meteorapp.com でオンラインで試してみてください
npm install strips
STRIPS の自動計画を初めて使用する場合は、開始するための優れたチュートリアルを参照してください。
次の例は、目標を達成するための最適な一連のアクションを特定することによって、計画の問題を解決する方法を示しています。たとえば、積み上げブロック、ハノイの塔、さらにはスタークラフトさえも AI によって解決できます (以下を参照。非常に優れています!)。
このプロジェクトには、Blocks World ドメインのいくつかの例が含まれており、AI は一連のテーブル上でブロックを移動および積み重ねる一連のステップを適切に計画できます。
AI 計画は、PEG.js 文法シートを使用して単純なドメインを処理することによって機能し、単純な STRIPS 問題を使用して結果を実行します。
ドメインと問題の PDDL ファイルは PEG.js 経由で解析され、特定のドメインの JSON オブジェクトが生成されます。次に、JSON が処理されて、問題の特定の状態内で適用可能なアクションが特定されます。次に、アクションが現在の状態に適用され、新しい状態のセットが生成されます。このプロセスが繰り返され、新しい状態に対して適用可能なアクションが特定され、適用され、さらに新しい状態が生成されます。結果として得られる可能な状態とアクションのツリーは、A* アルゴリズムを使用して走査され、問題で指定されている目標状態を達成するための最適なステップのセットが特定されます。
ドメイン |問題 ブロック a、b をテーブル x からテーブル y に移動します。テーブル上では複数のブロックが許可されます。使用できるアクションは「移動」のみです。
ドメイン |問題 ブロック a、b をテーブル x からテーブル y のスタック ab に移動します。テーブル上では複数のブロックが許可されます。利用可能なアクションには、「移動」、「スタック」、「アンスタック」などがあります。
ドメイン |問題 ブロック ba をテーブル x からテーブル y のスタック ab にアンスタックします。テーブル上では複数のブロックが許可されます。利用可能なアクションには、「移動」、「スタック」、「アンスタック」などがあります。
ドメイン |問題は楽しいです!テーブル 1 のブロック ba をテーブル 3 のスタック ab にアンスタックします。テーブル上では 1 つのブロックまたはスタックのみが許可されます。 AI は、ブロックをテーブル 2 に一時的に移動する計画を立てる必要がありますが、同時にテーブル 3 に積み重ねる正しい順序を設定します。利用可能なアクションには、「移動」、「積み重ね」、「積み重ね解除」などがあります。
ブロックはテーブル 1 の ab にスタックされます。目標は、ブロックをテーブル 2 の ab にスタックすることです。テーブルごとに 1 つのブロックまたはスタックのみが許可されます。解決策は次のとおりです。
*** Solution found in 6 steps!
1. unstack a b t1 t2
2. move b t1 t3
3. move a t2 t1
4. move b t3 t2
5. move a t1 t3
6. stack a t3 b t2
*** Solution found in 5 steps!
1. unstack a b t1 t2
2. move b t1 t3
3. move a t2 t1
4. move b t3 t2
5. stack a t1 b t2
*** Solution found in 5 steps!
1. unstack a b t1 t2
2. move a t2 t3
3. move b t1 t2
4. move a t3 t1
5. stack a t1 b t2
*** Solution found in 4 steps!
1. unstack a b t1 t2
2. move a t2 t3
3. move b t1 t2
4. stack a t3 b t2
*** Solution found in 4 steps!
1. unstack a b t1 t3
2. move b t1 t2
3. move a t3 t1
4. stack a t1 b t2
*** Solution found in 3 steps!
1. unstack a b t1 t3
2. move b t1 t2
3. stack a t3 b t2
Blocks World Sussman Anomaly に対する AI の解決策は次のとおりです。
*** Solution found in 3 steps!
1. unstack2 c a x
2. stack2 b c x
3. stack3 a b c x
さて、ちょっとしたお楽しみです。こちらがStarcraftドメインです。任務は兵舎を建設することでした。もともと巡洋戦艦を作りたかったのですが、時間がかかりすぎました (ヒューリスティック検索なしで!)。
*** Solution found in 8 steps!
1. move scv sector-a mineral-field-b
2. collect-minerals scv mineral-field-b
3. move scv mineral-field-b sector-b
4. build-supply-depot scv sector-b
5. move scv sector-b mineral-field-a
6. collect-minerals scv mineral-field-a
7. move scv mineral-field-a sector-a
8. build-barracks scv sector-a sector-b
さらに一歩進んで、海兵隊員を訓練するための AI のソリューションがここにあります。
- Solution found in 11 steps!
1. move scv sector-a mineral-field-a
2. collect-minerals scv mineral-field-a
3. move scv mineral-field-a sector-b
4. build-supply-depot scv sector-b
5. move scv sector-b mineral-field-b
6. collect-minerals scv mineral-field-b
7. move scv mineral-field-b sector-a
8. build-barracks scv sector-a sector-b
9. move scv sector-a mineral-field-c
10. collect-minerals scv mineral-field-c
11. train-marine scv sector-a
マサチューセッツ工科大学
コリー・ベッカー http://www.primaryobjects.com/kory-becker