Você está na página 1de 75

UNIVERSIDADE DA AMAZNIA

CENTRO DE CINCIAS EXATAS E TECNOLOGIA

AGENTES INTELIGENTES CONCEITOS,


CARACTERSTICAS E APLICAES

BRUNO TRAVASSOS DA ROSA BRAGA


JOS LEONARDO AYRES PEREIRA

Belm - Pa
2001

Exalta a sabedoria, e ela te


exaltar, e abraando-a tu, ela te
honrar.
Provrbios 4:8

AGRADECIMENTOS

Gostaria de agradecer a minha famlia,


principalmente a minha me, por sempre me
ajudar quando eu preciso. Aos meus amigos
Anamlia Contente de Souza e Jos Leonardo
Ayres Pereira que fizeram deste trabalho um
trabalho inesquecvel.

BRUNO TRAVASSOS DA ROSA BRAGA

Devo agradecer acima de tudo a Deus, que


por sua vontade que as coisas acontecem.
minha famlia por sua compreenso, Mestra e
amiga Anamlia Contente de Souza por seu
apoio, ao meu companheiro de trabalho, Bruno
Travassos por sua dedicao e ao meu
orientador, Cludio Alex Rocha por sua
pacincia,

entrega

crena

em

nossa

capacidade de vitria.

JOS LEONARDO AYRES PEREIRA

RESUMO
O trabalho apresenta a tecnologia de agentes de forma clara e objetiva, no
tendo como meta abordar por completo o tema agentes inteligentes, e sim apenas
desmistificar a viso que sugere que agentes inteligentes uma tecnologia distante da atual
realidade.
Todo contedo apresentado de forma a oferecer uma compreenso
progressiva do assunto procurando oferecer um claro entendimento do mesmo.
A tecnologia de agentes estudada por vrios profissionais da rea de
computao e uma tecnologia presente nos dias atuais e que no futuro dever estar
constantemente em evidncia.
Sero abordados tpicos que foram considerados importantes no estudo de
agentes inteligentes e ao final do trabalho apresentado um exemplo bsico de agente que
pode ser utilizados no dia-dia e permite futuros incrementos e adies.

UNIVERSIDADE DA AMAZNIA
CENTRO DE CINCIAS EXATAS E TECNOLOGIA

AGENTES INTELIGENTES CONCEITOS,


CARACTERSTICAS E APLICAES

BRUNO TRAVASSOS DA ROSA BRAGA


JOS LEONARDO AYRES PEREIRA

AVALIADORES
__________________________________
__________________________________
__________________________________

NOTA: ____________________________
DATA: ____________________________

UNIVERSIDADE DA AMAZNIA

CENTRO DE CINCIAS EXATAS E TECNOLOGIA

AGENTES INTELIGENTES CONCEITOS,


CARACTERSTICAS E APLICAES

Trabalho de Concluso de Curso


apresentado

Universidade
da
Amaznia, para obteno do grau em
Tecnlogo em Processamento de Dados,
sob a orientao do Professor Cludio
Alex Rocha.

BRUNO TRAVASSOS DA ROSA BRAGA


JOS LEONARDO AYRES PEREIRA

Belm - Pa
2001

SUMRIO

CAPTULO 1 INTRODUO..........................................................................1

CAPTULO 2 VISO GERAL DE AGENTES ....................................................4


2.1. HISTRICO .............................................................................................4
2.2. DEFINIO DE AGENTES INTELIGENTES .................................................5
2.2.1. DEFINIO DO TERMO AGENTE .......................................................5
2.2.2. DENIFIO DO(S) TERMO(S) INTELIGENTE/INTELIGNCIA .................7
2.2.3. DEFINIO DE AGENTE INTELIGENTE .................................................9
2.3. CARACTERSTICAS DE AGENTES INTELIGENTES .....................................11
2.3.1 CARACTERSTICAS GERAIS DE AGENTES ...............................................11
2.3.2. CARACTERSTICAS ESPECFICAS DE AGENTES INTELIGENTES ...............12
2.4. CLASSIFICAO DE AGENTES INTELIGENTES .........................................14
2.4.1. QUANTO AO NVEL DE INTELIGNCIA ..................................................15
2.4.2. QUANTO TAREFA QUE EXECUTAM ....................................................15
2.4.3. QUANTO MOBILIDADE ......................................................................16
2.4.4. QUANTO AQUISIO DE INTELIGNCIA.............................................16
2.4.5. QUANTO A NFASE DADA A ALGUNS ATRIBUTOS PRIMRIOS ...............17
2.4.6. CLASSIFICAO GERAL DOS AGENTES .................................................18
2.5. REAS DE APLICAO ............................................................................20

CAPTULO 3 AGENTES INTELIGENTES ........................................................23


3.1.ARQUITETURA DE AGENTES ....................................................................23
3.1.1. ARQUITETURA BSICA ........................................................................23

3.2. CARACTERSTICAS QUE TORNAM UMA APLICAO APROPRIADA PARA


AGENTES. ......................................................................................................24

3.3. INTELIGNCIA ARTIFICIAL DISTRIBUDA (IAD) .....................................26


3.3.1. RESOLUO DISTRIBUDA DE PROBLEMAS ..........................................27
3.3.2. SISTEMAS MULTI-AGENTES ................................................................28
3.4. LINGUAGENS DE AGENTES .....................................................................29
3.4.1. LINGUAGENS DE COMUNICAO DE AGENTES .....................................29
3.4.2. LINGUAGENS DE PROGRAMAO DE AGENTES ....................................31
3.5. AGENTES X OBJETOS ..............................................................................33
3.6. AGENTES E INTERNET.............................................................................34
3.6.1. PROBLEMAS RELATIVOS DEMANDA DE INFORMAO .......................35
3.6.2. INSTRUMENTOS DE BUSCA E AGENTES INTELIGENTES ..........................36

CAPTULO 4 EXEMPLO DE AGENTE AGENTE FLASH ................................39


4.1. APRESENTAO .....................................................................................39
4.2. MODELAGEM..........................................................................................40
4.3. FUNCIONAMENTO ...................................................................................42

CAPTULO 5 CONCLUSO ...........................................................................46

CAPTULO 6 REFERNCIAS BIBLIOGRFICAS .............................................48

LISTA DE FIGURAS

2.1. INTERAO DE AGENTES COM O AMBIENTE ATRAVS DE SENSORES


E REAGENTES .................................................................................................10

2.2. CLASSIFICAO DE AGENTES QUANTO A NFASE DADA A ALGUNS


ATRIBUTOS PRIMRIOS ..................................................................................17

2.3. TOPOLOGIA DE AGENTES .......................................................................18


3.1. ARQUITETURA BSICA DE UM AGENTE AUTNOMO BASEADA
EM COMPUTADOR..........................................................................................23

3.2. ORIGEM DA INTELIGNCIA ARTIFICIAL DISTRIBUDA.............................26


4.1. INTERFACE DIAL-UP ..............................................................................43
4.2. TELA INICIAL DO AGENTE FLASH ........................................................44
4.3. LISTA DE SITES FORNECIDA PELO USURIO.............................................44

CAPTULO 1
INTRODUO

indiscutvel que na atual realidade em que vivemos, as mudanas


tecnolgicas ocorrem em uma velocidade visivelmente maior do que a velocidade com a qual
conseguimos absorver as mesmas.

No meio de tantas informaes e novidades, surgiu na ltima dcada algo


que revolucionou, sem sombra de dvida, a vida de toda a humanidade: a Internet. A Internet
veio para mudar a maneira de viver de cada cidado que tenha acesso a ela, quebrar fronteiras,
sugerir novos conceitos, novas maneiras de comrcio, de comunicao e acima de tudo,
acesso livre e quase ilimitado informao.

No meio do boom da Internet, surgiram muitas outras tecnologias,


propostas de padres e solues fantsticas sugerindo possibilidades infinitas para a sua
utilizao. E nesse emaranhado de tecnologias e necessidades que surgiram nesse novo
mundo, surge uma tecnologia com ares de fico cientfica, os Agentes Inteligentes.

O termo Agente Inteligente provm da inteligncia artificial. Diferente do


que possamos pensar, a tecnologia de Agentes no est to distante de nossa realidade. A
Internet um campo vasto onde os agentes se proliferam e nos ajudam nas mais diversas
tarefas, sendo que como meros usurios, s vezes no tomamos conhecimento disso.

A tecnologia de agentes vem mudar radicalmente o modo como o usurio


utiliza seu computador, permitindo, por exemplo, que o software seja um assistente ao
usurio. Esta tecnologia dever aproximar ainda mais o usurio do seu computador.

Essa tecnologia , atualmente, uma das reas de pesquisas que representa


um grande interesse em desenvolvimento de novas aplicaes. Ela expe ao usurio
facilidades que so baseadas, como foi dito acima, em conceitos de inteligncia artificial.

O trabalho est organizado como se segue. No segundo captulo ser apresentado um


breve histrico sobre agentes e em seguida sero apresentados conceitos fundamentais para a
compreenso de todo o estudo que ser feito. Ainda no segundo captulo veremos as
classificaes adotadas para agentes inteligentes assim como as caractersticas de agentes e
agentes inteligentes. Ao final do captulo so apresentadas algumas reas nas quais os agentes
so aplicados.

O terceiro captulo sobre agentes inteligentes, e neste captulo em que


so apresentadas os estudos que fundamentam a tecnologia de agentes. Tambm sero visto
neste captulo as Linguagens que so utilizadas para desenvolvimento de agentes, linguagens
essas divididas em: Linguagens de Comunicao de Agentes e Linguagens de Programao
de Agentes. O terceiro captulo tambm apresentada de forma simples, a Inteligncia
Artificial Distribuda (IAD) e suas tcnicas, assim como um comparativo entre Agentes e
Objetos e um breve descritivo do uso de Agentes na Internet.

O exemplo de agente ser visto no quarto captulo, que dedica-se a


explanao completa do agente, assim como o processo de modelagem e o funcionamento do
mesmo.

CAPTULO 2
VISO GERAL DE AGENTES

2.1.HISTRICO

