desenvolvimento de um algoritmo para problema de...

37
UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CI ˆ ENCIAS EXATAS E NATURAIS CURSO DE CI ˆ ENCIAS DA COMPUTAC ¸ ˜ AO – BACHARELADO DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC ¸ ˜ AO DE RESTRIC ¸ ˜ AO DISTRIBU ´ IDA DANIEL MOSER TRALAMAZZA BLUMENAU 2004 2004/I-6

Upload: others

Post on 23-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

UNIVERSIDADE REGIONAL DE BLUMENAU

CENTRO DE CIENCIAS EXATAS E NATURAIS

CURSO DE CIENCIAS DA COMPUTACAO – BACHARELADO

DESENVOLVIMENTO DE UM ALGORITMO

PARA PROBLEMA DE SATISFACAO DE

RESTRICAO DISTRIBUIDA

DANIEL MOSER TRALAMAZZA

BLUMENAU2004

2004/I-6

Page 2: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

DANIEL MOSER TRALAMAZZA

DESENVOLVIMENTO DE UM ALGORITMO

PARA PROBLEMA DE SATISFACAO DE

RESTRICAO DISTRIBUIDA

Trabalho de Conclusao de Curso submetidoa Universidade Regional de Blumenau para aobtencao dos creditos na disciplina Trabalhode Conclusao de Curso II do curso de Cienciada Computacao – Bacharelado.

Prof. Jomi Fred Hubner – Orientador

BLUMENAU2004

2004/I-6

Page 3: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

DESENVOLVIMENTO DE UM ALGORITMOPARA PROBLEMA DE SATISFACAO DE

RESTRICAO DISTRIBUIDA

Por

DANIEL MOSER TRALAMAZZA

Trabalho aprovado para obtencao doscreditos na disciplina de Trabalho de Con-clusao de Curso II, pela banca examinadoraformada por:

Presidente: Prof. Jomi Fred Hubner – Orientador, FURB

Membro: Prof. Paulo Cesar Rodacki Gomes, FURB

Membro: Prof. Claudio Loesch, FURB

BLUMENAU2004

Page 4: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

AGRADECIMENTOS

Agradeco meu orientador, minha famılia e namorada.

Page 5: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

RESUMO

Este trabalho esta inserido no contexto dos Distributed Constraint Satisfaction Problems(DCSP). DCSP sao problemas que podem ser caraterizados pela distribuicao geograficadas informacoes, normalmente representadas como restricoes sobre os valores que determi-nadas variaveis podem assumir e sua resolucao consiste em encontrar valores consistentespara estas variaveis. Existem varios algoritmos para sua resolucao, sendo que os primeirosforam propostos por Yokoo et al. (1992). Este trabalho especificou (utilizando Orientacaoa Objetos), implementou (em linguagem Java) e analisou empiricamente o algoritmo AWCproposto por Makoto. Os principais resultados sao: (i) o impacto do numero de maquinasno desempenho do algoritmo e (ii) a proposta de novas heurısticas para o AWC.

Palavras Chave: IA, CSP, DCSP, SMA, Sistemas distribuıdos.

Page 6: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

ABSTRACT

This work is concerned with Distributed Constraint Satisfaction Problems (DCSP).DCSP are problems that have their information geographicaly distributed. There infor-mation are normally represented as constraints over the values that variables can assume,the DCSP resolution consists of finding consistent values for its variables. There are se-veral algorithms for its resolution, the first were proposed by Yokoo et al. (1992). Thiswork has specified (using Object Orientation), implemented (in the Java language) andanalyzed the AWC algorithm proposed by Makoto. The main results are: (i) the impactof the number of machines in the performance of the algorithm and (ii) new heuristicsproposals for the AWC.

Key-Words: AI, CSP, DCSP, MAS, Distributed Systems.

Page 7: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

LISTA DE ILUSTRACOES

Figura 2.1 – Exemplo de coloracao de grafo. . . . . . . . . . . . . . . . . . . . . 14

Figura 2.2 – Problema das N-Rainhas, onde N=4. . . . . . . . . . . . . . . . . 14

Figura 2.3 – Exemplo de um laco de avaliacao. . . . . . . . . . . . . . . . . . . 16

Figura 2.4 – Ordenacao das variaveis do problema das 4 rainhas. . . . . . . . . 17

Figura 2.5 – Algoritmo ABT adaptado de Yokoo (2001). . . . . . . . . . . . . . 19

Figura 2.6 – Exemplo de ordenacao AWC. . . . . . . . . . . . . . . . . . . . . . 20

Figura 2.7 – Exemplo de ma escolha de valores. . . . . . . . . . . . . . . . . . . 20

Figura 2.8 – Algoritmo AWC adaptado de Yokoo (2001). . . . . . . . . . . . . . 21

Figura 3.1 – Pacotes do framework para DCSP. . . . . . . . . . . . . . . . . . . 24

Figura 3.2 – Interface de comunicacao. . . . . . . . . . . . . . . . . . . . . . . . 24

Figura 3.3 – Interface Console. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Figura 3.4 – Parametros de execucao. . . . . . . . . . . . . . . . . . . . . . . . 26

Figura 3.5 – Exemplo de execucao. . . . . . . . . . . . . . . . . . . . . . . . . . 27

Figura 3.6 – Monitor do SACI . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Figura 3.7 – Solucao encontrada utilizando circulating token. . . . . . . . . . . 29

Figura 3.8 – Classe base de um algoritmo distribuıdo. . . . . . . . . . . . . . . 30

Figura 3.9 – Classe para guardar a prioridade da variavel. . . . . . . . . . . . . 31

Figura 3.10 – Classe AWC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Figura 3.11 – Rotinas do AWC. . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Figura 3.12 – Tempo de execucao do AWC. . . . . . . . . . . . . . . . . . . . . . 34

Page 8: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

Figura 3.13 – Tempo de execucao do AWC e AWC+. . . . . . . . . . . . . . . . 35

Page 9: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

SUMARIO

1 Introducao 11

1.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.2 Estrutura do Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2 Revisao Bibliografica 13

2.1 Constraint Satisfaction Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2 Distributed Constraint Satisfaction Problem . . . . . . . . . . . . . . . . . . . 15

2.3 Asynchronous Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4 Asynchronous Weak Commitment . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.5 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Desenvolvimento 23

3.1 Visao Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.1.1 Pacote de Comunicacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.1.2 Pacote de Entrada e Saıda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.1.3 Pacote de Inicializacao e Controle . . . . . . . . . . . . . . . . . . . . . . . . 26

