Download
planejamento n.
Skip this Video
Loading SlideShow in 5 Seconds..
Planejamento PowerPoint Presentation
Download Presentation
Planejamento

Planejamento

88 Vues Download Presentation
Télécharger la présentation

Planejamento

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Planejamento A C B B C A • 2 3 4 • 2 3 4 • Objetivo Raciocinar sobre: • os efeitos de ações; • o seqüenciamento de ações para atingir um efeito cumulativo desejado. • Exemplo de uma Tarefa no Mundo dos Blocos As ações alteram o estado corrente do “mundo” localmente. Uma boa representação deve levar em conta esta “localidade” do efeito das ações. Estado Lista de relacionamentos correntemente verdadeiros

  2. Planejamento: Representação dos Estados e Ações • Sintaxe da descrição de um estado: [ <relacionamento 1>, <relacionamento 2>, . . . , <relacionamento n> ] • Relações para o mundo dos blocos: sobre(Bloco, Objeto) Objeto: bloco ou lugar livre(Objeto) • Descrição do Estado Inicial: [ sobre(a,1), sobre(c,a), livre(c), livre(2), sobre(b,3), livre(b), livre(4) ] • Definição das Ações: mova(Bloco, De, Para) • Pré-condição - condição que deve ser satisfeita para aplicar a ação pode(Ação, Condição) • Lista de adições - relacionamentos que a ação estabelece adições(Ação, ListaAdições) • Lista de remoções - relacionamentos que a ação destrói remoções(Ação, ListaRemoções)

  3. Definição do Espaço de Planejamento em Prolog pode( mova( Bloco, De, Para), [ livre( Bloco), livre( Para), sobre( Bloco, De)] ) :- é_bloco( Bloco), % Bloco a ser movido objeto( Para), % "Para" é um Bloco ou um lugar Para \== Bloco, % Bloco não pode ser movido para si próprio objeto( De), % "De" é um Bloco ou um lugar De \== Para, % O movimento deve ser feito para uma nova posição Bloco \== De. % Bloco não pode ser movido de si próprio adições( mova(X,De,Para), [ sobre(X,Para), livre(De)]). remoções( mova(X,De,Para), [ sobre(X,De), livre(Para)]). objeto( X) :- % X é um objeto se lugar( X) % X é um lugar ; % ou é_bloco( X). % X é um bloco

  4. Definição do Espaço de Planej. em Prolog – Cont. é_bloco( a). é_bloco( b). é_bloco( c). lugar( 1). lugar( 2). lugar( 3). lugar( 4). % Um estado no mundo dos blocos % % c % a b % = = = = % lugar 1 2 3 4 estado1( [ livre(2), livre(4), livre(b), livre(c), sobre(a,1), sobre(b,3), sobre(c,a) ] ).

  5. Análise Meios-Fins: Implementação em Prolog 1 % planeja( Estado, Objetivos, Plano, EstadoFinal) planeja( Estado, Objetivos, [], Estado) :- % Plano está vazio satisfeito( Estado, Objetivos). % Objetivos satisfeitos em Estado planeja( Estado, Objetivos, Plano, EstadoFinal) :- conc( PréPlano, [Ação | PostPlano], Plano), % Divide plano seleciona( Estado, Objetivos, Objetivo), % Seleciona um Objetivo atinge( Ação, Objetivo), % Ação relevante pode( Ação, Condição), planeja( Estado, Condição, PréPlano, EstadoIntermediário1), % Permite Ação aplica( EstadoIntermediário1, Ação, EstadoIntermediário2), % Aplica Ação planeja( EstadoIntermediário2, Objetivos, PostPlano, EstadoFinal). % Atinge % objetivos % restantes

  6. Análise Meios-Fins: Implementação em Prolog 2 % satisfeito( Estado, Objetivos): Objetivos são válidos no Estado satisfeito( Estado, []). satisfeito( Estado, [Objetivo | Objetivos]) :- member( Objetivo, Estado), satisfeito( Estado, Objetivos). seleciona( Estado, Objetivos, Objetivo) :- member( Objetivo, Objetivos), not member( Objetivo, Estado). % Objetivo ainda não satisfeito % atinge( Ação, Objetivo): Objetivo são as adições da Ação  atinge( Ação, Objetivo) :- adições( Ação, Objetivos), member( Objetivo, Objetivos).

  7. Análise Meios-Fins: Implementação em Prolog 3 % aplica( Estado, Ação, NovoEstado): Ação executada em Estado produz NovoEstado  aplica( Estado, Ação, NovoEstado) :- remoções( Ação, ListaRemoções), removeTodas( Estado, ListaRemoções, Estado1), !, adições( Ação, ListaAdições), conc( ListaAdições, Estado1, NovoEstado). % removeTodas( L1, L2, Diferenças) se Diferenças são as diferenças de L1 e L2 removeTodas( [], _, []). removeTodas( [X | L1], L2, Diferenças) :- member( X, L2), !, removeTodas( L1, L2, Diferenças). removeTodas( [X | L1], L2, [X | Diferenças]) :- removeTodas( L1, L2, Diferenças).