Durante os anos 80, a comunidade de Inteligncia Artificial, comeou a


explorar novas reas onde sistemas de IA pudessem ter um domnio mais dinmico.
Ao invs de olhar para resultados simulados, simblicos em mundos artificiais,
comearam a explorar as possibilidades de interaes complexas com o mundo
fsico, atravs de um mecanismo denominado agentes.

Vrios pesquisadores como Marvin Minsk, Oliver Selfridge, Alan Kay,


Nicholas Negroponte, Rodney Brooks e Pattie Maes, passaram a estudar problemas que
pudessem demonstrar algum tipo de comportamento dos agentes.

Ao mesmo tempo, uma outra comunidade estava se formando usando


tambm o termo agente. Era a comunidade de agentes de software, que estava explorando o
desenvolvimento de partes de cdigo menores e mais confiveis.

Entretanto, uma barreira surgiu para a comunidade cientfica, muitos termos


estavam sendo usados para descrever agentes, como: intelligent agents, intelligent interfaces,
adaptive interfaces, knowbots, softbots, userbots, taskbots, personal agents e network agents,
dentre outros. Sendo que cada termo utilizado referenciava o papel exercido pelo agente.

2.2.DEFINIO DE AGENTES INTELIGENTES

O termo agente utilizado em muitas reas da Cincia da Computao, mas


especialmente na rea de Inteligncia Artificial. Nos ltimos anos, o termo tornou-se muito
popular e tem sido usado de diversas maneiras.

Para tornar mais clara toda a abordagem que ser feita em torno dos Agentes
Inteligentes, neste trabalho, ser examinada a definio das palavras Agente e
Inteligente/Inteligncia isoladamente e logo aps apresentaremos um conceito formal sobre
agentes inteligentes.

2.2.1.Definio do termo Agente

Ser examinada inicialmente palavra agente. Esta uma palavra que


sugere vrias definies diferentes, mas ser utilizada a definio mais aplicvel para o
contexto segundo o Novo Dicionrio da Lngua Portuguesa (HOLANDA FERREIRA, 1975):

Agente: aquele que trata de negcio por conta alheia.

Um agente algo ou algum que age em seu benefcio, com sua permisso.
Considerando esta definio, cada um de ns j usou algum tipo de agente em nossas vidas.
Se voc um dia resolveu comprar uma casa, provavelmente contratou um corretor para cuidar
da procura para voc. Se voc pretende fazer uma viagem ou excurso, um agente de viagens
pode resolver e preparar tudo para voc. At mesmo o contador que prepara o seu imposto de
renda seu agente.

visvel que os agentes executam as mais variadas tarefas, mas como


poderamos transportar esta realidade dos agentes para o software? Quais so as qualidades
pertinentes aos agentes de software e como poderamos compar-los aos agentes humanos? Se
voc olhar os exemplos de agentes humanos anteriormente citados, assim como a definio de
agente segundo o Novo Dicionrio da Lngua Portuguesa (HOLANDA FERREIRA, 1975),
pode-se chegar a alguns pontos em comum (PALLMANN, 1999):

Os agentes agem em seu lugar: Agentes podem ser personalizados:


se o software no est fazendo algo por/para voc, ele no pode ser
chamado de Agente. Imagine, por exemplo, se um procurador seu
muda um contrato que beneficiar somente a outra parte; voc o
cliente e a sua vontade e seus interesses devem ser superiores a
qualquer outro. Da mesma maneira o agente de software trabalha pra
voc e defende os seus interesses;

Os agentes agem com sua permisso: Os agentes executam


somente as funes/tarefas autorizadas pelos seus clientes. Imagino
que voc no ficaria nada feliz se o seu corretor na bolsa resolvesse
vender todas as suas aes sem sua permisso, e em conseqncia
disso voc tivesse um enorme prejuzo. Entretanto, se voc
orientasse o seu corretor para s vender algumas aes e em um
determinado momento, ele s venderia as aes que ele autorizado
a vender e no momento especfico;

Os agentes so especializados em uma rea em particular: Os


agentes so cuidadosos e se preocupam em no ultrapassar os limites
de seu conhecimento ou rea de atuao. Considerando mais um

exemplo de agentes humanos. Imagine se voc pedisse para o seu


agente de viagem fazer o seu imposto de renda ou at mesmo um
balancete de sua empresa, absurdo no? Os agentes so
especializados, atuam nas reas para as quais eles foram preparados.

De forma simples; um agente de software representa voc e seus interesses.


Agentes fazem somente as coisas que voc diz que tem que fazer; como usurios devemos
evitar utilizar agentes em tarefas para as quais eles no foram preparados.

2.2.2.Definio do(s) termo(s) Inteligente/Inteligncia

J que, de forma resumida, sabe-se o que um Agente, sero examinadas as


definies das palavras Inteligente/Inteligncia dentro de nosso contexto segundo o Novo
Dicionrio da Lngua Portuguesa (HOLANDA FERREIRA, 1975):

Inteligncia: faculdade de aprender, apreender ou compreender; percepo,


apreenso, intelecto, intelectualidade.
Inteligente: que tem ou revela inteligncia.

Uma pessoa que toma boas decises ou faz boas escolhas considerada
inteligente. A partir disso, ns podemos assumir que os agentes inteligentes devem ser bons
no que fazem. Consideremos como exemplo um agente de viagens. Antes de mais nada, o seu
agente precisa saber onde voc quer ir e quais so suas preferncias. O seu agente tem que
saber quais so as opes disponveis de roteiro assim como as opes no disponveis. E
finalmente o seu agente tem que vislumbrar a melhor escolha de roteiro considerando todo o

perfil que voc forneceu a ele; isto indiscutivelmente requer um balano cuidadoso de todos
os prs e contras da situao.

Se pensarmos nisso v-se que sempre esperamos o mximo de competncia


de qualquer profissional que se propem a fazer um trabalho. Com agentes, humanos ou no,
a nossa expectativa em torno da competncia deles a mesma. Afinal, os agentes nos
representam em nossa ausncia e tomam atitudes que nos afetam, no mnimo esperamos que
eles sejam os melhores no que fazem.

Quando definimos a palavra agente h alguns momentos, ns


comentamos a respeito da especializao, que surge como um dos pontos da competncia. O
fato de usarmos a palavra inteligente s refora esta idia. Os agentes devem ser bons no
que fazem ou ento ningum far uso deles. Tenhamos em mente que um agente de software
mal concebido/desenvolvido pode tornar a vida de uma pessoa que depende dele bem
complicada.

2.2.3.DEFINIO DE AGENTE INTELIGENTE

Um agente um software que sabe fazer coisas que provavelmente voc


faria voc mesmo se tivesse tempo.
Ted Selker.
Centro de pesquisas da IBM em Almaden (SILVA e MENESES, 2001)

A definio de agentes um assunto sobre o qual no existe um consenso


nico. Contudo, concorda-se que a autonomia seu ponto principal (SILVA e MENESES,
2001). Considerando este ponto, devemos atentar para o fato de que certas caractersticas, que
o que determina o tipo de ao do agente, aplicam-se em diferentes contextos de atuao.
De forma mais clara; existem situaes, por exemplo, em que a capacidade de aprendizado do
agente muito importante e em outras no, s vezes at indesejvel.

Embora no exista uma definio genrica formada para agentes, esta se faz
necessria para que o termo no acabe por perder seu significado. WOOLDRIDGE (1999)
define agente como: Um agente um sistema de computador que est situado em algum
ambiente e que capaz de executar aes autnomas de forma flexvel neste ambiente, a fim
de satisfazer seus objetivos de projeto. Existem trs conceitos nesta definio: ambiente,
autonomia e flexibilidade.

Estar situado em um ambiente corresponde a capacidade do agente de


receber entrada atravs de sensores do ambiente e executar aes que alterem o mesmo de
alguma maneira atravs de reagentes. (Figura. 2.1)

Figura. 2.1 - Interao de Agentes com o ambiente atravs de sensores e reagentes


(RUSSEL e NOVIG, 1995)

Autonomia, aqui, significa dizer que o sistema pode executar tarefas sem o
intermdio do usurio e que possui o controle de suas aes e de seu estado interno.

A flexibilidade das aes o que distingue um agente de um programa de


controle de processos. Segundo JENNINGS (1998), flexibilidade significa que o sistema :

Reativo: agentes devem perceber seu ambiente e responder


oportunamente s mudanas que ocorrem nele;

Pr-ativo: agentes no devem simplesmente atuar em resposta ao


ambiente,

devem

exibir

um

comportamento

oportunista

direcionado ao seu objetivo e tomar a iniciativa quando apropriado;

Social: agentes devem interagir, quando apropriado, com outros


agentes artificiais ou humanos para completar suas prprias solues
de problemas ou ajudar outros com suas atividades.

Segundo WOOLDRIDGE (1999) as trs caractersticas citadas, reativo, prativo e social, so suficientes para classificar um agente como inteligente.

2.3.CARACTERSTICAS DE AGENTES INTELIGENTES

Como foi citado anteriormente, segundo WOOLDRIDGE (1999),


reatividade, pr-atividade e sociabilidade so caractersticas suficientes para que um agente
seja considerado inteligente.

Apesar disto, Agentes e Agentes Inteligentes possuem caractersticas


independentes. Para tornar mais clara essa separao, as caractersticas sero apresentadas
em dois tpicos: Caractersticas Gerais de Agentes, que aborda as caractersticas comuns aos
Agentes e Agentes Inteligentes; e Caractersticas Especficas de Agentes Inteligentes, que
como o prprio ttulo diz, aborda as caracterticas presentes somente nos Agentes Inteligentes.

2.3.1.Caractersticas Gerais de Agentes

Alguns atributos que caracterizam os agentes de forma geral, so


(WOOLDRIDGE e JENNINGS, 1995):

Autonomia: atuam sem a necessidade de interferncia do usurio e


possuem algum tipo de controle sobre suas aes e seu estado
interno;

Habilidade Social: interagem com outros agentes e em alguns casos


com seres humanos por algum tipo de linguagem de comunicao;