3.1.4 Deteccao de parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.1.5 Pacote de Algoritmos DCSP . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2 Especificacao do algoritmo AWC . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.3 Implementacao do AWC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.4 Proposta de melhorias para o AWC . . . . . . . . . . . . . . . . . . . . . . . . 32

Page 10: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.5 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.5.1 Dificuldades encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4 Conclusoes 36

4.1 Extensoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Referencias Bibliograficas 37

Page 11: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

11

1 INTRODUCAO

Um problema de satisfacao de restricoes, em ingles Constraint Satisfaction Problem

(CSP), e uma forma simples de se representar alguns problemas na Inteligencia Artificial

(IA). Os CSPs constituem uma classe de problemas que pode ser expressa por um con-

junto de variaveis ligadas por um conjunto de restricoes. As variaveis representam o

estado do problema e seus domınios podem ser finitos (enumeracoes) ou infinitos (con-

junto dos numeros inteiros, por exemplo). Uma restricao pode ser tanto uma simples

igualdade quanto uma formula matematica complexa e seu papel e de restringir o valor

das variaveis. A resolucao de um CSP consiste em encontrar e atribuir um valor para

cada variavel respeitando todas as restricoes impostas. Caso seja encontrado, este valor

e dito consistente.

Entretanto, em alguns casos, as informacoes que definem um CSP estao geogra-

ficamente distribuıdas, inviabilizando a utilizacao dos algoritmos tradicionais, que pres-

supoem que as informacoes possam ser centralizadas num determinado momento. A

solucao aparentemente obvia seria pedir para que todas as maquinas enviassem suas

variaveis e restricoes para um unico computador. Contudo esta solucao mostra-se inade-

quada pois o custo computacional necessario para isto poderia ser muito grande. Alem

disto, por motivos de seguranca ou de privacidade, certas aplicacoes nao podem permitir

que seus dados sejam transmitidos livremente por uma rede.

Tem-se entao uma nova classe de problemas chamada Distributed Constraint Satis-

faction Problem (DCSP). Em um DCSP, as variaveis e as restricoes estao distribuıdas em

multiplos agentes. Estes agentes podem estar em maquinas diferentes e utilizam uma rede

para se comunicar. O proposito basico do DCSP e considerar informacoes descentralizadas

e aumentar a eficiencia atraves do paralelismo.

Os primeiros algoritmos assıncronos completo para resolucao de DCSP foram de-

senvolvidos por Yokoo (2001) e sua equipe. Foram propostos tres algoritmos chamados

Asynchronous Backtracking (ABT), Asynchronous Weak Commitment (AWC) e Distri-

buted Breakout (DB). Analises preliminares apontaram algumas limitacoes destes algo-

ritmos:

a) nao se preocupam em detectar a parada;

b) manipulam apenas variaveis com domınios finitos;

Page 12: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

1.1 Objetivo 12

c) os agentes sao apenas reativos, nao aproveitando o estado ocioso entre perıodos

sem comunicacao;

d) a completude do algoritmo e obtida com um alto custo computacional.

As duas primeiras limitacoes foram apontadas pelo proprio autor, sendo a terceira

e quarta motivacao para o desenvolvimento deste trabalho que tera por objetivo ameniza-

las.

1.1 OBJETIVO

O objetivo deste trabalho e epecificar, implementar, avaliar e propor melhorias

para o algoritmo AWC inicialmente proposto por Yokoo (2001).

1.2 ESTRUTURA DO TEXTO

O capıtulo seguinte inicia com as definicoes basicas de CSP (secao 2.1) necessarias

para a compreensao dos DCSP (secao 2.2). Suas sessoes (secao 2.3 e secao 2.4) descrevem

os dois algoritmos de DCSP especificados por Yokoo (2001). O capıtulo 3 descreve como

o objetivo deste trabalho foi alcancado. Para isso e especificado detalhadamente a imple-

mentacao do AWC, as extensoes propostas e a avaliacao dos resultados conseguidos. Por

fim, o capıtulo de conclusao resume os resultados e aponta para trabalhos futuros.

Page 13: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

13

2 REVISAO BIBLIOGRAFICA

Yokoo e sua equipe, pioneiros na pesquisa sobre DCSP, desenvolveram tres algo-

ritmos capazes de solucionar um DCSP:

a) ABT, descrito na secao 2.3;

b) AWC, descrito na secao 2.4;

c) DB.

Estes algoritmos sao a principal fonte de inspiracao para este trabalho, dando-se

maior atencao aos dois primeiros. O terceiro (DB) possui caracterısticas muito diferen-

ciadas dos dois anteriores e por isso nao sera discutido. Para a melhor compreensao dos

algoritmos de resolucao de DCSP estudados neste trabalho, a secao seguinte define os

conceitos basicos sobre CSP.

2.1 CONSTRAINT SATISFACTION PROBLEM

Um CSP e formalmente definido por Tsang (1993):

a) um conjunto de variaveis x1, x2, ..., xn, cujos valores v1, v2, ..., vn pertencem a

domınios D1, D2, ..., Dn nao vazios;

b) um conjuto de restricoes C1, C2, ..., Cm sobre os valores.

Cada restricao afeta um subconjuto de variaveis, condicionando seus valores. Uma

atribuicao e dita consistente se esta nao violar nenhuma restricao. A solucao e encontrada

quando todas as variaveis possuirem um valor consistente (RUSSEL; NORVIG, 2003).

Este trabalho abordara principalmente CSP com variaveis de domınio finito e res-

tricoes contendo duas variaveis, tambem chamadas, restricoes binarias. Apesar da de-

finicao simples, varios problemas podem ser solucionados com CSP, como por exemplo,

alocacao de recursos, agendamento de tarefas, coloracao de grafos. De fato um CSP e

comumente representado como um grafo, onde os vertices sao as variaveis e as arestas as

restricoes, como exemplifica a fig. 2.1. A fig. 2.1 representa um CSP onde:

a) o conjunto de variaveis e {x1, x2, x3, x4} e todas possuem o mesmo domınio, que

no exemplo sao as cores D = {azul, verde, vermelho};b) o conjunto de restricoes e {x1 6= x3, x1 6= x4, x2 6= x4, x3 6= x4};c) um possıvel conjunto solucao e {x1 = azul, x2 = azul, x3 = verde, x4 =

Page 14: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.1 Constraint Satisfaction Problem 14

vermelho}.

X1 X2

X3 X4

Figura 2.1 - Exemplo de coloracao de grafo.

Um problema classico em CSP e o das N-Rainhas, que consite em posicionar um

numero N (N ≥ 4) de rainhas em um tabuleiro de xadrez de dimensao NxN sem que

nenhuma rainha ameasse outra. A fig. 2.2 ilustra um exemplo onde N = 4. Uma forma

