Proyek ini adalah demo penggunaan strip perpustakaan perencanaan otomatis kecerdasan buatan, di node.js.
Cobalah online di https://stripsfiddle.meteorapp.com
npm install strips
Jika Anda baru mengenal perencanaan otomatis STRIPS, berikut adalah tutorial bagus untuk Anda mulai.
Contoh berikut menunjukkan bagaimana menyelesaikan masalah perencanaan dengan mengidentifikasi serangkaian tindakan optimal untuk mencapai suatu tujuan. Misalnya, tumpukan balok, Menara Hanoi, dan bahkan Starcraft dapat diselesaikan dengan AI (lihat di bawah, cukup rapi!).
Beberapa contoh dari domain Blocks World disertakan dalam proyek ini, di mana AI berhasil merencanakan serangkaian langkah untuk memindahkan dan menumpuk blok pada serangkaian tabel.
Perencanaan AI bekerja dengan memproses domain sederhana menggunakan lembar tata bahasa PEG.js dan menjalankan hasilnya menggunakan masalah STRIPS sederhana.
File PDDL domain dan masalah diurai melalui PEG.js, menghasilkan objek JSON untuk domain tertentu. JSON kemudian diproses untuk mengidentifikasi tindakan yang dapat diterapkan dalam kondisi masalah tertentu. Tindakan tersebut kemudian diterapkan pada keadaan saat ini, menghasilkan serangkaian keadaan baru. Proses ini diulangi, dimana tindakan yang dapat diterapkan diidentifikasi untuk negara bagian baru, diterapkan, dan selanjutnya negara bagian baru diproduksi. Pohon kemungkinan keadaan dan tindakan yang dihasilkan kemudian dapat dilintasi menggunakan algoritma A* untuk menemukan serangkaian langkah optimal untuk mencapai keadaan tujuan, seperti yang ditentukan dalam masalah.
Domain | Soal Pindahkan blok a,b dari tabel x ke tabel y. Beberapa blok diperbolehkan di atas meja. Satu-satunya tindakan yang tersedia adalah "bergerak".
Domain | Soal Memindahkan blok a,b dari tabel x ke tumpukan ab pada tabel y. Beberapa blok diperbolehkan di atas meja. Tindakan yang tersedia mencakup "pindah", "tumpukan", dan "lepaskan".
Domain | Masalah Unstacks memblokir ba dari tabel x ke tumpukan ab di tabel y. Beberapa blok diperbolehkan di atas meja. Tindakan yang tersedia mencakup "pindah", "tumpukan", dan "lepaskan".
Domain | Masalah Yang menyenangkan! Hapus tumpukan blok ba dari tabel 1 ke tumpukan ab pada tabel 3. Hanya satu blok atau tumpukan yang diperbolehkan di atas meja. AI perlu merencanakan untuk memindahkan blok sementara ke tabel 2, sementara AI menyiapkan urutan penumpukan yang benar di tabel 3. Tindakan yang tersedia termasuk "memindahkan", "menumpuk", dan "membatalkan tumpukan".
Blok ditumpuk ab pada tabel 1. Tujuannya adalah untuk menumpuknya ab pada tabel 2. Hanya satu blok atau tumpukan yang diperbolehkan per tabel. Inilah solusinya.
*** 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
Inilah solusi AI untuk Anomali Blocks World Sussman.
*** Solution found in 3 steps!
1. unstack2 c a x
2. stack2 b c x
3. stack3 a b c x
Sekarang, untuk bersenang-senang. Ini domain Starcraft. Tugasnya adalah membangun barak. Saya awalnya ingin membuat Battlecruiser, tapi itu memakan waktu terlalu lama (tanpa pencarian heuristik!).
*** 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
Selangkah lebih maju, inilah solusi AI untuk melatih marinir.
- 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
MIT
Kory Becker http://www.primaryobjects.com/kory-becker