A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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 Planejamento A C B 12 3 4 A C B 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 Sintaxe da descrição de um estado: [,,..., ] 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) 1.Pré-condição - condição que deve ser satisfeita para aplicar a ação pode(Ação, Condição) 1.Lista de adições - relacionamentos que a ação estabelece adições(Ação, ListaAdições) 1.Lista de remoções - relacionamentos que a ação destrói remoções(Ação, ListaRemoções) Planejamento: Representação dos Estados e Ações

3 pode( mova( Bloco, De, Para), [ livre( Bloco), livre( Para), sobre( Bloco, De)] ) :- é_bloco( Bloco), % Bloco a ser movido é_bloco( Bloco), % Bloco a ser movido objeto( Para), % "Para" é um Bloco ou um lugar objeto( Para), % "Para" é um Bloco ou um lugar Para \== Bloco, % Bloco não pode ser movido para si próprio Para \== Bloco, % Bloco não pode ser movido para si próprio objeto( De), % "De" é um Bloco ou um lugar objeto( De), % "De" é um Bloco ou um lugar De \== Para, % O movimento deve ser feito para uma nova posição De \== Para, % O movimento deve ser feito para uma nova posição Bloco \== De. % Bloco não pode ser movido de si próprio 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 Definição do Espaço de Planejamento em Prolog

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).


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google