de representar este problema como um CSP e:

a) o conjunto de variaveis e {xi| 0 < i <= N} e cada variavel representa a posicao

de uma rainha;

b) o domınio da cada variavel xi e o conjuto de posicoes que uma rainha pode

ocupar na sua linha Di = {1..N}, esta reducao e possıvel pois nunca havera

duas rainhas em uma mesma linha;

c) o conjunto de restricoes entre duas rainhas xi e xj pode ser representado pelo

predicado (xi 6= xj) ∧ (|i− j| 6= | xi − xj|) (YOKOO, 2001) 1;

d) um possıvel conjunto solucao e {x1 = 3, x2 = 1, x3 = 4, x4 = 2}.

N

N

x4

x2

x1

x3

Figura 2.2 - Problema das N-Rainhas, onde N=4.

1Neste predicado a primeira diferenca da conjuncao garante que duas rainhas nao ocuparao a mesmacoluna e a segunda diferenca garante que duas rainhas nao ocuparao a mesma diagonal.

Page 15: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.2 Distributed Constraint Satisfaction Problem 15

2.2 DISTRIBUTED CONSTRAINT SATISFACTION PROBLEM

Em um DCSP, as variaveis e restricoes estao distribuıdas entre agentes automa-

tizados (YOKOO, 2001). A diferenca fundamental entre os algoritmos para resolucao de

CSP e DCSP e a manipulacao do conhecimento. Enquanto em um algoritmo de CSP

o conhecimento do problema (variaveis e restricoes) e centralizado, em um algoritmo de

DCSP o conhecimento esta disperso entre diversos agentes, fazendo com que nenhum

agente sozinho conheca todo o problema. O impacto direto e o aumento da dificuldade

de ser ter uma visao global instantanea do problema, pois os agentes podem estar em

maquinas diferentes, com tempos de respostas diferentes.

O objetivo primario de um algoritmo de DCSP nao e alcancar maior eficiencia

atraves do paralelismo, mas sim tratar o conhecimento distribuıdo sem centraliza-lo. Este

conhecimento distribuıdo proporciona novos desafios e areas de estudo. Por exemplo,

pode-se desejar que os algoritmos considerem tempos de resposta mınimos, quedas de

agentes, problemas dinamicos (restricoes alteradas durante o processamento do algoritmo)

e seguranca ou privacidade dos dados trafegados.

2.3 ASYNCHRONOUS BACKTRACKING

No algoritmo ABT, os agentes agem concorrentemente, de forma assıncrona e sem

um controle global (YOKOO, 2001). O ABT foi o primeiro algoritmo desenvolvido por

Yokoo, ele e capaz de achar uma solucao para um DCSP, e caso esta nao existir, ele

cessara a execucao. Cada agente possui:

a) um identificador unico;

b) um conjunto de agentes diretamente conectados, chamados vizinhos;

c) para efeito de simplificacao, exatamente uma variavel xi com um valor vi per-

tencente a um domınio finito Di;

d) um conjunto de restricoes que afetam a variavel xi.

O objetivo de um agente e tornar sua variavel consistente, isto e, verificar se existe

um valor para sua variavel que satisfaca todas as restricoes. Contudo, a avaliacao de uma

restricao envolve os valores escolhidos por mais de um agente. Uma primeira forma de

resolver este problema e estabelecer que todos os agentes envolvidos em uma restricao a

avaliem. Porem, esta solucao inicial no controle das avaliacoes das restricoes por parte dos

agentes pode causar problemas de lacos infinitos. Um laco pode ocorrer, por exemplo, se

dois agentes que compartilham uma mesma restricao avaliarem esta restricao simultanea-

Page 16: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.3 Asynchronous Backtracking 16

mente e enviarem seus novos valores um para o outro, reinvalidando a restricao (fig. 2.3).

Para evitar estes lacos infinitos de processamento, o ABT define uma ordenacao entre os

Figura 2.3 - Exemplo de um laco de avaliacao.

agentes, onde para cada restricao existe um agente que escolhe e envia seu valor e outro

que avalia a restricao. No ABT, esta ordenacao e estatica e definida pela ordem alfabetica

dos agentes atraves dos seus identificadores, a fig. 2.4 representa esta ordenacao para o

problema das 4 rainhas. No exemplo, as restricoes sao representadas pelas arestas digiri-

das, onde a variavel que recebe a aresta avalia a restricao. A variavel x1 possui a maior

prioridade e por isso apresenta o maior numero de arestas partindo para outras variaveis.

Para a comunicacao entre os agentes, o algoritmo ABT define dois tipos de men-

sagens:

a) ok? : enviada por um agente que escolheu um valor a um agente que avalia a

restricao para saber se o valor escolhido e aceitavel. No exemplo da fig. 2.4, x1

envia um ok? para x2, x3 e x4;

b) nogood : enviada por um agente que avaliou uma restricao para um agente que

escolheu um valor, indicando que houve uma violacao de restricao. No exemplo

da fig. 2.4, caso x2 nao consiga um valor consistente para si, um nogood sera

enviado para x1.

Cada agente tambem possui um conjunto de agentes, chamado vizinhos, que e

separado em dois outros sub conjuntos, Incoming formado pelos agentes que lhe enviam

ok? e Outgoing formado pelos agentes que lhe enviam nogood. Esta separacao e dada

pela direcao da aresta, como ilustra a fig. 2.4 e a tab. 2.1.

Cada agente possui um mapeamento de variaveis para valores chamado agent view,

este mapeamento representa a visao que o agente possui dos valores dos seus vizinhos.

O agent view nada mais e do que uma tabela de pares variavel/valor. Por exemplo, em

determinado momento o agent view do agente x4 poderia ser {x1 = 3, x2 = 1, x3 = 4}.

Page 17: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.3 Asynchronous Backtracking 17

x4

x2

x1

x3

Figura 2.4 - Ordenacao das variaveis do problema das 4 rainhas.

Tabela 2.1 - Exemplo 4 Rainhas.

Agente Outgoing Incoming Domınio

x1 x2, x3, x4 - 1, 2, 3, 4x2 x3, x4 x1 1, 2, 3, 4x3 x4 x1, x2 1, 2, 3, 4x4 - x1, x2, x3 1, 2, 3, 4

Ao iniciar, cada agente escolhe um valor para sua variavel, o envia (send ok()) para

seus respectivos vizinhos e entra em modo de espera, aguardando novas mensagens. A

partir deste instante, o algoritmo e executado conforme ilustra a fig. 2.5. A cada mensa-

gem de ok recebida, a rotina received nogood e executada atualizando o agent view

e verificando a consistencia chamando a rotina check agent view. Um agent view e