Reatividade: percebem seu ambiente (que pode ser o mundo fsico,


um usurio atravs de uma interface grfica, outros agentes, a
Internet ou talvez tudo isto combinado) e respondem s mudanas
ocorridas. Em alguns casos o agente fica em stand-by e s ativado
se algum evento especfico ocorrer no ambiente;

Pr-Atividade: no agem simplesmente em resposta ao seu


ambiente, eles so capazes de atingir suas metas tomando iniciativas
para o cumprimento das mesmas;

Continuidade Temporal: executam continuamente processos que


tanto podem estar ativos, em foreground, quanto adormecidos, em
background;

Orientao a Objetivos: deve ser capaz de lidar com tarefas


complexas em alto nvel. A deciso de como uma tarefa melhor
subdividida em tarefas menores, e em qual ordem e de que modo
devem ser executadas, deve ser feita pelo prprio agente.

2.3.2.Caractersticas Especficas de Agentes Inteligentes

Atualmente os "Agentes Inteligentes" so pesquisados em vrios campos,


como: Psicologia, Sociologia e Cincia da Computao. Alguns pesquisadores, que trabalham
no campo da Inteligncia Artificial, consideram que o termo agente possui um significado
muito mais amplo do que o significado citado anteriormente. Geralmente os pesquisadore
querem que um agente seja um sistema de computador que, alm de ter as caractersticas
identificadas anteriormente, sejam implementados usando conceitos que so

mais bem

aplicveis aos humanos. Os agentes que se enquadram nesse grupo tm uma ou mais das
seguintes caractersticas (GIESE, 1998):

Adaptabilidade: um agente deve ser capaz de ajustar-se aos hbitos,


mtodos de trabalho e preferncias de seus usurios;

Autonomia: a capacidade do agente operar separadamente e


decidir o que fazer enquanto opera separadamente;

Benevolncia: a suposio de que os agentes no tm objetivos


contraditrios e que todo agente consequentemente sempre tentar
fazer o que lhe solicitado;

Colaborao: um agente no deve aceitar (e executar) instrues


sem consideraes, ele deve levar em conta que o usurio humano
comete erros, omite informaes importantes e/ou fornece
informaes ambguas. Neste caso, um agente deve checar estas
ocorrncias fazendo perguntas ao usurio. Deve ser permitido a um
agente recusar executar certas tarefas que possam sobrecarregar a
rede ou causar danos a outros usurios;

Comunicabilidade: tambm chamado de habilidade social. Um


agente deve ser capaz de se comunicar com outros agentes, usurios,
objetos e seu ambiente;

Degradao Gradual: a capacidade do agente executar parte de


uma tarefa quando existe incompatibilidade na comunicao ou
domnio. No contexto das noes de risco, agentes trabalham melhor
quando apresentam esta caracterstica;

Flexibilidade: um agente deve ser capaz de fazer uma escolha


dinmica das aes e da seqncia de execuo das mesmas, em um
determinado estado do ambiente;

Inteligncia: o conjunto de recursos, atributos e caractersticas que


habilitam o agente a decidir que aes executar, bem como a
capacidade de tratar ambigidades. O raciocnio desenvolve-se
atravs de regras, conhecimento e evoluo artificial;

Mobilidade: a habilidade de um agente se mover pela rede;

Planejamento: a habilidade de sintetizar e escolher entre


diferentes opes de aes desejadas para atingir os objetivos;

Pr-Atividade:

um

agente

deve

exibir

oportunismo

comportamento direcionado a objetivos;

Reatividade: um agente deve perceber o ambiente e responder s


modificaes que ocorrerem nele;

Representabilidade: um agente deve representar o usurio em suas


aes.

2.4.CLASSIFICAO DE AGENTES INTELIGENTES

Apesar de toda a polmica que ronda o desenvolvimento de agentes, o


estudo quanto a sua usabilidade e aplicabilidade continua, e deste estudo surgiram
classificaes que nos permitem visualiz-los de uma forma mais ampla. Essas classificaes
so, por exemplo: quanto ao nvel de inteligncia, quando tarefa que executam, quando
mobilidade, quanto aquisio de inteligncia, e quanto nfase dada a alguns atributos
primrios.
2.4.1.Quanto ao Nvel de Inteligncia

Conforme SOUZA (1996), as aplicaes com agentes apresentam diferentes


nveis de inteligncia, podendo ser classificados nos seguintes nveis:

Baixo - neste nvel, os softwares agentes desempenham tarefas


rotineiras, disparadas por eventos externos. Estes agentes executam
redes de regras complexas, no se adaptam a mudanas e no
demonstram oportunismo com o passar do tempo;

Mdio - estes agentes utilizam uma base de conhecimento para


desenvolver raciocnio em eventos monitorados. Podem adaptar-se a
mudanas de condies na base de conhecimento e manipular as
novas

condies,

porm,

normalmente

no

demonstram

oportunismo;

Alto - neste nvel de inteligncia, os software de agentes utilizam


tanto aprendizado quanto raciocnio na base de conhecimento.
Aprendem com o comportamento do usurio, podem adaptar-se
mudanas e demonstram oportunismo com o passar do tempo.

2.4.2.Quanto Tarefa que Executam

De acordo com JENNINGS (1995), os agentes podem ser classificados


quanto tarefa que executam, da seguinte forma:

Gopher - so agentes que executam tarefas mais simples, baseandose em suposies e regras pr-especificadas. Por exemplo, o agente
pode avisar o usurio que ele possui uma reunio marcada para
sexta-feira as 14:00 hs;

Prestadores de Servio - so agentes que executam tarefas de alto


nvel, bem definidas, quando requisitadas pelo usurio. Estes agentes
podem organizar uma reunio (negociar datas e horrios da reunio
com os participantes);

Pr-Ativo - so agentes que desempenham as tarefas mais


complexas, eles podem pesquisar informaes, filtrar dados ou at
mesmo executar tarefas para o usurio sem que o mesmo as

requisite, sempre que isto for julgado apropriado. Por exemplo, um


agente pode monitorar novos grupos sobre a Internet e retornar
discusses que ele acredita serem de interesse do usurio.

2.4.3.Quanto Mobilidade

De acordo com NWANA (1996), os agentes podem ser classificados de


acordo com sua capacidade de se mover na rede em:

Agentes Estticos - so agentes que no podem se mover pela rede,


ou seja, atuam localmente.

Agentes mveis - so agentes que possuem a habilidade de se mover


pela rede.

2.4.4.Quanto Aquisio de Inteligncia

Dentro da classificao de agentes quanto aquisio de inteligncia,


existem duas categorias, segundo NWANA (1996) eles podem ser deliberativos e reativos.
Agentes deliberativos so aqueles que possuem um modelo de raciocnio e
um modelo simblico e interno, utilizado para tomar decises e executar tarefas necessrias
para alcanar seus objetivos. Estes agentes tambm so chamados de simblicos ou
cognitivos.

Agentes reativos, diferentemente dos deliberativos, executam apenas


quando estimulados, em resposta ao estado atual do ambiente no qual esto inseridos. Eles
no possuem um modelo simblico e interno dos mesmos. Eles tambm so denominados
reflexivos.

2.4.5.QUANTO

NFASE DADA

ALGUNS ATRIBUTOS PRIMRIOS

De acordo com NWANA (1996), os agentes podem ser classificados


levando em conta a nfase dada para alguns atributos primrios e considerados ideais
(cooperao, aprendizado, e autonomia) em: agentes inteligentes, agentes de aprendizado
colaborativo, agentes de interface e agentes colaborativos. (Figura. 2.2).
Agentes Inteligentes

Cooperao

Agentes de Aprendizado
Colaborativo

Aprendizagem

Autonomia
Agentes Colaborativos

Agentes de Interface

Figura. 2.2 - Classificao de Agentes quanto a nfase dada a alguns atributos primrios (NWANA, 1996).

NWANA (1996), refora a idia de que estas diferenas no so definitivas.


Por exemplo, os agentes deliberativos, possuem mais nfase sobre as propriedades de
cooperao e autonomia do que sobre aprendizado, isto no quer dizer que os agentes
deliberativos nunca aprendem.

2.4.6.Classificao Geral dos Agentes

Conforme NWANA (1996),

baseando-se nas

classes

de agentes

apresentadas anteriormente podem ser identificados vrios tipos de agentes. (Figura. 2.3).

Agente

Agentes
Autnomo

Agentes
Colaborativos

Sistemas
de Agentes
Heterogneos

Agentes de
Interface
Agentes
Mveis

Agentes
Hbridos
Agentes de
Informaes

Agentes
Reativos

Figura. 2.3 - Topologia de Agentes (NWANA, 1996).

Os agentes podem ser classificados em:

Colaborativos: Focalizam autonomia e cooperao (com outros


agentes) para executar suas prprias tarefas. Eles podem aprender,
mas no dado muita nfase a esta caracterstica em suas operaes.
Geralmente agentes colaborativos podem negociar para alcanar um
consenso sobre alguma questo.

De Interface: Enfatizam autonomia e aprendizado para executar


suas tarefas. Agentes de interface so agentes que interagem com o
usurio, recebendo especificaes do usurio e entregando
resultados.

Mveis: Agentes mveis so programas escritos tipicamente em


uma linguagem script, o qual pode ser despachado remotamente de
um computador cliente e transportado para um computador servidor
para a sua execuo.

De Informao: Agentes de informaes so agentes que acessam


uma, e potencialmente muitas fontes de informaes, e so capazes

de colecionar e manipular informaes obtidas destas fontes para


responder consultas solicitadas pelo usurio ou outros agentes.

Reativos: So agentes que executam tarefas quando estas so


solicitadas

pelo

usurio,

ou

seja

possuem

determinado

comportamento quando estimulados.

Hbridos: Agentes hbridos so os agentes que combinam a filosofia


de um ou mais tipos de agentes.

Sistemas Heterogneos: Sistemas de Agentes Heterogneos,


referem-se a um conjunto de dois ou mais agentes, os quais
pertencem a duas ou mais classes de agentes diferentes. Um sistema
de agente heterogneo pode tambm conter um ou mais agentes
hbridos. Sistemas de Agentes Heterogneos tambm so entendidos
como sistemas multi-agentes.

