Planejamento de Presença DigitalPalestra planejamento de presença digital
Planejamento
description
Transcript of Planejamento
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
AC
B
1 2 3 4
A
CB
1 2 3 4
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
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)1. Pré-condição - condição que deve ser satisfeita para aplicar a
ação
pode(Ação, Condição)
2. Lista de adições - relacionamentos que a ação estabelece
adições(Ação, ListaAdições)
3. 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
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
Definição do Espaço de Planejamento em Prolog
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) ] ).
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
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).
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).