consistente se este nao violar nenhuma das restricao do agente que inclua variaveis de

maior prioridade e nao for um nogood conhecido. Caso o agent view nao seja consistente,

o algoritmo tenta achar um valor consistente dentro do domınio Di. Se for achado, este

sera o valor atual da variavel, caso contrario o algoritmo executa o metodo backtrack.

Quando o algoritmo executa um backtrack ele esta sinalizando aos demais agentes

que nao conseguiu se tornar consistente. Para isto ele gera um nogood que no caso e o

proprio agent view. Este nogood gerado e entao enviado ao agente de menor prioridade

diretamente conectado. Cada nogood recebido e armazenado em uma lista chamada no-

goodlist sendo utilizada na checagem de consistencia do agent view. Cada item desta lista

(nogoodlist) pode ser visto como uma nova restricao, pois a rotina check agent view

verifica se o agentview e um nogood antigo conhecido. Armazenar tentativas passadas

garante que elas nao se repitam no futuro, porem, para certos domınios isto nao pode ser

Page 18: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.4 Asynchronous Weak Commitment 18

aplicado, pois caso o domınio seja extenso/infinito o numero de nogoods possıveis tornaria

o processo inviavel ou ate impossivel, por exemplo o domınio dos numeros reais.

E importante notar que o algoritmo ABT detecta a parada por falha, caso o pro-

blema nao possua solucao, mas nao por sucesso, neste caso e necessario utilizar um algo-

ritmo auxiliar para detectar a parada.

2.4 ASYNCHRONOUS WEAK COMMITMENT

Pode-se dizer que o AWC (especificado na fig. 2.8) e uma versao aprimorada do

ABT. Ele possui as mesmas informacoes e mensagens que o ABT, entretanto existem

duas grandes diferencas:

a) a ordenacao dos agentes e dinamica;

b) a escolha de valores e feita com o auxılio de uma heurıstica.

Enquanto no ABT a ordem entre os agentes e apenas alfabetica, no AWC cada

agente possui um valor inteiro de prioridade, que e enviado junto com cada mensagem. O

valor da prioridade so e modificado quando ocorre backtrack sinalizando que este agente

nao conseguiu achar um valor consistente, logo a sua prioridade aumenta e os seus vizinhos

agora precisam avaliar suas restricoes. Caso dois agentes possuam o mesmo valor, a ordem

alfabetica e utilizada. O exemplo da fig. 2.6 ilustra tres variaveis e suas prioridades (entre

parenteses). Gracas a este valor, a variavel x3 possui maior prioridade que x2. Em funcao

desta prioridade dinamica, os agentes podem revisar uma ma escolha cometida por um

agente de prioridade mais alta sem precisar executar uma busca exaustiva. O exemplo

da fig. 2.7 demonstra tal situacao. Os cırculos representam as rainhas e os numeros entre

parenteses suas prioridades. Ao iniciar a execucao, todos posseum prioridades iguais

a zero, logo a ordem alfabetica e utilizada e por isto apenas a variavel x4 encontra-se

inconsistente. Como x4 nao consegue nenhum valor consistente dentro do domınio, ela ira

criar e enviar um nogood, aumentar sua prioridade para 1, escolher um valor que possua o

menor conflito (neste caso a posicao 3) e enviar uma mensagem de ok? apos escolher seu

valor. Ao receber a mensagem de ok? a variavel x3 tambem nao possui valor consistente,

pois agora x4 possui maior prioridade. Logo x3 tambem envia nogood, incrementa sua

prioridade para 2, escolhe um valor e envia um ok?. A variavel x2 esta consistente porem

x1 nao. A variavel x1 muda seu valor para dois, torna-se consistente e a execucao e

encerrada.

Na fig. 2.7 se a primeira rainha ocupar a primeira posicao o problema nao tera

solucao. No ABT isto so e detectado depois que todos os agentes de menor prioridade

Page 19: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.4 Asynchronous Weak Commitment 19

received ok(xj, dj)1 add(xj, dj) to agent view;2 check agent view();

received nogood(xj, nogood)1 add(nogood) to nogoodlist;2 if xk ← (6∈ links and ∈ nogood)3 then request addlink(xk, xi);4 add(xk, dk) to agent view;5 old value ← current value;6 check agent view();7 if old value = current value8 then send ok(xj, current value, xj);

check agent view()1 if agent view is not consistent with current value2 then if no value in Di is consistent with agent view3 then backtrack();4 else select d ∈ Di where agent view and d are consistent;5 current value ← d;6 send ok(xi, d) to outgoing links;

backtrack()1 nogoods ← {V |V = inconsistent subset of agent view};2 if nogoods = {}3 then broadcast nosolution();4 return5 for each V ∈ nogoods6 do select (xj, dj) where xj has the lowest priority;7 send nogood(nogood, xi, V ) to xj;8 remove (xj, dj) from agent view;9 check agent view();

Figura 2.5 - Algoritmo ABT adaptado de Yokoo (2001).

Page 20: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.4 Asynchronous Weak Commitment 20

executarem seu backtrack, como a primeira rainha possui a maior prioridade, logo, todos

os outros agentes terao de mudar de valor ate retornarem com um backtrack para a

primeira rainha. No caso do AWC isto nao acontecera, porque sera forcada uma troca

de prioridade fazendo com que a primeira rainha tenha que trocar de posicao sem a

necessidade de executar todos os backtrack das variaveis de menor prioridade.

x1(1) x3(1) x2(0)

Figura 2.6 - Exemplo de ordenacao AWC.

0

0

2

1 1

2

0

0

1

0 0

0

0

0

0

0

Figura 2.7 - Exemplo de ma escolha de valores.

O algoritmo ABT nao especifica a forma de escolha dos valores, por padrao o

domınio e percorrido sequencialmente e o primeiro valor consistente e utilizado. O AWC

utiliza a heurıstica do menor conflito para a escolha do valor (MINTON et al., 1992). A

heurıstica consiste em: ao escolher um valor para a variavel, se existir mais de um valor

consistente, deve-se preferir o valor que possua o menor numero de violacoes de restricoes

com variaveis de menor prioridade. Esta estrategia tenta escolher um valor que possua

uma probabilidade mais alta de ser aceita pelos vizinhos, pois menos agentes precisarao

trocar de valor.

Page 21: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.4 Asynchronous Weak Commitment 21

received ok(xj, dj, priority)1 add(xj, dj, priority) to agent view;2 check agent view();

received nogood(xj, nogood)1 add(nogood) to nogoodlist;2 if xk ← (6∈ neighbors and ∈ nogood)3 then add(xk) to neighbors;4 add(xk, dk, priority) to agent view;5 check agent view();