Autnomos: Agentes autnomos so agentes que podem interagir


independente e efetivamente com seus ambientes. No precisam
necessariamente do usurio.

2.5.REAS DE APLICAO

O crescimento do estudo em torno dos Agentes fez com que a indstria de


software despertasse para as mais variadas possibilidades de aplicaes para os mesmos.
Abaixo so listadas as aplicaes onde os Agentes de software fazem-se mais presentes, e
exemplos de ferramentas utilizadas nestes domnios:

Comrcio Eletrnico: O BargainFinder um agente que compara


lojas virtuais na Internet para encontrar o melhor preo para um
determinado CD. Neste sistema, o usurio informa ao agente os
dados referentes ao CD que gostaria de comprar, baseado nestas
informaes o agente realiza uma procura nas lojas virtuais
existentes, comparando o preo para obter o CD mais barato
(NISSEN, 1995).

Indstria: CIDIM (Sistema de Gerenciamento Distribudo de


Eletricidade) - responsvel pelo gerenciamento de energia, o qual
um processo de monitorao e controle do ciclo de gerao,
transporte e distribuio de energia eltrica para consumidores
industriais e domstico. Para minimizar as perdas durante o
transporte de energia, a voltagem alta (132 kV ou mais), antes de
ser colocada em uma rede de transporte. Finalmente, a voltagem
diminuda e a eletricidade enviada aos consumidores usando uma
rede de distribuio. Este sistema composto pelos seguintes
agentes: Identificador da rea de blackout, Interface do Sistema de
Controle pr-existente, Supervisor de Breakers e Rels, Sistema
Especialista Agente para Anlise de Alarmes no Cronolgicos
Existentes, Agente de Restaurao de Servio e Agente de Interface
do Usurio (JENNINGS, 1995).

Internet: NewT - um filtro de notcias da USENET. Um agente


NewT treinado fornecendo a ele uma srie de exemplos, artigos
ilustrativos que o usurio escolheria ou no para ler. O agente
comea a oferecer sugestes para o usurio, e dado um feedback

sobre suas sugestes. O agente NewT no pretende remover a


escolha humana, mas representar uma extenso de seus desejos: o
objetivo do agente ser capaz de trazer para o usurio artigos que
sejam de seu interesse (WOOLDRIDGE e JENNINGS, 1995).

Redes de Comunicao: Uma comunidade aberta de diferentes


agentes que cooperam para solucionar uma variedade de problemas
em um sistemas de gerenciamento de redes de telecomunicaes
complexo descrita. As principais funes realizadas pelos agentes
so: estabelecimento e restaurao de rotas em uma rede fsica e
satisfao das necessidades do cliente, e planejamento do
fornecimento

restaurao

do

servio.

As caractersticas mais notveis deste processo so: distribudo e


sujeito a falhas, suporta a possibilidade de melhorar a performance
sobre o sistema centralizado e o escopo de reduo da quantidade
total de dados passados para um ponto central, e a flexibilidade de
permitir ao sistema distribudo uma degradao mais suave
(BUSUIOC e GRIFFITHS, 1994).

Simulao: HOMER - um agente desenvolvido com o objetivo de


simular um rob submarino, o qual existe em mundo martimo de
duas dimenses, sobre o qual ele possui somente conhecimento
parcial. Ele executa instrues do usurio limitadas a um
subconjunto de palavras em ingls com aproximadamente 800
palavras. Instrues podem conter referncias temporais sofisticadas
moderadamente. Este agente possui uma memria episdica

limitada, e utiliza isto para ser apto para responder questes sobre
suas experincias passadas (WOOLDRIDGE e JENNINGS, 1995).

CAPTULO 3
AGENTES INTELIGENTES

3.1.ARQUITETURA DE AGENTES

Segundo WOOLDRIDGE e JENNINGS (1995) a arquitetura de agentes


envolve tcnicas e algortmos utilizados por uma metodologia especfica para a construo de
agentes. Isto determina a forma como os agentes devem ser decompostos para a construo de
um conjunto de mdulos-componentes e como estes mdulos podem interagir entre si. O
conjunto total dos mdulos e suas interaes providenciam uma resposta para a questo de
como sensores de dados e o estado interno do agente determinam as aes e futuros estados
internos do agente.

3.1.1.Arquitetura Bsica

Conforme DAVIDSSON (1992), todos os agentes autnomos baseados em


computador possuem mais ou menos a mesma arquitetura. (Figura. 3.1).

Figura. 3.1 - Arquitetura bsica de um Agente Autnomo Baseada em Computador (DAVIDSSON, 1992).

A seguir apresentado uma breve descrio sobre cada uma das partes que
compe a arquitetura do agente:

Setas - as setas simbolizam o fluxo de dados.

Sensores - os sensores recebem informaes do ambiente e


providenciam dados para o mecanismo de inferncia.

Mecanismo de Inferncia - o mecanismo de inferncia o crebro


do agente inteligente. Quando notificado de algum evento, o
mecanismo de inferncia opera sobre conjuntos de regras e execuo
de raciocnio simblico complexo para determinar como reagir ao
evento e qual ao executar.

Base de Conhecimento - o local onde o agente armazena seu


conhecimento.

Atuadores - os atuadores so responsveis pela execuo das aes


do agente sobre o ambiente.

3.2.CARACTERSTICAS QUE TORNAM UMA APLICAO APROPRIADA PARA AGENTES.

Tomando como bases as caractersticas comuns dos agentes, pode-se identificar um


conjunto de caractersticas que tornam uma tarefa ou aplicao apropriada para ser abordada
com base na tecnologia de agentes. A seguir, as caractersticas especificadas por Andrew
Wood (WOOD, 1994):

Adaptao: Tarefa que requer um certo grau de adaptabilidade; o


agente necessita desenvolver habilidades para execut-la aprendendo
melhores ou novos meios. O que tambm inclui mtodos para evitar
falhas e se adaptar as necessidades, desejos e objetivos pessoais do
usurio.

Pesquisa: A tarefa no completamente definida, o agente deve


considerar uma grande quantidade de solues, escolhendo a melhor
de acordo com sua experincia.

Demonstrao: A tarefa envolve aprendizado e treinamento. Isto


inclui ensinar os usurios a usar ferramentas de software de maneira
mais eficaz e tambm, por outro lado, fornecer explicaes de que o
prprio agente est fazendo.

Ajuda: A tarefa requer um certo grau de cooperao entre o usurio


e o agente. O agente poderia fazer crticas construtivas ao modo de
trabalhar do usurio, ou dar " dicas " sobre com o utilizar melhor os
recursos do sistema.

Autonomia: A tarefa requer ateno constante ou regular, mas


pouca ou nenhuma entrada ou interao. Dessa forma, delegar esta
tarefa seria muito til e benfico. Um exemplo seria o
monitoramento de sistemas simples, onde uma mudana no
comportamento poderia gerar a execuo automtica de alguma
tarefa ou ao.

Assincronia: A tarefa tem um intervalo significativo entre seu incio


e trmino. Este intervalo poderia ser devido ao processamento de
grandes quantidades de informao ou mesmo a falta de informaes
vitais para o processamento em um determinado momento.

3.3.INTELIGNCIA ARTIFICIAL DISTRIBUDA (IAD)

A Inteligncia Artificial Distribuda (IAD), o estudo e projeto de sistema


em que vrios agentes interagem, distribuindo-se logicamente, ou algumas vezes,
espacialmente, onde podem ser de chamados autnomos e inteligentes (STONE e VELOSO,
1997).

Inteligncia Artificial Distribuda, a interseo

da Computao

Distribuda 1 (CD) e da Inteligncia Artificial 2 (IA). (Figura 3.2).

Computao
Distribuda

IAD

Inteligncia
Artificial

Inteligncia Artificial
Distribuda

Figura. 3.2 - Origem da Inteligncia Artificial Distribuda (STONE e VELOSO, 1997).

De acordo com SOUZA (1996), Inteligncia Artificial Distribuda


distingue-se do paradigma simblico representante da Inteligncia Artificial Tradicional nos
seguintes aspectos:

Inteligncia Artificial - Preocupa-se com a representao do


conhecimento e mtodos de inferncia, estando voltada para a
construo de um programa inteligente.

Computao Distribuda, consiste na possibilidade de utilizar mais de um processador para trabalhar sobre um
problema computacional (STONE e VELOSO, 1997).
2
Inteligncia Artificial o estudo de como fazer os computadores realizarem coisas que, no momento, as
pessoas fazem melhor (RICH e KNIGHT, 1993).

Inteligncia Artificial Distribuda - Preocupa-se com a interao e


o comportamento social, estando voltada para a construo de uma
sociedade de programas inteligentes.

Ainda de acordo com STONE e VELOSO (1997), Inteligncia Artificial


Distribuda divide-se em duas reas: Resoluo Distribuda de Problemas (RDP), e Sistemas
Multi-Agentes (SMA).

3.3.1.Resoluo Distribuda de Problemas

Os Sistemas de Resoluo Distribuda de Problemas, conforme STONE e


VELOSO (1997), trabalham com o gerenciamento de informaes. Este gerenciamento de
informaes consiste em:

decomposio de tarefas;

sntese de soluo.

Na decomposio de tarefas, uma tarefa complexa dividida em diversas


sub-tarefas e enviadas para processadores diferentes. J na sntese de soluo, o resultado de
diferentes sub-tarefas so combinadas.

3.3.2.Sistema Multi-Agentes

Ainda conforme STONE e VELOSO (1997), uma vez que existe a


linguagem de comunicao (ou protocolo) e a capacidade de construir agentes est disponvel,
a pergunta que surge : Como os agentes devem ser organizados para conseguirem maior
interao entre si?

Duas abordagens diferentes tem sido exploradas:

comunicao direta - os agentes mesmos cuidam da coordenao.

coordenao auxiliada, na qual h programas especiais para


organizar a coordenao.

Apesar das duas abordagens serem interessantes, uma abordagem que


