Este projeto é uma demonstração do uso das faixas da biblioteca de planejamento automatizado de inteligência artificial, em node.js.
Experimente online em https://stripsfiddle.meteorapp.com
npm install strips
Se você é novo no planejamento automatizado STRIPS, aqui está um ótimo tutorial para você começar.
Os exemplos a seguir mostram como resolver problemas de planejamento identificando o conjunto ideal de ações para atingir uma meta. Por exemplo, empilhar blocos, Torres de Hanói e até mesmo Starcraft podem ser resolvidos pela IA (veja abaixo, é muito legal!).
Vários exemplos do domínio Blocks World estão incluídos neste projeto, nos quais a IA é capaz de planejar com sucesso a série de etapas para mover e empilhar blocos em uma série de tabelas.
O planejamento de IA funciona processando um domínio simples usando uma planilha de gramática PEG.js e executando o resultado usando um problema STRIPS simples.
Os arquivos PDDL de domínio e problema são analisados via PEG.js, produzindo um objeto JSON para um determinado domínio. O JSON é então processado para identificar ações aplicáveis dentro de um determinado estado do problema. As ações são então aplicadas ao estado atual, produzindo um novo conjunto de estados. Este processo é repetido, onde as ações aplicáveis são identificadas para os novos estados, aplicadas e outros novos estados produzidos. A árvore resultante de possíveis estados e ações pode então ser percorrida usando o algoritmo A* para localizar um conjunto ideal de etapas para atingir o estado objetivo, conforme especificado no problema.
Domínio | Problema Mova os blocos a, b da tabela x para a tabela y. Vários blocos são permitidos em uma mesa. A única ação disponível é “mover”.
Domínio | Problema Move os blocos a, b da tabela x para uma pilha ab na tabela y. Vários blocos são permitidos em uma mesa. As ações disponíveis incluem "mover", "empilhar" e "desempilhar".
Domínio | Problema Desempilha blocos ba da tabela x para uma pilha ab na tabela y. Vários blocos são permitidos em uma mesa. As ações disponíveis incluem "mover", "empilhar" e "desempilhar".
Domínio | Problema O divertido! Desempilhar blocos ba da mesa 1 para uma pilha ab na mesa 3. Apenas um bloco ou pilha é permitido em uma mesa. A IA precisa planejar a movimentação temporária de um bloco para a mesa 2, enquanto configura a ordem correta de empilhamento na mesa 3. As ações disponíveis incluem "mover", "empilhar" e "desempilhar".
Os blocos são empilhados na mesa 1. O objetivo é empilhá-los na mesa 2. Apenas um bloco ou pilha é permitido por mesa. Aqui estão as soluções.
*** 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
Aqui está a solução da IA para a anomalia Blocks World Sussman.
*** Solution found in 3 steps!
1. unstack2 c a x
2. stack2 b c x
3. stack3 a b c x
Agora, para se divertir. Aqui está o domínio Starcraft. A tarefa era construir um quartel. Originalmente, eu queria construir um Battlecruiser, mas isso estava demorando muito (sem uma pesquisa heurística!).
*** 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
Um passo adiante, aqui está a solução da IA para treinar um fuzileiro naval.
- 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