check agent view()1 if agent view isnot consistent with current value2 then if no value in Di is consistent with agent view3 then backtrack()4 else select d ∈ Di where agent view and d are consistent and use minconflict;5 current value ← d;6 send ok(xi, d, current priority) to neighbors;

backtrack()1 nogoods ← {V |V = inconsistent subset of agent view};2 if nogoods = {}3 then broadcast nosolution();4 return5 if nogoods 6∈ nogood sent6 then for each V ∈ nogoods7 do add(V ) to nogood sent;8 for each (xj, dj, pj) ∈ V9 do send nogood(nogood, xi, V ) to xj;

10 pmax ← max(xj ,dj ,pj)∈agent view(pj);11 current priority ← 1 + pmax;12 select d ∈ Di using minconflict;13 current value ← d;14 send ok(xi, d, current priority) to neighbors;

Figura 2.8 - Algoritmo AWC adaptado de Yokoo (2001).

Page 22: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

2.5 Consideracoes Finais 22

2.5 CONSIDERACOES FINAIS

Algoritmos para DCSP apresentam diversos desafios aos desenvolvedores, princi-

palmente na sua implementacao. Por serem distribuıdos (e por isto nao determinısticos)

dificultam o acompanhamento da execucao. Os algoritmos descritos por Yokoo (2001)

encontram-se especificados em pseudo linguagem com um alto grau de abstracao, o que

tornou sua compreensao e implementacao demorada e propensa a erros de interpretacao.

Page 23: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

23

3 DESENVOLVIMENTO

Neste capıtulo sera inicialmente detalhado o framework (DynDCSP. . . , 2004) em que

o prototipo foi desenvolvido (secao 3.1). Posteriormente e apresentada a especificacao

(secao 3.2), a implementacao (secao 3.3) e avaliacao do prototipo (secao 3.5).

3.1 VISAO GERAL

Este trabalho esta inserido em um framework para DCSP desenvolvido pelo grupo

de pesquisa de IA da Fundacao Universidade Regional de Blumenau (FURB). O fra-

mework possui dois grandes modulos: CSP e DCSP (fig. 3.1).

O modulo CSP contem classes capazes de formalizar, modelar e manipular um CSP

completo, entre seus pacotes destacam-se:1

a) Examples : Instancias de problemas de CSP parametrizaveis para testes;

b) Domains : Prove suporte a diversos domınios de variaveis;

c) Expression: Avalia e soluciona expressoes numericas e logicas.

As principais classes destes pacotes sao as seguintes:

a) Variable: Representa uma variavel do CSP e seu domınio (definido no pacote

Domains);

b) Value: Armazena um valor para uma variavel;

c) Instantiation: Armazena um mapeamento de variaveis para valores, e utilizado

para representar solucoes de um CSP;

d) Constraint : Encapsula uma expressao logica (definida no pacote Expressions)

que representa uma restricao de um CSP.

O modulo DCSP preocupa-se com a resolucao do DCSP, seus principais pacotes

sao:

a) Communication: Executa a comunicacao entre os agentes;

b) IO : Implementa saıda e formatacao dos dados em diferentes mıdias;

c) Algorithms : Implementa os algoritmos estudados alem do proprio prototipo;

d) Main: Inicia e coordena a execucao do problema.

1Em (DynDCSP. . . , 2004) pode ser consultada a documentacao detalhada das classes do framework.

Page 24: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.1 Visao Geral 24

Como os pacotes deste modulo estao relacionados com o algoritmo implementado

neste trabalho, as proximas secoes descrevem brevemente cada um de seus pacotes.

DCSP

Algorithms

Comm IOMain

CSP

Expression

ExamplesDomains

Figura 3.1 - Pacotes do framework para DCSP.

3.1.1 PACOTE DE COMUNICACAO

Por ser um algoritmo distribuıdo, a comunicacao entre os agentes representa um

dos principais papeis na sua execucao. Para gerenciar esta comunicacao, o prototipo

possui uma camada generica, que abstrai o tipo de comunicacao utilizada, como ilustra a

fig. 3.2.

Communication

+tell(Message:msg): void+ask(Message:msg,timeout:int): Message+createMessage(id:String): Message+addMessageHandler(id:String,handler:MessageHandler): void

SaciCommunication

+initAg(args:String[]): void+stopAg(): void

Agent

+initAg(args:String[]): void

Figura 3.2 - Interface de comunicacao.

A maioria dos metodos da interface Communication fazem referencia a classe Mes-

sage. A classe Message carrega a informacao de um agente para o outro. As informacoes

estao contidas em uma lista de parametros da mensagem. Cada mensagem deve conter

Page 25: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.1 Visao Geral 25

um parametro chamado receiver que indica o seu destino. O destino e o identificador

unico de cada agente, neste caso o nome da variavel do agente.

A interface Communication descreve poucos metodos a serem implementados,

sendo os principais:

a) createMessage: cria uma nova instancia da classe Message, no caso uma men-

sagem do tipo indicado pelo parametro id ;

b) tell : encaminha uma mensagem conforme seus parametros;

c) ask : encaminha uma mensagem e espera por um tempo determinado uma men-

sagem de resposta;

d) addMessageHandler : permite que um determinado tipo de mensagem, indicado

pelo parametro id, seja tratado pelo objeto handler passado tambem como

parametro.

O prototipo utiliza a classe concreta chamada SaciCommunication para executar

a comunicacao. A classe SaciCommunication implementa a interface Communication e

e derivada da classe saci.Agent que faz parte da ferramenta Simple Agents Communica-

tion Infrastructure (SACI) desenvolvida por Hubner e Sichman (2000). O SACI e uma

ferramenta criada para implementar a comunicacao de Sistemas Multiagentes (SMA) que

utiliza o Remote Method Invocation (RMI) do Java para a transmissao das mensagens.

O metodo initAg e chamado pelo SACI para iniciar um novo agente. O SACI foi esco-

lhido pela sua simplicidade, versatilidade e boa documentacao, agilizando o processo de

implementacao dos agentes bem como seu monitoramento.

3.1.2 PACOTE DE ENTRADA E SAIDA

Os comandos de Input/Output (IO) abstraem o tipo da saıda de informacoes nas

varias classes do framework utilizando a interface Console (fig. 3.3). O framework possui

tres implementacoes basicas desta interface:

a) TextConsole: Saıda de texto no prompt de execucao;

b) GuiConsole: Saıda de texto em uma janela grafica (uma janela por agente);

c) NullConsole: Nenhuma saıda e exibida.

Cada agente possui um objeto agregado que implementa a interface Console. A