promova a unio delas seria mais prtica. Utiliza-se ento a abordagem chamada de sistema
federado. um sistema em que os agentes no se comunicam diretamente entre si, mas fazem
uso de um intermedirio, uma espcie de supervisor, que se encarrega de se comunicar
entre os diversos supervisores e estes por sua vez, encarregam-se da comunicao entre seus
agentes.

O supervisor precisar suportar alguns requisitos bsicos, permitindo que os


agentes possam: pedir informaes de outros agentes, observar e saber das atividades de
outros agentes, interceptar e mudar os pedidos destinados a outros agentes e estabelecer
comunicao com agentes sob o controle de outros supervisores.
3.4. LINGUAGENS DE AGENTES

Para desenvolver agentes inteligentes so utilizados dois tipos de


linguagens: linguagens de comunicao de agentes e linguagens de programao de agentes
(GIESE, 1998).

3.4.1.Linguagem de Comunicao de Agentes

Conforme

GENESERETH

KETCHPEL

(1994),

existem

duas

aproximaes populares para o projeto de uma linguagem de comunicao de agente:

Aproximao Procedural - baseada na idia de que a


comunicao pode ser melhor modelada com trocas de diretivas
procedurais. Linguagens script (tal como TCL, Apple Events, e
Telescript) so baseadas nesta aproximao.

Aproximao Declarativa - baseada na idia que a comunicao


pode ser melhor modelada com trocas de sentenas declarativas
(definies, suposies, e o gosto). A linguagem ACL baseada
nesta aproximao.

Atualmente, existem vrias

linguagens

propostas

para realizar a

comunicao entre agentes. A seguir, so descritas algumas destas linguagens:

Agent Talk: uma linguagem de descrio de protocolos de


coordenao para sistemas multi-agentes. Na rea de Inteligncia
Artificial Distribuda, muitos protocolos de coordenao tais como
protocolo de redes de contrato tem sido propostos, e muitos

protocolos para aplicaes especficas sero requeridos quanto mais


softwares
Permite

de

agentes

protocolos

de

forem

coordenao

construdos.
serem

definidos

incrementalmente e serem facilmente personalizados para ajustar-se


ao domnio da aplicao incorporando um mecanismo de herana
(FININ, 1997).

ACL:

Agent

Communication

Language

Linguagem

de

Comunicao do Agente - uma linguagem baseada na aproximao


declarativa, onde baseia-se na idia que a comunicao pode ser
modelada melhor com a troca de sentenas declarativas (definies,
suposies

gostos)

(IBM,

1995).

ACL composta de trs partes, seu vocabulrio (dicionrio de


palavras apropriadas para reas de aplicaes comuns), uma
linguagem interna KIF e uma linguagem externa KQML. Uma
mensagem ACL uma expresso KQML no qual os argumentos so
termos ou sentenas em KIF formadas de palavras do vocabulrio
ACL (GENESERETH e KETCHPEL, 1994).

KIF: Knowledge Interchange Format / Formato de Troca de


Conhecimento -

uma linguagem formal para troca de

conhecimento entre programas disparados. Possui uma semntica


declarativa, e compreendida logicamente, utilizada para representar
o

conhecimento

sobre

representao

de

conhecimento,

representao de regras de raciocnio no monotnicos e definio


de objetos, funes e relaes. O propsito de KIF proporcionar o

desenvolvimento independente de programas de manipulao de


conhecimento (FININ, 1997).

KQML:

Knowledge

Query and

Manipulation

Language

Linguagem de Manipulao e Consulta de Conhecimento - uma


linguagem e protocolo para troca de informaes e conhecimentos.
Pode ser utilizada por um programa para interagir com um sistema
inteligente ou para o compartilhamento de conhecimento por dois ou
mais

sistemas

inteligentes

para

resoluo

de

problemas

cooperativamente.
KQML concentra-se a um conjunto extensivo de primitivas as quais
define as operaes permitidas que os agentes podem realizar sobre
o conhecimento e objetivos de cada outro agente (FININ, 1997).

3.4.2.Linguagem de Programao de Agentes

Linguagem de Programao de Agentes a linguagem com que


desenvolvido um agente. Algumas das Linguagens de Programao de Agentes so
linguagens utilizadas para o desenvolvimento de aplicaes comerciais. A seguir, so
relacionadas algumas linguagens de programao existentes:

Java: uma linguagem de programao similar em sintaxe ao C++,


mas similar em outros meios com Smalltalk e Objective C. O
sistema inclui um compilador de cdigo de byte e uma mquina
virtual;

LALO: uma linguagem de programao orientada a agentes e um


ambiente para desenvolvimento de sistemas multi-agentes. Um
programa escrito em LALO traduzido em cdigo fonte C++, para
depois ser compilado, e utiliza KQML para comunicao entre
agentes (FININ, 1997);

Obliq: uma linguagem interpretada e orientada a objetos com


suporte para computao mvel, tal como agente mvel. Obliq
mantm seu escopo lxico, mesmo onde um programa distribudo
atravs da rede (ITA, 1997);

Phantom: uma linguagem interpretada projetada para aplicaes


distribudas, interativas e em larga escala, tais como sistemas de
conferncia distribuda, jogos em rede, e ferramentas de trabalho
colaborativo (FININ, 1997);

Python: uma linguagem script orientada a objetos no esprito do


ABC e Modula-3. utilizado como um bit em uma linguagem
estendida/embutida em projetos hypermdia, e utilizado como um bit
para processamento de textos e roteiros administrativos que
freqentemente utilizam Perl (FININ, 1997);

Tcl/Tk: um sistema de programao de fcil utilizao. O Tcl a


linguagem de programao bsica, enquanto Tk um conjunto de
objetos grficos.
O

sistema

Tcl/Tk

pode

ser

configurado

para

trabalhar

cooperativamente com outra linguagens tal como C ou C++.


Tcl suporta muitos dos fatores das linguagens procedurais
convencionais, incluindo atribuio de variveis, chamadas de

procedures, estruturas de controle, e possui acesso fcil para objetos


grficos (TCL, 1996);

Telescript: um software para construo de aplicaes


distribudas utilizando agentes mveis. uma linguagem de
programao remota orientada a objetos o qual divide todos os
processos em agentes e locais, e permite comunicao entre
processos (NOSCHANG, 1996).

3.5.AGENTES X OBJETOS

Quem trabalha com orientao a objetos pode pensar por um momento que Agentes
so na verdade objetos pensantes. Na verdade existem algumas semelhanas e muitas
diferenas entre agentes e objetos. Objetos podem ser definidos como entidades de software
que encapsulam um estado, so habilidosos na execuo de aes, ou mtodos neste estado e
se comunicam atravs de mensagens. As semelhanas so muito claras: modularidade e
controle sobre seu estado interno (SILVA e MENESES, 2001).

As diferenas, no entanto, se mostram mais fortes do que se imagina,


conforme cita (WOOLDRIDGE, 1999):

Agentes incorporam uma noo mais forte de autonomia que os


objetos, em particular, decidem por eles mesmos se executam ou no
uma ao a pedido de outro agente;

Agentes so capazes de comportamento flexvel (reatividade, pratividade e sociabilidade) e o modelo padro de orientao a objetos
no diz nada sobre este comportamento;

Um sistema multi-agentes inerentemente multi-thread , ou seja,


trabalha com vrios processos, e cada thread (processo) controlado
por pelo menos um agente.

POUCA GENTE SABE,


EM

LINGUAGENS

ORIENTADAS

MAS NADA IMPEDE QUE AGENTES SEJAM PROGRAMADOS


OBJETOS.

EXISTEM

PROGRAMAO DE AGENTES EM LINGUAGENS COMO

TEMPLATE1). OU SEJA,

TEMPLATES

PACOTES

PARA

JAVA (EX. JAT JAVA AGENT

PODEMOS TIRAR PROVEITO DAS SEMELHANAS PARA EXPLICITAMENTE

PROGRAMAR AS CARACTERSTICAS DE AGENTES NO PREVISTAS NO MODELO DE ORIENTAO A


OBJETOS.

3.6.Agentes e Internet

fato que a Internet, como foi citado anteriormente, foi uma das maiores
revolues da humanidade. A Internet apresenta-se como um ambiente apropriado para a
utilizao de agentes inteligentes. A Internet um enorme banco de dados acessvel
mundialmente, ela promove melhorias e facilidades jamais vistas. Porm, acompanhando as
vrias melhorias e facilidades oferecidas pela Internet, surgiram junto, alguns problemas:

A rede lenta nas respostas s solicitaes dos usurios e facilmente


congestionvel pelo excesso de pedidos;

Complexidade dos servios oferecidos, exigindo conhecimento


especializado para sua utilizao;

http://java.stanford.edu

O usurio pode receber como respostas, endereos desatualizados ou


incompletos;

Interrupo na transmisso;

Dificuldade para usurios leigos operarem os diversos servios de


informao oferecidos pela WWW;

Obteno de informaes irrelevantes junto s solicitadas.

3.6.1.Problemas relativos demanda de informao

A informao disponibilizada pela Internet muito vasta e quanto solicitada


provavelmente estar disponvel em algum ou em vrios lugares distintos, mas
freqentemente somente partes podem ser recuperadas, ou algumas vezes no se consegue
nada.

Em muitas situaes, perde-se um tempo extraordinrio tentando encontrar


estas informaes e , em geral, os mecanismos de busca convencionais no parecem ser
capazes de sanar tais problemas. Estes mtodos so baseados no princpio do que conhecido
e qual informao est disponvel e onde exatamente pode ser achada.

Para fazer isto possvel, so utilizados sistemas de informao e banco de


dados providos com grande quantidade de ndices para proporcionar ao usurio a informao
desejada. Com o auxlio de tais ndices, o usurio ver se a informao solicitada pde ou no
ser encontrada no banco de dados.
Na Internet esta estratgia falha e as razes para isto so:

A natureza dinmica da prpria Internet: no h nenhuma


superviso central no crescimento e desenvolvimento da Internet.
Qualquer pessoa que quer usar e/ou oferecer informao ou servios
na Internet, livre para faz-lo;

A natureza dinmica da informao na Internet: a informao


que no pode ser achada hoje, pode estar disponvel amanh. E o
contrrio tambm acontece, a informao que estava disponvel,
pode desaparecer de repente;

A informao e os Servios de Informao na Internet so muito


heterogneos: a informao na Internet est sendo oferecida em
muitos tipos diferentes de formatos e de formas diferentes.

3.6.2.Instrumentos de busca e agentes inteligentes

Embora os instrumentos de busca na Internet sejam um valioso servio, eles


tambm apresentam algumas desvantagens. Uma soluo para este problema seria o uso dos
"Agentes Inteligentes". Considerando que no futuro o ritmo de crescimento da informao
ser sempre maior, os agentes podero ser o nico modo eficiente para procurar na Internet.

A utilizao de agentes para executar buscas na Internet apresentam certas


vantagens comparadas aos atuais mtodos. Abaixo so apresentadas as caractersticas dos
instrumentos de busca atualmente utilizados e em seguida as melhorias que a ulitizao de
agentes oferece:

As caractersticas do instrumentos de busca atuais so:

Uma busca de informao baseada em uma ou mais palavras


chaves informadas pelo usurio. As consultas estaro sujeitas a
erros, quando as palavras chaves so muito grandes ou muito
pequenas, recuperando informaes irrelevantes;

O mapeamento realizado pela coleta de (meta-)informaes a partir


das informaes e documentos que esto disponveis na Internet.
um mtodo muito demorado que causa muito trfego de dados e no
considera a natureza dinmica da Internet e das informaes que
podem ser encontradas nela;

A procura por informao limitada freqentemente a poucos


servios da Internet;

A informao na Internet muito dinmica: os instrumentos de


busca freqentemente referem-se s informaes que foram movidas
de um lugar para outro, dando uma localizao desconhecida ou
desaparecida.
Estes instrumentos no aprendem com estas buscas e no so
capazes de ajustar estas informaes para seus usurios.

A utilizao de agentes oferece as seguintes melhorias:

Os agentes so capazes de buscar informao de forma mais


inteligente, utilizando ferramentas que possibilitam a pesquisa em
termos relacionados ou at mesmo atravs de conceitos;

Os agentes podem criar a sua prpria base de conhecimento sobre


fontes de informao disponveis na Internet, que atualizada e
ampliada depois de toda busca.
Alm disso, no futuro, agentes sero capazes de comunicar e
cooperar com outros agentes. Isto os habilitar a executar buscas de
informao de forma mais rpida e eficiente, reduzindo o trfego na
rede;

Os agentes assistem o usurio nas suas necessidades, no precisando


se preocupar como os vrios servios da Internet so operados;

Agentes se ajustam de acordo com as preferncias e desejos dos


usurios. Isto conduzir a agentes que mais e mais se auto ajustaro,
aprendendo atravs das tarefas executadas e do modo como os
usurios reagem aos resultados encontrados.

Captulo 4
Exemplo de Agente Agente Flash

4.1. APRESENTAO

Como j foi dito anteriormente, a ascenso da Internet mudou


completamente a forma como a sociedade analisa o seu processo evolutivo. Agora a histria
da sociedade moderna pode ser divida em dois perodos: antes da Internet e depois da
Internet.

O fato da Internet ter alcanado o usurio domstico fez com que ela
sofresse uma radical expanso tornando-a, por assim dizer, uma moda definitiva. No meio
de todo o rebolio causado pelo crescimento desacelerado da Internet, a necessidade de se
manter atualizado e a facilidade com que a Internet permite o acesso a estes contedos fez
com que o usurio se perdesse entre sites e mais sites com os mais variados contedos.
Provou-se que a to pregada facilidade no to real assim.

Tendo em vista a real necessidade do usurio poder ter acesso ao contedo


que deseja, sem que sofra stress tecnolgico, ser apresentado o agente FLASH.

O FLASH um software que monitora uma lista de sites determinada pelo


usurio, checa alteraes no contedo do site, alerta o usurio da alterao efetuada e executa
o browser Web para a exibio do site.

Quando foi definido o termo Agente neste trabalho, foi dito que este um
componente de um contexto que age em favor do usurio ou por ele. Para que se faa uso de
um agente, ele deve preencher alguns requisitos que satisfaam o usurio. Os requisitos que o
agente FLASH deve preencher para executar as tarefas para as quais ele se prope, so
listados abaixo:

O software deve permitir que o usurio insira a lista de sites que ele
gostaria que fossem monitorados;

O programa deve checar periodicamente a lista de sites e detectar


quando houverem mudanas, como por exemplo: a mudana de
contedo em um web site;

O aplicativo deve executar o browser Web do usurio sempre que


for detectada alguma alterao em algum dos sites da lista. O
browser Web executar e exibir o site que sofreu a alterao
detectada.

4.2.MODELAGEM

A modelagem de um Agente passa por alguns passos que as metodologias


de desenvolvimento de software atuais colocam como necessrias, apesar de existirem
pesquisadores estudando propostas de modelagem exclusivamente de agentes. Alm do
Sistema Operacional utilizado, a linguagem no qual ser desenvolvido, existem de fato, outros
detalhes que devem ser cuidadosamente observados devido a natureza do software e a forma
de atuao do mesmo.

Alguns detalhes que devem ser considerados no momento de modelarmos


um Agente, so:

rea de atuao do Agente: refere-se ao ambiente onde o Agente


ir atuar. No caso apresentado a rea de atuao do Agente a
Internet;

Papel do agente: refere-se a responsabilidade que o Agente


assumir diante da rea de atuao no qual ele foi inserido. O
FLASH, por exemplo, tem o papel de checar alteraes em web sites
e informar o usurio de tais alteraes atravs da exibio da pgina
alterada;

Abrangncia da atuao: refere-se ao alcance da atuao do


Agente. Por exemplo, no caso do programa FLASH, o alcance dele
limita-se a lista de web sites que o usurio ir informar e no a toda
Internet.

Foi dito neste trabalho que o Agente um ator em um contexto, e que ele
possui recursos que fazem com que ele atue no contexto. Quando feita a modelagem de um
Agente, deve-se considerar que recursos do Agente aplicar-se-o realidade na qual ele ser
inserido. Dois dos recursos que os Agentes possuem so visveis neste exemplo, so eles: os
sensores, que permitem que eles percebam a situao na qual esto inseridos; e os
reagentes que so os responsveis por atuar no contexto.

Os sensores de um Agente captam eventos ocorridos no contexto e os


reagentes atuam baseados nos eventos ocorridos. importante que fique claro que os eventos
no so necessariamente os eventos nativos do Sistema Operacional em uso, podendo ser

eventos externos ao Sistema Operacional. No caso do Agente apresentado, o evento que ir


ativa-lo um evento externo ao Sistema Operacional: a alterao de algum web site que esteja
na lista determinada pelo usurio.

Quando ocorrer a alterao de qualquer web site da lista o Agente entender


como uma situao na qual ele deve atuar, e a partir da ele executar as aes para o qual ele
foi designado, no caso, executar o browser default do usurio exibindo a pgina alterada.

4.3. Funcionamento

O agente FLASH possui um funcionamento relativamente simples. Ser


descrito em linhas gerais quais so os pontos principais deste funcionamento.

Nos processos de anlise de requisitos e modelagem do Agente puderam ser


identificados alguns pontos fundamentais para a execuo das tarefas.
Para que o objetivo seja alcanado o funcionamento deve obedecer alguns
passos que so exibidos abaixo:
O Agente utilizar uma conexo de Internet ativa, caso no haja uma
conexo ativa com a Internet o agente ativa o Dial-up;

Figura 4.1 Interface Dial-Up

O Agente possuir uma lista de web sites. Esta lista poder sofrer
incluses e adies a qualquer tempo. Esta lista ser salva em um
arquivo de texto. No caso do Agente estar sendo executado pela
primeira vez, ser solicitado ao usurio a incluso de pelo menos 1
site na lista;

Figura 4.2 Tela inicial do Agente FLASH

O Agente far o download do contedo do site e o armazenar


para us-lo como referncia para a checagem das alteraes
(comparao de contedo);

Figura 4.3 Lista de sites fornecida pelo usurio

O Agente far checagem nos sites da lista fornecida de trs em trs


minutos;

Ser executado o browser default do usurio no momento em que o


Agente detectar alterao de algum dos sites da lista. O browser
exibir o site que sofreu alterao.

O exemplo apresentado neste trabalho foi extrado do livro de David


Pallmann (PALLMANN, 1999). Ele foi desenvolvido utilizando-se o Microsoft Visual C++ 6.
No Anexo I deste trabalho so apresentados os cdigos fonte do agente Flash.

CAPTULO 5
CONCLUSO

O desenvolvimento deste trabalho teve como objetivo fundamental apresentar a


tecnologia de agentes como algo real e acessvel a comunidade acadmica. A principal
motivao para o estudo de agentes o fato de esta tecnologia ser mais realidade do que
conceitos propriamente ditos, permitindo assim que faa-se um estudo dirigido de forma a
estimular o desenvolvimento de pesquisas nesta rea que se mostra to promissora.

Neste trabalho procurou-se apresentar uma viso menos cientfica e terica para se
apresentar uma viso mais didtica e prtica. O exemplo apresentado neste trabalho
aplicvel a contextos simples e est passvel de incrementos e melhorias, o intuito foi de
mostrar que os agentes inteligentes so mais simples do que se prega, so pedaos de
software com caractersticas especiais. Apesar desta aparente simplicidade, a tecnologia de
agentes seriamente estudada e aplicada em algumas reas de muita importncia.

Apesar de algumas crticas lanadas sobre os agentes inteligentes, o mercado de


tecnologia de hoje tem se mostrado muito receptivo a eles. Neste trabalho foram citadas
algumas reas onde os agentes inteligentes esto sendo utilizados.

No exemplo apresentado neste trabalho, o agente FLASH, pode-se perceber


caractersticas bsicas de um agente, como por exemplo: reatividade e benevolncia. O agente
FLASH tambm apresenta-se como fruto do desenvolvimento em uma das linguagens citadas
neste trabalho, a linguagem C++.

Fazer previses sobre qual ser o papel dos agentes inteligentes no futuro algo que
no se pode fazer, visto que a tecnologia de agentes ainda est em processo de
desenvolvimento e os grupos envolvidos nas pesquisas ainda exercem influncia uns sobres
os outros.

Apesar de toda essa incerteza quanto ao futuro dos agentes, eles mostram-se presentes
nos dias atuais, em ferramentas que so utilizadas no dia-a-dia da Internet, como por exemplo:
Comrcio Eletrnico, Ensino a Distncia, Mecanismos de Busca, entre outros.

Em resumo, pode-se dizer que a tecnologia de agentes uma realidade de um


potencial muito grande, mas que precisa de ateno e seriedade ao ser estudada. Assim como
outras fantsticas tecnologias que temos hoje em dia precisaram de um tempo de
amadurecimento, pode-se dizer que a tecnologia de agentes est caminhando para esta fase e
que bem possvel que no futuro, se prximo ou distante no se sabe, existiro mais destas
novas formas de vida cercando cada usurio de computador do que imaginamos.

REFERNCIAS BIBLIOGRFICAS

BUSUIOC, M., GRIFFITHS, D. - Cooperating intelligent agents for service


management in communications networks. Proceedings of the Special Interest Group on
Cooperating Knowledge Based Systems. Selected Papers from the Workshop, p. 21326,1994.

DAVIDSSON, P. - Concept Acquisition by Autonomous Agents: Cognitive Modeling


versus the Engineering Approach. Lund University Cognitive Studies 12, ISSN 11018453, Lund University, Sucia, 1992.

DAVIDSSON, P. - On the Concept of Concept in the Context of Autonomous Agents. In


Second World Conference on the Fundamentals of Artificial Intelligence, p. 85-96, 1995.

FARLEY, S. R. - Mobile Agent System Architecture: A flexible alternative to moving


data and code to complete a given task. Java Report. SIGS Publications, Inc. New York,
NY, 1997.

FRANKLIN, S., GRAESSER, A. - Is it an Agent, or just a Program?: A Taxonomy for


Autonomous Agents. Proceedings of the Third International Workshop on Agent
Theories, Architectures, and Languages, Springer-Verlag, 1996.

FRAYA, Ftima. Redao e Apresentao Grfica de Monografia. Belm: Centro de


Ensino Superior do Par, 2001.

GENESERETH, M. R., KETCHPEL, S. P. - Software Agents. CACM - Communicatons


of the ACM, vol. 37, n 7, p. 48-53, julho, 1994.

GIESE, L. F. - Estrutura de Agentes para os Processos de Compra e Venda utilizando


Tomada de Deciso Difusa, Dissertao de Mestrado, Universidade Federal de Santa
Catarina, 1998

GRAY, R. S. - Agent Tcl: Alpha Release 1.1. Documentao do Sistema Agente Tcl,
Departamento de Cincias da Computao, Faculdade Dartmouth, Hanover, 1995.

HERMANS, B. - Intelligent Software Agents on the Internet: an inventory of currently


offered functionality in the information society & a prediction of (near) future
developments. Tilburg University, Tilburg, Holanda, julho, 1996.

HOLANDA FERREIRA, Aurlio Buarque de. Novo Dicionrio da Lngua Portuguesa.


Rio de Janeiro: Nova Fronteira, 1975.

IBM - Open Blueprint: Intelligent Agent Resource Manager. IBM Corporation, Nmero
do Documento G325-6592-00, 1995.

ITA (Mitsubishi Electric Information Technology Center America) - Concordia: An


Infrastructure for Collaborating Mobile Agents. First International Workshop on Mobile
Agents 97 (MA'97), Berlin, Alemanha, abril, 1997.

JENNINGS, N. R. - Agent Software. Proceedings UNICOM Seminar on Agent Software,


Londres, UK, p. 12-27, 1995.

JENNINGS, N., WOOLDRIDGE, M. - Software Agents. IEEE Review, p. 17-20, janeiro,


1996.

JENNINGS, N., SYCARA, K., e WOOLDRIDGE, M. A Roadmap of agent research and


development. 1998.

LUCK, M., GRIFFITHS, N., DINVERNO, M. - From Agent Theory to Agent


Construction: A Case Study. In Intelligent Agents III: Proceedings of the Third
International Workshop on Agent Theories, Architectures and Languages, Mueller,
Wooldridge e Jennings (eds.), Lecture Notes in AI, 1193, p. 49-63, Springer-Verlag, 1997.

NWANA, H. S. - Software Agents: An Overview. Knowledge Engineering Review Press,


vol. 11, n 3, p. 1-40, 1996.

PALLMANN, David Programming Bots, Spiders, and Intelligent Agents in Microsoft


Visual C++. Washington: Microsoft Press, 1999. 661p.

RICH, E., KNIGHT, K. - Artificial Intelligence. McGrawHill, Inc. Nova Iorque, USA,
1993

RUSSEL, S. e NORVIG, P. Artificial Intelligence: A Modern Approach. New Jersey,


Prentice Hall, 1995.

SILVA, Flvio Soares Corra e MENESES, Eudnia Xavier. Integrao de Agentes de


Informao. Anais do Congresso da Sociedade Brasileira de Computao. Fortaleza:
2001. p. 209-253.

STONE, P., VELOSO, M. - Multiagent Systems: A Survey from a Machine Learning


Perspective. CMU CS technical report number CMU-CS-97-193, USA, 1997.

WOOD, A. - Towards a Medium for Agent-Based Interaction. School of Computer


Science , The University of Birmingham, 1994

WOOLDRIDGE, M., JENNINGS, N. R. - Intelligent Agents: Theory and Practice. The


Knowledge Engineering Review, vol. 10, n 2, p. 115-152, 1995.

WOOLDRIDGE, M. Intelligent Agents In G. Weiss, editor: Multiagent Systems, The


MIT Press, April, 1999.

AUER,

K.

Agents

[on line].

Jan.

1997.

Disponvel:

http://www.tip.net.au/~kauer/project/main.htm [capturado em 15 set. 2001].

FININ, T. - Agent Programming and Scripting languages [on-line]. Maio. 1997.


Disponvel: http://www.cs.umbc.edu/agents/technology/asl.shtml [capturado em 15 set.
2001].

HERMANS, B. - Intelligent Software Agents on the Internet [on line]. 1999. Disponvel:
http://www.firstmonday.dek/issues/issue2_3/index.html

ORCHARD,

D.

Intelligent Agents

[on line].

Nov. 1996.

Disponvel:

http://www.pacificspirit.com/Courses/Agents/index.htm [capturado em 20 set. 2001].

SOUZA, E. M. S. Uma Estrutura de Agentes para Assessoria na Internet [on line].


Nov. 1996. Disponvel: http://www.eps.ufsc.br/disserta96/eliane/index/ .

TCL. TCL WWW Info [on-line]. 1996


Disponvel: http://www.sco.com/Technology/tcl/Tcl.html

WORLD WIDE WEB CONSORTIUM. Mobile Code [on line]. Maio. 1997. Disponvel:
http://www.w3.org/pub/WWW/MobileCode/ .

ANEXO I
CDIGOS FONTE

Os cdigos fonte deste anexo so em C++, e foi utilizada a ferramenta de


desenvolvimento Visual C++ 6. Todos os cdigos fonte apresentados neste anexo esto
separados em: Arquivos Fonte e Arquivos de Cabealho.

AGENTE FLASH
1. ARQUIVOS FONTE

FLASH.CPP
// FLASH.CPP : DEFINES THE CLASS BEHAVIORS FOR THE APPLICATION.
//
#INCLUDE "STDAFX.H"
#INCLUDE "FLASH.H"
#INCLUDE "FLASHDLG.H"
#IFDEF _DEBUG
#DEFINE NEW DEBUG_NEW
#UNDEF THIS_FILE
STATIC CHAR THIS_FILE[] = __FILE__;
#ENDIF
/////////////////////////////////////////////////////////////////////////////
// CFLASHAPP
BEGIN_MESSAGE_MAP(CFLASHAPP, CWINAPP)
//{{AFX_MSG_MAP(CFLASHAPP)
// NOTE - THE CLASSWIZARD WILL ADD AND REMOVE MAPPING MACROS HERE.
// DO NOT EDIT WHAT YOU SEE IN THESE BLOCKS OF GENERATED CODE!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWINAPP::ONHELP)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFLASHAPP CONSTRUCTION
CFLASHAPP::CFLASHAPP()
{
// TODO: ADD CONSTRUCTION CODE HERE,
// PLACE ALL SIGNIFICANT INITIALIZATION IN INITINSTANCE
}

/////////////////////////////////////////////////////////////////////////////
// THE ONE AND ONLY CFLASHAPP OBJECT
CFLASHAPP THEAPP;
/////////////////////////////////////////////////////////////////////////////
// CFLASHAPP INITIALIZATION
BOOL CFLASHAPP::INITINSTANCE()
{
AFXENABLECONTROLCONTAINER();
// STANDARD INITIALIZATION
// IF YOU ARE NOT USING THESE FEATURES AND WISH TO REDUCE THE SIZE
// OF YOUR FINAL EXECUTABLE, YOU SHOULD REMOVE FROM THE FOLLOWING
// THE SPECIFIC INITIALIZATION ROUTINES YOU DO NOT NEED.
#IFDEF _AFXDLL
ENABLE3DCONTROLS();
SHARED DLL
#ELSE
ENABLE3DCONTROLSSTATIC();
#ENDIF

// CALL

THIS WHEN USING

MFC

// CALL THIS WHEN LINKING TO MFC STATICALLY

CFLASHDLG DLG;
M_PMAINWND = &DLG;
INT NRESPONSE = DLG.DOMODAL();
IF (NRESPONSE == IDOK)
{
// TODO: PLACE CODE HERE TO HANDLE WHEN THE DIALOG IS
// DISMISSED WITH OK
}
ELSE IF (NRESPONSE == IDCANCEL)
{
// TODO: PLACE CODE HERE TO HANDLE WHEN THE DIALOG IS
// DISMISSED WITH CANCEL
}
// SINCE THE DIALOG HAS BEEN CLOSED, RETURN FALSE SO THAT WE EXIT THE
// APPLICATION, RATHER THAN START THE APPLICATION'S MESSAGE PUMP.
RETURN FALSE;
}

FLASHDLG.CPP
// FlashDlg.cpp : implementation file
//

IN A

#include "stdafx.h"
#include "Flash.h"
#include "FlashDlg.h"
#include "CRobot.h"
#include "CRobotInternet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX);

// Implementation
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFlashDlg dialog
CFlashDlg::CFlashDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFlashDlg::IDD, pParent)
{

m_urls = _T("");
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CFlashDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_URLS, m_urls_ctl);
DDX_CBString(pDX, IDC_URLS, m_urls);
}
BEGIN_MESSAGE_MAP(CFlashDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_REMOVE, OnRemove)
ON_WM_TIMER()
ON_MESSAGE(WM_TRAY_NOTIFY, OnTrayNotify)
ON_COMMAND(IDC_CONFIGURE, CFlashDlg::OnMenuConfigure)
ON_COMMAND(IDC_EXIT, CFlashDlg::OnMenuExit)
END_MESSAGE_MAP()
////////////////////////////////////////////////////////////////////
// CFlashDlg message handlers
BOOL CFlashDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,
strAboutMenu);
}
}