escolha do console e feita localmente pelo agente conforme parametros enviados durante

a sua criacao.

Page 26: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.1 Visao Geral 26

Console

+print(str:String): void+println(str:String): void+showCurrentValue(value:Value): void

GUIConsole TextConsole NullConsole

Figura 3.3 - Interface Console.

3.1.3 PACOTE DE INICIALIZACAO E CONTROLE

Para executar o prototipo e necessario entender seus dois processos distintos: laun-

cher e managerAg. O processo launcher e executado em cada maquina que fara parte da

computacao, isto porque o launcher e encarregado de criar os agentes. Todos os laun-

chers executados sao automaticamente reconhecidos e gerenciados pelo SACI (fig. 3.6).

O processo managerAg e responsavel por criar o CSP, distribuı-lo entre os launchers dis-

ponıveis e iniciar cada agente. Por padrao o managerAg tenta distribuir igualmente os

agentes entre as maquinas. Para facilitar a configuracao das execucoes um arquivo de

propriedades (fig. 3.4), no formato chave = valor, define diversos parametros passados

para o managerAg. O arquivo de propriedades precisa especificar ao menos os seguintes

parametros:

a) algorithm: Algoritmo DCSP utilizado;

b) console: Tipo de IO;

c) comm: Tipo de comunicacao;

d) csp.factory : Classe construtora do problema CSP.

csp.factory=csp.examples.nqueens.NQueensCSPFactory

society.name=dcsp

console=textcomm=sacialgorithm=awc

numberOfQueens=40

Figura 3.4 - Parametros de execucao.

Para iniciar a execucao o managerAg precisa receber como primeiro parametro o

nome do arquivo de propriedades. O processo de execucao exemplificado pela fig. 3.5 e

Page 27: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.1 Visao Geral 27

composto por tres etapas identificadas por A, B, C e D.

launcherMaster

launcher

agent

managerAg

A)

C)

D)

B)

Figura 3.5 - Exemplo de execucao.

Na etapa A apenas o processo launcherMaster foi iniciado. O launcherMaster e

um launcher que apenas grava em um arquivo o nome da maquina onde esta sendo execu-

tado para que futuros launchers possam saber onde ele esta. Apos o launcherMaster estar

iniciado, os outros launchers sao iniciados (etapa B) nas demais maquinas da rede. Na

etapa C, o processo managerAg foi iniciado em uma das maquinas da rede, o que desen-

cadeou a criacao de tres agentes por maquina e o inıcio da execucao (etapa D). Quando o

termino e detectado (secao 3.1.4), o managerAg grava, por padrao em um arquivo texto,

um log da resolucao do DCSP contendo a solucao, o tempo gasto e estatısticas.

Page 28: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.1 Visao Geral 28

Figura 3.6 - Monitor do SACI

3.1.4 DETECCAO DE PARADA

O framework implementa um mecanismo de deteccao de parada, pois os algoritmos

estudados por este trabalho nao detectam a parada por sucesso, somente por falha2. O

mecanismo utiliza o algoritmo circulating token de Raynall (1992). Este algoritmo foi

escolhido por sua simplicidade e pouco impacto sobre a implementacao existente. Nao

foi necessario modificar muito o codigo existente para adaptar a deteccao de parada. O

algoritmo circulating token possui as seguintes caracterısticas:

a) Para seu funcionamento e necessario estabelecer uma lista circular entre os

agentes que compoem o problema, para isso cada agente possui o identificador

do seu proximo vizinho;

b) Cada agente possui um flag que indica seu estado de consistencia, o algoritmo

utiliza uma variavel que aceita duas cores: branco, preto;

c) Uma mensagem, chamada token, contendo a informacao de parada circula pela

rede formada pelos agentes.

O algoritmo inicia enviando uma mensagem para o primeiro agente da fila contendo

um token, este por sua vez contem um contador e a solucao parcial do problema. O token

permanece no agente enquanto este for inconsistente (preto). Sempre que um token deixa

um agente seu contador interno e incrementado e a variavel/valor do agente e inserida

2Nao existe solucao possıvel.

Page 29: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.1 Visao Geral 29

na solucao parcial. Tokens de prioridade inferior sao descartados sempre que encontram

um de maior. O algoritmo detecta a parada quando seu contador for igual ao numero de

agentes na rede e todos eles estiverem consistentes (brancos) fig. 3.7.

x1

x2

x3

x4

Figura 3.7 - Solucao encontrada utilizando circulating token.

3.1.5 PACOTE DE ALGORITMOS DCSP

Os algoritmos implementados pelo framework possuem diversas caracterısticas e

necessidades comuns entre si:

a) variavel do agente;

b) valor atual;

c) lista de restricoes;

d) console para saıda de dados;

e) interface de comunicacao entre agentes.

O pacote Algorithms do framework possui uma classe base chamada BaseAlg

(fig. 3.8) que implementa estas necessidades basicas de um algoritmo DCSP. A classe

BaseAlg possui apenas um metodo abstrato chamado start que e chamado para indicar

o inıcio da execucao. Os algoritmos estudados por este trabalho e o prototipo derivam

diretamente de BaseAlg.

Os principais atributos e metodos da classe BaseAlg sao os seguintes:

a) fConstraints : Lista de objetos Constraint que o agente deve avaliar;

b) fNogoods : Lista de objetos Instantiation representando os nogoods recebidos;

c) fNeighboorsAgs : Lista de nomes dos agentes diretamente conectados;

d) fAgentView : Lista de objetos Instantiation representando a visao atual

(agent view) do agente;

e) fCurrentValue: Valor atual da variavel do agente;

Page 30: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.2 Especificacao do algoritmo AWC 30

Figura 3.8 - Classe base de um algoritmo distribuıdo.

f) fVariable: Variavel do agente;

g) fComm: Interface de comunicacao entre agentes;

h) fConsole: Interface de entrada e saıda;

i) start(): Marca o inicio da execucao do agente;

j) isConsistent(): Avalia a consistencia do valor atual da variavel e do agent view.

3.2 ESPECIFICACAO DO ALGORITMO AWC

Como visto anteriormente, uma das principais diferencas do AWC em relacao ao

ABT e a prioridade dinamica do AWC. O AWC utiliza uma classe chamada PriorityVari-

able (fig. 3.9) para representar sua variavel. A classe PriorityVariable deriva de Variable e

possui um atributo para guardar sua prioridade e desta forma a associacao entre variavel

e prioridade e garantida.

O metodo compareTo, sobreescrito pela classe, e utilizado por classes como Hash-

Map e TreeMap, ambas pertencentes ao pacote Collections do Java, para garantir a or-