IDM_ABOUTBOX,

SetIcon(m_hIcon, TRUE);
// Set big icon
SetIcon(m_hIcon, FALSE);
// Set small icon
nSites = 0;
LoadURLs();
m_nTrayData.cbSize = sizeof(NOTIFYICONDATA) ;
m_nTrayData.hWnd = m_hWnd;
m_nTrayData.uID = 0 ;
m_nTrayData.hIcon = LoadIcon (AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME));
m_nTrayData.uCallbackMessage = WM_TRAY_NOTIFY;
strcpy (m_nTrayData.szTip, "Agente Flash");
m_nTrayData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon (NIM_ADD, &m_nTrayData);
bHidden = false;
if (nSites > 0)
{
ShowWindow(SW_MINIMIZE);
SetTimer(1, 1000, NULL);
} // End if
return TRUE;
}
void CFlashDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CFlashDlg::OnPaint()
{
if (IsIconic())

{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND,(WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CFlashDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CFlashDlg::OnAdd()
{
// Validate the input
UpdateData(true);
if (m_urls == "")
{
MessageBox("Por favor, informe um endereo.",
"Endereo necessrio",
MB_ICONEXCLAMATION);
return;
} // End if
if (nSites == MAX_SITES)
{
MessageBox("O nmero mximo de sites foi alcanado.",
mximo alcanado",
MB_ICONEXCLAMATION);
return;
} // End if
// Add the site

"Limite

CWaitCursor wc;
sSiteURL[nSites] = m_urls;
sSiteHTML[nSites] = "";
m_urls_ctl.AddString(m_urls);
nSites++;
m_urls = "";
UpdateData(false);
GetDlgItem(IDC_URLS)->SetFocus();
}
void CFlashDlg::OnRemove()
{
CString sURL;
UpdateData(true);
sURL = m_urls;
int nSiteIndex = -1;
for (int nSite = 0; nSite < nSites; nSite++)
{
if (sSiteURL[nSite] == sURL)
{
nSiteIndex = nSite;
nSite = nSites;
} // End if
} // End for
if (nSiteIndex == -1)
{
MessageBox("Voc no pode remover "
+ sURL
+ " porque ele no est na lista.",
"Endereo no encontrado",
MB_ICONEXCLAMATION);
return;
} // End if
CWaitCursor wc;
// Delete URL from site variables
for (nSite = nSiteIndex; nSite < nSites - 1; nSite++)
{
sSiteURL[nSite] = sSiteURL[nSite + 1];
sSiteHTML[nSite] = sSiteHTML[nSite + 1];
} // End for
sSiteURL[nSites].Empty();
sSiteHTML[nSites].Empty();

nSites--;
// Delete URL from the list box
m_urls_ctl.DeleteString(m_urls_ctl.GetCurSel());
}
void CFlashDlg::OnOK()
{
if (nSites == 0)
{
MessageBox("Voc deve fornecer o endereo de 1 ou mais sites.",
"Nenhum site na lista",
MB_ICONEXCLAMATION);
return;
} // End if
ShowWindow(SW_HIDE);
SaveURLs();
SetTimer(1, 1000, NULL);
}
void CFlashDlg::OnTimer(UINT nIDEvent)
{
KillTimer(1);
if (bHidden)
{
ShowWindow(SW_HIDE);
bHidden = true;
} // End if
CheckWebPages();
SetTimer(1, 3 * 60 * 1000, NULL);
CDialog::OnTimer(nIDEvent);
}
// *******************
// *
*
// * CheckWebPages *
// *
*
// *******************
// Description: Visits each web page to see if it has changed
void CFlashDlg::CheckWebPages()
{
// Check web pages
CRobotInternet internet;
CString sHTML;
int nResult;
CString sErrMsg;
for (int nSite = 0; nSite < nSites; nSite++)

{
if (internet.httpGet(sSiteURL[nSite],
nResult,
{
if (sSiteHTML[nSite] != sHTML)
{
if (sSiteHTML[nSite] != "")
ShellExecute(NULL,
sSiteURL[nSite],
NULL,
SW_SHOWNORMAL);
sSiteHTML[nSite] = sHTML;
} // End if
} // End if
} // End for nSite
}

sHTML,
sErrMsg))

"open",
NULL,

// ******************
// *
*
// * OnTrayNotify *
// *
*
// ******************
// Tray notification handler
LRESULT CFlashDlg::OnTrayNotify(WPARAM wParam, LPARAM lParam)
{
// ---- Right-button down: Pop-up menu ---if (lParam == WM_RBUTTONDOWN)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU1));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CRect screen;
GetDesktopWindow()->GetWindowRect(screen);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
screen.right, screen.bottom, AfxGetMainWnd());
} // End if
return LRESULT(0);
}
void CFlashDlg::OnMenuConfigure()
{
KillTimer(1);
ShowWindow(SW_NORMAL);
}
void CFlashDlg::OnMenuExit()
{
Shell_NotifyIcon (NIM_DELETE, &m_nTrayData);

EndDialog(0);
}
// **************
// *
*
// * LoadURLs *
// *
*
// **************
// Description: Loads URL list from previous session
// If Flash.url file exists, loads URLS from it
// (one URL per line)
//
// Outputs: nSites ........ Number of URLs
// sSiteURL[] .... Contains the actual URLs
void CFlashDlg::LoadURLs()
{
CStdioFile file;
CString sLine;
nSites = 0;
m_urls_ctl.ResetContent();
if (file.Open("flash.url", CFile::modeRead))
{
while (file.ReadString(sLine))
{
sSiteURL[nSites] = sLine;
nSites++;
m_urls_ctl.AddString(sLine);
} // End while
file.Close();
} // End if
}

// **************
// *
*
// * SaveURLs *
// *
*
// **************
// Description: Saves URL list for the sake of future sessions
// Creates file Flash.url and writes one URL per
// line to it
//
// Inputs: nSites ........ Number of URLs
// sSiteURL[] .... Contains the actual URLs

void CFlashDlg::SaveURLs()
{
CStdioFile file;
file.Open("flash.url", CFile::modeCreate|CFile::modeWrite);
for (int u = 0; u < nSites; u++)
file.WriteString(sSiteURL[u] + "\n");
file.Close();
}
2. ARQUIVOS DE CABEALHO

FLASH.H
// Flash.h : main header file for the FLASH application
//
#if
!defined(AFX_FLASH_H__385D4245_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
)
#define AFX_FLASH_H__385D4245_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h"

// main symbols

/////////////////////////////////////////////////////////////////////////////
// CFlashApp:
// See Flash.cpp for the implementation of this class
//
class CFlashApp : public CWinApp
{
public:
CFlashApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFlashApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL

// Implementation
//{{AFX_MSG(CFlashApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous
line.
#endif
//
!defined(AFX_FLASH_H__385D4245_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
)

FLASHDLG.H
// FlashDlg.h : header file
//
#if
!defined(AFX_FLASHDLG_H__385D4247_82F5_11D2_BD1F_00C04F96A9C3__INCLU
DED_)
#define
AFX_FLASHDLG_H__385D4247_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
////////////////////////////////////////////////////////////////////
// CFlashDlg dialog
#defineWM_TRAY_NOTIFY

WM_USER + 0

#define MAX_SITES 100


class CFlashDlg : public CDialog
{
// Construction
public:
CFlashDlg(CWnd* pParent = NULL);
// standard constructor
LRESULT OnTrayNotify(WPARAM wParam, LPARAM lParam);
NOTIFYICONDATA m_nTrayData;

CString sSiteURL[MAX_SITES];
CString sSiteHTML[MAX_SITES];
int nSites;
BOOL bHidden;
void LoadURLs();
void SaveURLs();
void CheckWebPages();
void OnMenuConfigure();
void OnMenuExit();
// Dialog Data
//{{AFX_DATA(CFlashDlg)
enum { IDD = IDD_FLASH_DIALOG };
CComboBox m_urls_ctl;
CString
m_urls;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFlashDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL

// DDX/DDV support

// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CFlashDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnAdd();
afx_msg void OnRemove();
virtual void OnOK();
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous
line.
#endif
//
!defined(AFX_FLASHDLG_H__385D4247_82F5_11D2_BD1F_00C04F96A9C3__INCLU
DED_)

STDAFX.H
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
//
are changed infrequently
//
#if
!defined(AFX_STDAFX_H__385D4249_82F5_11D2_BD1F_00C04F96A9C3__INCLUDE
D_)
#define
AFX_STDAFX_H__385D4249_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN

// Exclude rarely-used stuff from Windows headers

#include <afxwin.h>
// MFC core and standard components
#include <afxext.h>
// MFC extensions
#include <afxdisp.h>
// MFC Automation classes
#include <afxdtctl.h>
// MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>
// MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous
line.
#endif
//
!defined(AFX_STDAFX_H__385D4249_82F5_11D2_BD1F_00C04F96A9C3__INCLUDE
D_)

Você também pode gostar