denacao de acordo com o valor de prioridade da classe.

O algoritmo AWC e implementado pela classe de mesmo nome. A classe AWC

deriva diretamente de BaseAlg e possui as seguintes diferencas:

a) fNogoodSent : Lista de nogoods recebidos;

Page 31: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.3 Implementacao do AWC 31

Figura 3.9 - Classe para guardar a prioridade da variavel.

b) getMinConflict(): Retorna o valor que causa o menor numero de conflitos (in-

consistencias);

c) getConstraintViolations(): Retorna o numero de restricoes violadas.

AWC+fNogoodSent: List#getMinConflictValue(solution:Instantiation): Value#getConstraintViolations(solution:Instantiation): int

BaseAlg

Figura 3.10 - Classe AWC.

3.3 IMPLEMENTACAO DO AWC

A implementacao foi realizada na linguagem Java utilizando o JDK 1.4.2 da Sun

e o editor Eclipse versao 2.13. A escolha da linguagem foi feita considerando os aspectos

abaixo:

a) Excelente suporte a Orientacao a Objetos (OO);

b) Camada de comunicacao ja existente;

c) Facilidade de pesquisa.

Page 32: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.4 Proposta de melhorias para o AWC 32

getMinConflict(Instantiation solution)1 tmpSolution ← clone of solution;2 for each value ∈ fV ariable.domain3 do tmpSolution[fV ariable] ← value;4 count = getConstraintViolations(tmpSolution);5 if count < minCount6 then minCount ← count;7 minV alue ← value;8 return minV alue;

getConstraintViolations(Instantiation solution)1 vars ← lower priority variables;2 count ← 0;3 for each cons ∈ fConstraints4 do if cons.variables ∈ vars5 then if cons is inconsistent6 then count ← count + 1;7 return count;

Figura 3.11 - Rotinas do AWC.

Como ja foi mencionado, o AWC possui poucos metodos alem dos existentes na

classe base. O pseudo codigo dos dois principais metodos do algoritmo AWC estao espe-

cificados na 3.11.

3.4 PROPOSTA DE MELHORIAS PARA O AWC

Como extensao para AWC este trabalho propoe as seguintes melhorias:

Heurıstica para escolha do valor : Um dos pontos cruciais de qualquer algoritmo

de CSP e a escolha dos valores a serem atribuidos. Durante os experimentos foi

constatado que certos valores sao escolhidos repetidas vezes gerando avaliacoes des-

necessarias. Apesar de utilizar a tecnica de min-conflict, o AWC pode comecar

a favorecer sempre os mesmos valores. Levando isto em consideracao, uma nova

heurıstica chamada de valores menos utilizados e proposta. A heurıstica consiste

em: para cada valor no domınio associa-se um contador de escolhas. Cada vez que

o algoritmo escolhe um valor seu contador incrementa. Quando um valor estiver

sendo escolhido deve ser dar preferencia ao que possuir o menor contador.

Ordenacao das restricoes : Para cada restricao o algoritmo mantem um contador, este

contador e inicializado com zero e e incrementado cada vez que sua restricao violar

a consistencia do agente. A lista de restricoes e mantida ordenada pelo contador,

Page 33: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.5 Resultados 33

logo, as restricoes que mais vezes geraram inconsistencias serao as primeiras a se-

rem analisadas. Desta forma existe maior probabilidade de menos restricoes serem

avaliadas para detectar uma inconsistencia.

Nao armazenamento dos nogoods recebidos : Para garantir a completude do algo-

ritmo, o AWC guarda todos os nogoods recebidos. Como os domınios utilizados

sao finitos, o numero de combinacoes de nogoods e finito tambem, logo, no pior

caso o algoritmo guarda todos os nogoods possıveis. Esta abordagem possui dois

problemas:

a) Se o domınio for muito extenso a quantidade de memoria necessaria para

guardar todos os nogoods pode ser insuficiente;

b) A pesquisa por nogoods conhecidos e um processo lento, pois e necessario

percorrer sequencialmente todos os nogoods armazenados, para tentar

achar um nogood compatıvel 3.

A partir dessas observacoes, uma melhoria proposta e eliminar o armazenamento de

nogoods em detrimento da perda da completude.

3.5 RESULTADOS

Para monitorar as execucoes dos algoritmos foram criadas versoes especializadas

dos algoritmos. Estas versoes modificadas possuem as seguintes informacoes:

a) Numero de mensagens recebidas e enviadas;

b) Numero de atualizacoes feitas ao agentview ;

c) Numero de checagens de consistencia;

d) Numero de colisoes com nogood conhecidos;

e) Tempo de resolucao do problema das CSP.

Os valores acima medem nao so o trafego gerado na rede, como tambem o quao exposto

o CSP esta e a eficiencia com que o algoritmo gera seus valores.

A configuracao do ambiente utilizado para os testes foi: Rede de 100Mbit com 40

computadores Pentium 3 1GHz, 256 RAM, Sistema Operacional (SO) Conectiva Linux

9. Cada algoritmo foi testado utilizando o problema das 40-Rainhas variando o numero

de computadores de 1 ate 40. Para a geracao dos graficos seguintes, foram realizadas

varias execucoes com o mesmo numero de maquinas, obtida a media aritmetica dos va-

lores e tracado uma linha desenhada por interpolacao por curva de Bezier com os pontos

3Um nogood e compatıvel se suas variaveis e valores estiverem contidas no agent view.

Page 34: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.5 Resultados 34

resultantes.

O grafico da fig. 3.12 apresenta os resultados obtidos pelo algoritmo AWC como

definido pelo Yokoo (2001), permitindo as seguintes conclusoes:

a) O desempenho do algoritmo foi similiar ao descrito por (YOKOO, 2001);

b) Para este problema (40-Rainhas), a partir de 25 maquinas a inclusao de novas

maquinas nao apresenta melhorias significativas;

c) A partir de 38 maquinas o desempenho piora com a inclusao de novas maquinas,

em razao do custo de comunicacao em rede.

0

200

400

600

800

1000

1200

1400

1600

1800

2000

0 5 10 15 20 25 30 35 40

tem

po (

em s

egun

dos)

nro de hosts

Figura 3.12 - Tempo de execucao do AWC.

O algoritmo proposto utilizou o AWC original como base e adaptou a heurıstica

do valor menos utilizado e o nao armazenamento de nogoods. O prototipo desenvolvido

e identificado pela sigla AWC+ e como e ilustrado pelo grafico comparativo da fig. 3.13

as modificacoes propostas possibilitaram um aumento significativo no desempenho. O

fator que mais contribuiu para o aumento do desempenho foi o nao armazenamento de

nogoods. A heurıstica proposta (ordenacao dos valores menos utilizados) foi utilizada

com sucesso, auxiliando a heurıstica de min-conflict. Mesmo em problemas que possuıam

poucas variaveis por computador o ganho de velocidade foi perceptıvel. O impacto da

Page 35: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

3.5 Resultados 35

ordenacao de restricoes nao pode ser medido com exatidao ou nao surtiu efeito, pois os

valores obtidos foram muito proximos.

0

200

400

600

800

1000

1200

1400

1600

1800

2000

0 5 10 15 20 25 30 35 40

tem

po (

em s

egun

dos)

nro de hosts

AWCAWC+

Figura 3.13 - Tempo de execucao do AWC e AWC+.

3.5.1 DIFICULDADES ENCONTRADAS

O desenvolvimento do algoritmo original AWC tomou uma grande parte do tempo

de implementacao do prototipo, parte disto deve-se a traducao do codigo especificado

em pseudo linguagem para Java. O fato do algoritmo ser distribuıdo e implementado

utilizando RMI inviabilizou a depuracao, tornando o desenvolvimento e a identificacao

de erros bastante demorados. Ocorreram pequenos problemas relacionados com o RMI

quando executado no sistema operacional Linux utilizando o Java Virtual Machine (JVM)

da IBM ou Sun (versao 1.4.2). Uma caracterıstica que dificulta a implementacao e sincro-

nismo entre as threads de um mesmo agente. Cada mensagem e tratada por uma thread

diferente, isto exige que dados modificados por estas mensagens, como agent view, por

exemplo, sejam sincronizados e protegidos contra modificacoes concorrentes.

Page 36: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

36

4 CONCLUSOES

Uma das maiores contribuicoes deste trabalho e a especificacao e implementacao dos

algoritmos propostos por Yokoo (2001). O prototipo alcancou bons resultados e evidenciou

que a busca pela completude do algoritmo AWC, guardando os nogoods recebidos para

isto, causa grande perda de desempenho. Foi notado que a escolha de valores possui papel

importante na execucao, podendo diminuir o numero de tentativas, com isto aumentar o

desempenho e diminuir o grau de exposicao do problema.

4.1 EXTENSOES

Por ser um assunto atual e relativamente pouco explorado, a area de DCSP possui

diversas opcoes de pesquisa, como por exemplo:

a) Comunicacao dos dados, seguranca e privacidade (SILAGHI, 2002);

b) DCSP dinamico, onde as restricoes e variaveis do problema podem ser modifi-

cadas durante a execucao do algoritmo (MODI et al., 2001);

c) Novas heurısticas para escolha de valores (PETCU; FALTINGS, 2004);

d) Estudo de completude de algoritmos distribuıdos;

e) Novos algoritmos, como por exemplo Asynchronous Distributed Constraint Op-

timization with Quality Guarantees (ADOPT) (MODI WEIMIN SHEN; YOKOO,

2003) e Asynchronous Search with Aggregations (AAS) (SILAGHI, 2002).

Alem dos supra citados, o proprio framework onde este trabalho esta inserido possui

extensoes propostas:

a) Desenvolvimento de uma linguagem para especificacao de CSP;

b) Formalizacao e implementacao de uma aplicacao real que utilize DCSP.

Durante a confeccao deste trabalho, foi observado que os algoritmos estudados se

comportam como agentes puramente reativos, isto e, o algoritmo atua apenas quando um

de seus metodos e chamado, de maneira analoga a um objeto em OO, porem distribuıdo.

Esta e uma caracterıstica importante e pode ser utilizada para estudos futuros, como por

exemplo em um melhor uso do tempo ocioso ou tornando os agentes mais pro-ativos.

Page 37: Desenvolvimento De Um Algoritmo Para Problema De ...dsc.inf.furb.br/arquivos/tccs/monografias/2004-1danielmtralamazzav… · DESENVOLVIMENTO DE UM ALGORITMO PARA PROBLEMA DE SATISFAC»AO

37

REFERENCIAS BIBLIOGRAFICAS

DynDCSP Project. Blumenau: [s.n.], 2004. Disponıvel em: <www.inf.furb.br/gia-/dynDCS>. Acesso em: 15 jul. 2004.

HUBNER, J. F.; SICHMAN, J. S. SACI: Uma ferramenta para implementacaoe monitoracao da comunicacao entre agentes. In: INTERNATIONAL JOINTCONFERENCE, 7TH IBERO-AMERICAN CONFERENCE ON AI, 15THBRAZILIAN SYMPOSIUM ON AI (IBERAMIA/SBIA 2000), 7/15., 2000, Atibaia, SaoPaulo, Brazil. Proceedings... Sao Carlos: ICMC/USP, 2000. p. 47–56.

MINTON, S. et al. Minimizing conflicts: A heuristic repair method for constraintsatisfaction and scheduling problems. Artificial Intelligence, v. 58, n. 1-3, p. 161–205,1992.

MODI, P. J. et al. A dynamic distributed constraint satisfaction approach to resourceallocation. Lecture Notes in Computer Science, v. 2239, p. 685, 2001.

MODI WEIMIN SHEN, M. T. P. J.; YOKOO, M. An asynchronous complete methodfor distributed constraint optimization. In: INTERNATIONAL JOINT CONFERENCEON AUTONOMOUS AGENTS AND MULTI-AGENT SYSTEMS (AAMAS’2003), 2.,2003, Melbourne, Australia. Proceedings... [S.l.]: ACM Press, 2003.

PETCU, A.; FALTINGS, B. A value ordering heuristic for local search indistributed resource allocation. Lausanne (Switzerland), Feb 2004.

RAYNALL, M. Distributed algorithms and protocols. Great Britain: John Wiley,1992. ISBN 0-471-91754-0.

RUSSEL, S.; NORVIG, P. Artificial intelligence: a modern approach. 2. ed. NewJersey: Prentice Hall, 2003. ISBN 0-13-790395-2.

SILAGHI, M. C. Asynchronously solving problems with privacy requirements.271 p. Tese (Doutorado em Ciencias da Computacao) — Swiss Federal Institute ofTechnology (EPFL), 2002. Disponıvel em: <www.cs.fit.edu/˜msilaghi/teza>. Acessoem: 8 jul. 2004.

TSANG, E. Foundations of constraint satisfaction. London: Academic Press, 1993.ISBN 0-12-701610-4.

YOKOO, M. Distributed constraint satisfaction. Berlin: Springer, 2001.

YOKOO, M. et al. Distributed constraint satisfaction for formalizing distributed problemsolving. In: International Conference on Distributed Computing Systems. [S.l.:s.n.], 1992. p. 614–621.