UNlVERSlDADE
GUILHERME
TUlUTl
DO PARANA
JOSE DE SOUZA BOING
INTERA<;:AO ENTRE AGENTES
USANDO KQML
SETOlllAl BARIGUI
Curitiba
2006
CONSULTA
INTERNA
GUILHERME
INTERA(AO
JOSE DE SOUZA BOING
ENTRE AGENTES USANDO KQML
Tr.llulho de g.r3d\l(\~;\o :lPrelelllOldo no Curso de Tccnologin
em Procesumcnlo de Dldos tb Universidade Tuiuti do
PJ",m\, COIllO requisito
fimll pJfol obtcm;:lo
Tccn61ogo em ProccsullK'nto
de 0,,1.101.
Oritnl:ldunl:
Curitiba
2006
Pror
El:1.iniSimoni :\n!;.cloni.
do
titulo
de
TERMO
Guilhcrme
INTERAC;:AO
DE APROV AC;:AO
.Iosc de Souzn Boing
ENTRE
AGENTES
USANDO
Estn monogrJfia
roi julgada e nprov;;ld.1 pam obten911o do Grow de
Proccssamento de Dados da Universidade Tuiuti do Parami
Curitiba. 28 de ,gosto
T<."Cnologia
de 2006.
de Dildos
do Pararni.
em ProccsS3mcnto
Universidndc
Tuiuti
Prof. Marcos Antonio Canalli
Univcrsidade Tu.iuti do Parona
Profn Angela Helena Zaui
Universidadc Tuiuti do Parana
KQML
Tocn61ogo em
DEDlCATO\UA
Dedico este trabalho a todos que dejorma
tiirctn
011
illdire/a
cOllt,.ibui,.ClIn
realizllI;iio.
para
$ua
AGRADECIMENTOS
Ainda qu~ uma obm cientificn exija de seu autar um considcrovcl dispendio de
tempo, persistt-l1cia e vontadc detenninada h<1a nccessidade de contribuicyOes t'llheias
a
obm, mas que represcntam participa<;fio efetiva na mesma.
Este tmbalho nno fage il regra, motivo pelo qual
hn a necessidade
de preslar a
justa homenagem its illume-ras pessoas que viabilizaram sua rC3Iiz3C;uo. Nao mencionii~
las seria como que desconsiderar a importancia cia atenr;30 recebida.
N;1o poderia deb~3r de ressaitaf. por exemplo.
orientaciofJ.,
ProF. Mestre Elaini Simoni Angelotti,
a figurn impar de minha
a qual me forneccu prcciosas
sugestocs ao lango deste trabalho, e com alenr;i.1oinestimavel relcu inlnTIcras vezes as
p{lginas que 0 compoem.
Agrade~o a meus pais por terem me apoiado nas varias madrugadas
passei cm claro traduzindo artigos cientificos Oll buscando novas fontes na
Em momento algllm eles me desmotivaram, mesmo quando
prosseguir, ja desgastado
ell
que
i"/t!rlIel.
me julgava incapaz de
pelas intllneras tentaliv3S de desenvolver
um trabnlho
satisrJtorio, sem obter grandes exitos.
A estas pessoas eu agrnde~o de forma l11uitoespecial, po is estiveram presentes
do inicio ao fim desta monografia.
Ha muitas
QulraS, porem que participaram de forma
indirela, merect!doras de igual reconhecimento, agrade~o a todas elas.
RESUMO
A intcligencia
311ificial
inteligencia
mccanicista
e
umn. abordagcm
el11 informatica
que procura
associar
a
das maquinas
il intelig~ncia
humana
e a lAD. Inserida no
contexto de Inteligcncia artificial tem por objeto de cstudos a dislribui4Yao de
infonna~oes no sistema com vistas a resolu~f1o de problemas.
seja por meia da
resolw;uo distribuida
de problemas
au na abordagem
de sistema Illulti-agente.
Urn
sistema l11ulti-agentes e composto de agentes que coopcram e,ntre si para a resolu~ao
de lim problema complcxo que estit alt~m das suns cnpacidades individuais. 0 KQML,
agregado :10 ccnceito de sistemas mu!ti-agentes, dispoe de rccursos favonlveis 0.0
e
desenvolvimento
de lim sistema
de controladorcs
de VQO, raz50 pela qual se
considerado
uma linguagcm
universal
que possibilitn
a cad::t agcntc
interpretar
mensagens
de forma ide.ntica, evitando
possivcis
quebras
de cOlTIunicac;J.o entre os
A Iinguagem
lItilizada
para 0
possibilila
a mobilidade
e a
de construyao
de agentes, provendo podcrosos
reclirsos ao aperfcic;oJmcnto do sistema, j;i que e crientada a objelos. AI6n disso, 0
JAVATM nilo depende de sistema operacional especffico. Assim agregados, estes
instrumentos na abordagem de Sistemas
Mliiti-Agentes.
contribuem
para
0
funcionamento
hannonioso
de um sistema de control adores de v60. con forme pode scr
agentes
durante
dcsenvolvimcnto
intcgrac;ao
0
do
facilitada
comprovado
Palavrus-chavc:
A1oniplilafiol1
[mOVeS
proccsso
de
prot6tipo
com
e
compartilhamcnto.
JAVA TP.t, pOrqllC
ambientes
do prot6tipo.
Sistemas Multi-Agentes; KQML - knowledge QUeJyand
Language; Linguagcm de Implemcnt3c;30,
Java.
SUMARIO
1 INTRODUCAO
I.IOBJETIVO
2
REFERENCIAL
2.1
.
....
..
10
.
12
TE6ruco
...
. ... 13
INTELIGENCIA ARTIFICIAL E fNTELlGr,;NCIA ARTIFICfAL DISTRIBUiDA
13
2.2 DIVISAO DE SOLUCCES EM lAD: PRlNCIPA.lS DlFERENCAS ENTRE RDP E S~IA 17
.
.2.1 ResolLH;aoDistribuidn de Problemas (RDP) ...
2.2.2 Sistem:as Multi-Agentes
17
................................................
S!\'fA)
_._.3 Diferenlj:us entre S1\/fAe RDP
22
29
COMPORTA~!ENTO AUTCNOMO DO, AGENTES EM SISTEMAS MULTIAGENTES....
.
2.4 0
2..1..1 Agcnte.s Reutivos
e AgentC's
Cogl1itivos ..
.
39
. 39
2A.I.1 Age-ntesReativos ..
2.-1-.1.2Agentes Cog)litivos ...
2.5
3c
.
30
COOPER-A, Ao E COMPARTILHAMENTO
ENTRE 0, AGENTES
'OGNITIVOS
.............................•.........•................................................
H!S~IA .....
-17
2.6 COMUNICA<;'Ao ENTRE OS AGENTES EM SMA
50
2.6.1 KIF: Lingungem de Represent \-50
51
.
2.6.2 Ontologia ..
2.6.3 A L: Agent Communication
Lnngunge.....
2.7LINGUAGE~1 DE C MUNI At;AO-KQML
2,7.1 As Cnmnd., do KQML ..
2.7.1.1
2.7.1.2
53
.
58
.
...
59
.
64
.:un:lda de Contclld
6-\.
Cnm"dnde r"knsage.m..
..
2.7.1.3 Call1rl.dt1de C nll.lllicn~·i\o..
66
67
.
2.7.2 Atos C'{lJlHmicnti\'os..
2.7.3 PerfornHltiv:ts do KQt>.'lL..
... 68
.
69
2.7.3.1 Performrttivns de Infornla~u
2.7.3.2 Perfornmtiyns de Consultn..
70
.
70
2.7.3.3 Resposttl.5..
_.7.3.4 Perfonllilt!vl1S
....70
de Bnse de Dudos ..
..
71
2.7.3.5 Defini~:io de Cnpacid~lde ...
. ..71
2.7.3.6 Perfornunivas. de Efetm\9uo
...71
2.7.3.7
Perfonnntivns de Facilitt\(;:ao..
2.7.3.8
Perfonnativa!lide Discurso
.
72
72
2.7.3.9 Perfonn<ltivn!lide Intervcn<;:iioMecunica e de Conversa<;:~o
2.7.3.10
74
Pcrfonnativas de Rede
DO RADAR
75
2.80
EMPREGO
2.8.1
Sistelna Receptor da Acron<lve
3 PROCEDIMENTOS
3.1 LINGUAGEM
NOS SERVI<;:OS DE TRAFEGO
AEREO
78
METODOLOGICOS
E PLATAFORMA..
79
..
79
3.2 SELE<;:AO DA APLICA<;:Ao
3.3 DESCRI<;:Ao
DA APLICA<;:Ao
3.4 ARQUITETURA
82
.
84
DO SISTEMA
3.4.1
De5cri9ilo dos Agente.s.. ..
3.4.2
Antologia Utilizada
77
85
.
85
89
3.4.2.1
Perfonnativas Utilizndas nos Agcntcs: Torre de Contrale e Facilitador
3.4.2.2
Performativns Utiliz.,d<ls nos Agentes: Fncilitndor e Torre de Controle
91
3.4.2.3
Perfonnativas Utilizadas nos Agcnte: Torre de Controle e Annlisador..
..91
3.4.2.4
Perfonnativas Uti Iizndas nos Agentes: Analisador e Torre de Controle
92
~ CONCLUSAO..
.
90
93
REFERENCIAS
96
APENDICE
99
LISTA DE SIGLAS
lAD
Inteligcncia Artificial Distribuida
ACC
Centro de Controle de Area
ACL
Agent Communication Lnnguage
ATP
Agent Transfer Protocol
(APP)
6rgao de Controle de Aproxill1n~no
KIF
KSE
Knowledge Interchange Effort
Knowledge Sharing Effort
KQML
knowledge
JKQML
SMA
Java knowledge QuelY and Manipulation Language
Sistema Multi-Agente
(TWR)
RDP
Torre de Controle Aer6dromo
Resollll;ao Distribuida de Problemas
Query and Manipulation Langu~gc
LISTA DE FIGURAS
FIGURA I
CA TEGORlAS DE AGENTES lNTELlGENTES ...
FIGURA 2
RAMIFICAc;:OES DA lAD
16
FIGURA 3
ABORDAGEM RDP
21
FIGURA 4
ABORDAGEM SMA
FIGURA 5
CARACTERiSTICAS
14
.
29
DOS AGENTES E ATRlBUTOS NECESsA
NA lNTEGRAC;:AO AGENTE-AMBIENTE
.
FIGURA 6
AREAS DO CONHECIMENTO ENVOLVIDAS
FIGURA 7
ARQUITETURA DE AGENTES REATIVOS............
FIGURA 8
MODELOS
SISTEMAS MULTI-AGENTES
MENTAIS
9
FIGURA 10
QUE
DE
CONSTITUEM
38
40
OS
AGENTES
.
43
ARQUITETURA DE UM AGENTE COGNlTlVO
45
MODELO DE lNTEROPERAC;:AO EM SOFTWARES
AGENTES
FUNC;:AO DO AGENTE FACIUTADOR
FIGURA 12
CAMADAS EM QUE SAO DlVIDIDAS AS MENSAGENS
FIGURA 13
ARQUITETURA DO SISTEMA DE CONTROLADORES
v60...
BASEADOS
.
FIGURA II
FIGURA 14
37
NA CONSTITUI<;AO
.
COGNlTlVOS
FIGU~
RlOS
.
50
.
.
DlAGRAMA DE lNTERAC;:AO ENTRE OS AGENTES ....
EM
KQML
62
67
DE
88
90
10
INTRODU<;AO
A Inleligencia ArLindai Distribuida (lAD) vem reccbendo especial atenc;:fio
dos pesquisadores nos iIllimos
para
0
cresccnte
interesse
anos. Confonne Jennings et a/. (1998) algumas nlzOes
em SMA (Sistema
Multi-AgenLe) recaem sabre
capacidade de prom over rohustez e eficienciu, e
rcsoluc;:ao de problemas
rcfcrentcs
a
a
distribui~ao
SlI<l
sua capacidade de promover a
de experiencins
Oll
cant roles
(I-IARMON & KING, 1998).
Desta sorte, dcscrcver,
adequando
linguagem
comportamento
coerente
e
decompor
c aloear tarefns, viabilizar a imcrac;:ao,
comunicac;:ilo. cGardenar,
dos
agentes.
amenizar
ccntralar
conflito
e
promovc.r
e incerteza.
0
adequnr
Iinguagens c ambientes de programac;:ao. S,,10atividades que representam problemas
pnm a lAD, e par", as quais t2m buscado solu~Cies.
Agcntes aut6nolllos e sistemas multi-agentes representn.ITIum novo cmninho
de an{liise, descnvolvcndo a implementa<rao de complexos sistemas de programas. Os
agentes oferecem um podcroso rcpert6rio de ferramentas e tccnicas potencial mente
prepJradas para aperfei90ar a forma de implemcnta9ao de muitos progrmnas.
Con forme Singh (1998),
0
problema principal observado na implcmentac;J.o de
um sistema bascado em agentes recai sobre a dificuldade em realizar cOlllunicac;i)es
efetivas, principalmcnte
dificuitam
0
em associa90es em rci3cionamcntos negativos, ou seja, que
plano dos agcntes, au positivo, isto
problcITI<1s que possam advir.
e,
que beneficiJm a resolw;Jo dos
II
Nas situa\=oes retromcncionadns,
as infonnayoes
sc dispersam
a cvasao da mcnsagcm
por todo
0
dinculdades cOll'lunic;]tivas entre agentes. Para sanar 0 problema
lim
c inevitavcl,
c6digo de programas,
porque
e ocasionam
ha a ncccssidade
de
protocolo de intern,ito (SINGH, 1998).
Neste senti do,
0
KQML (knowledge Query and A.falliplilatioll
Language)
descmpenhn um importante papel, principalmente por gerar compatibilidade nrt troea
de mensagens,
0
que pcnnite a integra~,ao eficaz dos agcntes.
Assim, a linguagcm de comunicfltyao
KQML passa a ser responsiivei pela
objctividade e c1nrezn do proce.ssa comunicativo, pcnnilindo modelar a inlCrayllOem
Sistema Mulli-Agenlcs.
A op,ilo por usar a abordagem de SMA neste lrnbalho lem finalidade de
dcmonslrar
em que medida a aniculat;ao
de um Sistema Multi-Agcnte
com a
linguagem de cOI11unicat;aoKQML pode contribuir para a eficacia de control adores de
v60, Ihto que
o
e demonstrado
na pratica. atmYes do prot6tipo.
me.canismo para que ocorra
0 ato comunicutivo
e a Iinguagcm
de
cOl11unicat;aoentre agentes. Teoricamenle a linguagem de cOlTIunicac;aodos agentes
devc permitir que a interac;ao se concretize mcsmo entre agentes heterog~neos.
A ulilizn~ao do KQ!vfL neccssarimnente
prcssupl3e a aceit8c;:ao de suns
lill1itac;:~es,qunisquer que sejam, principaimente no que se rcfere
a padronizac;:ao dos
dialclOs dos agenles. desej£\vel pura assegurar que a Iinguagem de imcrac;ao concorde
com lim protocolo em especial.
Interessante ressaltnr que as problemas com a intcrac;ao entre agentes estilo
longe
de
ser
resolyidos,
mas
atrnYes de
experiencias
e pesquisas.
muitos
12
questionamcntos referentes a estc assunto estao em vias de esclarccimento,
COnfOtlllC
alirma SINGH (1998).
o
modele
cognitivQ
e
utiliudo
em oposi9ao
ao modelo reativo,
pais
interopera alravcs dos agelltes independentes utilizados pelo sistema, a saber: Agente
Emissor, Agcnte Receptor, Agcnte Facititador e Agente Analisador. Estes agentes slio
3ut6nomos,
capazes
cunhecimento,
de raciocinar
pais dest!'ll1penham
e agregar
novas conhecimentos
{l
base de
suas turefns com base no comparlilhamCJ1lO
de
cxperii:l1cias, Oll seja, cstfio aptos a C0I111lllicarcIIl-se uns com os Qutros, decidir que
informJ90CS recupernr ou que 390es fisicas tomar. Par isso resolvem problemas
complexos c desempenham tarefas especiflcas (SINGH, 1998).
1.1
OBJETIVO
o objetivo
deste trabalho
dos inter-relacionamcntos
e fornecer
limn visao de conjunto, sucinta e objetiva,
entre os elementos de organiz39ao de
SiStC111tlS
multi-
;lgcntes. atraves dos resu1t;ldos de implemcntn<rao de um sistema de controladores de
voo de cartner prototipico.
2
REFERENCIAL TEORICO
2.1
INTELIGENCIA
ARTIFICIAL
E
INTELIGENCIA
ARTIFICIAL
OISTRIBUioA
Enl~sc da inteligcncia fundamcnta-se no comportamento humano individual,
enfocando. de rOrIn3 muito especifica, a reprcsentaC;ilo de seu conhecimento e metodos
de infer0nc.ia utilizados no processo normal de raciocfnio.
A abordagcm passoll
a ser aplicada com maior intensidade nos allOS 80,
quando a cOlTIunidadc de lA, deslllolivada
por slIccssivQS insucessos
aD longo de 30
anos. tomou a iniciativa de explorar novas areas em que sistemas de lA pudesscm ter
tim
dominic
mais
dinamico.
Desde entao, a Inteiigt!ncia Artificial (IA) passol! a represcntar nao apenas
resultados simb6licos em mundos artificiais, mas intcra~oes complexas e cfetivas com
o !nunda
fisico. lan~nndo
mao do conceito
Concomitantemente
de ogcntei.
a esla cyolu~ao, constituia-se a com un idade de agentes de
softwilre. cuja finalidade era explornf
e mais con fiaveis, para que
0
0
descnvolvimento de partes de c6digo menores
Illovimento entre dais 3mbientes distintos
din:lmico. A partir de enti\o, Coi criada uma terminoiogia
fosse
bastantc especifica
e
sugcstiva, sugcrindo que a IA ganharia espj]~o e rcconhecimellto devidos nos anas
subseqUentcs. Termos como agentes inteligcntes, inter races inteligentcs,
adaptntivns,
kl1owbol.J, softbots,
lIurbots,
faskbots, personal
interfaces
agenlf!$ c network
14
agt!11tes, passaral11 a ser utilizados com relativa. rreqi.iencia nas (Ireas !las comunidades
de IA e softwares.
Os agentes inteligentes que integrom a IA poderiam ser esqucmatizados
e
categorizados confom1c a seguir:
FIGURA I - CATEGORIAS
DE AGENTES INTEUGENTES
- 2000
Fonte: SOBRAL, J0:10 8.M. Agi'11/~.J: Conceilos e Principios.
Disponive\ em wW\lr'.inr.uf1C.br-bo5cololdy~£eJdownlo;\dslAgcntes
A inteligf'ncin
artificial
subdivisfto da informatica,
CIA)
e,
confonnc
se obs~rva
pelo esquema,
que busea descnvolver sistemas de computador
lima
bascado em
processos simiiares aos do raciocinio humano. H;i cerea de 15 anos, corporac;oes
deduziram que pela aplicac;uo de IA na area comercial
poderiam obler bCllcficios
inestimaveis, de forma que 0 recllrs~ passol! a scr amplamente utilizndo e investigndo.
15
as custos
desempenho
tarcffls sc processava
de
as resultados
para este tipo de aplicayao
esperados.
supl"ntados
Tais
nos computadores
Confom1e
artificial
opera
fac.uldades
Charniack
com
mcntais
base
se no comportamcnto
social,
enlm dernasindamente
sistemas
1998).
& Mcdermott
e Winston
rt pcrcep<;:ao,
e uma
::l
conjuga<;:Ha,
disponive,is
em um sistema
lAD
ser
pode
(Sistelllas
dividida
Illulti-agentcs),
sabre as coopcrnsoes,
desta
em
forma,
de distribui<;:Jo
inteligentes
Na
em Resolu9~o
([ante:
das
como subareas
a intelig2ncia
de estudos
a respcito
dos quais
da lAD, pois
eslruturas
Distribllida
e r"ludo
proporcionaJmcnte
das
alrnves
de
mais
C 0 OUXQde conhecimento
cresce
sabre
as
de basear-
informa<;:ocs nos sistemas
e <l coordcna.;ao
ils demais
(Resolu9lio
intern.;Oes
serem
a ra~10 e As atitudcs.
RDP
n "Inteligencia"
(1992)
c no conjullto
decomposi.;iio
distribuido
allos, e 0
para
ramificn<;:ao da lA, com a especificidade
no proccsso
<l
(1985)
na 16gica
multi-agentes (SMAs) que se consliluem
coopera<;:oes,
complexos
do epoco (HARMON,
rclacionadas
muito
Ulna fanna muito lent a, alem de nao produzir
de
nn razilo,
por sua vez,
A lAD,
entanlo, scmprc
cram, no
Problemas)
adiante.
entre
dos
infonna90es
agentes.
A
e SMAs
Sua enrase
unidadcs
ao n(l[l1ero
valoriza as
recai
distintas,
de "cntidades"
http://www.infufsc.br).
figura 2,
e representada
Distribuida
a subdivis50
de Problemas
da lnreiigencia
c em SistemJs
Artificial
Nlulti-Agentcs.
Distribuida
e
16
FIGURA 2 - RAMIFICA<;:OES
DA lAD - 2000
RESOLUC;AO
DISTRIBUiDA
DE PROBLEMA
Paralell AI
Fonte: SOBRAL, Jofto B.M. Agcntes: Conccitos e Principio~. DisponiveJ em www.inf.ufsc.br.
ConfOTme
2000.
Sabral, Nonnalmente, a lAD disp~e dus seguintes apJicac;oes:
IBM Ag/e/s
SDK, Mitsubishi's
oncordia
e General
Magic
and
Te/escript
NALAMAS:
Natllral Langllage MIlIIi-Agent Systems
Opcrac;ao descentralizada de sistemas hidrotem1icos em i;\mbicnte de
mcrcado
Modelagem de STI Multi-agente
SimuhH;ao intcligcnte de mercados eletronicos
Sistema de agentes disponibilizadores de servis;os de viagcns
Sistema multi-agente
pam marcac;~o automfttica de reunioes.
17
2.2
DIVISAo
DE SOLU<;:OES EM lAD: PRINCIPAlS
D1FEREN<;:AS
ENTRE ROP E SMA
2.2.1
Resolu,ao
Distribuida
de Problemas CROP)
RDI' (Resolu,ao Distribuida de ~roblemas) e SMAs (Sistemas multi-agentes)
sao agendas de pesquisa complemenlares. Na verdade. RDP recebc ted a sua base de
Slv1A.do qual
e uma especic
Confonne
de subconjunto (www.comp.ufla.br/-llndersun/iu)
brevemente
mencionado
Distribuida
de Problemas (RDP)
resoluyoes
de problemas
e
nas Iinhas preccdentcs,
a Resolw;ao
uma ramificacaQ da lAD que se ocupa de
especificos.
0
sistema
RDP
dcterminados de m6dulos Oll agentes que cOl11partilham
0
divide~se
em numeros
conhecimento
dado problema, e consensualizam uma soluyilo efetiva para
0 meSIllO.
sabre um
Cada agenle
aprescntu lima possibilidadc de resolw;ao de problema, ou seja, cada um contribuir6
a
suas habilidades individuais (BOND, 1988).
Em outras pn.lavras, no sistema RDP
de
agenles
desenvolvidos
especificamentt!
0
problema
para
aprescntando um comportamento decorrente de
ullla
e resolvido
a rcsolu~ao
par um conjunto
desse
problema,
organiza9~0 pre-definida ja na
rJse de dcsenvolvimcnto do sistema. Os agenlcs saO projctados especiticamcnte
para
resolver um problema au uma classe de problemas, e com esta finalidade coopcram
uns com os olllros, dividindo e compartilhando conhecimento sabre 0 problema a tim
de chegar
6tica,
tllll
a Ull1
consenso :.1cercada solw;ao mais viavcl. Analisnndo sob
sistema RDP
e considerado
uma unidadc, pais
lima
pelo sistema, c as rccursos a serem aplicados nac t2m outras
(mica tarefa
fUI1yoes
uma
e
outra
prevista
predeterminadas
18
e desejavel,
para executor (SMITH & DAVIS, 1980). Isso signitica que a coopera,ao
a
relacionando·sc
forma peln qual sistemas perfeitmnente prontos, numa ncomoda9ao
reciproca, aluam durante
a renliz..1c;Jo cfetiva do grupo em lennos de rcaiizr19iia de
tarefns.
A interac;ao entre csscs agcntes pode ocorrer de forma direta ou indireta:
diretn quando baseada em trocas de mensagens;
C0l111Ku1ilhnmento de dados comuns
e
entre os agentes
indireta quando
cnvolvidos.
e
ocorre por
Para resoluyao
do
problema os agenles podem subdividi-Ios em subproblcmas.
ou utilizar diferentes
estrategias
0 sistema
no senlido de realizar
impicmclltado
com
lim
a tare fa. Alem
mediante
pode
seT
port3nto, a solu~ao cooperativa
de
cmparelhamento
de
agentc ccntralizador ou de fanna distribuida.
Rcsolw;:ao Distribuida de Problemas
problemas
disso,
a
desccntraliz:l~ao
e.
e
de
recursos
conhecimento, locnlizndos cm in(IIllcros modulos (SMITH & DAVIS,
dcscenlrllliz~H;ao
entende-sc
que
tanto
os
dados
como
a
contrale
1980). Por
16sica
c
gcogrJficamentc distribuidos. Segundo Rezendc (2003), isso pcrmite caracterizar
sao
il
RDP (Reso!w;i1o Distribuida de Problemas) como lim cruzamento entre tecnicas de fA
c de sistemas distribuidos. envolvcndo. por exemplo, a coordena~t1o e a sincronizm;:ao,
resliitantes
secund.irios.
A
de um modele
Oll
RDP
componamento
secundario
pam
intcgrar
outros
sistemas
tambem
seja, desenvolvidos com base num modele prim~\rio.
preocupa-se
COIll
0
desenvolvilnento
cooperativo entre entidades prontJs.
de
eslruturns
para
c
com a
Outra preocupa~ao
contcLldo da informayil.o a serem camunicndas entre as agentes C 0 usa da infonnayao
par um agente para a resoluc;ilo de problemas cooperativos.
19
Em pOlleas palavras, a principal pl-eocuprH;:ao
da Rcsolu~ao Distribuida de
Problemas rccai sabre forma como um problema particular pode ser resolvido por lim
nlnnero de modulos au agentes, os quais cooperam na divisuo de conhecimento
respcito do problema c isso acarrcta solw;ocs.
NUIl1
a
Sistema RDP. tadas as estratt~gias
de intemqffo saO incorporadas como partes integrnis do sistema. Is50 rCl11ctc
investig"qao
elas estrutums de interw;:fio dos os m6dulos que estabelecem cooperar;ao
(JENNINGS
e/
t\
al., 1998).
A forma especffica pela qual a comunicar;no
fisica do soluciona.dor de problemas, C
lIm
se efetlla, tal como a arquilctUnl
clemento secunda rio nessa abordagem
(SMITH & DAVIS. 1980).
Os sistemas RDP oferecem como vantagcns
extensibilidade,
habilidade em lidar com aplicayoes
a
velocidade,
confiabilidadc,
com distribuic;ao natural de
esp:tyo, e toier(lIlciu para aceitnr dados e conhecimentos incertos. Como estes sistemas
sao altamente- modulares, podem oferecer c1:treza conceitual c simplicidade de projelo
(SMITH & DA VIS, 1980).
H:i um agente controlador, no qual 0 conhecimento do problema
cuja finalidade
e
a distribuiyiio dos problemas
interligados
e completo,
e
em uma rede de
cOl11plltador~s,e a subseqUente centraJiza9uo dos resultados parcinis obtidos pe\os
demais agentes distribuidos em oulras maquinas: a interpretac;ao dos resultados nilo
pre-dcfinida, mas criada no momenta em que surge a necessidade
determinada
tare fa. Desla forma a interac;ao entre os agcntes
intercambio de mensagens (REZENDE, 2003).
e
de se realizar
se restringe
ao
20
De acorda com Davis & Smith (1980) um dos maiores problemas
nilo-
resolvidos em RDP refere-sc it diftculdadc que os agentes encantram em comunicar
suas habilidades em um sistema de controle distribuido entre agentes aut6nomos.
Quando
0
modules
numero
de tarefns ou resultados a serem processados exec de
disponiveis,
compnrlilhados
entao
disputam
os m6dulos
com
tarefas
Oll
0
numero de
resultados
a serem
alcnr;ao e reCllfSOSdo grupe.
Confomle Barone 2003), a abordagcm RDP nao permilc c0111unicac;oes !TIuito
ofc-rccenda, rcstri<;:oes
elaboradas,
simbol6gico pr~-definido.
0
para
sinais
incompativeis
que naa pcrmite senaa uma interpretac;ao
da quanti dade e lipo de simbolos
que
SaO
conjunto
fha, por ocasiiio
considerndas muito interessantes para
os programadores de inteligcncia artificial (lA), pois
e
um
participam do compartilhamento.
Por isso, as aplicac;oes em RDP nilo
abordagcm
com
0
volume de infonnalYoes nessa
quase scmpre processado num local central, atraves de processadorcs
remotos que sc iimitam a dados basicos do conjunto, como ocorre, por exemplo, com
canOes de croditos (SMITH & DAVIS, \980).
Embora esse sistema seju adequado
;:i
a distribuic;iio de dados,
nao
e conveniente
distribuic;50 de controies, po is os proccssadores nao cooperam de fonna substancial,
porque requercl11re-cursos mais sotisticados. De qunlquer forma,
lIa
mcdidn em que se
cxpande a capacid3de de gcrenciamcnto externo da RDP, os problemas restritivos sao
amenizados,
!!
isso :1mplitica seu espectro
de ay.l0
e consequentemente
sua
aplicabilidade.
A aplicac;ao de RDP corrobora para a resoluC;ao de problemas sllpcrficiais,
rcquacndo,
para tanto, que
0
tipo. de problema scja deJinido com precisao, que as
tnrefas dos agentes sejam bem especificadas, e que a divis50 em subproblcmas elll'lri9~\
estes agentes seja estatica e otimizada. Atender a todas essas exig~ncias represenla um
dl!safio quando os problemas sao mais complexos, porque a RDP niio dispeie de meios
para a interconexuo
de proccssadorcs
de agentes
nem
compartilhamento
de
in[orma~ues sobre recursos, permit indo, em fun~ao disso, que muitos problemas
pennane~al11insoillveis.
FIGURA 3 - ABORDAGEM RDP - 1998
Fa.l/! tie COlicl'oeil
o
o
o
0
o
Fonlc: ROCHA. A. R.; SOUZA Jr. E. M.: ALVES J. C.
Disponivcl em: www.(:omp.un ••.br/-undcrsull/i ••.
l-hl casos em que 0 conhecimento
procedencia
da inforl11u~ilo
e desejavel,
0
Ag~nt\:$
Agi!lI/l.'s ll1uligi!II/~$
o
e SiJlemO$
A1U/liogi!l1lcs.
completo do tempo e das rela9ik,s de
principalmente
quando cllvolve balanceamento
para evitar sobrccargas no sistema. A resolw;:ao distribuida de problemas nao permite
22
mnis do que resoluc;oes basicas no processo de divisao de problemas (DAVIS &
SMITH, 1980).
2.2.2
Sistemas Multi-Agentes
(SMA)
Em Sistemas multi-agcntcs. ao contraria, os agentes sao desenvolvidos para
resolver uma variednde de problemas. SMAs
de interayao nonnalmentc
podem ser
utiliz.1dos em outras aplic890es similtl.fcs aquelas para as quais forum original mente
desenvolvidas. Ao contni.rio do que acontccc com
que contrale
o
0
0
RDP, naa cxiste lim agente central
sistema.
SMA
e uma
apJicac;i'io distribuida formada pOl' um conjunto de agentes
autonomos, inteligentcs e capazes de comunicar-sc de forma heterogenca. coopcrnndo
e interagindo para juntos
c dinamicamente
resolver
problemas
complex~s,
que
ultrapasscm as capacidades individuais. Desta forma, os agentes em SNlA nao silo
desenvolvid05 ou destinados para resolver problemas espedficos
ou muilo simples,
porque dada ,\ complexidade de construir um sistem11 multi-age-nte, utiliza-lo para a
resolu<;ilo de problemas banais serin desperdicio de tempo c, porque nao dizer. de
recursos financeiros.
Os agentes SMAs co-existcm independente dn ocorrencia ou nao do problema,
dcscnvolvcndo intera90es colabomtivas com relativa freqUGncia. Procuram atingir lima
meta coll.!li\"aOLi individual, e sell carnter !lexivel permit!! a inscr9ilo ou r~du9ao de
agentes can forme a necessidnde
ou complexidade
do problema.
as
agentes silo
23
capazes de manter uma reln~~o mutua de intera'rilo infonmmdo-se
uns aDs Qutros sobre
a capacidade e disponihilidade dos demais (SI-I1MAN el at., 1981).
MudaOf;3s significativ3S
nn area de inte1igl?ncia artificial
inspirndas
em
metaforas sociais e investimcntos no cmnpo da computn~ilo distribuida, dernm inicio a
um conceilo tnJis sofisticado
na constrwyao de sistemas inteligcntes - Sistemas Multi-
agentes (SMAs). A realizu<;J.o de turefns em urn SMA buseD a coordcnac;ao entre lim
conjullto de sistemas
autonomos,
possivelmentc
como elcs podel1l coordenar sells conhecimentos,
pre~existenles, analisando
3
forma
metns, hnbilidades c pianos de forma
a realizar lima a~ao all resolver um problema (BARONE, 2003).
e0
Em SMA a principal prcocupac;ao
autflnomos pre·e.xistentes,
comportamcnto
do conjulllo de agentes
que alrnejam a soluC;llo de urn dndo problema. De acordo
com Jennings <I at. (1998), um SMA pode ser definido como uma rede unida de forma
imprecisa. cujos agentes trabalham juntos no intuito de prom over a resoluc;ao dos
problemas, uma vez que lima soluC;ilo individual
conhecimentos.
est:) acima de suns capacidades
e
Os :1gentes suo nUI6nomos e podem ser tnmbem heterogeneos.
Um Sistema Multi·Agente
(SMA) utiliza protocolos
de alto nlvel que atuam
de forma inteligente. ou seja, por meio de coopcracrno. Portanto, a carllcteriSlica mais
evidcnte nes{a nbordagem
seria a interaC;lio e 0 compartilhamcllto
de au·ibutos e
conhecimento dos agentes (SINGH, 1998).
E
vivos.
possivel
Quando
associar a estmtegia
um problema
de a~ao do SMA a sociabilizn~ao dos seres
nao pode ser resolvido
coletivid:tde entra em jogo numa ~W::Io colaborativa
por lim unico clemento,
que pode gerar hierarquias.
24
Assim,
0
SMA baseb-sc no conceito de c01l1unidade de ngentes inteligentes,
inspirndos no sistema de compol1amento social, baseado na organizn<;ao e intern9aO
pura resolw;ao dos problemas como umlodo (REZENDE, 2003).
A no,:l.o de compartilhamcnto
do qual
0
KQML C
facilitar a acrao
C 0
lim
representanle.
rcquer 0 nnteparo de um prolocolo de intera9lio.
ESle protocoio
e
amplamente ulilizado para
rnciocinio tipico dos agentes em SMAs. A seguir sao mencionadas
algumas nplicac;Oes SMAs (BARONE, 2003):
lVlonito •.a~ao distribuidn
geograficamente
passam
por
de \'ciculo: Consiste num conjunto de agentes,
distribufdos, cuja tinalidade
suas
respectiv8S
areas
de
c
manilorar veiculos que
cobertura,
mstreando
a
movimenlaC;ilo de veiculos (DURFEE, 1991);
SiStCI1Hlde Gel"cncia de Cnrtcirn
Finnnceira:
Refere-se Ii localiza9ao e
filtrilgem de informa90es da internet, para preslar apoio a um usutirio
com relnyao ao gerencinmento de sua carteira. Neste tipo de sistema, os
ngentcs
se 3uto-organizam
de forma
cooperaliva
para rastrear
e
monilorar noticias referentes no mercado financeiro, a90es, relnt6rios de
flnalistas
finnncciros e relat6rios cle ganhos de empresas. para manter
scmpre alualizada a conjuntura Illundial das finfill98s ao proprietario do.
carte ira.
Sistema de m:mufatul'a:
Nesse sistema, uma cmprcsa C modelada como
uma hicrarquia de celulas de trabalho funcionalmeme especificas. Essas
cclulas
siio agrupadas
em sistemas
flexiveis
de manufatura
que
25
colctivmnentc constitucm uma fabric;]. 0 objctivo do sistcmn C, entao,
gerenciar eficientemente
c:1(I<1 ftibrica
possuem
0
processo de produ~,ao das fabricas. Pam isso,
c sellS componentcs
siio modcludos
como
lima cole~J.o de pInnos rcpresentando
age-nIcs que
suus compet€:ncias
(pARUNAK,1987);
Internet:
e
um exemplo de up\icuyao da Internet
0
NewT, que
e
uma
especie de filtro de noticins para a USENET. Nessa aplicu~ao. treina-se
lim
agente NewT, forneccndo a cle uma seric de exemp!os, como artigos
ilustrativos que 0 usuitrio escolheria ou nao para ler. 0 ilgente oferece
sugcstOes para
0 1I5uario,
que por slia vez ofcrece
1II11feedback
u essas sugest~es, A pretensilo do agente NewT nao
escolha
humana,
pOL'que constitui
na
desejos, Oll seja, 0 objetivo do agente
sejam
de
seu
interesse
e
refcrente
impossibilitur a
vtordadl! umn extensao de seus
e trazcr
(WOOLDRIGE
para 0 usmirio artigos que
&
JENNINGS,
1985,
JENNINGS, 1995);
Hn
Telccomunicn~oes:
telccomunic89oes,
utna Infinidade
de aplica,~es
de St'v1A em
uma dns quais utitiza agcntes negociadores
para
ellfh~ntar lim problema l11uitoCOI11um que C a distin9do de objetivos dos
agcntcs no proccsso de intera9ao, porque os agentes sao entidades
difere-ntes entre si in1ercssadas em estabclecer
uma cham ada, par
cxcmplo. AD dctectarem-se conflilos, os agentes negociam entre si, para
que possam originar
lima
configum9cro aceitflVel, para que
3
cham ada
26
possa se processar harmonicamCllle (WEIHMA
YER & VELTHUIJSEN,
1994);
Controlc
de
processos:
impicmenta9fio
exemplo,
0
t1celerador
de
contra Ie de processos,
falhl1s em usinas
is
foram
sistemas
construidos
& QUAN,
Um exemp!o
colocada
diminuida
0
de aplicac;ao
para
monitomr
e diagnosticar
cspaciais
e contrale
de
& WANG,
de S"t\1A nn industria
C 0 CIDIM.
1994;
de encrgio.
e distribuic;ao
Ele lTIonitorn
d(! energia
e
elctrica
industrinis e domesticos. Para minimizar as perdas
uma rcde de lrnnsporte. Posterionnente,
e a elctricidade
e enviada
c
aos consllmidores
do sistema
de rch!s e breakers, sistema
de nlannes nile cronol6gicos
de
ser
a vohagem
e
usando
ullla
compos to peJos seguintes
idenlificador dn area de blackout. interrace
supervisor
no
WANG
gerellcintnento
de distribui<;ilo. Este sistema
cxistentc.
por
fundamenrndos
transporte de energia aumenta-se a vo\tagcm antes
em
para
como,
1993);
controla 0 cicIo de gCffH;ao, transporte
para consumidores
plataforma
aplica~oes
simiJares,
& VELTHUIJSEN,
0 rCJOpons{lvel peto
durante
divcrsas
Ilucleares, contrale de veiculos
1997; SCl-lWUTTKE
que
em
de trans porte de energia e 0 contrale de
Outros
clima (WEIHMAYER
Indllstria:
utiliz.:1da
gerenciamento
de particulas.
numa
FUlldamenta-se
SMA
espccialista
1985);
agentes:
de controle pre,-
cxislentes, agenlc de restaurur;ao
e agentc de interrace do usuario (JENNINGS,
redc
para
analise
de servic;o
Controlc
de tn'ifrgo
aerco:
neste caso
e
interess.mte
acronaves c os diversos mecanismos de contrale de tni.fego aereo em
opera~;1o. Quando lima aeronave enlra no espafYoacreo control ado pelo
sistema:
cria-se
correspondem
{l
um
agente
com
nereo sao respons~iveis par gerenciar
encOlllrar
0
e
objelivos
que.
neronavc do mundo real. Agenlcs de contrale de Idfego
Comercio eletronico:
BargaillFil1der.
infonna90es
0
sistema (SYCARA et ai, 1996);
Como apiic3'rno de comercio eletrollieo, tem-se
0
um agente que compara lojas virtuais na Internet para
melhor pre~a para urn determinado CD. Neste sistema,
0
usuario infanna ao agcnte os dados referentes no CD que gostaria de
comprnr. Bnseado nestns infonna~l5cs,
0
agente realiza uma busca nas
lojas virtuais existcntes. comparando
0
prec;o para obler
0
CD mnis
baralo (NISSEN, 1996).
Confarlne
observado,
os bencficios
do SMA.
CSlaO
rclacionados
a
sua
capacidade de eseolher a maneira peln qual dcseja ou deve realizar suas tarefas. ESla
forma de opcrar nao
e
escolhida aleatoriamente,
mas com base nas nccessidades
oferecidas pelos problemas que se apresenlam.
A utiliza~ao de SMA. porem, apesar de ampla apHcabilidade, ofcrecc cert3s
desvantagens, alguns problemas de diticil resoluc;ao que podern ser assim relacionados
(JENNINGS
el
al .• 1998):
28
Como formular, descrevcr, decompor e aloc~r problenKls de silltese de
resultados entre os grupos de agentes inteligentcs?
Como habilitnr as agentes para que possam se comunicar e inleragir
Iw.nnoniosamente? Que lingua gem de comunica~ilo e protoco!o usaf?
Como assegurrtr a atua~ao dos agentes de forma coerentc, na medida em
que tam am decisocs ou realizum ayoes. a fim de acol11odnr as cfcitos
nao-:unbientais do local de decisocs e evitar intera<;5es prejudiciais?
Como habilitar agentes inteligentes de forma que possam agir e pcnsar
sabre as
U9~CS,
fazer pianos e aprimorar conhecimentos sabre Quiros
ngcntes, no intuito de que seja prolllovida
lima cOllluI1ic3yUO mlltua?
Como reconhccer e conciliar pontos de vistas antagonicos e inten9t'5es
conflitantes em um conjunto de agentes que tenta coordenar slIns altoes?
Como equilibrar e[ctiv3mente
0
local de computa9ao e comunica9uo?
Como gerenciar a aioca9ao de recursos iimitados?
Como evitar comporlamcntos pl'eciominantcmcntc nocivos no sistemil, au
seja, caos e oscilayoes e inconst;'incias no sistema?
Como construir
platafonnas
c manipular sistemas multi-agentes?
de tecnologia
sistemas mulli-ngentes?
e metodologias
de!
Como projetar
dcsenvolvimento
para
29
FIGURA 4 - ABORDAGEM SMA - 1998
F(ls<' de
CoJ/(·('1)~·ao
Prl\j~t(\ "las
i»ft)jclft (las
Or~ani~.,~""s
Inl~ra\"x'S
t
o
o
0
..\~~nt\!s
o
Fonte: ROCHA. A. R.; SOUZA Jr. E. M.; ALVES J. C. Agmtcs
Disponivc\ ern: W\vw.comp.uf1a.br/-undcrsun/i".
2.2.3
Diferen9as
Jl1lcligc"fcs
e Sis/clll(u
Mu/riagi!1lfe.s.
entre SMA E RDP
Apcsar das diferen'18S entre SMA e RDP, dais sistemas complementares,
e
dificil discernir sc lima implemel1ta~uo foi descnvolvida confonllc os padroes de lim
ou Lieoutre sistema.
Conformc Shiman et al. (1981) a maior diCeren,a entre SMA e RDP recui
sabre a n09ttO de autonomla, jj, que em RDI:>as agentes sao desenvolvidos
para
30
resolver problemas
e.specfficos e simpiific<1dos, 0 que nao Illes pe.r111ite resolver
situa~l)es diferentes daquclas pam as quais [Dram programados.
o
RDP
e
um sistema fechado c inllexivcl. ou seja, nilo nceita a adi<;ao de
novos agentes. 0 srvlA, no entanta, n;1o apenas admite a inser9uo de novos agentes,
como resolve problemas diferenciados devido
<'t
sua capacidade de trocar inforl11~H;OeS
com mUros agentes.
A
RDP
conseqiientcmcnte,
funciona
com
base
em
conhecimcntos
prcdeterminados.
s6 opera com sucesso quando se nprescntarem js cirCuIlSli:incias-
problcm{lricas para as quais est:}prcparndo, pcrdendo com isso sua fll;!xibilidade.
No sistema l11ulti-agente
infofmayoes
Distribuida
os agentes n;1o t~m especificidades.
Compartilham
c par isso suprem nivcis mais altos de abslrac;ilo que a Resolw;:ao
de Problemas. ESlas abstm90es cstuo relacionadas
11S
usuario e pennitem atribuir maior flcxibilidade no comportamento
exemplo, em vez de realizar
lllll
comportamcnto especifico,
0
expectalivas
do
do agt!nte. Par
sistema multi-agente
pennite que as agcntes negociem lIns com os outros, para determinar
0 melhor
eonjunto de a,Oes para eada situa,"o (SINGH, 1998).
o
SMA difere da RDP, aindu, por que sellS agentes Silo inteligentes, e atuum
com base na n09ao de sociedadc. Na RDP, 0 problema
e
subdividido. No SMA as
agentcs em conjunto busc3m solu~ao para 0 problema scm fmgmcnt{I-lo (BARONE,
2003).
31
QUADRO
o
1 - DlFEREN<;:AS
ENTRE RDP E SMA
quadro que segue apresenta as principais caractcristicas
que difcrem 0
RDP e SMA.
CARACTERiSTICAS DA ROP
Os age,ntcs sao cooperativos~ Nno lIsum,
necessariamente, a mesma eslratcgia para
resoiuyao
de
problemas.
Seu
comportamcnto
e padronizndo para
limitar sua a~ao a lima atividadc
especifica. Essa organizacao
e, nn maioria
dos casas, dcfinida durante a concepr;3o
do sistema.
CARACTERiSTICAS DO SMA
Nao
hft padroniza.;ao
quanta
ao
conhecimento dos agentes. Elcs sao
capnzes de raciocinar sabre a9ues C 0
proccsso de coordenu~;1o em si. Sao
capazes
lambe,1n
de
rcconhecer
modificn~Oes no ambiente
c agir
con forme estes estimulos. Cada age-nte
tern
informacoes
incompletas
Oll
capncidade incompiela para resolver os
problemas. e por esta razao possuem
pontos de vista Iimilados; auxiliam-se
mutuamcntc, sendo capazcs de decompor
as turefns.
Ha uma noc;ao de controle global no Os dados sJo dcscentralizados. Nilo h:i
sistema que, no entanlo nao c tilo efetiya; sistema global de controle. A computac;ao
o RDP II;}O gafJnte ao sistema um c ass incrona.
controle global coerente. Sell sistema de
controies
pode seL' centralizndo ou
dislribuido de acordo com sua finalidade.
o problema e resolvido por um conjunto
de agenLes, fisicamente distribuidos em
diversas maquinas concctadas via rede.
Esses
agentes
silo
prtviamentc SMAs
nao
resolvem
problemas
desenvolvidos, de [onna a solucionar um espccificos, mas sao desenvolvid05 IKlra
delenninado
problema,
au
seja,
<1prescntamgrande especificidade.
um
dominio
especHico.
Coordenmn
0
comportamento
inteligente
de
um
conjunto de agentes autonomos, mais
"a.ntigos"
do que
a problema
em
particular.
POS5uem concepc;;}o [cchada de mundo,
pais suas arquiteturo.s silo intlexiveis, au
seja, nolo permiLc a adh;ao de novos
agentes.
Arquiteluras
mais flexivcis; organizac;fio
do siskmu sujcita a l11udanc;as(adapla<;ao
flS
vari:lc;oes no ambiente e/ou no
problema),
permitindo
inclusive
a
inser9ao de novos agentes. Os agentes
podem enlrar e sair do mnbiente a
qualquer mom ento.
32
A intera~;1o entre agentes ocorre atrnves
de interc[unbio au por compartilhamento
de dados comuns. Esse padrao e definido
durante a concep9!'io do sistema. sendo
illlim8mente
ligado
ao
modelo
algoritmico subjacente e aD problC'ma que
o sistema deve resolver.
A intcra~ao ocorre mediante raciocfnio e
negocia~ao: Os agcntcs podem pcdir
informa~5es de outros agcntes, obscrvar
as atividades
de
Qutros agcntes,
interceptar e mudar os pedidos destinados
a
outros
agentes,
cstabelecer
comunica~ao com agentcs sob 0 contrale
de outros supervisores.
A coopcnu;:ao pode existir em nivel de
subprobJema, os agentes dividem entre si
as diversas partes do problema original,
ou podem aplicar diferentes estrategias
para a reso!uryuo de uma meSIlla tnrefa;
Os agentcs sao cnpnzes de resolver
problemas sellS C as outros que possam
surgir no ambiente, porque compartilham
seu conhecimento e srio capazes de
aprcnder com as experi2ncias; Sendo
cnpHzes de agregar conhecimento podem
aplica-Io
para
resolver
problemas
similares
com
que
se
de front em
futurnmentc.
No intuito de aumentar a velocidade de Os agentes sao aut6nomos; Nao hit
resolw;ao, as agentes sao exccutados de divisuo
em
subproblemas,
mas
forma concorrente; Cada subproblcma c negocia~(jes e auxilio mtlluo.
resolvido por UIl1 agente, con forme sua
especificidade.
Fonte: JENNINGS
1H'lpr6pri., pesquis;\.
2.4
0
CI 01.,
1998; www.inf.ufsc.br;
COMPORTAMENTO
SISTEMAS
www.colllp.un:t.br~
AUTONOMO
CompJ.r11Yi'io de c.,ractcristic:Js
DOS
AGENTES
EM
MULTI-AGENTES
De acordo com Russel & Norvig (1995) atuar rucionalmente significa atuar
com vistas a lim objeLivo, de acordo com
unlil
cren9a. Neste contexto. um agente pode
ser definido como uma elltidade capaz de agir e pensar, lima entidade que percebe seu
ambiente c age sabre estc nmbientc.
33
Um agente intcligente
e um clemento
ceria", ou seja, fazendo com que
0
capaz de "ruzer n eois:) cerIa, oa hora
sistema scja bem succdido. 0 agcnte inteligcnte em
SMA busca maximizar seu descmpenho, com base nas evidencins que c.onstam na
mcnsagem, no conhecimento que possui sabre 0 <lmbientc, sabre outros agentes c
sabre si mcsmo. A <'llltonomiado sistema
comportamento que assume
c detcnninado
e dccorrente
desla capacidade analftica e 0
por sua pr6pria expcriencia (RUSSEL &
NORV[O, \995).
o
tenno uutollomia, freqi.ient.emcnte associ ado fl abordagcm SMA, remelc it
ideia de que os agentes funcionam de fonna independente uns dos QuIros.
Nao cxistem esqucmlls predetcnninados punt rcsolw;ao de problemas, por isso
os ngentes se coOrden3l11 em conjuntos au gmpos - comunidades - que, supostamente,
analisa111as f0n111lSde coordena~ao do conhecimento disponivel.
Num SMA os agentes trabalham de rorma conjuntn, mas Sao autonomos, ou
seja, nao dependem de um agente central para coorden~l-los. Esta abordagcm nao visa
a solu~ao
dt! um lUlico problema, buscando coardenar
0
comporlamcnto inteligt!nte de
lim conjunto de ngcnte·s. E importante ressaltnl", que estes agentes autonomos, pod em
ou nao dependcr
aUlonomia
e
UllS
dos outros confonne a situn~no,
0
que pcrmite afirmar que esta
conccrnente, au seja, pautn-se na cumplicidade
dos agcntes que se
auxiliam l11utunmenlc(BARONE, 2003).
Os agenles nao sao, nccessariamente, condicionados
no momento em que 0
problema ocone, exceto em casos de SNtA reaOvo. Na realidadc, a existencia dos
agentes pode seT precedente ao aparecimento de lim problema. ISla ocorn~ por que os
agentes sao cnpnzes de "rrtciocinar" dbnte das situa~5es problem~Iticas, alcl11disso, n
34
reestruturac;ilo do sistema em diferentes agrupnmentos de agentes
JlOl'quea arquitetura
e f1exivel e permite
e scmprc
previslvei,
essa mobilidade (BARONE. 2003),
Interessante expor algumas caracteristicas
dos agentes em sistemas multi·
agentcs (REZENDE, 2003; \\~\~v.inf,ufsc,br):
Autonomi:l de dccisao: Autonomia de decisuo sugere a capilcidade de
analisur situac;oes-problema
110
momento
em que
ebs
aparecem,
escolhendo para sua resoluc;ilo 0 mclhor procedimcnto. Em alguns casas
o agente jtt [em conhecimento do cenario, em outros nao.
Autollomin de cxccu~fto: Agcntes lnteligentcs precisam ser autonomos c
demonstrarem raciocinio, pam que Iw.ja efic~\cia. A tim de manter est a
capacidadc,
0
agente rcquer mecanismos capazes de avaliar
0
estado
alual de sell dominic externa, a fim de que possa incorporar isto em. suas
"d~cisoes" sabre a~oes futuras. Desta sane, as agenles exam inam 0
"ex ito"
obtido em a~~es previas e adaptam suas a~ocs con forme a
necessidade para se aUla~aprimornrcm e, assim, numcntar as chances de
abler novos ~xitos em sitlla~oes variadas. Alltonomiu
e,
em poucns
palavras, a habilidade que possui um agentc Tntcligente em exerccr
controle sabre suas pr6prias a~oes e, principahne.nte, sobre sells estados
e comportamentos internos.
Compet~ndn
p:tr:l dccidir: Rererc~se ,1 independencia dos 3gentes com
rela~J:o a outros agentes, humunos ou n30. Autonomia
sugere
capacidade
do
agente
em
perseguir
de execLiryao
suas
mctas.
35
indepcndentemcnte
do usu{\rio, au seja, dispensando
comandos ambicntais. De
interac;ucs ou
a capacidade de atu1l9ilo dos
f0n1111 sllmaria,
agentes sabre um problema manifcstn-sc independcntcmcntc
de haver
interven<;ao extcrnil.
Existencia
de umn Hg~lldn propl'ia:
Capacidade de desenvolver
urna
agenda de objelivos, acessivel no momento em que se deseja concretizar
lima meta, referellte
a soiw;;lo do problema.
RCfltividadc: Capacidade de reagir 3S mudan<;as do umbiente a partir do
reconhecimento de urn contexto conhecido~ Um agente cleve ser capaz de
reagir adequadamcnte
con forme a influcncias
au a informac;ao
do
ambientc. Este ambiente pode ser constitufdo por Qutros agentes, como
usu;irios human os. fontes cxtCnlUS de informac;u.o
au mcsma objctos
fisicos.
Adaptal>ilidnde: Um agente deve ser cnpaz de ajustar-se as prefen:llcias
e <ISnecessidadcs de seus uSUlirios, alcm de adaptar seu processo d(!
decisiio frente a situac;oes desconhecidas;
Mobilidade:
Capncidade do agente em lllover-se e ser executado em
outras plntafonnas; de forma mais especifica, signitica capacidade
agente em transportar-se numa rcde de
rede eictronicrl,
interno.
scm, contudo,
lIllla
comprol11cter
do
mnquina purn outra. peb
a estabilidade de seu estado
36
Illterntividndc
com 0 Usu{lrio: CapJcidadc de interagir com uSll~)riose,
considernndo
os
possiveis
mal-entendidos,
falhas
de
agente vai atuar,
iS10
reagir
ils
comunicac;ao de mancira aceitavcl;
Ambiente de Atua~ao: Caracteriza
e, em
0
local ande
0
ambientes [,echados (desktop) au abertos (in/em.t);
Equivale
COlllunicnbilid:u]c:
agentcs
it cnpacidade
compulacionais para a concretizuc;ao
de interagir
com Olltros
de sUas mctas. COl'responde
ainda i1 capacidade de trocar inforl1la~oes com oulras entidades, sejam
e
elas agenlcs, humanos. objetos au ambientc. De forma mais detalhada,
importantc expor que as agentes dentro de lim SMA cOITIunicall1-se
continumnente,
do ambiente
cada
infofmac;Ocs sabre 0 estado
qual averiguando
extcrno. atraves dos subsidiarios
allial
dessa informa9ilo, que
podem ser outros agentes.
Capacidnde
de Raciocinio
c npl'endizagem:
Urn agentc
e
capaz de
nprender quando disp~ de capacidade para armazcnar conhecimento de
forma
cumulativa,
agregando
expericncias
passo.das
novas
expcric::ncias, e conseqUentemente, modificando seu comporlamento
face das novas situa.;oes. No entanto,
aD
nivel
UIlla
em
varia<;ao muito umpia, quanta
de inteligcncia dos agentes pode ser observada: agentes simples
possuem inteligencia Iimitada; agentes complexos compoem sistemas
altamente inteligentes. A inteiigcncia de um agcnte
em
Irati
principais
capacidade
componcnteso:
de ruciocinio
5:UU
fundnda
e medida
baGc de conhecimcnto
sabre
com base
internn,
0 conteLldo do. base
5:U:l
de
37
conhecimento e sua habilidade em aprender ou adaptar-se a mudanc;as de
seu ambientc (comportamenlo adnptativo, jtl men cion ado).
Continuidade
Tcmpornl:
Os agcntes realizam continuamente process os
que podem estar ativos, cmforegrowld,
DisCt!rllimelllo:
Um
considern\=Oes, mas
agente
cleve
nila
preyer
importantes e/el! infannayt>cs
au estagnados, em background.
cleve
('rres,
instru\f()cs
aeeitar
omissao
de
sem
infon1l3yiks
ambfguas, e no caso, [i.1Zer pcrguntas ao
llswirio. Devc ser pennitido a lllll agentc recusar executar cc-rlas tarcfas.
FIGURA
NECESSAmos
CARACTEIUSTICAS
DOS
AGENTES
NA INTEGRACAO AGENTE-AMBIENTE
E
ATRJBUTOS
- 2000
Communication
A,utonomy
'Mobility
Fonte: SOBRAL, 10.:10B.M.
Ag~II(t'5:
C operation
Conceitos e Principios. Disponivcl em www.inf.uf1c.br. 2000.
38
Confonnc
verificado
na figura
5, agcntcs
inteligcntcs
t!?m habilidadcs
fundnmenlais 3.comunicac;ao reciproca, as quais precis:lm scr fortalecidas pelo uso de
urna ACL (Agtm COllllllullicatioll
compalivel (MAYFIELD et al., 1996).
Lallguagt)
A n0950 de agentes em SMA remele ainda: a coopernlividade
objClivos
complexos;
3 capacidadc
de agir par
iniciativa
pr6pria;
para atingir
no" usa de
infonna90es e conhecimentos para direcionar 0 local c as rccursos a serel11 utiliwdos.
Lingllagens
qUI! !'ucilitcm
comunicn~ucs
tic allo Ilivcl silo, portanlu.
componentes
essenci:lis de um progrnma inteligeme.
FIGURA 6 - AREAS DO CONHECIMENTO
ENVOLVIDAS NA CONSTITUIc;:AO
DE SISTEMAS MULTI-AGENTES - 2000
Dedsion
Theory
Artificial
inteligence
Learning
capability
Proactivlty
Distributed
Artificial inteligence
Fonte: SOBRAL. Jo~o 8.M.
Agelltc'J:
COllccilOS
e
Prillcipiru.
Disponivel em www.inf.ufsc.br.
2000.
39
2.4.1 Agentes Reativos e Agentes Cognitivos
Num
sistema
ll1ulti-agcIllc
dais
tipos
<.Ie arquiteturns
podem
ser
implementadas: Arquitetura rcativa ou cognitiva.
2.4. J.1 Agentes Reativos
Jennings t!1 al. (1998) afirmam que 0 agente re.ativo uilia de acordo com as
condi~oes impostns pelo ambiente e iSla pode dcsempcnhar a~oes que atuam sabre e
modificam a ambiente.
Agenlcs reativos podem ser comprccndidos como elementos conslituintes de
lima arquitetura capaz de realizar uma a~ao de acordo com Dutra ar;ao que a
condiciona.
Esta
rear;;;!.o ceorre
obedecendo
it reJar;ao
de
estimulos-resposta
(ANGELOTTI,2001).
Barone (2003) atinna
que as ar;oes
de agentes
condicionadas no momento em que surge um problema, isla
em SMA realivos sao
e, problema
"X" origina
3r;5.0"X" e nao "Y'~. Ocorre a idcaliza~~o de uma ordem organi:U1cional,
lima
seqU~ncia 16gica de compartilhamento de conhecimento entre agente "X" e ';Y".
Os agentcs reativos possuem um comportamcnto
bastanle simples e 550
freqUentcmentc Ilumcrosos em sistemas multi-agentes. 0 cOl1lportamento inteligente
do sistema resuha da coexistencia e da cOlllbina~ao de comportamentos
agentes reativos ulilizam constantcmente 0 umbicnte para se cOlllunicar:
simples. Os
40
indcpcndente
de sua aparcnte
demonstrado novas f01111as e apiic3tyao,
simpiicidadc,
as arquiteturas
rcativas
h~111
contudo, existe uma serie de desvnntagens
nesta abordagem. principalmcnte em se tratando de sistemas complex os.
FIGURA 7 - ARQUITETURQA
DE AGENTES REATIVOS - 2000
Competencia
M6dulo de
Competencia
M6dulo de
Competencia
Fonte: SOBRAL. J050 B.M. Agmte.Y: Conceitos e Principio5. Disponivcl em www.inf.ufsc.br.2000.
2.4.1.2 Agentes
Cognitivos
Segundo Angelotti (2001), no modele cognitivo encontralll-se as n090es dos
model os de si; dos Olitros; de crcm;:as; de intenc;oes; de atas de fala; entre outros. Estes
modelos penn item implemcnt •.
tr mttodos complexos de coopcrnc;ao c negociac;ao.
Desta forma: os agentes cognitivos si'iogmpos imbuidos de grande cJpacidade
de interagir~ lomar decisues e trn~ar pianos de a~ao,
0
que confcre ao agente relativa
autonomia. Eics manipulam a conhecimento par meio de modelos alr:lVcs dos quais,
41
lodos se tarnam capazcs de rcc.onhecer 0 potencial dos dcmais agcntcs que copnrticipam do sistema. permitindo a distribuic;ao inteiigente de subproblem as.
Os agentes cog,nitiyos atuam em 4 nivcis, a saber (REZENDE, 2003):
Nivcl de Cooperal;ao:
quando um agente nile cstiver capacitndo para
realizar umn tnrefn ou problema pnrticular. cle deve cooperaf COIlloulros
ngcnlCS. Esta coopcra~ao deve ocorrer mcsmo se mais de um agcnte
e
capaz de cxecutar satisfatoriamcnte
a mesma larefa. Este atributo recni
dirctamentc sabre a possibilidade
de decomposic;ao do problema em
subproblemas
por
lim
agente gerenciador
que ocasiona a divisao de
tarefas entre as agentes h:ibcis.
Nivcl de Negocia~ao:
11 Ik'gocia~ao entre as agcnlcs acoillece
pela
divisao de tarefas, de maneim que scja mais organizada e fazendo uso
das capacidades c conhccimentos dos agentes. Neste processo viabilizasc a promo~flo dos agentes, 0 que pennitc a resolu'ruo de problemas mais
complexos.
Nlvcl de Org:Ulizfl~uo: Diz rcspeito it forma como 05 nge-ntes interngem
entre si. ao tipo de organizafVao que adotam,
adapta~j10
all
seja,
a
capacidade de
e de insert;ilo de mecanismos de raciocinio no conjullto.
Nivel de COl1lunjca~ao: rcfere-se ao modo como os agcntes irao se
cOlllunicar equal
0
protQcolo de c0I1111nic~H;:il.o
a scr utilizado na
intera~ao entre esses age-ntes.
42
A abordagem cognitiva enfatiza
0
modela ment,,\ de um agcnte, tipicamente
descrito como intenyoes e crencas. Dentre as model os mcntnis mnis importantes
podem ser citados os seguintos (SINGH, 1998):
(Beliefs):
CI'Cnf;3S
Caracteriz.1m
l11undo seja; Referc-se ,\5. principnis
0
que
Hill
visoes de
agente imagina que
lim
sell
agenlc com rcl:Wao ao
sell pr6prio ambientc.
Metas
(Goals):
constitui-se
Descreve
que modelo
0
agente preferiria, ou seja,
de subconjunto con tendo somcnte os estados e fUl1lYoesque 0
agente realmente pode assumir, por sua especi ficidade.
Dcscjos (D~sirl!s): Descreve as prefc-rencias
dos agentcs,
as
vezes com
aspectos motivacionais. Derivados diretamente das crcnyas, conlendo os
juigamcntos de possiveis situac;.oes futuras dos agentes.
Intcn~iios
(I"/,"/io"s): caractcrizam os objctivos ou desejos que
agente seleciona para trabalhar. Trata-se de
lim
0
subconjunto das metas;
Caso um agente decida seguir uma meta especifica, esta
meta
toma-se
uma Inten~il.o.
Pianos (Plans): Combina as il1ten~Oesdentro de unidndes consistentes.
43
FIGURA
8 -
MODELOS
MENTAIS
QUE
CONSTlTUEM
OS AGENTES
COGNlTIVOS - 2000
Desires
Goals
9"
o
~
00...
Intentions
UQ
(1)
FOnl(!: SOBRAL, Jolio B.M.
Agt:lIt~$: COllccilos e Pl'illcipiol,
Disponivel em www.inf.ursc.br.2000.
No modele mental descrito nas linhas precedentes as ag~ntes sugerem uma
postma inlcncionai: uma doutrina que pode descrever qualquer sistema usanda lennos
C0l110 CrCI1C;11,objctivQs, descjos e inten~oes. Este
e
lim ponto
de vista conveniente.
pais reafirma que podem scr criadas agentes pelo usa de tcrmos inlencionais.
Contudo, ista nao resolve
0
problema pr;itico sabre como detenninar,
par
exemplo, lima (mica crcnc;n e intelll';uQ de um agente arbitn\rio apenas com base em seu
aspccta c ambiente. Se dais agentes t€.m semelhantes estruturns de dados referentes ~'!s
crenC;3S, eles podem perfeitamente atuar de forma desiguaJ devido a difercn<;as em
sells programas au outros dados estruturais, au scja, n;1o se pode dizer ao ccrto se eles
44
tt:111all nac eXalamente as mcsmas cren~as. porque nOllnalmente exislem elementos
difcrenciais ('m cada agcnlc.
Por Dutro l::1do,sem uma representa~ao explicita e objetiva, qualquer agente
pode
requerer infofma<;Des
Agentes
a rcspcito
cognitivos
semfmtica de um ACL (Agent
da c.ren<;a de oulro agente.
sozinhos
podem prover as bases Ilonnalivas
COlJlIllImicofioll
que forma as agentes decidir.1o
comunicac;,ao. Suas perspectivas
para a
Language), cuja fUI19aO e determin3r de
a que cOlllunicar e de que fanna interpretar as atos de
devem sec meramente usadns para estabelecer as
CrellyaSe imen9t)es dos agentes a tim de que sell comportamento publico passe a agir
de acordo com a modele padronizado.
Por essa razi1o,
agente que compoe
e
necessaria uma represelltayaO cxplicita das crentyas de cilda
um sistema
cognitivo, j,i que 0 conhecimento
mlltuo das
habilidades reciprocas pcrmite um compartilhamcnto constmtivo de conhecimento.
45
FIGURA 9· ARQUITETURA DE UM AGENTE COGNITIVO·
2000
!
I
i
I
Interaction
'------'I
L
"__...
Fonte: SOBRAL, Jo,",o B.M.
Agt!II/(,5:
A figu":1 9 reprcse.nta
nrquiletura cognitiva.
'"_...".._"_~
Conceito$
0
I
..
_.
__
....
__
._1
..
e
Prillcipios.
Disponivcl em w"IVw.inf.ufsc.br,
2000.
processo de funcionnmento dos componentes de uma
Con forme pade ser obscrvado, na base de conhecimento eshl
cantido a modele simb61ico do ambientc. Os dcscjos, mctas e inten~oes derivam. de
f0n113 anflioga, da base de conhecimento. 0 plancjador (planller) toma conhecimento
das intenc;oes e as comb ina para formar um planejamcnto completo. 0 Scheduler
(aqucle que organiza a gr:1de dos plrtnos) reeche as pianos do
consistc de
lll11 l1Llll1CrO
Plal111t!I'.
Todo plano
ac;oes (miens que devem scr processadas sequencialmcnte ou
em parnicio. 0 Scheduler deve dccidir quando 390eS especificns devem ser executadas.
46
QUADRO 2 - AGENTES
o
REATlVOS
E AGENTES COGNITlVOS
quadro que segue apresenta compart'u;oes de caracteristicas entre agentcs
reativos e cognitivos.
SMA REATIVOS
SMA COGNlTIVOS
Agcnte.s cognitivos silo baseados em
A intcligcncia real esta situada no mundo,
Illodelos de organiZ31(()es sociais, C0l110
e nila em sistemas desincorporados
(especialistas. provadores, etc.).
se fosscm socicdndes humanas (grupos,
Fundamentam-se no principia do
hierarquias, etc.).
desconhecimcnto. Sua intclig~ncia pode
ser gerada sem conhecimento explicito Oll
raciocinio abstrato.
Ocorre nrmazenamento de
N;10 hit representac;ao do ambiente.
Nilo lui memoria das ac;oes au dt!
conhecimento.
conhecimentos.
Nile ha planejamento estrntegico de ac;oes Os agentcs cognitivos podem raciocinar
par parte dos agentes. Reage-se conforme
sobre as a~l'5esque foram tomadas no
as ITIUdUIl\:3S no ambie-ntc.
: passado e planciar ar;Ocs futuras.
H{lgrande numero de mf'mbros
Tal como uma socicdade, 0 modele
cognitivo e nommlmente composto de
componentes.
lim numero restrito de membros.
Seu comportamento inteligente decorre de Capacidade de tomar decisl'5es 16gicas.
DispOcm de um modelo simb6lico do
interaryoes com 0 ambiente, lima
ambientc e capacidade de raciodnio que
propriedade emergente de ccrtos sistemas
permitc a90es inteligentcs, confonnc os
complexos.
padr1'5es da fA chissic8. E diflcil nest a
abordagem annazenar novas
informuryoese conhecimentos sobre 0
iHnbiente, nl6n dos padronizados.
Utiliznm 0 conhecimento disponiveJ no
Os agentes possllem estados internos
modelo para modit1car seu estado
est{lveis.
intelllo.
47
2.5 COOPERA<;:AO
E COMPARTILHAMENTO
COGNITIVOS EM SMA
Ha
ENTRE
OS
duas farlnas principais de cooperac;:ao: compartilhamento
AGENTES
de turefns e
compnrtilhamcilto de resultados. No. primeirn, as agentes coopermn mutuamentc para
compartilhamento
da cargo. computacional
evitando, desta fanna, sobrecarregar
mutuamente
0
provenientes
do problema
0
principal,
sistema. No segundo caso, os agcntes cooperam
peln divisao parcial dos resultados que sao baseados em diferentes
perspectivas do problema principal, conseqOentc dos direre-ntes
recursos au dadas
(SMITH & DAVIS, (980).
Nos sistemas que
processamento
processamcnlO
compartilhamcnto
\153m 0
das infonnayocs
pod
de tarefas
0
contrale visa ao
para atingir 5ubjelivos, e os resultados
deste
em ser agrcgndos para resolver 0 problema maior, otimizando 0
processo de solll~ao do problema principal.
A
lransmissao
objetiva de tarefas se processa a partir do envio de lima
requisi~ao a outro agente, que par sua vez. manda lima resposta. Essa transmissao
e
resultado do troea de lim conjunto restrito de sinais que inicialmente caraclerizavtt 0
RDP
dcvido
ao
compnrtilhamento
sistema
de
intern~ao
de turefas nao
e
\1111
limitada
entre
os
rtgentes.
mas
0
atributo exclusivo dessfl abordagem, sendo
amplrtmente utilizado em SMAs para organizar a dccomposi~uo de problemas, alraves
de conexoes explicilas entre agentes, e para a execll(;iio de ture-fase subtarcfns.
A
hlemrquia
compartilhamento,
resultante
dessa
transmissao
obJetiv3,
eu
seja,
estrutura a sintese dus respostas. Sua propriedade mais relevante
do
e
a capacidade de facilitar a solu~:to de subproblcmas que nao possam ser resolvidos por
48
um lmica ngcntc. Assim, os agentcs individuais trccam resultados
parciais para
reso(verem sellS problemas parlicuiares. 0 compartilhamenlo de resultados
c indicado
quando (SMITH & DAVIS, 1980):
Os resultados
adquiridos
por um agente
influenciam
ou causam
diferenc;as nos resultados recebidos por outros agentes;
o compartilhnmcnto
dos resultados rcsulta na sollll;ao do problema (por
excmplo, resultados rccebidos de um agenle distante nao ocasionam
oscila,5es);
Comparlilhamento
adequada para
A
11l3ior
0
de resultados contribui
mnis
problema.
vanta gem do comparlilhamento
inccrtezas. Considcrc-sc,
para uma sollU;ao
de resultados
e
a toler;:incia a
por excmplo, llma aplicac;ao em que tres agcntes estao
tenlando adquirir uma interprctac;J.o consistente sobre as por90es sobrepostas de umo.
ill1agem. No compartilhalTIcnto de resultados as agentes tentam sc consensualizar
comunicando suas interprcta~Oes pnrciais a
lim
quarto agente incumbido de ordenar as
inconsistencias,
Os subproblem:.ls individuais nao dcvem causar intcrrupc;oes
comunicativo
entre
um
agcnte
e outro,
mesrno
que
no processo
eventualmente
subproblemas identicos ou esquecidos (SMITH & DAVIS, 1980).
surjam
49
Alem disso,
e
Illuito importanle que aos subproblemas
priori dade de resolu~ao. A ncgocin'Yao
e
um reclirso
urgentes seja dada
que facilita identificar
as
prioridades e 0 protocolo de cOlTIunicn9t[o deve ser proje.£ado com este objctivo.
No casa do compnrtilhamento de resultado a intlucncia dos agcntes lIns sabre
as outros deve ser assegurada, pais, as resultados parciais recebidos de
lUll
agenle
distanle podem sugerir novas linhas de ataque para a resolw;:fio dos problemas Oll,
inadvertidamente inten'Omper
um procedimenlo de rcsoiu9fio que vem oblcndo ~xitos
significativos.
Por isso a intern9~o entre agentes em urn modele cognitivo
Neste
modelo,
pode-Ill ser identificados
tres elementos
e tilo importante.
fundmncntais.
a saber:
componcntes de reprcsenlac,::iio,componenles de cOlTIunicac,::no
e outros componenlcs
indiretamcnte relacionados ao compartilhamento de experi€ncias
Na figUI'3 10, verificacla, a seguir,
comunicnc;ao e de rcpresentac;ao. ou seja,
cOll1unicac;ao e
0
Oll
conhecimento.
e
possivcl visualizar os component.es de
0
protocolo de transporte, linguagem de
protocolo de interac;iio, alem das ontoiogias. Os componentes
connmicac;1\o suo indispens~lvcis no processo de compartilhamento.
de
Os componenles
de representac,::llo,pOl' sua vez constitucm·sc de ontologia e base de conhecimentos. As
ontologias sao respollsaveis pelas definic;oes de conccitos basicos no dominio e os
relacionamentos
entre eles e as bases de conhecimento dispocm de inform:woes a
respeito de Ladas os agentes do sistema. No processo de compartilhnmento
expcl'iencias
ou conhecimenlos,
esscs agentes rnciocinam,
esqucmas modelos para a rcsoluc;1\ode um problema.
planejam
de
e seguem
50
FIGURA 10 - MODELO DE INTEROPERA<;:Ao EM SOFTWARES BASEADOS
EM AGENTES - 1995
rr=~~~~~--~~
I
COMUNICACAO
Rroto,colO de Transporte
Ling~agem de Comunica9aO
Prolocolo
de Inter~~o
Planeiamenlo
Modele
._-
REPRESENTACAO
Meta-Conhecimento
Raciocinia .
I
Base de Conhecimento
!~- . .- ~-~-----FONTE: FIN IN, LABROU
2.6
& MAYfiELD,
COMUNlCA<;AO
A
KQML as all Agell' Communication
ENTRE OS AGENTES
intera'tao entre as agentes I1contece em
a cOl11unicat;ao interativa
seja satisfatoria
linguagem
KTF(Kfiowledge
KQML, uma ACL proposta
Jnt~l'challge
0 ARPA
e
Format)
1995.
EM SMA
Vi.'lriOS
Agency's Kilo/edge-Sharing Effort) tem direcionado
Lrll/g/lag~,
niveis. Para que em cad a nivel
(Advanced Researched Projects
0
conteudo
de
e a inten9ao
informac;oes para a
para a linguagel11
descllvolvicia pclo ARPA em 1980 - no Progrnma de
51
Compal1ilhamento
de Infonnac;Oes e impiemenlnda
grupos
(SIGH,
de pesquisa
2.6.1
KIF:
Lingllagem
1998: BARBUCEANU
independcntemente
de Representa<;ao
A melhor forma de assegurnr que 0 compartilhamento
e pela
harmonica
que
eli mine
por varios
1995).
& FOX,
de
utiliza~ao
U111
ocorrera
tmica sistema de. representayuo
as difcreJ193S impicmcntuyiio,
fucilitando
de fomm
de conhec.imento
0 comparlilhamento
de
conhecimentos. Sem uma Iinguagem de reprcsentru;ao as chances de que se obtenha
alguma
expressividade
o ARPA
dcscrever
suo rebtivamente
Kllowledge
baixas
(GENESERETH,
Sharillg E.ffort prodlizililim
0 conlclldo de infonTI3y;1otronsmitido
(ontologias).
conteudo
as agenlcs dcvem
pom compreender-se
Neste contexto
solll<;"O sligerida
pelo
0
2000).
a lingllagem
logic.
C 0 vocabulario
KIF para
conceitual
compartilhur destas il1forll1ac;:~es para ontol6gicas
mutuumente
1995).
& FOX,
(BARBUCEANU
e de
KIF (Knowledge Interchange' Formal) se insere como uma
KSE
(Kllowledge
Sharillg Effort) pnrn aperfei<;oar
os aspectos
sintaxicos de representac;ao durante a interuc;tio entre os agentes, firmnndo-se como um
podcroso veiculo
Huma
Cons isle
conhccimentos
mensagem
o
expressoes
pnra expressar tanto
Iinguagem
orientada
conhecimento
er
como
a comput3dore.s
entre programas discrcpantcs. Refere-se
(MA YFIELD
0
meta-conhecimento.
para 0
intercambio
a codifica9uo
de
do conteudo da
ai, 1996).
KIF posslli lima semantica
IUl
0
dcclarntiva
(por exemplo.
0
significado
de
representnc;ilo pode se.r cntcndido sem um interprete para manipulu-Ias);
52
c compreensiVD
em lennos 16gicos (i.e. farneee c;:ilculos predicados de primeira-ordcm
para a cxpfi:!ss50 de on:u;oes arbitrarias); viabiliza a represcnt.u;ao de conhecimento;
disponibiliza regras racionais de reprcsentn9!3es nao-monotomicas;
pCfmite a detinic;ao
de objetos. fUl1yoes, c relac;oes; pode ser usado para apoiar a tmduc;ao do contettdo de
uma linguagcm para Dutra; ou pode funcionar como uma lingua comum para dais
age-ntes que USCI11diferentes
linguagens
de represcntnc;uo,
funcionando como uma
linguagem unificadora.
Estn lingua gem de repre.sentacrao fundamenta-se:
Na
necessidade
npiicayocs
de uma
inteligentes:
lingua
com
enrase
cooperac;J.o com Qutros componcnles
os quais
0
KRSS e
0
No aperfeic;oamcnto
franca
na
para
desenvolvimento
interpretac;uo
(referente
de
it
do Ilpacolc soluc;ao" do KSE, entre
KQML);
de um format.o de intercumbio
pautado
no ato
Imdut6rio que pem1ita traduzir da lingungem A par-a KIF e de KIF para
Iingungem B, ao invcs de se trnduzir de A para B (lvlAYFIELD ct ai,
1996).
De qunlqucr f0n11a, 0 KIF forncce especif'icilyiio niio apcnas para a sintilxe da
linguagem, mas tambem para suns sem;lnticas. Cabe ressaltar que a senuinticn do desta
lingungem.
ordem
dcsprovidn
de regrfts c dcfinic;ocs, nssemelhn-se
devido ao fate de manter caracteristicas
capaeidade de decisao do vinculo 16gico.
u umn 16gicn de primciro
fundamentais
como a firmez.:1. e a
53
De fata, a linguagem em questffo inclui uma varied<lde de opcradores logicos
pam auxiliar
Iltl
coditicac;ao da inCOrl11flc;:ao(como negar;.ao, regms, e nssim por diante),
podendo ser usado tambem para descrever procedimentos.
ou programas a scrcm
scguidos pclos ngentcs.
As ontologias
silo escritas em KIF, usando-se
0
vocabuh1rio
de defini<;i1o.
Cada ontologia define UIll conjunto de func;:3es de c"'sse, e objetos constanles para
algum dominic do discurso. As onlologias incluem ainda
permite a inlcrpreta<;ao. A lingua gem
resuitanlc
uma axiomatiz3yUO que
(uma logica b{lsica de KIF
vacabt1l~irio e a tcoria das Ontologias) permitc a tais intcnyOes screm interpretadas
+
sem
ambigilidades c independentes do contexto. Essas ontologias podem. cntilo, ser usadas
por apJica<;oes de cOl11unica<;ao. Hit
um
nlunero
consideruvcl
de
anlologi<ls
desenvolvidas em v~rios dominios que pade-Ill ser de interesse para aplicac;Oes de
softwares (FININ
2.6.2
el
al. 1999).
Ontologia
Segundo Gruber
compartilhamento
(1993) a antalogia cspecifica de que Canna se process ani
de conhecimento. De l1uo, uma ontologia
e
0
lIma descric;ao (au
especiFicac;,10 formal de lim programa) dos conceitos e relac;oes que podem oeotTer
entre um agcnte Oll cOI11unidade de agentcs.
De forma mais detalhada, ontologia significaria n espccificac;uo explicita de
lima
concc:ituac;i'lo.No contexto de lA, 56 a que "existe" pode ser repl'cscntado. Ao se
represenlnr a conhecimento de
U111
~ol1linio como fonnalismo declarativD, 0 conjumo
54
de objetos
que constitui
representa<;:n.o passu
essa
universe
a ser denominado
discursivo. Este conjunto de objelos. c as rela<;oes descritivcis entre cles, refletcl11-se
no vocabul:u'io de representac;ao do cOIlhecimento.
E
passivel descrever a ontologia de um programa definindo um conjunto de
condic;oes de representaC;ilo. Ncsse caso, detini~oes previns pcrmitem
entre as nomes das enlidacles no universe
fun<r~cs)au outros objetos) e
names
e axiomas
formais
rlS
classes, reiu<;CSes,
texlo humano, legiveJ, que descrevc
que
induzem
ao
lisa
e a dcclnn:u;ao de uma
Fonnalmentc, uma ol1tologia
Estruturalmcme
0
discursivo (por exemplo.
adequado
fazer associac;ao
0
significado dos
e ;\ interpretar;Ho.
teoria logicil.
ontologias si'to rrcqUentcmente comparadas n hierarquins
e
taxonomicas de classes (dcfinic('jes de classes), mas
importanle ressaltar que as
ontologias nao precisam e nao devem ser lim.itadas a eslas fannas. pois nao estuo
reduzidas
a defini9ues conservadoro.s. quer dizcr, dcfinic;oes no senti do 16gico
tradicional, que fecai sobre a mCfa introduc;-aotellninol6gica c nilo soma conhecimento
sobre 0 ll1undo (ENDERTON,
1972, aplId GRUBER.
Pam especifiear uma conceituac;iIo
e preciso
1993).
declarar axiom as que relucionem
possiveis interpretac;('jesn condiyoes especificas, pre-definidas pela ontologia.
As
ontologias
sao
dcsenvolvidas
com
a
finalidade
de
habilitar
0
compartilhamento de conhccimcntos reutiliztlveis. Neste· contexto, lima ontologia seria
a espccificac;ao lIsada para cstabelccer compromissos olltol6gicos.
Para descrever fUll9('jesontol6gicas silo utilizadas ontologias comuns em um
conjunto de agentes, de fOllnJ a promover entre clcs cOl11unicac;i'iosobre um dominic
exclusivo scm nccessariJlllcnte
operar em uma teoria globalmente
comparlilhadn.
55
Afinl1u-se que um agente compromete
umn ontologia
cOl11paliveis com as definic;ocs ontologicamentc
se
SlW.S
estnbclecidas.
ontol6gicas esta baseada no nlvel de conhecimento
ac;oes nao forel11
A ideia de fUIlc;oes
de U111agentc indcpendente da
represent~H;aointema em nivel simb6lico dcstc mcsmo agenle.
Aos agentes s30 atribuidos conhecimcntos pcla observ8C;c10de sua5 a90e5; urn
agentc "sabe" algo sc age no 5cntido de, rncionalmente,
"nc;oes" de
lllll
aican9ar suas metas. As
agente. inclusive servidores de base de conhecimento
e sistemas
baseados em conhecimento, podcl11 ser observadas sob sua propria 6lica como
Uilla
interface fUl1ciol1aldo tipo tell e ask, em que a intcrac;:Jo ocorre alraves de afinnac;oes
16gicas (tell), e propondo questiles (ask) (LEVESQUE, 1984, aplid GRUBER, 1993).
PmgIl1aticaIl1cnte,uma ontologia comum define 0 vocabulario alraves do qual
se realizJm qucstCes e ulirmayoes entre os agentes, como que constituindo regras ou
compromissos ontol6gicos, que constituem
verdadeiros
acordos relativos ao
lISO
compartilhado do yocabulario coere.nte e consistcntemcnte.
Os ngentes que comparlilh;ull
a vocabulario
nito precisam
compartilhar
tambem sua base de conhecimento; cada lim deles tem conhecimento sabre as ac;oes
que as otltros n50 realizam. Nao
e
exigido que um agente se comprometa com a
ontoiogia de fonna a responder a todus as questoes que possam sel' formuladas no
vocabulario cotllparlilhado (FININ e/ al., 1999).
Na verdade,
0.
ontologia concrclizu
0
compromisso quanta
a
padronizac;:ao do
usa de um vocabulario (i.e., ask e tell). Para que haja um acordo entre as agcntes,
e
necessario compromc.timento entre cles e n propria ontolog.ia (GU1-lA & LENA T,
1994).
56
Em Qutras palavras, para
J
onloiogia lim compromisso comul11
e uma
cspecie
de garnntia de consist€ncia, c naa de perfeiyao, com respeito n perguntas e afinna~Oes
que usam
0
vocabulririo per cia definido.
Outro falor importanle na intcra~i1o entre agenles
e 0 contexta.
naa e passlvel haver comunica~ao sem a pcrcep9ilo do contexto, que
all lim ambiente simulado. Assim, 0 contexto social
os agcntcs devcm
e elementar,
Nonn:limente,
e 0 agente
fisico
pais determina 0 que
cspernr uns dos outros numa seqii~ncia J6gica de resposlas; requer
aindn que haja vernc.idnde quanta ~is infonnayOes lransmitidas.
0 KQML tem um
contexto fixD, em parte porque possui muitos indutores c em parte porque
Um conjunto de represenl.w<;ies
formais de conhecimento
e inflexivel.
baseia-se
em
conceitua~oe5 de objetos e outrns entidades que despcrtem nJgul11interesse para as
rela,cles
estabelecidas
entre
eles
(GENESERETH
&
NILSSON,
1987, aplId
GRUBER,1993).
ConceilOS ontol6gicos nado mais sao que visoes simpJificadas do munclo ou
contextos que sc descjam rcprese.ntar para determinado
propos ito. Toda bnse de
conhecimento, sistema bascado em conhecimento all nivel de conhecimento de agenle
compromete·se com nlgum conceilo, expHcita au impiicitamcnte.
Ainda par razues pragmfllicas, as ontologias disponibilizmn lim conjunto de
deliniilocs de vocnbuhirio fonnal, embora nao seja
0
unico modo de se cspecificar urn
conccito. A ontologia possui algumas propriedades
desejaveis em sistemas multi-
agcnles, COIllOuma scmfmtica independente do leitor e do contexto.
o mecanisme
contextual descreve partes importantcs do substrata sobre a qual
a cOlTIunicalJaoocon-e.
E
inevilayel que as pares de agente alribuam diferentes
57
signil1cados
a utn
1l1csmo significante,
Um compm1ilhamento
parcial
por cada um seja difercnte
pragmatisl110 no KQML
de significados
da id6ia original
internc;ao nilo exige
A
evita
social
6 verdadeirn.
rccebida.
possui
que
seu vocabuhirio
0 significado
pr6prio.
cOIll.precndido
informar.
t~o sutil quanto
reque.r Il1uita coopera<;ao,
e
que a mcnsagem
qual
que se pretendia
contexto
lim
acrcdite que a posic;ao afirmada
assim
pais cada
au scja, que
entre os humanos.
0
0
agentc informante
mas isso nno ocon'C neccssariamente
0 agente
infol111unte pretendc
que
informado
0
venha a acreditar nessu afirmativo.. Tal exig8nciu pode nMo ser accitflvcl confonne 0
contexto.
(SfNGH,
Dai
import?lI1cia
J
tJmbem
em nivel
contextual
1998).
Em se mantendo
margem
de uma unifonnidade
as uxiomas contradit6rios
para ambigliiclndes.
Dutro desvirtua
as
Dcsta
respectivas
forma.
ontoiogias,
As difercn<;i1s existentes
parcinimenlc.
afim de que
a
0 axiom3 signifiquc
e
traclucriio axiomatica
e natural
precisam
ser
Oll menos
mais
a comunicac;i'io naa oeoree au
de um contexto
que 0 significado
sllperndas
a mesma
ceisa
original
da
pam
se perea
ainda no ala tfndut6rio,
no infeio
e no tim do
processo cOl11unicativo.
Definir
pode
mecanismos
apenas
rt quantidadc
ser exlremamente
tnl
capazes
de axiomns
Mellio. Toma-se
de encapsuiar
as
relcvuntcs
para
a reaiizuyao
de alguma
forma
nccess,lrio
situ8<;Oes ou problemas
situu<;ao au pelo menDS dar a cIa a prioridade
potenciallllente
produtivas
entre os agentes
(GUHA
devida.
& LENAT,
a
de uma
a
tarera
utilizacr.io
de
fiIll de considerar
realizando-se
1994).
\igac;ues
58
2.6.3
ACL: Agent Communication
Language
A fun~ao des agentes C resolver problemas
e pnra isso requerem
linguagem calTIUI11. Na rcalida.de, individual mente os agentes
descmpenhar fUl1yOes legitimadas par sua prograll1a~no
sao capazes
sistemica, iSl0
c,
uma
de
s6 realizam
as flln~Oes para as Quais foram program ados, ncgando informa9eies que naa fa9am
parte de sell conjunto
cognitivD.
Neste contexto, a ACL (Agent Communication
uma
tentativa
principal mente
Uma ACL
como
lim
e
bem
por
succdida
de
padroniz<19aO na
Language) se destaca como
c0l11UniC39ao
entre
ngentes,
pennilir a troca de infonna<yao par meio de interfaces declarativas.
mnis que
lim
protocolo
protocolo de intera<;uo (ou
para troea de dados, porque alem de raciocina
lim
conjunto de protocolos) que slistenta diversos
tipas de mensagens. toda sua scmantica
e
implicita ou explicitamcnte
incorporada a
ulgum modele de agcntc. Contudo, as ACLs variam quanta 3 forma de cnfatizar as
model os sociais ou individuais de comunicac;:ao.
A propria ideia de uma padroniza<;ao ou normatiw.c;:ao ling.Ufs1icasugere urn
significado convencional bem-definido. Na vcrdade, lingua nao
c nada
mais que um
sistema de convcnc;:Ocs. mas tcm demonstrado cOl1sideravel forc;:a entre os sistemas
mulli-agellles (fVlAYFIELD et ClI., 1996).
Uma mensagem ACL
e uma
mensngem constituida de tr~s componenlcs: lllll
vocabul:'!.rio (igado ~l scm;intica propria de tim domlnio (on1010gia): uma linguagcm
para codific3C;:llodo contclldo da mensagem
cOlllunicac;:ilocomo KQML,
par exel:nplo.
(como 0 KIF); e uma Iinguagclll de
59
De acordo com Finin e/ al. (1993), na especificae;ao
KQML as agentes se
comport~111como sc fossem a\lt6n0l1105, agindo de acordo com seu eSlado mental, 0
qual
e
condicionado pOl' infornla~5cs a cles agrcgadas, que detcfminam seu proprio
comportamento e ambiente, alcl11 de infonna~oes
adicionais sabre Qutros agentes.
Para tamar a intera~ao efeliva, diversos elementos devcm sef analisados, como
as perspectivas,
0
tipo de significado,
contexto e 0 nilIllcro de atos cOl11unicativos
fundnmentos
au pragmMicos),
(semtmticos
no processo.
participantes
Os agentes devem agir em conformidade, ainda que perten.yam
ambientes para que possam compreender-se
a di ferenlcs
mutuamentc. Promover a intera~ao
e
a
fun~ao do KQML.
2.7
UNGUAGEM
A
aspectos
DE COMUNICA<;:AO
- KQML
intenwao nao requcr mais do que uma simples
mais
importnntes
ca
forma pC!:l qual as mensagens
coordenary3o
de
troca de mensagens. Urn dos
prolocoios, ou seja, uma conven<;ao da
seraG compartilhadas.
recursos para que se trabalhe em
conjunto e sob moio de coordcna,ilo comum (BARBUCEANU
o
pudesse
KQML roi prog,ramado como lingua gem universal para que cada agcnte
interpretar
I11cnsngens
recebidas
cOl11tmic<u;ao atrnves de alos lingi.ifsticos
forma
0
& FOX, 1995).
de
explfcitos,
rOm1a
idr2ntica.
charnados
KQML depende de estruturas de atas de fala
Ele viabiliza
a
performalivas. Desta
a semelhanrya da
comunicm;ao
humana. 0 KQML tem sido adotado com uma sem~\ntica [annal. Baseia-se em tearias
60
dos
atos
de
fala,
(rrca
de estudo
do. LingUistica
Computacional
Inteligcncia
e
de
Artincial.
ci al. (1995),
Finin
suportor
KQML
inlenH;:5es
fbi dcsenvolvida
especifica~Jo
define
em junho
dessa
e par~ll1lctros
mensagens,
significado
au
uma
1inguagem
A cspecificac;ao
Em 1997 surgiu
que
protocolo
projetada
inicial
para
da linguagcm
lima nova proposta
conslitui
lima
para
revisilo
da
h{, 111udancyas notaveis no seu conjunto
das performativas,
intenc;ao
e
linguagcI11 de comunic.wao,
de lisa.
fundamcnta-se
Para intcragircm
possuir
como
Apcsar das difcrenc;as serem minimas, em term os de sintaxc da
linguagcm
o
KQML
de 1993.
linguagcm
especific:tcyuo nillerior.
0
agcntl!s inteligentes.
entre
utilizf19ao
nas seguintes
em uma rede remota
um protoc010
proto colo
A crcsccntc
de
do KQ~[L
como
os agentes
devcm
ideias:
de cOlmll1ica~no,
de cOll1unicac;ao.
KQlvlL
6 responsavei
pc las informayocs
que trafegam
pela
rede local ou remota.
Os
H[l
pratoco!os
de
intenH;fio
execulados
pelos
sociedade
de agentes.
tn:s
importnntcs
KQN1L: a sintaxe,
age-ntes
aspectos
relacionnndo-se
que a sintaxe
associ ada
ao
mensa gem
e interpretada
de nota;
e usada.
defincm
em
a serem
com
cada
os
tipo
passos
de
considcrndos
a estrutura9ao
e a pragmatica,
dos
a serem
dial6gicos
intera9J.o
passive!
Iluma
em rcla((ilo
it Iinguagem
simbolos;
a semantica,
associada
a
fOmla como
a
61
Deve ser dada maior aten~ao
considera<;oes externJS
agentcs, e
a
a questao
pragmatica, pais a cIa estlio associadas
linguagem propriamcnte dita como 0 modelo cognitivo dos
ambicnte no qual eles exist em. Conseqi.ientemcnte a prngm:itica pode
0
detenninar a fomlu como os agcntes transferem a mensagcm rcciprocamcmc e de que
maneira proccssarao
cooperam
as mcnsagens
plCIlIlIl1Cnte,
e
parque
reccbidas e enviadas. Quando os age.nles naa
nao
conseguem
comprccndcr
pragm3licas, e se nno conscgucm compreender t[lis exigencias
as exigencias
e dcvido
a uiguma falh:t
nn cOlTIunicn,cro (SINGH, 1998).
Essa ~ a perccp9iio fundamental do KQML, cujo papcl, nesse contexto,
enfatizar
0
pragmatismo,
encontrndos na lAD,
Oll
e
e auxiliar na resoluc;:ao de um dos maiores problemas
seja, a divisao da sintaxe de forma comul11 e inteligivel a
todos os agenles.
o
KQML,
comunicacyao, utiliza
embora
uma
nao consiga
lingungem
resolver
plenamente
compreensivel
0
problema
ne.cessaria para dividir
de
0
conhecimento e pennitir :1interpreta9ao d:1s mcnsagens trocadas, reestruturando todos
os seus alas comunicativos.
Isl0 naa constitui de fato uma divisao semfintica, mas
ontol6gica, na qual. segundo Mayfield (1996),
e
objetos conslantes ptlra algum
que induz
e definida
lima
scrie de classes, funyOes
dominic do discurso, incluindo uma axiomatiz.:1yao
a interpretayao.
Em pouens pniavras, promover a cOlllunica~ao hannoniosa entre os agentes
tcm sido
lim
desJ.fio, e talvez constitua a maior Iimita\=ilo dos sistemas ITIulti-agentes.
Neste easo, como os agenics devclll ser orgilI1izados para conscguircm colabornr entre
62
si, atingindo 0 grau de comunicabilidadc
necess{lrio pam 0 funcionamcnto hanl1onioso
do sistema?
A fim de responder a essa pergunta dUlls abordagcns difer~ntcs t~m sido
exploradas: cOlllunicar;.ao diretn, na qual os agcntes mesmos cuidam da coordenacyfio, e
a coordena9ao 8uxiliadn,
cm que IHi program as espcciais para organizar a coordenaryao
(Disponf\'el em: www.inf.ufsc.br).
Ncst~ iillimo caso, conta~se com uma classc especial de agcntes denominados
facilitadorcs de cOlllunicacyao au simplcSlllcnte llgentcs facilitadores, que negoc.iam
conhecimcnlos de informac;Oes e exig~ncias de outros agentes, permitindo a emissilo
de mensagens,
mediarytio entre as agentcs.
recrutnmento e encaminhamento
contctldo de base. Esse proccsso pode ser observado no esquema abaixo, em que
do
lim
agentc A solicita (ask) que 0 agcnte facilitador F monitorc as l11uduHryUS
na base de
conhecimento ou conhecimento originnl do agente.
FIGURA \\-
FUN<;Ao DO AGENTE FACILITADOR - 1999
FONTE: FININ, Tim; LABROU, Y:mnis; MAYFIELD,
Language, 1999.
James. KQML
(/J
...JgO!1//
Commullication
63
Considere.-se
se,ntcn<;:aX ,
0
lim
caso em que
agente B pode
tel'
0
agente A gostaria de saber a verdadc sabre a
X em sua base de conhecimento, e
0
facilitador
(i'
esla
disponivcl. Se A est;} cit:ntc de que pode feccher ulgum retorno positivQ ao solicitar a
B infonnayoes
a rcspeito de X. entilo elc pode utilizar um protocoio c cnviar a
soiicita<;:ao diretamcnte a F, con forme mostrndo na figur:l 11.
un disponihilidadc
Se, contudo, A nila C5t<\ ciente
dos agentc5, au sabre que
agente lem infofmRyOeS sabre X em sua base de conhecimento, au como comunicnr
aquclcs agentes que possam estar disponivcis, entilo uma infinidade de nbordagens
pode ser utilizadn. A figurn 11 mostra um excmplo em que A usa uma performativa
para pedir ao facilitador F que forne<;:ainform:H;oes a respcito de X. Se B informa F de
que hi grande probabilidade
de X scr verdadeiro, enUlo F pode, na seqUencia,
comunicnr cssn informar;Jo ao agenle A.
o
ngente facilitndor devc conheccr 0 endcrer;o e 0 nome de lodos as agentes
da sociedade, trnnsmitindo esta informar;:10 aos demais agenles, que pnssam a trocar
mensagens usando ilpcnas a nome do agcnte como refer~ncia. Todos devem c·star
cientcs do enderer;o fisico do facilitator para interugir com outros agentcs. 0 arquivo
que transrere
0
cndereyo Fisico do facilitator e os protocalas que sao supartados saO
denominados /aci/ifator.properties.
Um
e 0 ATPFacililalor
0
Dois tipos de r.lciiitndores s50 disponibiii7..(1dos.
qual utiliza
0
ATP prolocol (Agellt Trallsfer Protocol) e
e
executado no illllbiente npp/et.s.
A intcra~ao entre os agentcs
oeorre em "{Irios niveis. 0 contclldo
da
mensilgem C apenas lima parte da c0l1111nicJ.Yuo.Ser capnz de alocar e engajar a
64
atenc;30 de outros agentes com as quais se deseja comunicnr faz pane do processo
assim
COIHO
crinc
lima
mensagem de forma a deixar claro as
sellS
prop6sitos.
Quando se usa a Iinguagem KQML. um ngente transmite mensagens cujos
cometldos sao compostos em c6digo lingtiislico escolhidos pclos pr6prios agentes. 0
conteudo da mcnsagcm pode sec exprcsso em qualqucr
porque
0
KQML ignora
de suas Illcnsagens,
0
linguagcm
de representac;ao,
conte(ldo da mcnsagem, fazendo apenas 0 reconhccimento
e destn r0n11a
simpli fica a implemcnta<;ao
em ambicntes
distribuidos, permitindo que as mensagens carregucm infonna<;(')cs litcis. como as
nomes c cndercc;os
dos agentes de envio e recebimento, quem
de mensa gem, e notm;:l5es de rcconhccimcnto
2.7.1
e 0 agente
identificador
para os demais agentes.
As Camadas do KQML
a
KQML
e cstnuurnlmcnte
fonnado
pc\as
c;Jmudas contelldo, mensagcm
e
cOl11unict:lc;aoe as mcnst:lgclls originadas das cspecificnc;oes deste protocolo contt:I1l
infol111a~OCS referellte
2.7.1.1
Cam.da
a
estas Illcnsagens.
de Contel,do
Nessa cnmada est:.'tembutido 0 conteudo do mensagem reprcsentado por uma
cxpressfio em a\guma linguagem que possa encapsular a informac;ao ou conhecimento
a ser lransmitido.
65
No. camada
reprcscntado
de
conteudo
pode
linguagcm.
em qualquer
Como
e nccess.irio
significado desse contclldo
estnr
qua\qucr
cantido
implementac;oes
as
tipo
de
do KQML
conteudo
ignoram
0
que a linguagem tenha conhecimento sabre
0
age.nte receptor.
Dc acorda
am13zenndas,
passo.
Finin
01. (1995),
t!/
senda configuradas
e apenas
objetivo
o conteudo
com
da
cilcapsular
conteudo
pode
qllalquer
lingllagcm,
contclldo,
Quem
mensa gem
sao
inteligivcl
que
as mcnsagens
sao
ou nao, uma vez que sell
infon11at;ao adquirida.
Ncla
por uma cxpressao em alguma
conhe.cimento
au
cmnada
esta cmbutido
linguagcl11 que
a sec trnnsmitido.
A cam ada
quaJquer tipo de informac;ao, 0 qual pode ser represenlacio
conter
pois
tem
as implementa9~es
a incumbl!ocia
os agentes,
onde seu contclldo
au a
rcprescntado
a infonmu;ao
nesla
em linguagcm
relef 0 conhecimento
mcnsagclll
e
Podc-se,
est{, reprcsentado
de
par
do
KQNlL ignoram
resolver
excmplo,
em linguagem
os
uma
ern
signi Cicado dcsse
problemas
destacar
natural
0
de
aprescntados
mensagem
(MAYFIELD
na
KQML
et. aI, 1996):
(ask-if
:senderXX
:receivel' YY
:in-reply-to
MSGO I
:reply-with
MSG02
:!Jnguage
Natuml
:ontology
'teste
:contcnt
(,'Este
. cscrito em linguagcm
de contclldo'
teste serve
natural").
para
mostrnr a COIltClldo de lima mensagcm
KQrvIL
66
2.7.l.2 Cam.da de Mensagem
A camada de mensagens
e responsc\vei por identificar
ser usada no momento de trnnsmitir
Como
0
0
qual performaliva cleve
conteudo pam carla agente (FIN IN et al., 1995).
conteudo de mna mensagem
e confuso
para a linguagem KQML.
e
necessaria apresentnr parumetros e subsidios ndicionnis n respcito do contelldo. Denlre
esses par{1I11etros destacfllll-se:
foi eserito, e:
language que informa em qual linguagem
que des creve em que dominic
oJ/t%gy
0
conteudo
0 conteLldo
esta inserido.
A cstrutura sinttitica de uma me.nsagem mediad a peln camada de mensagem,
visa
a
padroniza9iio
desconcertantes
agentes
nil
de KQML
os
aspectos
lingua gem sistemica sao transpostos por intermedio
das
dcla. Os
podem
infomlo.c;oes
tracadns
pelos
agentcs,
falar diretamente a outro agente ou podem
enviar
mensagens a mliltip!os agentes do meSIllO grupo, pois seus ambientes operacionais silo
exlremamcnte distribuidos, heterog€neos e dinumicos. Para satisfazcr as exigencias de
tn.1 3mbiente, a Iinguagem KQML prove ferramentas fonnais que trabalham com
ClUms linguagens e protocol os.
Quanta a sua estrutura IingUistica,
0
KQML npresenta scmuntica informal
flssociada a dialetos com sinta.xc similar, alel11de <lprescntar maior autonomia e alto
grau de hcterogcncidnde
conhecimento
sugere
no que ~c rcfcre it cont1gurlu;J.o lingUlsticn.
0 KQML
de cada ugente pam que se processe a comunicac;ilo, porque apenas
a forma como devcm estnr estruturadas as impicmenta.yoes
independcntc de sua eslrutura au do umbicnte. Par isto
comunica.yao
rcqucr
entre sistemas
l11ulti-agentcs (FININ
f!t
e
dos agentes,
viavcl sua utilizac;ao para
ai., 1995).
67
2.7.1.3 Camada de Comlll1icayao
A camada de c0111unic:.lOYJ.oapresenl<l alguns parumclros
mednica
de comunicac;~o assegur:mdo
para
informar a
efetividade no processo. Estas informac;oes
CSlao represcntad;\s por pan'lmetros de baixo olvel de comunica9aO. que silo 0 cmissor
da mensagem, 0 receptor e os idcntificadore.s (micas dus mensagens enviadas e
recebidas. Estas cnmadas apresenuuTI
distinyoes no que sc Tcfere ao mecanismo
de
transmiss~o e as 3ryoes do dominic de aplica9ao. conferindo maior indepcnd€ncia por
manter separados 0 contellda e a cOlllunicac;ao. Dcsta [orIlla a mesma mensagem pode
carregnr difcrentes
conteud05 em diCercntes circunsUillcias.
FIGURA 12 - CAMADAS EM QUE SAO DlVID1DAS AS MENSAGENS KQML1999
Mecanica de Comunicaca.o
COMUN1CAVAO
MENSAGEM
L6gica de Comunicaca.o
(perfarmativa au ato do discursa)
CONTElJDO
Canteuda de Comunicac;ao
(em linguagem inteligivel)
FlNIN, Tim; LABROU, Ynnnis, MAYFIELD, hmes. KQML
M:'Iryl:l.Ild Baltimore County, 1999.
as WI
Agl!lII
COllllllllllicalioll
LlllIglillgO!.
Con forme pede scr observado no esquema supracitado. a primeira camada do
KQML representa
0
modele do mundo do agentc: passu indo i190eS primitivas e padr<5es
68
de comportamento. 0 protocolo p05sui, ainda, uma camada que representa 0 modele
mental do agente com seus conhecimentos,
represcnta
0
met.as e pianos. A t'i11ima cam ado
modele social do agcnte composto pelo conhecimento dos QuIros agenles
e procedimentos de coopef3~ao.
2.7.2 Alas COlTIlInicalivas
Quando
agentes
autonomos
trocnm
informa9ues
cOlTIullicativQs. Para mllitos ccnarios computaciollais,
ocorrem
os
atas
e-stes atos podem ser agrupados
cm sele c.legorins (SINGH, 1998):
Asscl1iV3S, que informmn;
Direlivas, que perguntam;
Comissivns,
que prometem nlgumn caisa;
Pcrmissiv3S,
que pcnllitc11l cxecutnr lima ::H;:UO;
Proibitivns. que imcrditam a~5es;
Declarativas,
que causam \!ventos em si proprias;
Expressivas, que cxprcssam cmo'YOes c avalia.yucs.
As comissiv3S
sao cssenciais
para que os agentes
se compromelam.
Permissiv3S e proibilivas fazem os agcntes criar ou negar autoridade. Dec1arativas
3uxiliam na escolha de
lllll
agente como representativo
ou Iidcr de grupo. As
expressivas permitem que os ngenlcs realizem nvalia9~es de nprov39f10 Oll nao. Estn
69
catcgoria,
embom seja atuahnentc poueo usada, provavelmente
se tornara
mnis
importanle quando as agentes cmocionais [orem utilizados com mais freqUencia
(SrNGH,
1998).
Os
aloS
comunicativos podem ser colocados de forma estilizadn, nao apenas
sentenyils, mas tambem
fazcndo
mas medifica
2.7.3
a~5es, pais 11fhln,
aprcscntando
ilyl:les. e por isso os alas comunicarivos
Performativas
suo as pr6prins
discursa no processo comunicutivo.
da Iinguagem
Qutros,
sendo
perfollnativas
cJassific<1das
As perfonnativas
de intervenc;i'to
em
tres
c mccJ.nica
it tcoria
relacionando-se
dcfinem
permissiv8S que os agenles devem levar em considernyao
os
performativas.
do KQML
sao as primitivas
PerfOlll1ativas
apenas comunica,
!laO
do
a90es (operay13cs)
ao se cOlTIuniCSrCIl'luns com
calegorias:
performativtls
de conversac;ao
e por (iltimo,
de
discurso,
pcrformalivas
de rcde. Pode-se encontmr a especifica,ilo resumida do linguogem KQML (FrNrN e/
al.,1999).
As cspecificac;~e.s
estiio
presentes
diversas
em KQlvfL envolvem
em JKQML.
categorias,
Uma mensagem
mas sell formato
Performativa (: sender <word>
: receiver
<word>
: lnnguage <word>
: ontology
<word>
36 pcrformativns,
KQML
e basicamente
e
normalmente
0 seguintc:
dcntrc
as quais
distribuida
23
em
70
: content <expression>
Nas linhas subseql1entes seguem as principais performativas em KQML:
2.7.3.1 Performativas
tell:
a perfonnativ:l
de Informa<;ao
do tipo sender infonna receiver se 0 contell(.lo da mensagcm
e
verdadeiro, de forma que a scntel19a se inserc nn base de conhecimento de ullc/er.
deny: ullder
infofmn receiver de que a negacrao
do contelldo da mcnsagcm
vcrdadeira pam sender.
untcll: signitica
que conteudo da Il1cnsagem naa se enCQntra disponivel em s~l1del'.
2.7.3.2 Perfonnativas
de Consulta
ask-if: sender deseja saber se 0 cOllleudo da mensagcm
e verdadeiro
:1sl\:-311: ullder deseja
sao verdndciras
saber que aspectos
da mcnsagcm
para receiver.
para
receiver.
2.7.3.3 Respostas
error:
sender
indica a receiver
que n~o houvc
compreensao
da mensagem
anteriormentc recebidJ.
sorry: signitica que sender comprecndeu a mcnsagem, porem, 11ao pode emitir lima
respostr).
71
2.7.3.4
Performativas
de Bases de Dados
Ins~rt: Sender pede a Rf!Ceivu
pam tlcrescenlnr
as informaC;i5es que constituem a
mensagem em sua base de conhecimento
delete: scnder pede
:l
recf!ivtr
que apaguc
0
conteudo da mcnsagem prescnte em
Slla
base de conhecimento.
2.7.3.5 Defini,lio
de Capacidade
advertise: Sender comunica a receiver que pode e ira processar mcnsagens similares it.
recebida.
2.7.3.6 Performativas
register:
Sender
de Efetua,iio
comunica a receiver sabre
0
nome simb6lico assoc.iado com seu
enderc):o fisico
unrcgistcr:
cancela 0 regislro anterior
tral1sport-adressess:
sel1der
cOll1unica a existencia de
lim
novo endcrcc;o
fisico na
rede
forward: sender deseja que receiver transmita a mcnsagcm a todos os agentes desse
conhecidos.
72
2.7.3.7. Performativas
broker-one:
SClldel'
de Facilita~ao
pede a Rtceiver que encontre uma resposta para a pcrgunta que se
encontra impiicita na mcnsagem
recommend-one:
Sender pede a receiver que surgira
lim
agente que passa resolver
0
problema processando 0 contclldo da mensagem.
2.7.3.8 Performativas
de Discurso
Esse tipo de performativa
e fortemente
baseado na lcoria das m;:oesde discurso
e pode seI usada para troea de infofmac;i5es e conhecimento entre os <tgentes:
(ask-if
: sender <word>
: receiver <word>
: in-reply-to <word>
: reply-with <word>
: language <word>
: ontology <word>
: content <expression»
o usa
dc-StaIllcnsagem se lama convenientc quando 0 emissor (:seJ1cMr) 'luer
saber se a expressiio do conteudo (:col!!ent)
e verdadc
para
0
receptor (:receiver).
A
73
cxpress30
e vcrdade
para a receptor se combinor com uma das senten9:ls que fazem
parte de sua base de conhecimento virtual.
("sk-one
: sender <word>
: receiver <word>
: in-reply-to <word>
: reply-with <word>
: language <word>
: ontology <word>
: content <expression»
Similar
n anterior,
" pcrformativn
exista adequa~tio entre a expressao
C0
Normalmentc, a resposta do receptor
encontrad3.
(tell
: sender <word>
: receiver <word>
: in-reply-to <word>
: reply-with <word>
: language <word>
: ontology <word>
: content <expression»
Ask-olle
deseja conhecer uma instancin on de
conteudo
da base de conhecimento do receptor.
e proposta
,ltraves de um valor para a instuncia
7-1
A perfonnativa
tell
infonna para
parte da base de conhecimento
vcrdade pam
0
0
receptor que
0
conteudo de: coll1~m faz
virtual do emissor, all sej'l, que esse contcudo
e
emissof.
(\lntell
: sender <word>
: reed ver <word>
: in-reply-to <word>
: reply-with <word>
: language <word>
: ontology <word>
: content <expression»
Para a perf
Of mati
va 1l11/ell 0 conteudo
de :conlent
e lido
como
falso, iSlO e,
nao
cShi prescnte nn base de conhecimento virtual do emissor.
2.7.3.9 Performativas
de Intervenyao
o }Japel fundamental
Medinica
e de Conversa<;ao
dcsta categoria de mensagcns
e intervir
no fluxo normal
de convers;:'Hyao quando uma situalYcro anonnal acontccc. Essa interven~ao
pode se dar
alraves da interrup9ao do fluxo de mensagens ou por me.io dn introduc;ao de um
protoco!o mais comp!exo na intern9iio, visando suprir uma anomnlia na comunicm;ao.
(error
: sender <word>
75
: receiver
<word>
: in-reply-to
<word>
: reply-with
<word>
A perfOnllativa anterior
ocon'e
na mensagem
tres tipos
identificada
de erros:
protocolo
de
efro
As perf
Of
entre as agentes.
agente
sociedade
Sl.!lIS
usada pelo emissor para infonnar se algum erro
pelo
sint[ltico,
ill-reply-to. NOfmalmcnte.
parametro:
crro
nos
parametros
au
cera
com
existem
a polilica
ou
convcrsa.;:io.
2.7.3.10 Perfonnativas
mcnsagens
e
mati vas de rede servcm
UIlla de suus tarefas
enviadas
facilitador
por um agente
se faz
de agentes.
cnderec;os
de Rede
presentc,
Gerahnenll!.
e caracteristicas.
a) (register
: sender
<word>
: receiver
: in-reply-to
<word>
<wofcl>
: reply-with <word>
: language
<word>
como
utilitarios
c encontrar
as agentes
qualqu(.~r. Neste
agindo
0 facilitador
para
para facilitar
a
a comunica~iio
que podem
tipo de performativa,
organizac;ao
conhece
todos
responder
3S
papel
do
0
e gercnciamenta
os agentes
da
na sociedade,
76
: ontology
<word>
: content
<expression»
ESla pcrfOfm3tiva
prc5en~n
na sociednde
est:io as infonnnc;5cs
e
bem
sabre
usada
como
0
agente
pelo
informar
emissor
cmissor
para
seu nome
que
0
anunciar
ao facilitador
e endere~o
facilitndor
fisico.
Em:
a sua
COIl/elll
deve conhccer.
b) (unregister
: sender
<word>
: receiver
<word>
: in-reply-to
<word>
: reply-with
<word>
: Innguuge <word>
: ontology
<word>
: content
<expression»
Como
nome
facilitador.
0
sugere.
csta pcrformativu
desfaz
um regislro
de agente junto
ao
77
2.8
0 EMPREGO DO RADAR NOS SERVIC;:OSDE TRA.FEGOAEREO
A arquitetura
ond"s
dcsta
eletromagnelicas
KQML,
inteligiveis
do trafcgo
o
radar
v60, scndo
segurlllH;a
e um
vaHosa
!lUS
e velocidade
No radar
sua trajetoria
o
que recebe
descmpenho
equipamcnto
a reOexiio
informcWucs
atraves
lonna a pcnnitir
COilverta
que
do
protocolo
0 ll1onitoramento
as atividades
i.luxilio
densidade
de tnifego,
OCOrre por
de pulsos-nidio
do controlador
promover
pOl'
de
m.nior
mais
sofisticndo,
elelromagnelicas.
meio
nao
se
Seu funcion~unento
as informac;oes
de ondns
eielromagnclicas.
que, ao encontrarem
objeto
em
no principio
de
de um aparelho
de
lim
estac;uo transmissora.
pel a
e invulnernbilidadc
(\\ww.fab.mil.hr).
de
e cnptndos
sccundnrio,
bordo,
de
sob a forma
silo refletidos
radar
ao sistema
areas de grande
prinuirio,
de ondas
em
de agcllt.es
no OUXQ (www.fab.mil.br).
ao espa~o
reflcxao
conjuillo
num
aerea.
essencial
trnnsmitidas
cOllsiste
pete radar
emitidas
wOlando-as
autonuitico
proposta
emitidas
Ihe conferem
pela
torre
vantagens
fundamenta
dt!pende
de
controles.
Seu
em relnc;ilo no radnr
alcance,
primurio
78
2.8.1 Sistema Receptor da Aeronave
o
sistema
Iral1SpoJ/d~J'
e um clemen to intcgrado
de reccptores e trnnsmissores
de sinais de radio que operam de fanna conjunta e em tempo integral.
Os sat61ites podem possuir
dezcn3s de
Il'llllSpollc!ers
e c.ada aparelho
reprcsenta 0 par de lim receptor C lun trnnsmissor de radio. 0 lefIna traJlsponder
usado, porque normalmcnte
ha
e
muitos callais em OpCmyllOao mcsmo tempo, sendo
necessaria detenninar a respeito de qual acronave se refcre c a freqilcncia
em que cle
opera (www.fab.mil.br/).
Cada rranrpollder
possui
111111l
freqiicncia de operacylio pr6pria tanto para
reecher, como para transmitir seus sinais para as cSlu9()es terrestres. Esta freqU8ncia
e
bascada no sentido em que a infofmayUO trafega. Se 0 sinal segue da terra para 0
satclite, diz-se que esta freqUi:neia
c
satciite para uma esta<;aolcrrestre que
de sub ida, all Uplink, mas se 0 sinal desee do
e Downlink.
Os sistemas de rccep<;Aoe transmissao sao integrados e mesmo que utilizem as
mesmas amen as, nao significa que todos ten ham qlle lItilizar frequcncias identieas. Se
urn sateiite possui 100 6, Hmto as ennais de transmissao e recep9ao de sells 100
reccptores clOD transmissores podem operar, cada qual em uma freqUcncia.
Na ausencia de urn sistema de rccep9ao e transmiss;]o utiliza-se 0 trallSponder,
que funciona como receptor, conversor
identificar 0 3viao.
de freqiicilcia c transmissor,
Para sllbstituir 0 lra11Sponder
pennitilldo
0 sistema deve ser capaz de
identificar as posiyoes das aeronavcs, pois sua principal finalidade ¢ impedir eolisoes
113 {Irea
de coberlura da torre de eomando.
atravr.:s de informa~oes eaptnuas
par radar
ou cOl11unicadas por contato via radio bilateral com as aeronaves (www.fab.mil.br).
79
3
PROCEDIM.ENTOS METODOLOGICOS
Os procedimentos
metodol6gicos
adotndos comprcendem
as seguintes ctapas;
Revisao de literatum;
Plataforma c Linguagem para a implel1lentn~ao;
Sele~no
do Aplicn<;iio;
Descri<;ilo
da Aplica<;no:
Impiementa'rao
a) Arquitctura;
b) Tipo de Agente;
da vcrsao prototipica cOllsiderando
a arquiteturH intern a
dos age-nles;
Analise
do descmpenho
frente
a aplic81;l'io desejada.
Teste da implcll1enta~ao
EspecificRcraO
do conjunto sistcmico
e da gestao
com estudo de casa;
do fonnniis.mo cmprcgndo
parn reprcs:cntur 0 s;i"to!lna
multi-agcnte desenvolvido com base nos problemas que
contra Ie
3.1
funcionaI
0
caso -
de lrafego Bereo npresenta.
LlNGUAGEMEPLATAFORMA
A iinguagcm utilizada para 0 dt!se.nvoivimcnlo
JAY ATM, porque
constrw;ao
do protolipo
e
linguagem
possibiliLa a Illobilidade e a inlegracrao facilitada com umbicntcs de
de agentcs,
proven do poderosas
[crramcntas, ,\ programa~ao,
ja que e
80
orient ada a objelos. Tendo em vista que
0
JAVA ™
e uma
linguagcm multi-platafom13,
a implementac;uo do prot6tipo em Java nao depende de sistema operacional especifico.
tem, podcm ser relacionadas como segue
OUlras vantagens que 0 JA VA™
(CESTA & RUBIRA, 2000):
Simples: Devido ao fato de muitos programadores
usarem
0
C++. a
sintaxe do JAVA™
c
muito semclhante ao C++. Uma das mclas da
linguagcm JAVA ™
e
IW.bilitar a constru<;ao
executar em modo stalld-a/olle
de software que possam
em maquill3s pcquenas.
Orientndo
a objeto: Um projcto orientado a objetos
devido
fucilidades c claras
1)5
defini~Oes
c muito
de interface
que
poderoso
torn am
possiveis a reutiliz8<;ao do c6digo fonte. As fncilidades da oriem3C;uo a
objctos da linguagcm JAVA Pol sao esscncialmcnte as mcsmas do C++,
Distribuido:
JAVATM tem uma cxtensa
biblioteca
de rotinas para
comullica~ilo ern protocolos TCPtlP, como I-ITTP e I'TP. Aplica~5es em
Java podcm abrir c acessar objetos n.traves dn redc via URLs com a
meSilla
facilidade que programadores
usam qunndo
ocessando
lim
sistema de arquivos loenis.
Robusto:
JA VA™
preocupa-se em escrevcr progromas confit\veis em
muitos ambientes. A linguagcm tem enrase primeirnmcnte na verifica~iio
de possiveis
problemas,
na verifica9uo
din:lll1ica e eliminafYao de
Sillluc;oeson de possum ocorrer erros.
Seguro: Existc lima preocllpa~rio com ambientes de redes distribuidas. 0
Compilador da linguagem JAVA™
implementa ll1uitas defesas contra
81
c6digos incorretos c cantril c6digos subversivos por programadores
de
aplica,Oes.
Arquiteturn
Neutra: arquitctura de hardware all interrace de sistema
operacional.
Se
0
sistema
JAVA ™
esta
disponivel
para
alguma
de hardware e sojiware, uma aplic3ryao escritn em JAVA nl
plataforma
pode ser executada scm a necessidnde de qualqucr trabalho adicional.
Porta"cl:
Devido it sua arquitetum
neutra
lima
aplicilcrD.o em JA VAnI
pode executar em v{lrios ambicntes com Unix, \Vindows, Macintosh,
Salaris.
Intcrpretndo:
em JA VA™
Alta
0 interpretador JAVAT),,'pode exccutur
em quaJquer maquina nn qual
performallce:
0
interprctador
c
A alta pcrfonnance
0
c6digo escrito
scja portuvcl.
conseguida
linguagem ser interpretada. A apJica.yJo pode ser transferida
apesar
da
em c6digo
de maquina p:lra uma CPU em particular e ser em seguida cxccutada. A
pel/ormnllce de convcrsao do c6digo fonte para
0
c6digo de maquina
e
quase tii.obom qU~\Jltodo C e C++ IKltivo.
Compilado:
Um programa
em JAVA™
e
compilado
para
0
chamado
"'bite-code", que se assemelha as inslruc;oes de Ill.{lquina, mas nao de lima
m{lquina
idealizada
real. 0 "bite-codt!~'
e
tim
c6digo de uma m~lquilla virtual
peios criadores da iinguugcm,
par isto JA V An.1pade ser mais
r{lpida do que so fosse simplesmente interpretada (CESTA & RUBIRA,
JOOO),
82
3.2
SELE<;:AO DA APLlCA<;:AO
Com 0 crescimcnto da dcmanda aereu, passaram a slirgir situac;oes
incsperadas
que requeriam solw;:oe:s imprevistas. 0 monitoramento pas sou a exigir crilerios
sofisticados
na ordenac;rto
computacionais
associadas
ao
do tlUXQ das acronavcs.
das torres
de comando
seqilenciamento
distribuido (GRANGER"
das
Desde
enfrenlaram
mensagens
entao,
iimitalYoes
recebidas
do
mais
as sistemas
cOlllunicativas,
sistemn
operacional
al., 1993).
Embora tim sistema integrado para controladores de v60 tcnha a capacidade de
tomar decisoes 16gicas. se fizer isso no momento crrncio, au se for incapaz de integrar
os mecanismos
rcceplor/emissor
de sun aprendizagem,
nila
facilita as c0J11unica<;:5es
entre 0 ngente
e a aeronave, portanle ni'lo cumprc sua fUI1(;.ao,senuo parcialmcnte.
No intuito de atender as cxigr:ncias emergenlcs vein sendo desenvolvidos
Inais elaborndos, que requerem llutonomia por parte dos agentes CDUJARDfN
sistemas
t!l
al.,
1997).
Do ponto de vista tccnol6gico,
0
sistema ideal para coordenar
0
trafego uereo
deve raciocinar e tomar decisoes, intcgrando proccdimentos e evitando arbitrariedades
on transmissao de J11~nsagens, atrnves do comprometimento
estabelccido
entre os
protocolos c as age-ntes. Estc compromctimcnto ocorre dt: tal forma que as opera90es
cOlnunicntivas
constrangidas
inviabilizam
0
comportamcnto
por meta-compromissos,
Oexivel,
a lim de assegurar
po is silo elns pr6prias
que
arbilriirio ni.ioobtenha exito sabre a comport::mlento em conjunto.
0
comportamento
83
Empiricamente, a intera~ao
entre os agentes inteligentcs pcnnilid. a resoluC;:50
dos problemas de v60 em tempo habil e a troca de infoTmac;:oes
sera vciculada com
velocidade e destreza descjaveis, acresce.ntando fum;ues de monitonu;fio e segurnnc;:a,
assegurados por sistemas inleligentes, capazcs de agir racionalmcnte,
con forme acim3
descrito.
Com
base nisso,
os progrmnadorcs
podem
habilitar
as
:Igentes
para
desempenhnr variadas func;:oes, mas a implementac;:ao do sistema multi-agente
deve
agir de ~lCordocom as protocolos junto aDs quais interopcra, sejam cles protocoios de
inlcrac;:ao au de implementac;ao. As exigcncias do prolocolo
podem ser cxpressas
apenas em termos de compromissos e a sincronia na concord:incia dos agentcs pode
ser testada apenas com base nessa capncidade comunicativa (SINGH~ 1998).
o
Si\1A
permite, COnf0I111ea vontude do dcsenvolvedor.
condic;;Ocs de trofego propriamente
(dist5ncia
vertical
considerando-se
\lin
com rela~ao ao
ditas.
nivel
elementos
do
mar),
considerar junto as
contextuais
altura
como
altitude
(dist~incia vertical
ponto de referf:ncia qUlllquer) c teto (llitura. acima do solo ou agua
abaixo de 600111- 20.000 pes).
que cOllsidercm aspectos
E
possivel, tambem, habilit"r agentes cognitivos para
I11cteorol6gicos como
pressao,
velocidade
do vento,
visibilidade e temperatura.
A principal razao pelll qual 0 dcscI1volvill1cnto efctivo de um sistema multillgente ofcreee dificuldades, rccai sabre a ca~ncia de um protocolo de interac;ao que
n80 ofcrec;o dificuldacic!J de comprcen~uo
dumnte
0
nto comunicnlivo,
que scju faciI de
impiementnr c capaz de resolver 0 problemn de dislribuir,;:ao de t3refas. Assim, n
cscolha
do protocolo
KQ1vrL e da linguagem
JA VA™,
de
intera,ao
e de
84
implementac;ao, respectivamente,
agentcs,
dcve-se
fazendo com que coopcrem
:'t
de
sua capacidade
forma
inOexfvel,
de comprometer
evitando
as
posslveis
arbilrariedades.
A solw;ao pJra determinados
problemas pode scr enconLrada por agentes
difcrentes, e em dado momento, alguns ciesscs agcntcs padem scr Icvados a combinar
estas diferentes soluc;oes para produzir lima Dutm. Desta f0n113, alguns agcnles devem
scr sofisticados
0
bastante para decidir quando, com quem interagir e como se
comportar adequadamente na presenc;a de infonnac;~es contradit6rias (ANGELOTTI
el
al,2001).
3.3
DESCRlCAO
DA APLlCACAO
A cOll1unicac;:ioentre a torre e
atingirem
0
agente receptor,
0
aviao
e mcdiada
sao cOilverLidas
por ondas de radar que, ao
em infonnac;ues.
0 processo
e
denominado Controle de Area, e consiste no l11onitorumento de entrada c saida de
aeronaves na area de cobertura dOlton"C de controles. V{lrios 6rguos se prestam
a
coordenac;ao deste processo, dependcndo
a
da posic;ao da aeronave. Destacam-se
Orgiio de Controle de Aproxima,Jo (APP) e a Torre de Controle Aer6dromo (TWR),
como excmplos
de cobertura
em areas restritas; 0 tl'i:ifcgo aereo. que consiste
processo de aterrissngcl1l e partida d\! v6os,
e
no
coordenndo pelo ACC - Centro de
Contrale de Area; em areas cxccdcntes ao contrale da torre, e em nivel nacional 0
controle
fica n cargo do CINDACTA.
aeron{lulic<lsde cOl11unica~ao.
Estas areas
SaO
servidas
par estac;oes
85
Urn sistem<1 de controladorcs
oferecendo
informa~Oes precisas,
de vao tem por objctivo facilitar 0 trtifego,
que possibilitem
aos avi5es
cvitar
manobro.s
perigosas, como pass~u por cima ou por baixo de Dutra acronave a curtas disHlncias au
cruzar a parte frontal de cutro aviao inndvertidamente, por estar desavisado de que ele
possui a primazia de pouso. Desta fanna, sendo a informa~iio mediada por oodas
eletromagneticas, cnbe explicar de forma mais detalhada
0
p3pel dos radares neste
processo de interc5mbio de inforrnac;oes.
3.4
ARQUITETURA
DO SISTEMA
Tadas as propriedades dos agentes no sistema de controladores de voo estarao
implicitas em sua arquitclura.
A arquitetura ora proposta. sell conjunto de modulos e
as interar;ocs previstns devem prover uma resposta para a quesUio de como os sensores
de dudos
C 0
estado interno corrente do agente dctcnninam
suas a~5es e futuros
estados internos.
A arquitctura proposta
e de
caniter deliberativo, eu cognitive, que
e
uma
abordagem c\<lssicado Paradigma de IA (lnleligencia Artificial).
3.4.1 Descri,ile
A
des Agenles
aeronave
e
a
torre
silo
~lgentes cmissores,
que
envirun
sinais
eletromagneticos, os quais retornando trazem inferma~oes como soJicita~ao de pause e
86
VOO,no caso da acronave e penniss;io ou recusa por parte on torre de controlcs, alem
de justificativas e infonna~()es adicionais a respeito do tr:'tfego acreo.
Tanio a aeronnvc quanta a torre de conlroies sao t.:'1mbem ngentes rcceptores
na medida em que lroeam infonna<;~es, sugcrindo,
neste proccsso, uma inter~19;1o
intcligente entre os agentes.
As informayoes companilhadas
sao coerentcmcnte convertidas pelo protocolo
KQrvtL e postcriormente distribuidas
entre os agentes a lim de que efetivamcnte
resolv;:l.ITI
pela analise inteligente das infonnac;Ocs compartilhadas,
nao permitir pousa
se
e convcniente
Oll
decolagcm.
OU
Neste processo de troea de infoTmac;()es, a aeronave solicita infonna90es sabre
as condi<;Ocs de tn\Jcgo aereo. 0 agentc receptor, que
e a torre,
dispoe de infonnac;(')cs
referentes fl aeronave solicitrlntc cm sua base de conhecimentos.
vez lambem tcm conhecimento de que
solicitac;;"iode infonnac;oes sobre
diretamente
a torre
0
c
importante enviar
Oll
torre de controles limn
tra!ego aerce, desla forma, pede pedir informac;oes
de comandos. Se, no entanto. a aeronave ni'io e~;t{lcionte sabre que
agentt!s possuem em Sllas bases de conhecimento
a~reo,
a
A aerOlluve, por sua
informac;oes a respeito do tnifego
desconht:ce H1l.:iospelos quais possa sc cOl11unicarcom agcntes disponiveis
pam resolver essa sentenc;a all problema (informar as condic;oes de lnlfego aereo),
pode recorrer ao agentc facilitador. Desta forma,
JKQML, protocolo
de interac;Jo em JAVA n\
0
agente fncilitador disponivel no
auxilia na comprcl.!l1silo
da mellsngem
por parte dos agentcs.
Para questionar ao racilitador a respcilo das condir;l'ics de v60, a aeronave usa
lima
perfonnutiva
do tipo ask presente
no JKQML.
A performativa
faz tim
87
moniloramenta
dentro da base de c.onhecimento para dcscobrir que agcntc pode
resolver a scntem;a, viabilizando uma rcsposta para a acronavc. Pazenda usa de
performativa do tipo tell, rcpassa a mcnsagem para
p:ua responder
a sentcll\i=u
0
lima
agente analisador, competcnte
(X).
Esse agente veri fica a posi~ao da aeronavc solicitante tal como das demnis
aeron3ves na <1reade coberlura da terre de controies, que tambem solicitaram
Oll
in10
solicitar permissao de pallsa ou v50. Com base nas mcnsngcns tracadas entre todns as
aeronaves e
0
agcnte receptor, C passivel a este agcntc autorizar
decoJagem e fomecer justificativas.
Se 0 agente analisador
facilitador apes vcrif1car sua base de conhecimcnlos,
comunicar
0
all
11.10 0
pousa au
inform3 pcrmissao ao
facilitador pode em seguida
a 3cronave.
Existem casas em que a auloriz..1.<;aoe negada par que existc outm acronave
realizando as mesmos proccdimcntos.
cabendo
~I aeronave
rcquerente esperar pe10
momento oportuno, iSlOe, pel a ocasii'io em que 0 pouso possa scr realizado scm riscas
de colidir. 0 processo
e
scmelhantc
em situa<;iio de decolagem,
pois 0 agente
nnalisador pode nn.o forneccr nutoriza9ao de voo a uma aeronave, dcvido ao risco de
colisao com outra que realize 0 meSIllOprocedimento.
88
FIGURA 13 - ARQUlTETURA
Agcnte Emissor
DO SISTEMA DE CONTROLADORES
DE
vao
Agentc Receptor
Rcccp~ao
j Emiss5.o
Rcconhccimcnto
<--I
co_m"~'_n~iiO_y
Comunic:u;:1o
t
Accntc
F:It'i1itador
Agentc Analisador
I Compara~:1o
I An:ilisc
I
I COlllunic:1lj:io
I Comunic:u;ao
I
I
\
-------~
Con forme Illostrado na arquitetura sllpracitada. 0 proccsso de automa9~o
envolve lim grande contingente de inform:.H;~esn sere-Ill suplcmcntadas pelos ngentcs:
89
A torre cleve responder
a pedidos de pennissao para POliSO ou VOO- apos
o processo coopemlivQ de analise dos agenlcs.
A solicitm;:50 de permissllo
(agente
emissor)
l~lcilitador, dentm
verdadeiros.
de pOllsa 011 voo cmilida
a di[crentes
agentes
por
pcla acronave
intcnnedio
do
de lim tempo especificQ, devem ser
As illrunna~Ol!s analisadas
agente
precisos
e
s:10: Posi~:1o c inten~oes da
aeronnve; LocalizR<;fio de Qut11lS acronaves, em posic;oes que orere~am
riscos para
0
trafego geml; Analise de pcnnissao ou ncgac;ao do pediclo
de pousa au decolagcl11. A torre rccebe as infonna<yocs
analisadas e
rcmctidas pelos agentcs e as trnnsmite para a acronavc.
Se
Lim
dos agentes (analisador), averiguando as informa.;oes
disponiveis
do ambicnte, concorda em permitir pouso Oll voo, csclarecc em que
condi~oes isso paden'! ser feito~ em easo contrMio justifica-se,.
3.4.2
Onlologia Utilizada
Um3 ontologia de line os tcrmos usados para descrever e representar uma :lreR
de conhecimento. Ontologias
inclucm defini~(jes de conccitos basicos no dominio,
utiliz.t1veis por computndor,
e os relacionamentos
entre
eles.
EI3s codificam
conhecimento em um dominic c tmnbem conhecimento que estcnde dominios. Desta
ronna. clas (QrIlam cste conhecimento
reutiliz[\vcl.
90
FIGURA 14 - DlAGRAMA
DE INTERAt;:AO
ENTRE OS AGENTES
Analisador
Torre de Controle
-
-
I
Facilnador
IS
iM!i'tiSa
\
v
~
~
3.4.2.1 Performativas
Utilizadas
(register
: sender Torre
: receiver Facilitador
: in-reply-to id I
: reply-with id2
: language java
: 0I1l0!Ogy
trafego_aereo
: contelll(illtcnsao _ voo ))
(adverlise
nos Agentes:
-
Torre de Controle
e Facilitador
91
: ontology
trafego_aereo
: languuge, Java
: content (stream-ali))
3.4.2.2 Performativas
Utilizadas
nos Agentes:
Facilitador
e Torre de Controle
(ask-one
: sender Facilitador
: receiver Torre
: reply-with id I
: hmguagc java
: ontology trafego_aereo)
(reply
: sender Torre
: receiver Facilitador
: in-reply-to
id 1
: reply-with id2
: language java
: ontology
trafego_aereo)
3.4.2.3 Performativas Utilizadas nos Agente: Torre de Contrale e Analisadol'
(ask-onc
: sender Torre
: receiver Annlisndor
: reply-with id 1
: klllguage java
: ontolog.y trafego_aereo)
3.-1.2..lPerformativas Utilizadas nos Agontes: Analis"dor e Torre de ontr Ie
(reply
: sender Anulisaclor
: receive.r Torre
: in-reply-to id 1
: reply-with id2
: hlnguage java
: ontolog.
trafego_aereo)
93
~
CONCLUSAO
Com este trnbnlho
rai passive.l fornecC'.r 11I11Rvisno dos intcr-relncionamentos
entre as elementos de organizav;i
de sistemas
J11ulti-agentes. atnlYcs dos resultados de
implel11enta~~iod'" um sistellHl de C'onlroindores de \"00 de carMer prototipico.
01 servou-se que para controladorcs
de
ve.o
6 indicael
0
usc de sisternas
Illulti-agentcs em oposi<,'ao no RDP: porque est.e ("timo nuo asscguraria um controle
global coerentt! ao sistema. Um SMA, por opcrar com base elll C'.ooperayi5es, interac;ucs
e fluxos de conheciml.!nto
entre unidades eli tintas 1)I;.~nnitc que a "Inteligencia"
sistema seja aperfeic;oadH continua c proporri
do
nalrnent~ ao nlunerO de ·:entidnde.s"
inteligentcs disponiveis. entidades estes que podenl
sec acrescidas Cjuantiw.tiv:lmente
n sistema. OLlseJn. novos agentes padem ser inscl'icios,
que n arql.liteturn dos SM.As
j{J.
e tle-xivel.
Dentro do. nbordagem de SMAs. optou-se pOl' ng.entcs cognitivos em oposi~ffo
aos n.~ntivQs.Os n~ativos respolldem automaticamente
cO£Jlitiv05 trot~mn informu oes j(l proce-ssadas,
disponiveis no contexto de ambiellte
1
estimulos externos. mas as
til
de carMer empirico. as quais n;'\o cst€io
e. isso~ parece sel' Inab adequado it proposta. c
mnis segura tmnbeIl'l.
QUlf fhtor deris' rio para a escolha cia nbofdagem ,'MA
em RDP ll1e-m6rin dns n~oes ou de conhC'.cim~nt s.
des.vnntag("lll em Hlce de SMAs. Casa
QCOfmlU
rotineim.s. riscos de acidcntt!.s Oll qllaiquer
0
e0
fmo de naa haver
que consubstnnda
grande
situa~~Oesde v60 inespcmdas au nuo
outra ndversidade que exija raciocinio hua
tambthn de. serem Icvados em considemc;Jo os registros
de c n.hecimento previos dos
94
agentes. para manejo
e resolm;uQ satisfat6ria
do problema. Agentes
cognitivos
aut6nomos podcm consultar-se mutuamcntc e recorrer a experit:l1cias anteriores para
resolver problemas novos
Pam 1lI11sistema
Oll
inc.sperados, negociando c interagindo dinamicamentc.
de controladorcs
de voo
e
tnmbem
flcxibilidnde,
descjaveJ
capacidade de reerutar agentes para desenvolver tarefas dctermiI1<\das (tarefa que cabc
aD agente fflcilitador do KQML) e capac idade de criar noyos agentes, ja que garalllir
5cgurun~a no
trafego
contcmporfll1co,
principaimenle
acreo
e
LIma
necessidadc
cada
maior
vez
no
mundo
COIll 0 aumento de aeronavcs lrafegando.
A c0l11unica9lto entre os agenlcs rei estabelecida com base no KQML que
favoreceu
os aspectos
sintaticos
relacionados
a
estrutura<;fio d05 sfmbolos
de
representn<;:1o, a semfintica denolativn da mensagem, alem do aspccto pragm<itico,
pais, tanto os modelos cognitivos dos ngentes, quanto
atuam, enconlram-se associados
emissor,
receptor,
a pragmiltica
e analisador
teve
0
ilInbiente aereo sabre a qual
de KQNlL. A comunica<;fioentre agentes
grandemcntc
reduzida
sua
margcm
de
ambiguidnde, j1i que 0 KQML, por intermedin das pcrfonnntivas cscolhidas, utiliza
lima Iinguagcm
compreensivcl
por todos os agentes,
principahnente
cxistl:llcia de um agente faeilitador que negoeia os conheeimentos
intermedin as mcnsagcns, al~m de rcerutar agentcs c cncaminhar
ueste proecsso ate a base de conhecimelltos.
0
devido
a
e infonlKl<;oes,
conteudo resultnnte
a aperlci<;oando. Assim, as sistema de
eontroladores de voo, a cada experiencia adversa, se lorna mais inteligente.
A lingtlagem
JA VATM conferiu
uma mobilidadc
certamcnte nao depcnder:i de um sistema operacional
maior, pais
0
sistema
espccifico, alem de possuir
nmior mobilidadc no que sc rcfere aos ambicntes de conslruyao de agentes.
95
o
prot6tipo
cognitivos
representayao
em
1l10strou a elic{lcia
SMA
KIf.
(ilbordagcm
Lingu:1gem
de
do sistema.
aplica~50
de COlllunic3c;ao
A rlrticula<;Jo entre
distribuida),
KQ"NfL, junto
agcntes
Linguagcll1
de
as performativas
escolhidas implementados em JAVA H.i, parcce scr hannonica, cmbora ofcrcya scmpre
resistencias
c limitac;5es tipicas de sistemas multi-agentes, que por sua compJcxidade
deve ser utilizado apenas em si!l!ac;tks imperativ3s. em que 0 RDP n50 corrobore para
o alc:l.I1ce dos resultados almejados.
96
REFERENCIAS
ANGELOTfI,
Elnini Simoni.
U[iliza~a() da L6gica Parco1l5isrt!lllC 1/(1 implclllcll/{Uylio
de um
Sistema
.~flllli-Agi!l1IC. Curitiba.
2001.67
f. Disscrtac;ao
(meslrado
em Inform:itica
Aplicada).Setor
de Ciencias
Exatns e TccnoI6gic:l!S, Ponlificia Universidade
Cnt61ica do
P;lnln3, Curilib:1.
ANGELOTTI,
Agt"lII~j
CIII
Elaini S. SCALABRJN,
Edson Emilio. COllllmicac;{ia
/1111
SiSU!111(1
de Agcntcs CognitiYOs. Curitiba, 19-.
e
BARBUCEANU,
Mihai; fOX, Marks. COOL: A Language for Describing
Multi-Agent
Systems. Toronto, Ontario. In: Prct!ccC/ingJ
of Intcmatiollal
1IIl1lli-AgclIISySlellls. Pages 17-24 AAAII MIT PRESS,1995.
BARONE, Dante. Sociedades
Artijiciais:
P0i10 Alegre: Bookman, 2003.
BOND, A. H. & GASSER,
K,mfmann Publishers, 1988.
in
011
JH(iquillas.
M. Fisher. TlIfOrial: A /ingllagem JaWl de progrcl1l1w;c7o
E. Riesbcck,
Mc.DERMOTT,D,
MEEHAN,
J. Arlificial
Intelligence
Lawrence Erlbaum Associates, Potomac, Maryland, second edition, 1987.
CHARNIACK,
Programming.
Patrick; ALLlOT, Jean-Marc;
TOlllose, France, 1997.
DURfEE, E. H. The Distributed Artificial
S.M.C. p.1301-1306, Dezcmbro 1991.
MOURLON,
Intelligence
Paul-Henri.
Me/ting
Pot.
FfNrN, Tim; LABROU, Yannis, MAYFIELD,
Language. IV1aryIandBaltimore County, 1999.
James. KQML
FlNfN, LABROU & MAYFIELD, KQJHL as
Agen' Communication
County,
Coordination
Con/nellCt!
cia IIIIt!lig€lIcia elm
A NO\'a Frullteira
cllIre
L. An Aualysis of Problems and Rt!search ill DAI. Morgan
CESTA, Andre A.; RUBIRA, Cecilia
Jam w, Campinas, Sao Paulo, '2000.
DUJARDlN,
Automation
inlerar(io
WI
as
WI
Differ'lII
Palits 10
IEEE Transactions
on
/1g~1Il Coml/lllnication
Lallguage, Baltimore
1995.
FfNIN, Tim; FRITZON, Rich.
Illformation Ew:,:liallg;:. Baltimore
GRANGER, Gcrnud; NICOLAS,
for Free-Flight
COl/flict Solving.
KQML - A Language alld Protocol for knowledge
& Paoli, 1999.
Durand; ALLIOT, Jean-Marc; Token Allocalion
Toulouse.
Franya,
and
Strategy
1993.
GENESERETI-I, tv[ichuei R. Knowledge: Interchange Format, Slnndford, 2000.
GRUBER, T. R .. A trnnslation Approach lO Portable Onlologies. In: Kllolrlrdgl!
1993. Disponfvc! em: \V\vw.ksl.stn.nford.cdu. Acesso em: 11 Fev.05.
AcquiJitioll.
97
GUHA, R. V. LENAT, Douglas B. Enabling
ofth< A CAl. V. 36, n°. 7, Jul. 1994.
HARMON,
Paul; KlNG,
Agents to Work Toghether.
David. Como se Oesenvolvem
as Gmndcs Sistemas
Sisrcmas Espl!cialislas - A IIIft:!igJl1cia Artijicial Cht!ga
Campus,
In: Commllnication
C/o
Cognitivos.
11/:
Merc:(I(/o. Rio de Janeiro:
1998.
JENNINGS, Nichol"s R.; SYCARA, Katia & WOOLDRIDGE, Michael. A Roadll"'!,
Ag~111 Rc.'w(ll'ch
(Iud Dcm/opmr!1lt.
Boston,
of
1998.
JENNINGS,
N. Controlling Coopemtive
Problem Solving
Using Joill/Intention
Artificial /1llt!lligclIce, 1995.
MA YFIELO, James, LABROU,
Yannis, FININ,Tim.
Commullica/ioll
LaJlglIgc. Computer
Sc,ience and
in: Industrial
AllIltiC/gem Systems
Emlualion
of KQML
Electrical
Engineering
as all Agl:lIt
Department,
University of Maryl""d B"ltmore County, 1996.
NISSEN, MARK E. Kllow/edge-Bas~d
Craft,1996.
ReclIgil1t!erillg: From Mysll!riollJ Art to LUInlable
LJUNBERO, M.; LUCAS, A. 1992. Tire 0.-4818 Air~Traffic; Marlagcmcm Sy.Jtcm. In
Proceedings of the Second Pacific Rim International Conference on AI (PRICAI~92),
15-18
September, Seoul, Korea.
PARUNAK, V. Manufacturing Erperiellce with the Contract Net. VoLl, ed. M. Huhns, 1987.
REZENDE. Solange Oliveira.Si,rl..:mas
Manoie,
Illtelig(!1lt(!s: Fundamentos
c Aplica.:;:Oes. Balleri, SP:
2003.
ROCHA. A. R.; SOUZA
MlIltiagcl1/cs.
Disponivcl
Jr. E. M.; ALVES J. C.
em: www.comp.ufb..br/-undc~lIn/ia
RUSSEL, S. , NORVIG, P. ArfijiciaIIJlldligt!llct!,
series in artificial intelligence, 1995.
Agt:llIes Illteligmtcs
a l\'fodem
e Sistemas
.•_Ace5so: 12 de Jail. 2006.
Approach. New Jersey, prentice
hall
Mlinindar
P. Agent Commullicatioll
L(lI1guagl!s: Rethinking
Computer. p. 40~47. North Carolina State, Dec. 1998.
SINGH,
the Principles.
In:
SHIMAN, J.; DEMAZEAU, Y. BOISSIER, O. When Can Knowledge Bnsed-Systems be
In: Proc. 9th Bra:ilioll Symposium u/A1'Iijicialllllcl!igcnce. p. 188192, 199 ..\..
Called Agents?
SMITH,
Reid;
DAVIS,
Rnnd~ll.
Fral1/~worh
for
Cooperation
ill
Dhj/ributed
problem
SOBRAL, J.B.rvl. AgC:llt~s: C01lccitoJ c Principio.}'. Oisponivcl em: www.inf.uf.ic.hr.
12 de Jan. 2006.
Acesso:
SOh-illg, 1980.
SYCARA, K.; DECKER, K.; PANNU, A.; WILLIAMSON, M.; ZENG, D. 1996. Distributed
/Iltelligcmt Agents. IEEE Expert.
98
SCHWUTTKE.
U. M.; QUAN, A. G. 1993. Euhancing Peljormanc(! oJ Cooperating "gents
in Rcal-Tillle
Diagnostic
Systems.
/11 Proceedings
oj the Thirlcclllh Inl.:matiollal
Joilll
C01!fcrencc 011 Artificial ImclligcJlcc Menlo Park, Calif.: International loint Conferences on
Artificial Intelligence.
WANG,
H.; \V ANG, C. 1997.
ill/elligclIl
Agel/Is
ill
'he Nile/ear
flllhulry.
IEEE Computing.
WE1HMA YER. R.; VEL THUIJSEN. I-l. 1994. Applicalioll ~fDi.lfriblll<d AI alld COOpc/'{/li,·.
Problem
Network
Press.
Solving 10 Telecommunications.
Management,
cds. J. Liebowitz;
In AI ApproJches
to Telecommunica.tions
D. Prereau. Amsterdam, The Netherlands:
:md
lOS
WEIHMA YER, R.; VELTHUIJSEN,
I-l. A Mlilliagelll SY5/C1I/ for COll/rollillg Bllilding
In Proceedings
of the First Intemational
International
Conference
on
Systems. Mcnlo Park, Calif.: AAAI Press, 1994.
El/l'irOll11lClItS.
Muitiagenl
A
His/oria
da
1}-tt/ego
http/www.kenncdy.br/tmlullos/stnereo.itlmi.
Radar.
Disponivci
eomando
..-lCrea
liD
Br(ail.
Disponivei
Acesso cm: 29 de r.,llai 2004.
em: http://www.cint.cginr.orgldtmradar/inicio.
Gem! de Apoio. Disponivel
em: http://www.fab.mil.br.
Acesso
em:
em: 07 Jun 200·-1-.
Acesso cm: 09 Jun. 2004.
99
ArENDICl':
'*
AgenllnfoSubscribrr.j:w:I'·''I
p3Cklltt com.ibnud.kqmls:ullpl~.t~\"CI;
imponjO\\'3.Ulil.·;
impon com.ibm.3CI.kqml.·;
"demo UK
import j:IV:l.awt.Frame;
priV'3le booltJIl fOrevcr '" r.tlsc;
prh';\IC long timeout;
prh'3tc Convcn:lIion con\' = null;
prh'ateObjC'Cta~ent"null:
priv;\te Frame fr:lffiC;
public AjO,ClltlnfoSubicribcr(ConvcrS3lion
ronv, ObjccllIgent)
{
lupcr{conv, "getU, 0);
)
public •.••
gcntlnRlSub'eribcr(Coln'i:'rsation
con\", Object ~cnt, long timeout) {
Itlp<"r{conv, atem, tilm:out);
)
public A~ntlllfoSub,criber(Con"cn:ltion
conv, ObjcCII.C.CIl1, Frame frame) (
lupcr(canv, ~CIlI. 0);
this,fr:llnc"(ramc;
)
public synchronized boole3n h:mdleRcsuII(RelumV:duc
nn, Object a.;cm) (
SYSlcm.crr.primin(">
AsclllinfoSublcriber.h:mdlt'Rnull
cntc~");
ir(rtn.,etRclurnVatu~)
inst:mccof Vector) (
A.ccntlnfo agcntinfo"
new Agcnllnfo();
Vector A.1cntlnlOs '" (Veclor)nn.&etRelumVIlIuc();
Enumcr.uion cnum" :q:,cntlnfos.clemcnts();
while: (cnunl.hasMort:EIt:mcnU(»
{
3£cnlinro - (A;cnllnfo)cnum.llcKIElememO;
S)''Slclll.crr.println(''Asenllnf,)SubKrihcr.h:,"dleResuh~);
S)"Slcll1.crr.prinl(" ••N:II11C: ");
SY'Slcll1.crr.prinlln(llgcnlinfo.&CIAJ::,CntNamc(»);
S)'Slcll1.crr.priut("··
URL: ");
SYllclll.crr.println(ag.enlillfo.:.ctURLt»);
S)"Stcm.crr.print(" ••ClanN:mlC:
");
SYllcm.crr.]lril1lll1(:1~cntinro.,cICt\uNln\(:(n;
«Tr:1\'clllrokcr)
:lgcl1I).IL"IFr:tIllt.'(tlKldlk'tll(ascnlinfo);
Tr:tvell3rokcrNolifyDial0'
ding..1t:1rIO;
)
rcturnlruc;
)
rclurnralie;
dil\g
=
lIew Tr:lVcIBroh:rNotiryDialo,~frllmc);
,,
I' ,\irFr:unc.j:l\·:t"'1
.
p3ckll~c com.ibm.Ilcl.kqmtumple.1mvcl;
impon com.ibm.acl.kqml.
';
impon j;w:!..Iang. ';
irnponj;l\'a.ulil.';
importjava.awt.';
imponjll;\,·:t.a\\1.imagc.';
imponja\'.1.io.';
pr!\,:lIe Lin flI&hISched; /I LIS! box;
prj'l'lIlc Vector fli;hlTablc = null; If real service lablc
private Label ni;hISchcdLabcl;
priwllc Lllbellit[cL:tbcl;
private P:Illc1 northl';l;t\cI;
prl\':tle Airline "\:CIII;
prl\'(\le TcxtAr~i1 IcxtArclI; II for lyUcm log
pri\":ttc ""erlU fi!':~lcl1u;
pri\';llc ~'cnullcm quil;
privatc ~lenuBar mcnuB.u;
pri\";llc Bunon del3y;
rrivJ.lc GridB~LA)'OUI ;ridbJ$;
pri\'IIlC GridB",Conw.titUs
,ridBC;
public Airframc(Slrins
litle,
AirLinc~cnt)
(
super(litle);
this.:a,:clII-",cnt;
ni~h(Th.ble - :a~nq;eIF'i-'ItT:l.blcl);
IImcnucn:;lIion
fileMcnu - new Mcnul"File");
quit'" new Menullem(~Quit");
menuB::Ir- new 1\lcnuBar():
fileMenu.ladd(quit);
menuOu.:.dd(fileMenu);
sett>.lenuBar(mcnUOaT);
I'
II sY'lo:texl
;arel
textArcl - new TextAre3():
IcxIArc:l.minirnumSizc(400,
300);
textArca.pre(errcdSiu(400,
400);
lexIArcl.UIB:.ck£1Ound(Color.white);
lexIAn::uetEdit:ablc(fnlu);
,/
I/service tabtcconslructioll
llig,htSched - new LiSI(20, (.I15e);
OitilISehcd.minimumSizc(20);
II 5 rows ll00doo.
nightSched.pre( •..
rrcdSizc{20);
mg,htSehcd.lCtFont(new
FonWMonOlpxcd~,
Font.BOLD, 20):
IIfli£htSchcd.K'IFonl(new
fonl("Courier".
Font.PLAIN,
Ill);
ni,htSchtd.,ctBackjround(Color.white);
Enumcr:ation enurn::t ni;hlTable.dcment~();
whilc(cllum.hns~loreElcm~l1Is(»
(
thiuddlli!m«Fli;Jltln(o)
ellum.nexIElcmCtlt());
I
lligJltSchedL;tbel ". new Labcl("FliJi,hl Schedule");
llidltSchedL;tbel.scIFllnt(new
Font("Serif',
Fonl.BOLD, 20));
IIflighISchcdL:1bel.sctFont(ncw
Font('limCl",
FonI.BOLD, 16));
dcl:\y" new BUllon("DeI~)''');
titlcLnbcl ••new L:\tx:I~litle);
titleL:sbel.lctFonllncw
Font~"SaI1SC'rir',
FOIll.IlQLD, 36));
IIlitleL:'ibel.sctFont(ncw
Font("Hel\'\'licOl",
FOIll.PLAIN, 36»);
titlcL:sbel.lcIFore:round(ncw
Color(60, 170,60»: II green
northl':!.ncl- IICWP.mclO;
,ridoo.g '" ncw GridB:s;L:I)'OutO:
tridBC ••ncw Grid0:ttCotlStrnilltIO;
nOr1hPl\rtC'I.setL:s}'out(j;rid~);
gridBC.~ridwidth
= GridB",Constl'J:ints.RE~IAINDER;
gridb3g..scIConslraint1(lilleLabel,
,ridBCi;
nonhPanel.l\dd(tillcubcl);
UidBC.cridwidth
= GridB~Conltr:aints.RELATIVE;
SridBC.:snchor
••GridBO\J;Conltrnints.WEST;
tTidBC .••••
"CiShlx = 1.0:
;ridI3C .••••.
ci,hly ••1.0;
Srldba.l.scIConSlrnlnts(f1r!;htSch~dLabcr,
r.ridBC);
nonhP"nel.;add~i1 ithlSchcd Label);
gridBC.,ridwidlh'"
GridB:a-,ConstT1lintl.RE}"IAINDER;
yidBC.:snchor"
GridB3gComtT:sintl.EAST;
Jl'idb~JCIConltn.ints(del"y,
VidOC);
north Pllnel.add( delly);
&ridBe.anchor '" GridlhgConstntinlS.CENTERj
gridBC.fill"" GridBlsConstrnints.130TH:
grjtlb~.,cIConstl"",inti(nilhtSchcd,
,rid Be);
nonhP:mcl.3dd(fli&.htSchcd):
nOnhP4ncl.set03Ckg.round(Color.whitc);
3dd("Nonh~, nonhl':mcl);
3dd("Ccntcr". n;~htSchcd);
""'(l;
resize(450.500):
}
public \oid Ict~lcu31O«Strin,
11111:){
ICXIAn:J.3PpclldTcxt(mlg
+ "\11"):
}
public void addltem(Fli(:htlnfo
flis;htlnfil) {
if(n;~1I1'1tbJc -- null) nighlThblc '" new Vector(); II for tC11
StrintBuITcr
sb-ncw
Stringllurr"'r("):
Strintc!usI1Jrne;
String3r1;
sb.inscrt(O, cI:lun:lrnc - new String(fli~htlnfo.ccICarTicr()));
Ib.inl~rl(5, d4un:l1llC'" new Strin~tIHl:htlnfo.c-ctFliliht()l):
sb.ini':rt\ 10, cl~HJHtmc = new StrinC,(flightl"fo.,.cIDepJTture()));
Ib.inS<'rt( 15, clusni1mc -new Strin};(f1i,htlnfo.,clr\rri\·al()));
sb.inscn(:~O. cbun:lrne - new Strinr.£m~htluro..J;ctDcptTime()));
fli£lltSchcd.3ddltcm(sb.toSlrirW).!rim());
II m,htT3b[c.3ddElcmcnt({1ightlnfo);
}
public boolel.n hl.ndIeE\'ent(E\'(~nt cvt) {
if(cYt.id = Event. WINDOW DESTROY) {
System.cxil(O);
} cliot if(c\'t.id - Evcm.ACTION_EVENT)
(
if(cvt.\3r,cl-quil){
Systc:m.exit(O);
} clse if(C\·I.tIHg.ct".". dcl3y) {
inl sclectcdlndcx;
if«(wloctoolndcx
- fliilIlSched.:,etSclectedlndexO)!'"
-I) (
Fli£htlnro flilOhllnfo'"
(Flightlnfo) fli~uT3ble.eklllcllt.o\t(sdectcdlndcx):
StringBuITcr
sb"'IlCw
Slrin,;l3uff.:r("
~);
ib.in.-.:rt(O, new Slrin~(niShllnfo.!l.CIClrficr())):
ib.inlcn(5.
new Strin~fli"htll1fo.S."'IFli£:hL(»I;
ib.iracrt(IO.
new Slring{f1ishtlnfi>.;etO<:!>a.rture11));
sb.irllcrl( 15. new SlrinJ;(/lichtlnfo.getArri\'a!l)));
Strine dcptTimc - f1i"lIlnfo.£~tDcpITilllcO;
~lrin;nc ••••.
DeptTimc;
ir(depITinte.cndsWilh(~At.·I~»
{
nc ••••.
DeptTime new Slrin:(dcptTirnc.subitrin!l(O.
d('JlITil1le.lastlndc).On~A~I·»
"PM");
} cl~ if(dcptTimr.endsWilht"PM")l{
newDcptTintc new SlrinJ;(dcpITimc.suburin!>l,O.
deptTirnc.l.ullndcxOn
~P~IM»
"A~I");
I elle {
ncwDeplTirne - dept'finrc;
}
sb.insert(20, ncwDcptTimc);
ni~I'IIJ,fo.seIDcplTimclncwDcptT'ime);
flithIT3blc.~tElel1\cntAt(fli.vrtlnro,
seiccloolndu);
nighISchcd.rcplxcllcm(sb.loString{),
se!ecledll\dc.x);
fl i£htSched.sc leel(" lccted Index):
~enl.upd3IeSchcdule(f1i,htlnto);
}
relUrntruc:
.•.
+
I
r~lUm lu~r.h:lndleEvenl(C\1);
}
1/ (or tell
public 51.1lic\'oid m:ain(,Slrindllll'gs)
AirFl'llme (mille"
new r\irFrJ.l11c(~Airline·A".
null);
(r.ame.3ddlh:m(ncw FliJ:hllnfO("JAL~,
frl1mc.addllcm(ncw
{
"123". "NRT", "JFK",
"03/21197 A~lftl);
"32r, "NRT", "COG",
"03121197 Mn);
Fli~lIlnri)(" JAL ", "513", "NRP, "lHR",
"03/21197 A~I",);
Flighlinfo("JAL",
"623\ "NRT", "SFO",
"03121197 Ar.I")J:
Flightinfo(,"JAL",
"(1)\
"NRT", "SFO",
"0]/21197 A, I"»;
Fli&;hllnfO("JAL",
"723", "NRT", "SFO",
"03121/97 Al'.l"));
FlightlntO("JAL",
"613", "NRT", "SFO",
"0]/21197 A:-'I"));
FliiOht[nfO("JAL",
"621", "NRT", "SFO",
"03/21/97 A:-'I");
fli~htln(o(" lAL", "622", ~NRT", ~SFO~,
"03121197A1-.n);
Fli,hllnfo("JAL",
"625", "NRT", "SFO",
"03121i97 A~I"));
FIi&hllnfo("JAL", "626\ "NRT", "SFO"',
"03/21,91 A~l"));
Fli~ltlnrorJAL\
frn.me.sddltem(new
fmme.3ddllcm(ncw
fl'l1.mc.addltcm(new
fr:\l1\c,lIdJlli:llI(lICW
fr.1mc.llddltcllltnew
frJ.mc.3ddllcm(ncw
fl\lrl\c.addltcm(ncw
(n;me.sddllcm(ncw
(n:me.l)jjdllem(new
rr:ulle.Jhow();
I
I
,.,\irLint.j:t\'I1·1
(l."lCJr,:'te eom.ibm.acJ.kqmlumple.lr,-"cl;
impon com.ibm.acl.kqml.*;
import com.ibm.3cU:qml.inlcrprclcr.*;
import com.ibm.acl.util.*;
importj:t\'3.l3.nr:.*;
importj:t\':l.io.*;
imporlj:l\':l.nct.*;
imponj3vOI.ulil.*;
'"
• This ~gcnt hnslhe rc(;:rcncc o(KQMLM3.lllser,
• this agent is KQl\IL-Spcakablc.
"
protect<XI KQML/l.I:tn~cr
~h1n3!;Cr;
'"*
,,£.cntn:tmc
"
protected
1**
String
llgemN:lI1ic;
.
• loe:tl hOSln:unc (kip fi>rm:u)
"
protC(;tccl Sirinj; locall-lost;
'"
* (~ililltor
"
iSddreu(ktp
prot~'Ctcd SIring
,,,
• receiver
"
protccted
addrcu
Slrin~
(onmll)
(tlCilit:ttor;
of rm abcnl th:1I e:m be inscrud
fe«i\'crAddr;
I"~
* Ureeyclt'lD
"
prot~ted
Strine
li(~-..::ydcID;
(\..IP form:tt)
/",
, )'tllo ••••.
p~elD
"
protected
Slrin!: yeltowp;1JteID;
'"
f(r;tllle
"
protected
AirFrame
(moil,';
'"
• pon number
"
proleC"lo:d
protected
in! pon;
V«:tor nig.htT;\blc
- new VOCIOr();
'"
• Constructor
, @p3ram
"
public
port lOCket port number.
AirLinc()(
:t1l!\Ct_travcl.lC1FiillhITablc(fli,htT!tble);
}
public V~lor :elFIi~ltTablcO
(
rClumflillhlTlIblc;
)
public KQf',ILt.13n:tgcrgctKQ~ILt.l3n2:er(,
relUrn~"'l:m3x.cr;
}
{
/"'
• Tr;wcl Bro\..er registCf on Li(,:C),dc
'sccmHjo(2I).t.(21)
"
prolL'CIOO \'Oid sCIRe;,iltcrL()
(
KQML kqml '" new KQMLO;
Slrin.c rw = new Slring(kf'.l:tn3g,cr,[c1inili:iIIDO);
\..qml.,etl'erfomI3ti\'C("rct;il1cr");
kqml.Sc!IP:ullmclcr(":n:lnlc",
:l.tcntName);
L:qml.sctP;lr:1mcter(":~fldcr",
loc'JIHou);
kqml.setP3I'3mctcr(":recei\'cr".
r.ICilillllor);
i.:qml.leIParnmcu:r(":rc:pJ)'-with",rw);
kqrnl.1eIP;t.r;amclcr(":lnnli:uOIj,;c",
"anACL ");
kqml.sc!Pan1me!cr(":olllolo;y",
"Iifcc)'cle~);
kqrnl.scICOllh.'IlI{"{:cl;lU
:u\:\CI_travcl)"J;
COIl\"crs<Ili011conv-"l1ull;
"Y(
COIIV"
,
(Collvcrs:lIioll) kto.lnn:t\Ocr.Kndi\ku.l,;c(kqml);
} c.llch (ScndF:liledEx«plion
ex) {
ex.printSt3CkTmce();
} catch (Inv011idFOnJl3lExccplion
ex) (
ex.printSl:11ckTr;lcc{);
} c01tch (Inv01lidMcss~Sequcnci:Exccp(iOl1
ex) (
t'".printSll\CkTf3ce();
} c:l.lch (JKQMLExccption
ex) (
c.x.printSI:ackTrJCc();
}
conv,,-ctRC1ult().w:l.itFor{.J5000);
RClult rei = conv.lOf'tResultO;
if( rcs.isAv3ilJblc(»
{
RcturnV:lIuc
nn ••(RctumVllluc)reI.&ctRcluIlO;
if(nn.isOKO)(
lifcc)'ckID"
new Strin,«Slrini)nn·Il~IRclumV3Iuc());
prlru("rcgisler:
" + Iif~'eyclclD);
lelsc{
Sysu:m.crr.prinl1n("lcIRc$.islcrLO
Syslcm.ar.prinllnC'lcIRcgilh.'rl()
:Error in rccimred
:" +
prcx:eSl");
104
(Strins;)rltl.J;.etReturnV:tluc(»;
Systcm.cxit(-I);
}
} else {
Systcm.err.println("setR~i~lerL()
S),stcm.cxit(-I);
:Error Result isn't :tvlj[~blc"):
,..
}
• AirLine rc.:ommend-onc:![nsent)'dlowpa.sc)
• sccn:lrio (22)d! (29)
'/
public ,'Oid sctRecol1lmenoonelnstnYO
(
KQI\·IL kqml ••new KQML{);
SIring rw ~ new Slrinl!(k}'I3.n1l&cr.t<!tiniliA11D());
kqml.sctPcrfonmltivl'("rccommcnd-onc"j:
kqml.scIParamclcr(":nl.OlC",3!cntNl1mc);
kqml.scIP:uounc.I('r{H:scnder",loc;llHo!it);
kqml,sctP3r3ll1ctcr(":recd\,cr",
(scililllor);
kqm1.SC1P •••
rll.mcler(~:rcply·with",
rw};
kqml.scIPIl •••.
nu!lcr(":13ngu:lSc",
"KQ1\1L");
kqml.scIP:trametcr{ ":onloIOIY~, "!.qml-ontology"};
KQ~·IL kqmU '" IICW KQML();
kqml i.tctPcrfonn:l1ive("intert");
kqmCi,lcIPIlTl\l1Ictcr(":scndcr",lonIHost);
kqmU.letP.u:tmcter(":llln~u3.S'e",
~lnACL ~);
kqmU.,etP:u"metcr(":Qntolo,\;y",
··ycllowplJ;.el");
String content = lIew Slrln.£(
"(:c(lce:ory"
+~\n"+
" :subC"cCtory"
+"\n"+
":elus"
+"I,n"+
":n1l.mct
};
kqrnl_i.lctContent~.:onlenl);
kqllll.~tContelll(kqml_i);
COIlVt'~tion
cony '" nul!:
''l'{
conv=
(Con\"CI"13lioll) k~Ianlgcr.sendMeJil!.~kqml);
} pleh (SendFnilcdExccption
ex) (
.:x.printSI;\CJ..Trlt'C;\);
} catch (lnv",lidFomllIExccption
ex) (
eX.prinIStockTnK't10;
) catch (Inv:didMesus.eSequenceException
ex) (
c·x.prinISt,\Ck'fl";\CCO;
} catch (JKQMLExceplion
ex) {
ex.printSlockTrxeO;
}
eonv·aetRc,ult().waitFo.r(45000);
Rcsuli res = conv .• cIRc,ul!(l;
if( rcs.ilA\'3il:!.bkO)
(
RcturnValuc rtll '" (RcturnVnlue)rcl.$o:tRuu!tt);
i(nn.isOKO.l{
print("rciu!t nluc:"
+ nn.l:ctRe!UrnValm~().loSlrin£(l);
KQ~IL kqml_resuh = null;
11)'(
kqllll_mull = new KQ~IL{nn.,ctRcturnV3IuC(,).toStrinG(»;
} c:l.tth (NOILi5lExceplion ex) {
("x.prinlSt,lckTrJcc();
SYltem.cxil(I);
) C":l!ch (~I"lromledSExpru~ionEj\,cplion
c:~) {
cx.printStBCk:Trxc();
Sym·m.cxit{I);
}
105
1/ reserve :Wdro!U of 3£.::nl Ih3\ can be inserted
~ei\'1,!rAddr "" new Strins£.kqm'_rewlt.,ttPAr.\llIth:r{":rt'ccivcr"»;
) else {
SYi(em.c:rr.println(~letRecommendone[nscnYO:
scenario l22129)");
Srslcm.err.prinlln(~~IRt."Commendondns.ertY(l
:"+
(Strint::)rtn.a:,etRclurnV:duc()};
Syttem,exit(-I);
}
} die (
SYllcm.err.printlnCsctReeommendonclnsertYO
S)'tlcm.exit(-I);
:Error Result isn't :l\'3il"blc~);
I
'"
·AirLine~\'ertilcJiUk-lll(tr:l.\'tI)
: Sct'nuio (26).l ~33)
"
public void K'IAd\'eniseBrokm.llA5k11I1T()
{
KQML kqml" new KQt.1LOi
Siring I"Y\' - new Slrint;{kl'lbn~er.tct[nili"JlDOJ;
kqrn 1.lcll'erform:ui\,c\
~3d\'trl iteM);
kqml.UIParnrnclcr(":n:lme",I.!::cntNlme);
kqrnl.SCII':II'"mcttri.":Klldcr",loclIHott);
kqrnl,lctP:lmrncICr(":m::ci\'cr",
radlilllor);
kqmJ."->tPilr:uncter(-:rc:ply-with-,
"");
kqml.sctP,u;unelf:rl":l:tntU1,:e",
"KQ~ lL~);
\.;qml.sctl"U'3I1lC1er(":onlology",
"kqml-omolocy");
KQML \.;qmU zt new KQ~Il.();
Lqml_i.K'IPcrrorm:ui\'e("nk-311");
kqml_i.seIP3~metCr{":lCnUd',
r.w;ililJ.lorl;
kqmlJlcIP;J.r"me1cr(":rttei\'cr",loc:al~lo't);
kqmU.Je'lp.,r.smC1crt":in-repl)·-lo",
rw);
kqmU.sctParnmelcr(":l"'n~u:l~e",
":anACL M);
kqmlj.sctP"r;tmctcrt":onloloty",
"m.\'CI");
Slrin~ conlelll" new Strin~
"(:c:mier"
+"111"+
":f1i.ghl"
":dcp3rturc·'
+"'n"+
":lrriVll"
," :deptTirncJ");
kqmlj.KIContcnl(conttnl);
kqml.uIContclll{kqull_iJ;
COIl\'cru\ion
eOI\\':O null;
+"\n"+
+"\n"+
If)'{
conv·
(COlwccutiofl) )':f.,l:an;!!;cr.knd;\lcu~:(Lqml);
} (':aleh (ScndF:J.ikdEl.ccplion
ex) {
c:<.prinlSt.),CkTI"3~);
} !;';'Ilch (In\;'ilidFon\l;tIExccplion
ex) {
eX·I'fintStloCkTr.KC();
} catch (Inv;'llid1\lc'J3;eSeq~rn."CExcqxioo
ex) {
ex.prinlStxLTr.\C~):
} c;ltch (JKQ1'.ILExct'ptiall cx) t
cx.printSlloCkTn.cc();
}
conv.c.cIRclult(J.w;'IiIFortO):
}
'"
• Airline :W\'crtis •.:/subscribc.J.sk.:1I1ltr.m:l)
'lCi!n:uio(27)1:.
(34)
"
public void sclAdwrtilcSubAsklll1TO
{
KQ1'.tl kqml = new KQMLO;
Slrin:; rw -new StrinAA""'IO\ll~r.:cl[niti3.llD(»;
106
"qm l.sclPer fonnati"e(~1d \'Cnil(:");
kqml.sctP,m.mctcr(~;n:unc".
""cnli'::unc);
kqml.leIP\lramelcr(~:1tnder".loc!l.IHosl);
kqml.~IP~r.\mCtc:r(~:rcccj\~r~,
fu:ililltor);
kqml.sctPar3JnClcr(":rcply-wilh".
rWI;
kqml.tctP:ul1mctcrt":lan,ullJOc",
"KQ:-'IL"):
kqrnl.~IP!'lr.lmclcr(":omolol)'·,
")"qml-OIIlo]oiY");
KQML kqmU:II new KQ1I.IL();
k.qml_i.setPerfonnali\'er!ub~ribc"):
kqmU.sctPan.mctCr(":K-nder",
(.lCilil!llor,;
kqmU·K'IP1ramclcr(":recei\'cr"',loc!l.IHMt);
kqmU·So:IPluamekr(":in-reply-\o",
""');
kqml_i.leIP!'Il1ImClcr(":lan£u3tc",
"KQt-.IL ");
kqml_i.sctPllr.J.metcr(":onlo]oty",
"kqml-onlolo&y");
KQML lqmUi
••n~w KQMLO;
kqml_ii.setPcrformati\-e{"uk-311");
I..qI11Ui,scIP,lrametcr{":senuer",r"cilit:ttor);
i.:qmUi.lctl"'Ir!lmctcr(":receiycr",
]oc:tlHoot);
kqml ii.setp.,~melcr(":ln-rcpIY-lo",
rw);
\.qmCii.sctPJr;mlctcr(":j"nGua~
..c". "snACL ");
kqmUi.k!tPllr;lmetcr(":ontolo~~,
"tr.lvel");
Strine comcnt = new Strin~
"(:c;trritr"
+- \n~+
~ :fHl:hl"
• :dtp3nurc"
+" \n"+
":.trrhlll"
" :dcp1'Thnct );
+~ \ll~+
+" '11"+
kqml iLsetCOlllcnt(content ;
LqmO,sctContent(l:qmUi);
kqml.sc.:tContcnI{l..qml_i);
COIl\'eN:ltion conv" null;
Iry{
conv'"
1Con\,erution)
l:~lIn~cr.lCndl\1em:&c:(kqml);
) (,ltch (ScndFailedExctption
cx) {
elt,printSI~kTr~ct();
} cltch ([n\"didForrpzuE:t.ception ex) {
cx.printStllCk:Tr\l~);
} p,tch lIn\';l.lidl\leUl\:cScqucnceE)l'«pliQ/I
exl {
cx.printStackl'mcet);
) (':tleh (lKQ~ILEx«ptiOf1
ex) {
cx.prinIStKlTr.\C'C():
}
cOllv,;ctResU[tO,WlitFor(O);
}
public \'Oid upd:ucSdledulc(Flir.htlnfo
ni~htl (
KQ~t1 •.kqml :::> new KQML();
Strin, rw:::> new Slrin~{I.:.\hnl:.er,tetJnitiOlIlD());
kqrnl,scIPcrfonn:ui\,c("insert");
kqmJ.setParametcr(":nlme"
••senIN.me);
kqml.tctP:munctCri":sendcr",loclIHosI):
kqml.sctPJl'all1etcr{":RCci\'ef",loc31Hoit):
kqml.seIP:mlmctcr(":l\:pl}' ..wilh~, rw);
kqml.seIP~r.lmeter(":lln:u3.i:c~,
~lnACL ");
kqml,ICIPOlT2mctcr(":olllolo:y",
"tr:awl");
SlrinlCOlllcnt ••
new Slrint(,"(:c3rrier"
+ i1iShl.l;etC-~uricr() + "\n" +
" :ni~l\I M + Oighq:CIFlif,hl{) + "\riM +
":dep:\nurc\""
+ IligJll.£,et[)(p.lrlllrc()+"\"'n"+
" ::\rri\':\1 \ •.•.+ f1i:,ht.tetArrivJl0
+ "\"\n" +
" :dcplTimc \.•••
+ f1i!;htgctDcptTimeO
+"\")");
L'lml.S(!\COllIC1lI(COlllcnt);
107
..
ConvcrI'3lion COllY" null;
try {
cony·
(ConvclUtion)
Ir:.l\lana.~cr.stnd~leul.se(kqml);
} C';'Itch (ScndF.tilcdExoeption
c:(} (
cx.prinlSt~kTrxf'():
} c:lIch (In\,JlidFoml:1tExccptiOll
~x) {
t'x.primSlld:TrX'e{);
} ~Ich (1""llid~lcsugeScquenceEXC'(ptiOIl
ex) (
cx.prinIS1.lCkTra...--c();
} c;l\ch (JKQ~ILExcq)[jon
ex) (
.:x.printStxkTra«();
}
if(conv·-null)
S)'Stclll.err.println(~AirLinc.updltcSched:
lend intcn pcrform:lli\'c
)
/
• print fOr dcbu~.
, @PU(\II\IIISJ::
print rI1esu~e
,/
priv3te void prinl(5tring
mse) (
ifO':'Qr-.ILMana:cr,dcbur)
(
S)'1ICfll.crr.println("AirLinc."
+ m5~);
)
)
I
'·AirLincA.j:u':t-'
pxkacc com,ibm.acl.lqrnlS3mple,tr.wcl;
import com.ibm.xl.kqml.·;
import com.ibm,lK:Uqml.intcrprctcr.·;
inlpon com,ibm.acl.f.tcililluor.F.t>:ililollorPropertk-s;
imponj:wJ..Ian,,·;
importjo.\'~.io.·;
importj:l\'~.net.·;
importj:l.\'~.util.·;
'"
• Constnktor
• @p3r~m
port socket port number.
"
public AirLincA(im porI) {
supcr();
this.port - port;
F3Cilitl!.torl'ropenies rp;
try {
fp = new F<\CiliulorPropcrties{);
} c3tch (IOExccption ex) {
cx.prinIStxkTmcc();
return;
}
rac:ililltor - rp.EetOncURL(~klp·);
ir(r~ilil:lIor""null){
print(w no kIp rltililalor rl>und, system ~xh!");
S)il~lIl.exiltl ):
}
3.;,entN3.me - new StrinKe jAL ~l;
print("pon"
+ pon):
try {
InclAddrcu home - IncIAdJ~ss.&(,ILoc"'lHost();
SlrintBuffer bur= new SlrjnsBuffcr{~1..1p:l");
buf.3!)1>cnd(hol11e.s;cIHoSlNll11<.;)
+ ~:~);
btl r.:lppcnd( Intc~er. lOSIrins(pon l);
Joc3JI·lost ••new Slrintl.bur.tnStrin~));
} c3tch (UnknownHonExccption
e) {
S)'SI~·1I1.crr.printlr'l"Ullknown
HOJIN'.amc");
r.tilcd~~
108
System.exit(I,;
}
/I initi~lize d~l~ base
fli,hITlble.:WdElemcm(new
Flithtlnfo(~JAL",
fli"ltTablc.:wtdElemcm(new
Flithllnfo(~lAL",
m,htTable.lddElcment(new
m£,hIT.tble.:wtdElement(new
"123", "NRT", "JFK",
~03121197 A~I"»;
"323", "NR"r, "CDG~,
"03121197 A~I"»;
FliP11Info("JAL", "S23", "NRT", "Ll-IR",
"03121197 AM"»;
Fli:,htlnfo("JAL".
"623", "NR"r, "SFO",
"03121J97AM"»):
if( -I !"pon)
{
kManater - new KQ\IL~lanlScr{Q£enIN"mc.
fBme = ncw AirFramcrAiriine-A",
this);
(r:lme.show();
/I scenario - (21) c,dl Airline method
iCIRecillerL();
1/ sccn:Jrio - (22) call Airline mellloo.
K'tRcCQmmendonelnsenY{);
IIk'eTlario-{2-1j
ICtlnsenYO;
1/ scenario· (::6) c;dl Airline method
sctAd\"enilcl3rokc:r<lIl,\shlIT{);
/I scenuio· (27) ull Airline method
lCtAdvenilCSubAshllTO;
"kip", port);
I
I
,..
• AirLincA Insert(ydlo\\p3:Cs)
• sccn:lfio(24)
prh"lle "aid sctlnscnYO (
KQML kqrnl '" new KQMLO;
Slrin! rw" new Slrins(k}'l:lIl,,:er.tctJniliJIII~);
kqml.sctPerfonn:lIi\"c("insc:rt");
Lqmi.lctP;J.n.IllCtc!,(":nlnll!", J.CIIIN:UlIC):
kqml.lCtPo1nmetcr(":Knder",I0C3IHoll);
kqrnl.ICIP.IrOlnlC1crt.":rccch'cr~, rc~i\'\.':rAdJr';
kqml.SC1P3nlIl\Clcr(~;rcpl)'·wilh", rw):
kqml.sctP.ullmeler{":IIIns.u3~e".
"llnACl");
kqml.letP.mulletcr(":onlolo;:y",
M)'ellowp~c,");
Slri11, content = new SlrinJOi
"(;Pro\'iderNJ.tllc
\"J!l.p3n Air Line\""
H:ulesol')'t~\'el"
••:subC'ICE(lry 3irline"
":d;lj,S;1r1Xt
tr.t\'cl"
":namcJAL"
~ :I:tntu~c 3nACL"
" :Onlotog,y lran~lt
);
L:qml.~tConlenl(conlenl);
Conyerntion COO\' - null;
try {
cony'"
(Con\'C:f'S3tkln)L"I:tn3J:cr.lClld}'h.~{kql1ll);
} e:llch (ScndF3ilcdE)'ccption
ex) (
c:x.primSlxk.Trxe();
} c;lIeh (InnlidFoml:uException
ex) (
cx.printSI.d.:TrI\o,,~):
} C31Ch(In\'alid~lc'n.-.cSequellccExceplion
ex) (
ex.prlmSllld,Tr;tCc();
} C:3tchl1KQ~ILE)"ccplion ex) (
ex.prinISI3CkTmcc:();
}
conv.,ctRcsulttl.wJitFon45000);
+"\1\"+
+''\n"+
+"\n"+
+"\n"+
109
Rc,ult res = conq~cIRcsuhO;
if(r;:s.isAniI3ble(»{
RetumV3lue nn - (ReturnValuc)rcs.j;<.:tR •.
-su!tl);
if(nn.isOK(»
(
)'~lIowpa;elD = new Strin£(lSlrin.s)nn.gctRclumV:lIue(»;
print(~}ello"'l»-gc:
+ ytllowp~cID);
~ ebe {
S)"slcm.m.println(~KtlmcrtYO:
ICcnario (24n;
SYllcm.c:rr.println«Slrin;lrtn.j;elRclumV:duc(»;
Syslcm.exit{-I,;
)
}die{
SYilcm.c:rr.primln("lCllnscrIYl)
:Error Retult iin't 3\'ltih\bJe");
SY1lenl,c:xit(-I);
R
J
J
/"
• print fordcbu!:.
'iI1ruamnngprinllllcul\gc
,/
pri\'llC void prim(Slring, nlIC) (
irIKQ~ILM~n:ls;er.dc:buy)
{
System.c:rr.prim[n(" ..••
irLillcA.~ + ml.~);
J
J
'"
'ntlinroulinc
• p;tT,1n1ar,lU port numb4:r. The dc:r;1U11 number;s 3001.
'/
public n:uic \"oid nlllin(Strin;; 3r;s[J) (
int port-lt02;
SlrinaulllgtInew Strint(~U~c::
AirUncA [-tnscc] [-port <port.¥>] [-heir)");
int .1.flC" :tr,s.l~n;th;
for lint i" 0; i < :11;":: i++) (
I'l'l
if(:tr;.s(il·cqU11J(".tracc"l)
{
KQf>,IU.!Qn~~r.debu:.;;; Ime;
I else if\3.rv[ij.cqu:tll{"-pon"»
{
pon = Inteter.p3.l1cllll(3.rc.I(++i]l;
} c!iC ifi:ll'll{ij.cq\lnlW-help"))
{
S)'tlem.('rr.println(ul~e):
S)'$Icln.cxi1(O);
) che t
S)'itcln.l:rr.print!n(u~c);
S),stl:ln.txi1(I);
)
} c3.lch (ArrJylndcxQuIOfBoundlExceplion
Syslem.crr.prinlln(us3..l.c);
Sy"C'm.txit(I);
J ;:ltch (NullIixrFonn:tIE:tc.:plion
IIf.::) {
SYllclIl.crr.prinlln(us:q;e);
S),llcm.exit(I):
J
J
AirLineA 3.PP" new AirLincA(pon);
J
J
'·AirUncll.jan,,·'
p:w:"~c eom.ibm.xI.LqmllJlllp1e.Ir:tvcl;
impon .:orn.ibl11.acUtlml.·;
impon com.ibm.ad.k'jrnl.interprclcr.
';
impon cOIII.ibm.:ld.filCilit"lor.F~ilit"lorProJll.'rtiC"S;
imponja\,:I.l:lny.·;
imponj3\'a.io.';
e) (
110
importjav;t.ncl.f;
;mportjs\,:!.ulil.·;
/""
• Conuructor
• @PJrlm
port wd:1!1 port number.
"/
publk: AirLineB(im pon) {
this.pon ••port;
F:w:ilillllorPropcrticl
(II;
t'Y{
(p - new FacililllorPropcniclO;
) c:l\ch (IOExceplion
ex) (
cx.printStl1CkTr1oCe();
return;
J
f\lci!illlOr
••rp.~tOncURL("l.:.tp"J;
if{f;&cililJ.lor ='* null) {
print(" no kip (01CHit:llorfound, system exit!");
SYltem,exil(I);
J
agcmN:unc'" new SlringCANA");
primrpon"
+ port);
''Y{
InclAddro!u home = IncIAddrcsl.~ct~II·loIIO;
Slrin~l3uffer bur= new 5IringBuffcreI..1p:lr);
bUr.lp~nd(homc_lcIHOIiIN:lme()
+ ":~);
buf.llppcnd(lntccu.loSlrintlIXlrt»;
loc:all-lol' = new Slrin,:(buf.toStringO);
} (,31ChlUnlmownHMtException
c) (
Syslcm.err.prinlln{"Unknown
!-!oIlN:une
SYJlcm.exit,(I);
M
);
J
II initi.1lize dlullxue
f1i;htTlble.3ddElernent(ncw
fli:hITabl~.oodEkm~lI1(ncw
fiiJ;htTable.addElemcnt(new
fiighITablt.;sdtlElerncnt(ncw
Fli~htlnfo("ANA",
"103", "NRT\ "JFK",
~03/21/97 AM~));
Flic:hllnfo("ANA".
"303", "NRT", ~CDG",
"031211'!J7AM")):
Flishllnfo("ANA".
"503", "NRT". "LHR",
"03121/97 A~I"»);
Fli.shtlnrOl"ANA", "603", "NRT", "SFO",
"03f21197 AM~));
if( -I != pon){
k.}'hlnl\l:Cr = new KQMLM.1113gcr(:l.genIN:une,
fr:\me - new AirFr:lmc("Airline-B",
thil);
rl"3mc.loowO;
I/scen1rio
- (21)e.111 Airline
method
sctRe~iucrlO;
II tcen1fio - (22) call Airline method.
KlR«ommcndancinJertYO;
III«tlAriO-l24)
sctlntmYO:
II sccmlrio - (26) colli Airline method
setAd\"crtisdlrokcr:dIAsbIITl);
1/ scenlrio - (27) clll Airline method
~Ad\eniscSubAI[':.IlTO;
I
I
e'
••AirLineB [,lIenl)~llowpas~)
• tcel1\lriOl~")
"/
pri\,.1le void ,etl111cnYO {
KQl\IL [,:qrn! - new KQl\·llO;
"kip",
por!);
III
Slrin;; rw = new String(k~l:lIl;l~cr.Kellnili:tllD());
kqml.ICIPerrorlllllivc("imcrl"};
kqml.~IP~l':Imcl~r(":n:lme",
3~enIN:unc);
kqml.lCIP:l.rn.melcr(":tcndl'r",loc.lll-loSI);
kqml.stIP;lr(lmelcrt,":rtccivcr",
Tccci\'crAddr);
kqrnl.1eIP;lI'.llllelcr(":rcply-wilh",
rw}:
kqmhcIP:m~mctcrl":lan~u;l~e",
"uIIACL");
kqml.,cIPJ.f3mCler(":onloIO"~~,
HycllowpJ.ges");
String coment = new Strin£(
"(:PrU\'idcrNamc \"All Nippon '\irwJ.)'$\""
" :c.llegol)' IrJ.vel"
" :lubCatcgory
:tirlinc"
" :cil1u anxl_lr.wcl"
":n;tmcANA"
" :Ilngu:t.:c :mACL"
" :onlolo:>, tf'a\'cI)"
);
kqml.sctContcnt{conlcnl);
Convcr$.llion cony'" null;
If)'{
conv'"
(Coo\,cl'1:uion)
k/\ 1:\Il:t!:er.scnd~ Icn:l!:c(kqllll);
} c~lch (ScndF3ilcdEx.ception
ex) (
ex.printSt:tckTmcc{);
} C21Ch (In\,J.lidFormltIException
c!() {
ex.prinISI2ckTn.cc();
} c;lteh (Invalidt--lcua,cs..,,<!ucIIL'<£xccption
~X) {
cx.printSlx!.:TrnccO;
I ~Ich (JKQI\ILExccption
ex) {
cx.pl'ifllSt.s.::kTr:tCL1.):
}
con\' .sclR elll h( 1.\\ ZIitFort·' 5 000);
R~lt
rei'" conq:cIRciultO;
if(rcl.isAY3ilablcl))
{
RctumV:tlue rln '" (ReturnV3Iuc)fCJ.&;;tRcsultU;
iftrtn.isOK(»{
),cllowp.,!:,clD '" nc::w Strin!~(Slrins)rln.tCllh:turnValuc());
printt"ycllowp3lc:"
+ )'cllowPl.~ID);
)dsc{
S)'s\(.>m.crr.primln("~llnl.er(YO
: I¢ClI;lrio (1.4')");
S}'5Iem.err·rrintln«Slrill')rtn.£cIRclurnV31u~»);
Syuem.exil{-[);
}
) c[se {
S}ticm.err.priulln("lctlnscrtYO
:Error Reiult isn't 2v<til:tble");
SYltcm.exil(-I);
)
)
'"
• print fOfdebuj;.
•@'p.lam nil:
print
me"~,c
"'
pri\';!\c void prinl(String illS,)
if(KQ~ILM;uI"l"r.debu;;}
{
SYitcm.err.prinlln("AirLincB."
{
+ nu£);
)
)
'"
-m"inr()Ulinc
•@~r.lm
"'
;:I.rgsU pori number,
'nlt'
dcflult
public lIllie \'oid m:tin(StriIlS :lrg,t(1) {
intport=1103;
SIring uu;,.: ""
lIullllK:r il SOOL
+"\n"+
+"\n"+
+"\11"+
+"\1\"+
+"\11"+
+'''\n''+
112
new Strinj;("UsJ.te:
AirlineS
[-trace] [-port <portII'>J
int ar;c ;; :up.lcn£lh;
(or (int i '"0; i < :u:,c; i++) (
I'Y{
i(Olr;sli].equ:aIS("-Im.."e~))
{
KQ~ILManl&cr.dcbu,
'"' true;
} else if(arp[i).equlIls("-pon"»
(
port -Intcg<:r.p:uselnl(
••rt;s[++i]);
} else i(3rv(iJ.c:qu:d~"-hc:lp"»
{
Syslc:m.crr.pc-intln(ul.3.1.c);
SYltc:m.C'xil(O);
}clse{
Systcm.cfT.println(uu,u);
SYlu~m.cxit( 1);
[-help}");
I
} c:uch (ArrnyindcxOulOlTIoundsException
S)'Slcm.crr.])I'inlln(uu.c.c);
S)'Stcm.exil(I);
) (31Ch (Numi>crForm:uExccplion
nfcJ (
S)'1lcm.c:rr.prinlln(uu.:sc);
S),slem.c:xil(I);
I
I
AirLindl :tpp = new AirLincB(port);
c) {
J
J
'*an:lC,-travc:l.j:l\':t'"
p3('k~c: com.ibnud.kqmLintl.'rprelcr;
imponjl\'l.ulil.·;
import c:om.ibm.ac1.kqml.-;
impon com.ibm.2cl.ktjrnlsftmplc.!r.wc\.F1ishtlnfo;
private: booleJn dchu,'"
KQ'" lLMlllI:lgcr.dcbu&;
'"
• \':1ri:lblc description
~ocs here
"
pri\'3tc KQMLMlln:t,gcr kl1\;
pch';ue Con\'er1:uion
can\';
'"
• \':lrillblc description
,~I
here
"
priv'3tc
pri\'~tc
prh':lIc
printc
'"
IDGene-mlor idll-cn;
ll~tic lone re,illcredlD
=: 1;
"\'Itic Vtttor fli"htT(lb!c = new Vcctor(j;
ltllltic: Hllslu\lble kcyTlIblc '" ncw H:uljtlblc();
• Conl\fucts
:mxUrll\'cl
with 110spceificd
p:tramcter.
"
public :1nscUr.wdO
{
IIFli~htT3bleisw1
if(ni¥htTablc.sizc:O",
••.0) {
fli:htT..,ble.sddElement(new
fliWllTablc.addElcment(ncw
fli&htTllble.addElcmcnI(ncw
FliGhtlnfO{MJAL". ·40~", "NRT", "COO",
~OJr.!1197 P1'.I"»;
Fli~htlnfc("ANA~,
"20S~, ~NRT", "COG",
~03nl197 P~I"»:
Flichtlnfo("AF".
"275", "NRT", "COG",
"03121197 P"'I"»);
I
I
public Vector ~ctFIi,htTllbtc()
return l1i:htTllbic;
I
{
public stltic void ICtFliuhtTnble(VcctOf
llin;htTbl) {
flilOhlTablc - Oi;JttTbl;
J
'"
• COllvcr1;!.tioll c;!.l1s thislllcthod
to interpretc
113
: Ihe content of the f\.~in:dKQ1I.IL
mcU-~Se.
·I(!plr:un
rou\'Cfu'ion
Nfcrcncc to the Com'crI:ltion
• ifi'p;lmm mSK KQML mC"l$.'!;c
·@rt1urntrueifmcSu.leisimerpr?ledsucceufully.otherwisef!llsc.
'/
public synchronized
book.,n
dolnterpr~l(COm'CfS:lIion
con\'crs:l.lion,
KQ"'·ILms,.}{
if(debug)
SYilcm,crr.primln(ncw
Oottc() +
~> 3n:acl_lr:wd.dohllcrprc1l):
cony - (Conversation)
coo~rution:
km "" con ••..
~cIKQ!\IU.b.n3Jl,crO;
Sirin: pcrfonmlli\'c ••lluS.g.ctPcrfOmt3Ii"t{);
if {perfOTnl3ti\'c.cqu:l1signorcC;uc(
"inJ<:n"» {
return dolnlCn(coll\'crution,
nuS);
} e\t.c ir(perrorm3ti\'c.C(IU.,'slsnorcC.u
•."(~ask."l.II"» {
return doAskAlllcolI\'CrUlioll,
illS!;.);
} else if(pcrfonnll.tivc.cqu:lIslg.norcC:Ue("ICWj)
(
relUm doTcll(con\'cfulion,
mig);
} cbe if(perrorm3ti\'C.cqu3151I:norcC:u:Ii~lOrry"»
(
rt1um doSorr)'(COfI\~l'S3tioll,
nus);
} else if(pcrfonl13Iive.c:qull.lsl:norcC.lki~error"))
(
return doError(COfI\'cf$;1tion, 1I1IC);
} ebe (
r¢turn doOthcrPcrforIl13ti\·cs(convcrsJ.lion.
msg);
I
'"
• H:mdlcs
Clllcnd");
inKrt perfonm,live.
• @p:mlm COn\'CBllion reference to Ihe ConvCrs.3tion
• ~p.3rJ.m ms, KQML mesUtC
: ~relum true ifmcss3t,.:: is interpreted
succcufully,
othcrwile
false.
,/
pl'OtC(too boole21l dolnscrt(CorwcrSltion
C'OlwcrUlion, KQML mig) (
if (debug)
Systctll.crr.llrimln(ncw
D;'IleO +
" > :ln~Unwcl.dolnscn
entered");
KQML rtn"'''; '" new KQ!\tL(}:
Con\~f»lion
con" - (Convcrulion)
oollvcB3lion;
idtcn •. con".~etIDGenerJlor();
Slri~ id" id,cn.tctlDl);
Vector tokens - PI1I"1CContCnl.p:u'IC«Strinl) mSi-c.etContcnt());
Fli;hllnfo rt.'C - new Fli\:hlln(1l(j;
(;)r(illl i"'O; i <tokelll.sizc(); i++) (
ifU(Slrins)
lokens.c1cmentAlti».cqulbl,"of~Caic{·:e.rrie-r"»
(
rcc.scICarricr(Strins)
tokcns.demenIAI(++i);
if(debuJ}
S)·sl.::m.crr.prinlln(l1cw DlIL'() +
" • 3nXUr3\'Cl.dolns.crt
p:u-sin~ e:urier: ••
+ m;.G.cIC.uricrO);
continue;
} el!le if(((SlrinJ;llokens.delnentAt(i}),t.'(IU2Is1&nOfeCasc(M:f1i,ht"})
(
rCl.".letFli:ht«String)
to!.:cns.c]cmcntAt(++i});
ir(debus:)
Sy,tclIl.err.prillllll(ncw
DlteO +
" • :1II3cUravel.dolnsert
parsin;:
fli:.ht: "
+ rec.g.ctFliSht.(l};
eonlinuc;
) elle if«(Strins)
lokcns.c1cmcntt\l(i)).e<lullslSnoreCns.~.'(":dcp:lnurc~))
rcc.5CtDcI)'1nurc(lSlrilU;) tokens.clemcnIAt{++i»;
if(dcbu",
System.err.println(ncw
D;\leO +
(
114
" - IrI!1CJ_t("3\'eLdolnK'n
p;usiIlS: dep;uturt': ~
+ ~q;,eIDep:tnurcO);
continue;
) else ifil(Strins)
tokens.clcmclltAt(i».cqu:tlslgllorcC'luc(":l1rrh'ld")i
(
rec.scIArri\'3It(Slring.)
lokens.clementAI(++i»;
if(dcbu;)
Syslcm.c:rr,println(nc:w
D:lt~) +
". :ln3CUr,l.\el,dolu$Cn
parlin!;.= :minll:"
+rec.c.ctArriVl.I()):
continue;
} c:lle if(HStrins)
10kcns.clemcnIAI(i)).equ.1lsil:llon:C:uc:(-:dcplTimc"))
I
rec.sc:tDc:pITimc«Slrinru
tokcns.dc111CmAI(++i»;
if (debut:)
Systcm.crr.primln(lIcw
DJtcO +
:In:ld_tr:lVcLdolnKn
1>'1I'1inlO:dcptTimc: "
+ r•.-c·tc1Dc:ptTimeOl;
continue;
} cl,c {
ifldcblll:)
S),ltcII\,crr.println(ncw
Dl!C{) +
" - "n:\C1 Ira\'tLdolnJ(:n:
in\,:llid contcnl n:lI11e\':due !>lir: "
+ '''" + lo)..cns,elcmcntAt(i)
+ ~'");
continue:;
I
I
if«rec.cetCarrier()
!'" null) d.:.1t (r«,gctFll£hIO
!"'null)&&'
(r"-';:,IeIDclllrlurcO
!= 11••11)&& (rce.gctArrll'llIO
!"" lIull)~.
(rcc.~e:IDcpITimc:() != null»
(
if (dcbu,) {
S),stcm.crr.l'rintln(ncw
DJte() +
" - :llllCUr:lVcLdolnkrl:
Flighllnfo con51nx:ted~);
Systcm.crr,println(
"\1 - .1nxl Ir,,\cl.dolns.cn:
FIi~tlnfo.c.1rricr:"
+rec, •.ctC"rricr());
SyslcTll.crr.pril1lln(
"\t - "n:\cUr:lvc:l.dolnt~n:
FHshllnfo.m,hl:
"
+rt"C.~C:IFligJlI());
Systcm.crr.prilllln{
"\(_ nn"cUr.",cl.dolll~rI:
Flighllnfo.depJ.rlurc:
+rcc.J,;.clDc:p:!.nurc(»;
Syucm.crr,prillllnl
"\I-M:W:] tr,,\·c:1.dolnlcrl:
Flightlnfo.llrri\,ll:"
+ req;.ctArri\'"I(»;
SY1oto:m,crr,prinlln(
"\1 - :IIlKUra\'el.dolnlert:
Fli.£,htlnro.dc]lITim.::
"
+rcC-i,CIDcpITimo(»;
}
ni~htT~blc.addElement(rcc:);
) die (
if(de:bu&)
SYilcm.crr,prinlln(new
D.llc:{) +
"_ ;!.Il:lCUr:wd.dolnscn:
Flightlnfo constructioll
fJilC!d, specify J'C1;erved n"1mc value p3irs."):
M
_
M
ur (
nn~IsJ:.~IPcrfonnllive("lOrry");
rlnl\lsC.5CIP.lr:mlclcr(":scndcr",
mJg.:ctPlrnmctcr(":rttei\'cr"));
rtnl\-Is\:-s tP.lr:tlTlctcl\":l\."'ttivcr", ml,",r:IP~T'.lI1lClcr(":fendcr"l);
nlll\ lI",scl P Jr:1mcter{": in-rcpl)··to" . /Il1£.tCIPlr2l11ctcr(" :1'\:]1ly-wi Ih"»);
nn1\hQ..scIP3mmeICt(~:repl)'-with".
id);
nnl\lsc.lC:t]1:U"3mClcr(":bn£u:ltc",
11I5g.,cll';u ••metcr(":llInJ.:l~c"»;
rln ~ 11i/"sctP;\T'll11cler(" :olliology",
!11fl,;.gCIPl.mmclcr(" :0111010£),"»;
fIIlMIJ.:.lCtContcIIIC(:crrmlg
\"ncccsSlry nlme vailic {Xlir nOIII'ICCilied in ('ontcn!.\" )");
} C31.::h(Exccplion cx) {
c)(,printSI:tckTraccO;
}
COIWCrs.1IioIlC=
null;
115
,<)'{
c - km.s~ndMeU3Sc(nn~\sg);
} catch (ScndFJilttlExccplion
ex) {
cx.prinISI3ckT~);
} C31Ch(InvllidFonnllExttplion
ex) (
ex.prinlStxl.. Trxc();
} calc,h (In\"J.lidfo.klul;cScquenccExccption
('x.printSmckTmcc();
} c;\!ch (JKQMLExccplion
ex) (
cx.prinI5IKkTrnccO;
ex) {
I
if(c"'-null)
{
S),slcnl.crr.primln(I1!!W D3ICl) +
" < :l.nxl_ll\1vcl.dolns.crt():
lendi"-, response mC5S>1,£.c (3iloo"):
returnfttls.c:;
) cI'<: {
i((debug)
S)'1olcrn.crr.prinlin(n('w
0:\\<.:0 +
"< nnxUnwcl.dolnlicrtO:
Kilt responlc meft3C:c Itlcc('ufully");
I
I
1/ Handlin, sublCribetl Mcss.1.&cI
if(hlndkSublcribedMSG(conv,
('Ise r~'1L1rn(;'lIse;
I
ring, rec}) return true;
r'
• Il:mdlcs
:111:.-::.11perfonllJli\'e.
• ~p3r3m collvcr»lion
~r.:rc:ncc to the COlI\ocrsalion
• @p1rnm nlSi KQ~IL lIIetS3ge
:@rclurn(nleifmcsl3,cisinterpretedluceeufully.otherwisefidu:.
rrotected book:m doAskAII{Corn'cT'Sllion
con\'~rlliion.
KQ:-'IL nnll) (
if(clcbu.g)
SYSlcm.crr.primln(new
O:ltl'O +
"> :lnad Inwcl.doAikAII
cntcrct!");
KQML nnJl.1st ••new KQr-.IL();
Con\'cl'I:llion Corl\''' tCon\,cB,1tion} conv-=1Y1;On;
if(dcbtra,1
S}'stcm.~rr.println(ncw
Dlll'{l +
"- .ln3cUr;l\'cI.doAskAIl
g:clling 10tt"llcr.uur");
idl:l'1l '" conv.~cI1DGenerntorO;
if(dcbu:)
Syslcm.crr.println(new
DileO +
• - :m:K'Ur:\\,cl.doAsl..AIl sotlDgeJla'dtor"
+ id~cn);
Strin: id - idg:cl\.~cllD();
i(debu!;)
SYSlcm.err.prinlln(ncw
D.llc() +
:tnscUravcLdOl'\.sk.AII ~IID"
+ id);
VC-:lor lokens - ParscConlcnl.p:l~{String)
ffiS,.gcICoJllcnl());
String c:micr == null;
Strin:flight
••null;
Stringdep:tnuTC"'llull;
Slring:m;v31
= null;
Slrin~ dcplTimc '" null;
for (int i=O; i < lol.~lIs.siz •..'(); ;++) (
i(($lrill;)
lokcns.clememAlli)).cqu;r.lll.snorcC;asct.":c;uricr..))
(
c:uricr'" lSlr;JI£) lokcns.clcmcntAt{++i);
ifldcbuS)
Syslem.c:rr.println(ncw
D31e(} +
"-lU1XUr,wcl.doAskAlI
parsins: carricr:"
+c:trrierJ;
continue;
} dfe i({(String)
tokens.elC:lIIclltAt(i)).cqu.llslgnorcCasc(,':night"))
(
niWlI" (Strin!;:) IOkens.clemcntAt(++i);
H
_
116
if(debu\;)
5Yilclll.err.prin!ln(new
DJlc(l +
nnJcUra\"Cl.doAsk.AII
p.lnin!!:: m~.ht:
ft
_
ft
+ m,hl);
continue:
} cl~ if«(Slrinl;)
lok;:ns.dcmenIAI{i».cqu:'IIs[~norcC.\Sc(":dcp.1rtun:"))
(
de[»rturc:" (SIring) lok:ells.clctnnltAt(++i):
ifldcbuS)
SYSlcm.crr.prinlln(new
DJlc:() +
" - anxUn:\·el.doAsk.A1I
P'lrlin&: dCp.1nurc: "+ dCI»nure);
continue;
} cllc if«(StrinS)
lokens.clcmrnIAt(i».cquJlslsnorcCD.Je(":l\rriv:lI"»
{
:miv31- tSlrinr;;) lokcnulclllcntAt(++i);
iftdcbug)
System.crr.println{new
D21c{) +
" - all;ICUm\,cl.doAskAlI
parlin;.: :uriy:.l: " + arri"al);
continue;
} die if «(String) tokcns,clcmentAt(i».c:quJIsl,norcC:uc(":dcptTime"»
{
deplTimc:: (5Irill&) lokcns.elcmclltAI(++i);
if(debuYI
SYllclll.('rr.prinlln(new
DJ.lc() +
"- ~nJcUr:lvc1.doAIk.All
pJrlinS: ueptTimc:" + dcpCrime);
continue;
I
I
if«nrrier"- null).llt
(flidlt =:: lIull) &Il (dcplrture ='" null)
4l& (3rrl\'.1I- null) &Il (dcplT'imc = nUll»
(
if(dcbug.,
Systcm.err.println(ncw
D:.\(:O +
M_ an:teUravel.dor\sk.AII:
invJlid n:lIllC \'.llue p2irs in coment of:uk-:.II
nn~bg.sctPerform:lti\,c("lorry"):
rtnMsg.!cIParJlUcter{":scllder".
ms~.~ctP:lramcler(":rccei\'er"»;
rtnhls,.selP:1T:1melert~:re\.'Civcr",
msg.gctP:lrtmClcr{":scndcr"»;
nnhb;..KtP:uamctcr{":in-reply-to",
ms,.,etP:lrao\~lcr(":rel11y-with"»;
rtn~II,.scIP:\~mctcrr:rcply-withH,
id);
nnMs'.tcIP:IIrn.mcter{":lJnl:u~c".
msg.G,etPJF.lllletcr(":lJn;.ul\.i:.c");
nn~tslpetPlIralllctert":onlology",
mlg.c.etPlITrlrlletcr1,":ontolog.y"»;
rtnMlg.lctContcnt("(:crrmsg
\Mno kcyword spccilicd in CQntcnt.\" )");
} ellch lException cx) (
ex.prinIStlld:Tr.\c-:O;
1
l,I••
{
int lil,;:"" nilihtTllble.siil:c(-);
Flia.hllnforec;
Vector hitRccords"
new VectorO;
f()r(inl i"'O; i <sizc; i++l {
rec '" (Flightlnfo) mltlIlT:ablc.clcmenIAtli);
If((ree.I-CICArrl('r().('quJlII((,llfri('r)II((,llrr[cr"~null».aa.
(rec.ccIFliltittt ,.equlI.li(,flii;h1) II (Ili,ht = null).I.&:.
(rec.Cc1Dcp:anure().c:quJIs(dep.1nurc)
II(de[>Jrturc: - null)).t:.I.
(rc:e.gel ..••
rriV310.tqu311(.rri\'J:I) U (IlrriV31 ='" null».t:A
(ree.,cIDcpITimc:().cqual5(,dcptTimc)
II (dcpt'l'imc - null»)
(
hiIRcconls.addElcmcnl{rcc);
J
I
if(!hitRccordl.isEmplyOl
(
5trincBuITcr
content'" new Slrin;;l3uffcIO;
for (int i:O; i < hitRlX'Orduizt,();
i++) {
rc<:" {Flichtlnfol hitRccords.e!emcntr\l(i);
conlcnt.i1ppclI(l(":carrier");
cOlltcllt.appcnd(rcc.yctCarricr(»;
contcnt.:tPI)Cnd~" :11is;.hl");
contcnt ..:lppcnd(rec,sctFlight(»;
pcrformJtivc.");
117
conlcnl.:'Ippendl"
:dcp3rture to);
contcnt.:Jppend(&ctAirPort(rec,r,ctDcI>lnurc{}»;
contcnt.:tppcnd("
::lITiv;!.1 M);
conlcnl.!1jlpcnd(I:;CIAirPon(rcc.£ctArrh';IIO»;
contcnt.lppcnd("
:dcplTimc ");
contcllt.:!ppcnd(I:.CITimc(rec.!:,CtDcpITime()));
contcnl.!1ppend( "\n");
I
if(dcbuS) {
Syslcm.crr.prinlln(ncw
Dlle() +
". anxUl'ol\'cl.doA'kAII:
que!)' completed.");
S)"slcm.err.prinllnlncw
D:ilcl) +
" • "":lei tT;t\'cl.doAskAll: fesult or 3sko,lll: ");
Syslcm.c':;:.println(conlcnt);
I
try (
nnMsg.lctPerfonn3tive("tcll");
nnMsg.SCIP3r:lflle\cr(":JCndcr",
msc"c,cIP;!'r:lll1clt'r(":recci\'cr"));
rlnMlt.sctP;trnmClt'T\":rcccivcr",
mS;.gctP:mifllClcr(":scndcr"»;
rtnl\tsg.SCIP:tTlIllCICr{":in·reply-to",
n\l.~gctP.lr.\lIIctcr(":repJy·wilhH»;
nnMsg.sctP,U3nU::1crt":rcply-with",
id);
nnMlt.lC'tP;ut\mctcr{~:I;m,u:1.:e~,
mls."ctParnmctcrt.":13n&Ul~c");
nn~bIPctP:tTametcr(";ol1tO\O~)''',
rmc.gcIP:trnll1cttr(":"ntolo~'''»);
rtn~·Is~lctContC'I11("l"+ contcnt + " }");
} c:\tch (Exception
ex) {
cx.printSlockTrilC('();
I
}e\lC{
if(dcbug)
Syllcm.crr.prinllnlncwDltc{)+
"·lrlacUra"c1.dQ
..••.
skAIJ: No nith1 round.~);
try (
rtnMsS·lCtPcrrormltiv<:("lOrr)'~);
nnM,!.sctPnrnrneter(":scnder",
nu~.gctP;'ir.lIllcLCrl":n.'(:'ciwr"»):
rtn~llg.k-tParnmetcr(":rccci\'Cr",
mlg..:clPnramctcr('·:iCndcr"»);
rtnl••.
Ist:,.sctParnmclcr{":in·rcpIY-l0",
mSll-&etP\1Ir:ulletcr{":rcply-with"»;
rtnl ••.
llg.setParnmclcr{":rcply-with",
id);
rtnh's~.I.I:IP.1rnmcl-.:r(n:lansuW",
lIlilHlctPaF.tmctcl\";lantuqc"));
rtn~lsg.J.CtPl\rnmcter(":ontolot)''',
llIsl:;.gcIParnmclC'r{":ontolos)'''));
nntl.·Is~.lCtContcnt("(:crrrnIS
\" No Oidll round.\"t);
} cltch(E:r.:ccption
c:r.:) (
ex.priI1lSIackTrnc.:.t):
1
I
I
COII\-crilliOIl c = Hull;
try (
c = l..m.sendMcllJSe(rtn~bg);
} clleh (ScndFli]('dExccption
ex) (
cx.printSt:'l<.:kTmu.'();
} cltch (Inv:llidFoml:ltE:r.:ttption
ex) (
ex.printSt:d:Tl'3cc();
} catch (In'·llid~k~I.,S(;SctJlIcnccExe
•..ption t,'x) {
c.'(.printSt<lckTr'-'Cc();
} c:tteh (JKQMLException
CI() {
~x.printSlackTroceO;
}
if(c"''''' nUll) {
System.err.primln(ncw
D:ltc() +
~ < lnlCI tr.wd.doAsitAI1:
lending ~sponse
return (;lIse; ) clle {
mClugc
f:ailed");
;f(dcb".)
SYllem.err.println(ncw
DJlc() +
"< :In:lCl_tr.wcl.doAlkAIl:
scnt rcsponsc
retum lrue;
meSIa,se
IlIceeslfu!1Y"I;
118
,,
/"
• H:mdlc:s tell pcrform:uivc.
• @lpJ.r:am convcuJ.lion rcfcr;:ncc to the COIlVCl'Ultion
• (fl'pJ.ram nus KQ~IL 1l1(:U;lS-':
~ @rcturntrueifmesul:,cilinterpretedsuccessfully,
olherwiw
r.ll~e.
'/
protccted boolean doTcll(Coll\'cBJ.lion
colI\,~ltion,
KQ/I,'IL 1m,) (
if(debuy)
S)~lcm.crr.pril1lln(new
D;rtc() +" > :m3CUrJ.\"cl.doTdl
entered"};
COIIYcl'13tion cony = (Collvcrs.Hion) con"'!B:l.lion;
Result res = collv,g.cIRcsul1();
iflhandIcBrokcrcdfl.ISG{collv,
IllSs. "leW» return true;
Slrinc cJ.rrier = null;
String flight = null;
Strins,dcp:uture=
null;
Strin;;miv;ll
= null;
String dcptTimc = null;
Vector nights:::: new Vcctor();
Ftis.hllnforec=null;
Vector tokens::: ParseConlcnt.p:mc(Strint)
m!lu~.cIConlcnt(»;
for (in! i=O; i < lokcl1s.sizcO: i++) {
if«(String)
lokcns.c1cmcnIAI{i».cqU.,t5IsnorcOue(~:Clrricr"»
(
carrier = (Suint;) lokens.elementAI(++i);
if (debug)
SYJlem.err.primin{ncw
D:ilc() +
" _ itrtacUr:wcl.doTc1!
p:min;.: c:lnier:
+ carri~r);
i[(ree !2null) (
if(debug)
Syslenu.·rr.primintnew
D31e(,) +
" - :l.nxUr,,,,cl.doTcll
p:using c:uricr: illc~t sequence found."
+ lell or:lsk-:\ll corrupletL ");
rcc = null;
continuc;
n
fl
I
rec"" new Fli;hllnro();
rcc.sctC:.micr(carrier);
oolltinue;
} else jf«((Slrin~) lokcnl.elcm<.'I\IAt(i».cqu:l.ilt&nort'C:lIe{":ni~llI"»
(
night = (Slrin,g) lokens.<:kmcIlIAt(++i);
ir(dcbug)
S)"slcm.err.pri11lIn(ncw D~tcO +
., - 311XUr:lvd.doTdl
p:u'lil\,,: niJ;ht: "
+ flit!lI);
if(1tt == null II tl't'C.,ctCllrricrO == nUll) I
if(debug)
SYJlcm.crr.primln{llcw
DaleO +
"- an3ct tr:l.\'d.doTelt (Xlrsinl; night: ille~l Rquenc~ found."
+ ~ lell orask·'l.1I C'omlptcd. "j;
rcc=null;
continue;
I
rce.sctFli&hl(ni~ht);
continue;
} dse if({(Slrir\g) lokcnl.c1cmcntAt(i)).l'qU.lislSIlOr.::CaSe(":ucp;\r1urc"))
departure = (String) toi.:cnJ.clcmcnli\I(++i);
if(debu£)
Systcm.err.println(new
DlicO +
" _ :lrlad 1111\'C'l.doTdl p:.rsing: dcp:murc:
+ uep:uturo);
irtn:c =:: tiltH \I vec.g.etCarrittl,):::= nUll) II
(rec.l:etF1i~htO == null))
{
if(dcbu::)
fl
(
S)'slcm.crr.prilltln(n~w
Dltc() +
" - :l.llxUr:wd.doTdl
plrsin: dCI'~rlure: illcg,lilCquencc
+ "'ell of:uk-31l corrupted. ");
rCCDnull;
continue;
)
rec.lctDcpartut\:(dcparturc);
..:ontinue;
} clle i(((Slrinl)
lokcns.c!c-mcmAI(il).c..lua.lslsnoreC.ue("::mi\'J.l")1
uriv31 = (SIring) tol.:ens.eiememr\t(++i);
if(debu~)
S),slcm.err.prinlln{ncw
DllC(J +
•.- :uulCUr.l\'~I.doTcll
J>-1.rsin:::miVJ.I:" + J.rrh'll);
if(rec
null II (rec.g.cICarricr() == null) H
(rec.gctFlig.ht()
nUll) II (rcc.gctDeparlure()
"'••null»
(
if(debull.)
SYllcrn.crr.prilllln(ncw
D:!tcO +
" - :InacUmvcl.doTell\>:irsinj;
Jcplrturc: i1lc,:lllCqucllce
+" tell o(;uk-:tJl i.:orrupt<..'d.");
re<: = null;
continue;
)
r«.lCIArrival(arrival);
conlinu~;
} else if((StrinlU
tokcml.elelll('mAt(iJ).lXju:l.lsISnoreC~":depITimc·))
dc~Timc '" (Siring) to\"ens.elt"memAI(++i);
if (debug)
S),stem.crr.println(ncw
DllCO +
"- In:\CUr;}\,c1.doTeli p:tuin::,: d('pITimc: .•+ dcptTime);
if(rc-c -- null!! v~c.ll.eIC'ArricrO == l1ull) I[
(req;elfli,htO
== null) II (r«.:.etDql2rlur\.'()
••••
null) II
(ltt.cctArri\·otl()
"'-null»
(
if(debug)
Syslcnl.l::rr.println(llcw
D:lIcO +
" • anxl_Ir:t\'CI.doTcll
~ning
dqxmun~: illcgJllcqucnc~
+ ••I~II of:l.ll.:-I'll\ corrupted. ft);
rcc"null;
continue;
}
1\.'l,:.KIDcpITime(dcpITitlll!);
flightl.'lddElemcnt(r..:c);
ro:c=null;
colliinue;
I
I
=-
{
-=
'ry{
if{nit:.htuizc()
!- 0) (
if(dcbu£) {
Syslem.crr.println(ncw
D:\tc() +
" < ,m:tel tr3\'~I.doTell: ~ +
nighlS.iizc()+"nighl(s)f.
IIld."i;
S}·ltcm.crr.prinlh1lnew
DlICt) +
"< :macl tr:wcl.doTdl:
Int elemenl of lell"):
im lotSI = tHghluizeO'
I;
F1ishtlnfo tlnfo '" (I:lig.htlnfoJ) nig.hll.cI~lllcnlj\l(bn);
Systcm.err.prinlln("\t
- c:micr: ~ + tlnfo.gctOtrrierO);
SYSlcm.err.prinlln("\t
- ni;hl: ••+ flnfo~;:IFli&ht(»;
S}'Itcm.err.println(''\t.
d~Plr1Urc: ••+ flnfo.!:cIDcpJ.r1ure(»);
Srs\cm.crr.prinlln("\1
- lrri\'31:
+ nnfo.j;ctArrh·J.IO):
SYllcm.crr'l'rilllln(,'\1
- dcptTimc: ••+ fln(o.gctDcpl1'imcO)i
q
}
rcuctlh'Su!t(ncw
rel.complcteO;
if(dcbug)
round."
RcturnValu.;(truc,
nights»;
found."
(
lOund."
120
SYltcm.crr.println(ncw
D31eO +
"< anacUrn\·d.doTeli
completed. tell rech'Cd.");
rctumtruc;
) else {
ir(dcbu~)
~l.IeIRcluh(new
ReturnV3Iuc(f"liC,
"conlent orIel! il bbnk."JJ;
fCl.oomplclt();
Systcm.crr.prinlln(llt'wDltC()+
"< :m3l:1 Ir;1\'cLdoTdl faik-d. contl:nt of tel! is bl~nl...",;
rctumfalsc;
I
} c:\\ch {RcsuItE).ccption
ex) {
S)'1lcm.crr.println(ex.,ct~knl.£c());
if{dcbu;:)
SySlcrn.crr.println(new
D:lIr() +
"< "Ilnd tmvcl.doTdl
fililc:d, CllIIIOllCI ~luh~J;
cx.prinISI:lckT~);
n::turnf:tlsc;
I
I
'"
• H:mdlcs lOrry perform:lti\'C,
• @p3r;am COllvcrution re(e~lIce 10 the Com'l:(1).tion
·@p3ram
illS, KQ~IL mes~"C
:@returntrueifmeu"tcisimcrpreted5uc«nfully,otherwise(;llse.
"
protected bookln doSorry(Com'erl3lioll
com'crs:ttion, KQ~ IL mSI) {
i(debug)
S)'Slcm.err.println(,new
D3h.iJ + "> :l113CUr;wcl.doSorry
entered~};
Convt~tion
eonv '" (Con\'<:rt3tion) oonvtl13tion;
Result res "" oonv.tetRcsultO;
if(hlUldkl3ro\..crcJf\ISG(C'OII\',
Ill'" "iQfry")) rclllm true;
try {
Vector tokens" P:trtcContcnt.p3rx((Strin:)
ms,uctCont<:ntW;
Strine crrnllg '" null;
for lint ic:O: i < tQI.cnuizc();
iH) {
if«(SlrinJ;.) tokcl1s.d<:mentAI(i)).equals!tllorcCue{":ernm;;"))
crrmst = (Strin~) tokcns.ckmentAlli
+ n;
brc.,k;
I
I
ir(debug) {
Syslcm.err.println(new
DaleO +
" - ltn:lCl_tr.olVd.rJoSorry errms,: "+ crrm,s);
System.err.prinlln(new
DaleO +
• - :mxUravd.doSorry
Result: .•+ res);
I
I1:UetRelull~nc:w ReturnV:tluctfalse,
crnnS:J);
rcs.comph..1c();
if(debug)
Systcnu:rr.println(ncw
D~teO +
< an~'-'r:l\'cl.doSorr)'
completed");
return true;
} c:ltch {R~uItException
ex) t
Systcm.err.println(ex·tetr--kWlf:.<:());
ir(dchug)
SYSlcm.err.printlntncw
Dllc() +
" < :lnxl tmvcLdo50rry f:tiled: c:mnol sct 11:1ull"):
cx.printSta.:kTI',1oc();
rclum(nhc;
M
,,,I
I
'" H:mdks
crrorpcrfo.lrrn:\ti\,e.
{
121
• e"p1fOllll CQnv;:rt..ltion
• @'p:uam
nlSg KQML
~ @rctumtrueifmcu3s,c
refcrcncc
10
the ConV'Cl'SJillion
me"",!;.\!
is inlcrpr~lcd succcufully,
otherwise
false.
,/
protected book;'!n doError(Collvcr53tioll
corwcrulion, KQ~IL m~l.l) {
i(dcbut)
Syslcm.err.println{ncw
Dl.lc() +
"> ,Ul"Jc,Uruvel.doError
entered");
Convcr13tion conV '" (Convcrs:ltion) conycrll.lion;
Result r(!s = cO"".J:.ctRclultO;
i(h3ndlcBroL:crcdto.·ISG{COIlV,
rns!:, "crror"» return true;
\ry{
VtttOf
10k<:111 == ParKo('ontclll.pl.rse(Strin;:)
nlSj;.nctCOnlcnt());
Strinltcrrmis."'nul1;
for (in! i=O; i 0::: lokcnuizc(); i++) (
jf (({Strin,) lokcnS.c!clllcnIA l(i)).cqu;lI~[~noI\':Ca>.e(":crrms.s")) {
cmns: '" (Slrin,) fOkcns.e1cmcntAI(i + I);
bIT;!.k;
I
I
if(dcbuJ:;) (
Sytlclll.crr.println(ncw
D:l.ld) +
" - :lnad_lmwl.doErrvr
trrms:,;:: . - Crrnli;);
S),slem.crr.println(ncw
Dltc() +
" - lnlcl_,r.wcl.do[rror
Result: " + resl;
I
Tt:s.set[{clult\new
RcturnValuc«(\\lsc,
crrms;»);
rCJ.complctc():
if(dcbu~)
Syslcm.err.print[n(new
DJ.leO +
H < ~nl;;UrJ.vel.doError
completed");
rctumtnle;
} catch tRClultExccptioll
ex) {
Sy.•.tem.crr.prilllln(ex.,ctr-.lcn:l~:();
if(dcbu;)
SYltcm.crr.println(new
Dlte() +
"< :llllld_tr.1\'cl.doError
r:lilcd: Clnnot 'ct result");
rcturnf:lllC;
I
I
r'
• Handles
pcrfomlJ.tivcs
which
not supponed
in this cbu.
, @p:uJ.flIcon\·cf1.,1tion
rcfl'fCnCe to the Comefulion
·@;P:lr.1fl1Ill1& KQ}'IL n1(,'U3~C
:@rcwrn
true if me1'l3.1;.cis interpreted
sucC'Cufully,
othcrv.·isc
fillsc.
'/
protected boolcln doOlherPcr(orllllti\'c'l(,Con\'uutioll
COJ1\'cn..llion, KQr-.IL rus;:) {
if(dcbu!;){
S)'lh!m,crr.print!n(new
Dltc() +
"-:mlcl
Ir.l\c1.doOthcrPcrfornlltivcs:"
+ "unknow pcrform3ti\'C: " + mli:.J~,t."1Perfom\ltiv,O
+" rccievcd. llleMlJ>C is il:.norcd.");
I
rcturrt f-alse;
I
Interpretcr gCIKqmllntcrpretcr(Co!1\,clUlion
CCIl\') {
KQML m11O:O new KQMLO;
m'£,~IPlrnmclcr(":llnl:.ulJ;~".
"KQr-.!L");
rlls;'k!IPlI.rnmctcr{":ontolo(;y",
"kqml-onlology");
if(dcbug){
SYllem.crr,println(new
DJ.ICO +
" • J.llac\ tnl\'C'I,r,ctKqmlhltcrpreli."r:"
+ "bCfor cJ.llinj,\ lookuplnlcrprcl~rFor.");
122
)
In1C.~rpr~lc:rkqmlinterpreter'"
roov.:ctlmcrpretc:rPooIO·looKuplmcrpretcrFor{mIE);
ifldc:buK) (
Systcm.cn.primln(ncw
D:ltt() +
~. :macUI'.l\"CI.&ctKqmllnterprtlcr:
+ -&0' Interpreter: "+ kqmlintcrprelcr);
)
return kqmlinlcrprt'lcr:
)
Sirin: ,etAirPon{Slrin:
airport) (
if(:airpon.equllslgnorcOlKi,"NRT"))
{
return new SlrinG,{''\"(NRT) Tokyo. J:'Ipln (N\lril:."HH);
} cbc if(;lirport.cqu:als[gno~;ue("CDG~))
{
rc!Urn new Slrin;r\"(COG)
PMis, Fr3ncc (Ch:ulcs De Gaulk)"t");
} else if(:lirport.tqU3Isl&nortCIlsc("SFO"»
{
return new Slring("\"(SFO)
S1n FrJ.ncis...."O, CA. U5:\\"");
} cI~ ir{ftirpon.cqu"III~lorcC;Uc("JFK")l
(
return new Strin£(,,\"(JFK)
New York, NY, USA (Kennedy 11111)\"");
} elle if(:.irpon.cc[ualllglloreClt.l'("LHR"»
(
return new Slring(''\''(LHR)
London, En;IJnd (Hclthrowf\""):
} else if(!lirpon.cqu31s1r;norcC:rn:("HKG"»
{
return new Stritlll"\"(HKG)
Hong Kong, Hen,; Kong\"");
} else if(3irpon.equ;!.111,nord'He{~HNL
return new StrinsC'\"(HNL)
Honolulu. HI, USA\""):
}diC{
fC1Unl3irpon;
)
~Iurnl'lirport:
"n (
/I
)
Sirina III:ITimc(Slrinlllimc:) (
if(limc.tndsWith("P~I"»
(
return "\"" + time.conc3t("12:15")
+ "\"";
} elfe ir(lime.endIWilh{"AM"»
{
re!Urn "\"" + lime.cooc!lt("IO:IS")
+ "\"":
} else {
rc1umlime;
)
/I relltrntime;
}
boole:m h3ndlcBrol.ert.-dMSG(Con\'crulion
cor\\', KQ;"IL nHS, String )}Crf) (
idtcn - cOllv.getIDGt'llcrnlofl);
Strins id '" idgen.getlD();
"l:,ctKQMLimerprelcr
kqml_kqmt_onlology
kqmli c {kqml_ kqml_ontolo~y)
gCIKqmllntcrprclcr(coll\');
ir(kqmli;:=null)
(
System.err.prinlln(ncw
O:lle{) +
•.> a.nxl_lnwcl.h"ndle13rokertJi\ISG.
Could nOI fOtlnd I\:Qr..1L lntcrpl'th:r."
+ •.return fJ.lse.");
rctumfJlsc;
)
if(dcbu~)
Syslern.err.printltl{new
Dalc() +
•.> anxUr.wdh:U1dkBrokcredt.ISG.
;etKQ;"ILlnICfprclcr:
•. + kqrntil;
/I check whether this tell must be fO•..••••
·2rded to ~e
one','
/I some one asked brolerin(?
KQ~IL brokemlst:
if({brokcr1\I'i:
- (KQ!\IL)
kqmli.gC1DrokeredT3bJcO,gcl(ml;.gr.:tP'If3metcl(":in·rq>IY-lo")»
!=null)
{
II SOIllC onc :ukcd brokcrins
if{dcbug)
SYSlcm.crr.prinlln(ncw
D~lcO+
"> lI.tlXUr.l.\,cUuUldlcBro!.:cr.:-d;"\SG.
~IUST fvfWUd Ihi. pcrformali"c
:as~
123
+" rc:sponlC ofBrolcr
pcrform~i"e");
KQ~IL r\\J~b!;= new KQ:-'IL():
KQ:-'IL inncmll;=
MW KQ!l.IL();
1'1'1
inncrf!.lsg.!K:IPcrform:lti\-e(perO:
inncrt.-'s"setP"r:um:tat
•:rttei\'Cr", broker:-'Isg. gCIPlmlTleler( ~:~ndcr"»;
inncrt.h£.lctPlIr2mClcr(":]&"IU3,£e",
mll.tC'{P3rlmclcr(":I.n~~e"»;
innCh\bJ:.sctP:munClc,,":OIlIO!O;Y",
m5£.;.ttPlr"metcr(":onlolo~"):
innl."rMSJ;,.scIColltent{mlg·EetControl{»);
f\\~!l.lsg.sctPcrrormJ.li\"c("rorw3l'd");
fwdl\ IllPet P:lr:UllCler~":10" , broL.cr~ 'S£.tctPlrJ.rnclert": Kndcr"»);
f\\dhls;.setPar.tlllCh!rt":sclldcr".
nllg~clPlirlmCltl'\
":rct:ci\'cr" H;
fwdM.,.lttParamcler(":recei\"cr",
brokerMsc:.tetPararnctcr(":sen£kr"»;
rwd~h&.lctP:lrnmelc:r(":in.~ply-IO",
bro"c:r~15s.&CIP.m1n\etc:r(":rc:pl)'-with"»;
fwdMIs..sc:tPararnctcrl ":n:pJy-wilh",
id l;
(wdl\lsg.~IP.ratlll!li:r(":bn,u~",
"KQ~IL"J;
fwd~ Isg.scIPilln'lmetC.,~:ontol~·~,
"kqml-OIlioloJ.'YM);
fwdMsS_S('tContenl(inncrI\15~);
} c:uch {E;(ccption ex) {
cx.printSt3ckTracc();
)
Convrr'lItion
O;:"nllll;
1'1'1
c ""' klll.send~lcs»y(fwd~Is~J;
} cltch (SendFlliledExccption
cx) (
cx.printStilCkl"r.lcc:();
} cltch (InwllidFormluExccption
c.·1!)(
cx.printStl\d ..Trxc();
} c:lIch (In\'01Hdt.·lcsllgcScquenccExcqllion
cx.printS\;\CkTraC<.;);
} cltch (JKQMLExtcptioll
ex) (
cx.printStxkTrK'C();
)
if(c-null}{
Systcm.err.primln(ncw
D:uc() +
"< 'Ul<1CUravcl.h:l.ndkBrokcredMSG:
relurnfJise;
} cls.c {
if(debug)
Syslem.err.primin(ncw
DJtc() +
" < IlnllcUrll"cl.hlndJeBrokcf\'<I~ISG:
return true;
I
ex) {
lendin:
response menlse
railed");
ienl rClpontc 1IIe"3"C SUC«1oS1\11Iy");
I
if(dcbui)
Systcm.err.prinlln(new
DJIe() +
" < 'lIacUr;1\~l.hllndlcBrokcred'\\SG:
"of broker-xxx pcrfOrmJli\'c.
rctumf31s.c;
This mIg is not Ihe rc'I)()lJSC" +
M
);
)
Flightln(o ~rtcAlkContent{I\.Q~IL
ms;) {
V«1or tokens = ParKColllcllI.parK(Slrin:;)
miu:eIConu:nt());
Strinw.~rricr-null:
Strin; night ••null;
Strin;, dcp:.nurc: = null;
Striniarri\"al
-null;
Strine dcptTimc '" null:
(or (int i=O; i < tokctlJ.size{); i++} (
i((Strinc)
tokcns.elcmenIAt{i)).equJI!.I&noreCuc(":clrricr"))
{
c~mil!r" (Strine) tokelll.c!cmcntAt(++i);
ir(debu~)
S)'Jlem.crr.println(ncwD:uc()+
" - :m3<'1 II'3\'cl.p..1rseA,I.:Conlcnt
p..mins; c3rrier: "
+cII.rricr);
(ontinuc;
} else If «{SIring) lokcIIJ.e!cmentAI(i»).cqu:tlll:,nort'0.lIi..\":fli&ht"»
{
124
fliGht = (Slrin!;) tokerll.ckmcntAt(++i);
if(debug)
Sytlcrn.err.println{new
D11CO +
" • :m:'lcUr.t\'tJ.p:trlcAskContcnI
pll'ling: m.llt:
+ Oi;ht);
continue;
I ellc if«(Strhr:) tokens.elementAt(i)).equlhlr.noreCuc(":Jep;lrture")
(
departure == (Strin¥) lo~cns.elerrH::ntAt(++i);
if (debu.:)
Syslcm.crr.prinlln(new
DlIC() +
~. :'Inlcl_trJ.vcl.p.'I1CAskContcnt
porsinl:: deplrlun::,:" + dep3rture);
continue;
} else if (HSlrin1) loken$,f:lernentAI(i».equlIl"tnor.::CII!c(~:arri\'-:\I~),
{
:mi\'111 :: (String) lokens.etcmentAt(++i);
if(debug)
Syllcm.err.prinlln(tlc
.•••.
DlleO +
". :l.n:td_t~\'.-:J.1)3~C,.\.kC0f1knt p..'\n.ing: J.rri\al: . -.- ;mi\al);
continl/(:;
} eire if(((Strint;) tokens.ekmcrttAt(j).C<Julh.lg,nori!Ca.l~"(w:dcptTimc"))
{
dcptTirnc:: (Strirt£J tokcns.elernemAt(++i);
if (debug)
S)'tlcm.cIT.prirttln(ncw
D:ueO +
" • IImtCUr:tveJ.pll1cASkCoJllertt
plflin!:,: dcptTirnc: "r dcptTimc):
continue;
I
I
fetum new fliyJlIlnfo(cnrrier,
11i;ht, dep.Uluf\:, arrinl,
lkptTime);
I
booieJn IUlIldlcSubtcribcdMSG(COII\'ers1tion
cony, KQ~IL mig. F1ishtlnfo n:c) {
IllubKribcd
:"k...,11 Support
\':1!mU.:qm!_onto!osy
kqmli = tkqmU.:qnrl_ortlo!o;",)·)
gctJ..:.qm1!nterprcfcr(conv);
if(kqmli == null) (
S)'1l1:m.cIT,prinlln(ncwDl\Il:()+
"> :tn;\CUrJ\'tJ.h;mJlcSubscrjlx.x1~ISG.
Cuuld l\Ot (oond KQ!VIL Interpreter."
+" return f.-he.");
rctumf1l1se;
I
Vct:lor subscribcLo;;;
kqmli.g~tSulm·rjbcLo~O;
if(lubKribcLog
== null) (
SYllcm.crr.primln(new
D~Ic() +
"> :tnM:l tl1\\'e1.hlnd1cSubscribcdl\tSG.
No lublcribcLog
II return Iruc, !x'C3Utcnobody nu\dc wbseription.
rctumtruc;
found.");
I
/I somebody rn.wc lublCription! h1ndlc il!
inl subLot;Sil.c = lubscribcLo£.sizcO;
if(dcbug)
Syucm.err.println(new
DltcO +
"> IIn:w.:Ur.w;:ol.ht'lndleSubKribro~ISG.
iub."ribcLo~ size:" + subLogSizc);
ror (int i = 0; i < lubLos.Si.te; i++) {
/I check whelher lubJiCribc's conlenl is :t5k·I1!1?
KQML subl\h(; = (KQ~IL) sublCTilxLog.elcmcntAt(i);
Objl."(:t iuhContcnt = urb~hg.gcIContent();
1(suhContent
Inll:mceo(KQML)
{
KQ~IL subContcntMss
= lKQI\IL) subConlcnt;
if(subContcnIM5g.ectl)erform:ni\"cO.equlbl;no~C.u.:(~:uk.;iII"))
{
Slrin!; latl~ '" tll,o;.!>cIPJl':lrneK'rt":I:tn:u~e");
/I AnACL exptttcd
String onto = n\ll;4;etParlmcterC:olllolo~)'~);"
YcllowPagc expected
ir (!( (lubContent~ 1,.:.SctP~r.unelcr( w: Iln£ul:e~).cquJ.lsl g.norcCul.-{l:r.ng»
••
&
(iubConti.·nt/l.ls~.s.cll'~rJnletc"":ontolo~"l.cqutllll:r\ori!C(\1clonlo»)))
I
if(dcbu~
Systelll.crr.printlnlncw
D~tc() +
" > anllCUnwc1.h:mdlcSubscribcJ\ISG.
Iln~ :trrd ontulo,y
p;tir "
125
+ "O(.15I.:-ll1ofsubs-eribc
c:onlinue:
nOI rnal-eh ");
/I
lI(subscribc:(uk·l.lI
..))hzndlin,SIOIrU!!
/I
Fli&hllnfo asl..Content = paTSC!AsLCoolenl(subColllcnl~ls:);
Slrin& c::micr '" :uLConlcnl.;c:tCarrier();
Siring m~t '" ;ukContenl.gdFli,ht();
Slrin" depl.r1ur\! '" :u)..Conlenq:etDcp.lrlUri:();
Strin, arrh·,,1 '" ul..Coottnl.gc:tArrivlI(J;
Strine deplTimc: = zskContcnl.:,etDcptTimct);
if«c::mic:r == nulll"~
(iliJ;ht = null) It •. (dep.;mure"=
(:mi\'OII==null»
null) &&
t
if(dc:bug)
SYllcm.err.prinlln(nc:w
DlIC() +
> lnxUravc:l.h:andIeSubKriOe<li\ISG."
+
"no \'~lid query 1pccifioo in C(lnlCI1I of:t"'::.,,11 ofsubJcriuc.");
conlinue;
H
)
if\(rcc-lctC,uricr(J.cquzb(canicr)
(n:q;clfliJ;hl{).cqu:tlil,lli;tll)
(""'.ccllXpJ.nurc().equah(dcplnUre)
(fC4cIArrinl{).cqu;lIl(arrinl)
II (carricr
&.
c", null)).t4.
II (Ili;ht == null»)
II (dcp.lnuf(:
II (arriYJi:..= nUll»)
a:::z
null»
~&.
t
IImllch found!
IIscmlinscnrcwrd
...
SlringOuflh
content -= new SlrinJ;SuITcr();
conlcnl.appc:nd(~
:C2rricr M);
contc:nt.appeOO(rec,gctC'1.rricr();
contcnuppe:nd(:ililhl ~};
cOtllcnuppcnd(rec.,etFliiP1I());
contcnl.appendr
:ckpmurc
M):
col11cnl.:tppend{;;.:IAirPort(rcc.!ctDcp;tnure1;));
comenulppcnd("
:arriv:tl ~):
cOlllcnl.append(getAirPonll'\'(;·sctArrh·;llt))):
contcnt.:lppc:nd("
:dcptTimc ",;
cOIllC:n1.~ppl."nd( S"cITime( r.."\:.gcllXpITimc( ll):
cOntc!1l.:lppcndt~\n"};
if(debug){
S),lIclll.crr.prilltlninewD:uC()+
". In:tcUr:t\'CLh:lIldlcSuuKribcdMSG:
(lucl)' compJctoo.");
SY1Icm.t'fr.primln{new
Dlt('(.) +
~. 2n~cI tf\l\·cl.h::lOdleSubJCribcd1l.ISG: result of:"I.:·:t1l ofsubs.cribc:
~);
Systcm.crr.println(colllcnl);
)
KQl\IL Idll\lsg'" ncw KQ~IL{):
try (
Sirin, id = id;.rn.;'C1ID();
IcltJ\IsI·KIPerformllti\'t("lell");
lelll\If~SC1I·;an.mcu:r(·:srn.dcr",
sub\lst.£CIPUf\lI11Clert":reccivcr-»:
Ie 1111.
Is"set P"r~mcl'i:'r( ~:rcc(!iver-, tub1\.Is;. SCIP:lfllmtter\" :Klldtr" ));
tcllj\ lJg.tct P;lnlftletert~: in·rc:plY·lo·, JubConlcmMsC.i:,C1Pafllmclcr(·
:rcpl)'·with~»;
lelll\Is;.leIPIl~l11elcrt~:n:ply-with·,
id);
tellj\hg.setl)url.meICI\~:l:tnsuJ=c",
subContt"1l1~Is~,ctP:ll'l!.meler(":l:ln;u:\&cn);
Icllll.l f;"SCIP:trametcr{ ~:ontolQ!!.Y", subConlentJ\
he.gcI P:\r:UlIC'ICr(~:0"10 10S)''') I;
Idlj\b~ICIConlcntrr+
('Omenl +")"):
} c:ttch (Exception ex) {
ex.printSII1i:I.:TrJcc{);
}
ComcrsJlionc"'llull;
,cyt
c = knl.lemlr-.!eu:lgc(telll\I!f;);
} C:'lIC/t(ScndF;aHedExceplion
ex) {
126
tx.prim51111:kT raceO;
} catch {Im'alidForlll;\tException
ex) {
ex.primShtckT~ce();
} c,lIch t1n\"a!idt.leu~ScqucnccExC<'plioll
cJt:) {
ex.printSt3CkTf3CC();
} c31eh (JKQ.\llExccption
ex) {
cx.primS\!lckTI"l1:d);
}
i[(c=""l1ull) {
SYllcm.crr.println(new
D1ICI) +
"< an3CUf3\'cLh3nd1eSubscribcd~ISGO:
~nding leI! mcn;)~¢"+
" as response of (suh.cribc (3sk·if»f:ailcd");
cominue;
}dse{
i(dcbu~J
Syllcm.crr.prinlln(ncwDlIC()+
" < an;)cUnl\'cl.h:tnd!cSllblcrj~df\ISG():
scndins tell menage"
+" J.S response of(subscribc (lUk-if)) stll.'Cecdc<n;
colllinue;
}
} IJm!1lch round!
} cite {
/I no (lubKribc (:uk-311 ..
found, continue ...
if(dcbug)
Systcm.crr.print!n(new
Dlle(j +
"> ~mcl tr3n:Lh:llldIc5ubsc.rilK'dt.ISG."
+
"subKribcLo~,cllcme!l!AtI,"
+ i+
") is nO{(suhKribc (:uk-:tll .... ), continue loop .. ");
continue;
}
}dsc{
/I col1\ent of iubu:rihc i, not KQI\IL lI1CflAl;C. '0 continue ..
ifldcbug)
System.crr.println(new
DlleO +
" > ;l!lxl 1r::t\'cl.hlndlcSub.crilx!d;"'ISG."
+
" colllcnt-o(subscribeLo!:.elkmentAI("
+ i + ") il!lei KQ:-'IL mClu~, cotllinue loop .. ");
continue;
}
} II (or ...subs.:::ritreLog
return true;
,»
I
I
,. Flil:,hllnfo.j:m,·/
p:ld:ag,e oom.ibm.u:l.kqml!i;l.!llpk.tr::tvel;
importjl\'3.util.DJle;
importj:wl.util.H:t>1ltlbk;
prin.tc String C3.rrier = null;
priV2lc Slrint; night = nul!;
pri\'3tc StrinJ:dcplnur~=
null;
priv;,le Siring:trrivll = null;
pri\<.lle SIring dcptTimc = null;
pri,,;,tc H:uht:tblc nlmcVlluePJ.ir = new HlIshl:lble();
publicFli~l!ln(o()
I
}
public Fli;.lulnft>(Slring C;trritr, Siring flisht, Slrin~ dCp:ll1urc,
Strine ;uri\':tl, String dcptTimc) {
thiS.CMricr= clrricr;
Ihls.nlghl-m!;hl;
thil.JcpJrtuI'C = Jcp"rtlll~;
this,.m1\·J.I=
:uri\'JI:
Ihil.dcptTimc = dcptTime;
}
publicStrinSf:.ctCJrrierO
{
rcturncarricr;
} public\"oid
lCIC.uricr(Strin!;carricr)
{
127
Ihis.nrricr-carricr;
}
public Sirine ICIFIi,hIO {
return ni,hl;
}
public void lCtfliP1t(Strin:
flight) {
Ihis.fli;hlni:!Jt;
}
public Sirin, ,cIDcp:uture(J
(
return dc~nure;
)
public ,oid ICIDeplnure(Slrin£
d<:plrtureJ {
this.departure=
deplnurc;
}
public" Strine tC1DepITimc{) {
rClurndeptTime;
}
public ,'oid ,ctDeptTimc(Strin.;
dcplTimc) {
Ihis.dcplTilllC= dcplTimc;
}
public Slri", ICIArriv110 {
rctumlrri\,11;
}
puhli.: ,oid sctArri\'ll{String
arrival) {
this ..arrivlIl-;urivll;
}
public Object gC'tP:n'.lmcler(Objcct
I.:cYJ (
r.ll.lm nlln1.V.lucP,ir.j.ct(koy):
}
public Object sC1Pmmclcr(ObjcC1 key, Objc~t clem) (
return n3.meV:llucPlir.pul(kcy.
cklll);
)
)
,4
FIi~tlnroSublCrilJ('r.j:n-;t.'
p.1d:s;c romjblll.loCl."qmlumplc.lta\~I:
tmponja\,:I.ulil.·;
imponj:w;1.lI,\.\t.Tc:.xIArel;
import coll1.ibm.:ad.J..qml.';
II:.dd nOlifydi"lo;
imponj3\'3."wt.Fram~;
imponj;t",I.11\\1.Color;
pri""lc boolean forever = l".tbe;
prh',t\c long lim~"Oul;
pri".lIeFrnmefl'JJllC;
pri\',".: Con\'crcllion
cony = null;
/I n,,; for leXI eolQr eh3n;.:
privale boolean ddJ.),Fb., '" false;
IIpri""lc ObjccllcxIArc3 = null;
public FHs}nlnr,)Subscdber(Coll\'cmlion
cony, ObjlXllcxlArca)
(
SUPCr(COII\'.IC\t...I"rc3,0);
}
public FlightlnfoSubl;;"ribcr(Con\'t'rJ3tion
cony, ObjccltcxIAre:.,
Ions; timeout) {
IUPCr(COII\'.ltXIAn:J,limtoUl);
}
public FHghllnfoSub5criber(Con\'Crs3lion
conv, Objoct textAreJ, Fmrne frn.me) (
superlconv.
tcxlA~3. 0);
Ihis.fmnll: ••rrame;
}
public synchronized boole;ln h3ndlcRclull~RclumV:tlue
nil, ObjCCIIClCIArc ••.
) (
S),l\em.err.primin{">
Fli:;htlnfoSuhr.:ribcr.h:mdkRcsult
entcred");
if{nrq:.ctReturnV:tlu~O
inSl:mceof Vttlor) {
V~·::tor niSlmlnfo
- (Vcclor)rln.S-":IRclurnValu~i);
if(nigJltslnf<>.siuO:=
0) return false;
Fli~hllnfo
Oightlnfo '" !F1ishllnro)
flighlSlnro.elcllIcllIAttO);
Strin; flight '"
new StringrC:'lrrier:~
+ flishllnfo.1;.CIC:uricrt)
+
128
" Flight:" + m~htlnfi).£~FliAhtO
+"\11"+
"Dcp3l1ure:" + fHghtlnfo.get[Xp.lnureO
+"\n"+
"Arri\'~l:" + ni!hllnfo.~cIArri\'aIO
+"\n"+
"DeplTimc : " + flid\t[n(o.tctDcptTime()
):
System,err.printlnCFli,htln(oSublCribcr,hand1cRcsu[t");
Syttcm,err.println(flipt);
Strin~ oldSchedule '" new Slrin£{ (tTcXIArt::l)tC),1Aru).setTcxIO):
if(oldSchcdulc:::"
nUll) {
(TextArc:I)
ttXIArCl).ICITC)!I(nighl);
} else if(! oldSchedulc.cqulIls(niYtt»
{
(lTcxIArcl) lexIAreJ.).KITcxt(ni~lt);
if(debyFb;
faJu)
«TcxtAre:a)
tcxtArcl).scIForeground(Co]or,I'td);
-=
01",
«TC'xtA~l) IcxtArc3.).KIForewound(Color.blxk);
dcllyFJag=
!dcl3yFIIg.;
Pcrson,,1AuinNolifyDitlo!;
diag = ncw PersolllIAliistNoti()'Di:tloG(fr.lOlc);
di:t:.SI:1rt();
rclurntruc;
}
rcturnf.tllC;
J
J
/·"CjlI1Ur2\'cLllroktr.j:l\,:\"'1
pxb:e
com.ibm.ad.l..qml.intcrpreler;
import com.ibm.acl.kqnll.·;
import com.ibm.:d.facilila.IOf.F:r.eilil:ltorProperties;
import cOlll.ibm .•d.kqml!lo:lmplc.trl\\'d.F1ishllnfo;
imponj3\'J..io.IOException;
importjan
..ulil.·;
prh'3le boolean dcbu;"
KQ:-'ILMJnJs-cr.dcbu;;
'"
• v:Uillblc description
&OCShere
"
priv:lle KQ~ILM"nls.er
private Convcrt.,tion
'"
• \'3.rilblc dctcription
km;
COI\\';
CotS here
"
priv.llclDGcnen\loritlgcn;
prl\'Jtc Sirin: (.ld1illl0r:
1/ uri o(lllc
'"
• COOSl1uctt kqmUr.wC'l_brokcr
"
public: \.qml_lra\'c:I_brol..c:rO
FACiliu.torProperties
faclilJ.l0r
with 110ipttilic:d
J»r-'llicter.
f
fp;
try!
fp - new F:Kilit;J.lorPro~nicIO:
} CJ.lch (IOExceplion
ex) (
ex.printSIi\CkTr3Cc();
return:
)
f~dlil:uor = (p.;;:tOncURLt"ktp");
if(f!KilililIOr =< nUll) {
Srtl~"m,C:rT.println(~ no kip facilili'llOr found, systcm exit!M);
SYSlcm.esilll);
)
i((debug)
SrstCI1l.crr.println{ncwDllt~)+
"> Lq1l1Ura\cl_brokcr.ktjmUr:\\'cI_brokcr():
fuctil"tor uri:"
(:a.:ilil:llor);
)
'"
+
129
• Con\"e~lion
calli this method to intcrprctc
: the content orlhe r«eivcd KQ!\IL mcJS~c.
• @: ~n.1ll con\'e/Ulion rcrercn~ to lh~ Conversation
• @~ram
mig KQML mcsn;c
• !..rctum true ifmcn:q;c is interpreted succeurully.
'/
public s)'nchronittd
otherwis.c false.
boole::m dolntcrprct(ConVCl"I.llion
corlVcrs:llion,
KQMLms;)
~
i«debuS)
Syslcm.crT.prinlln(new
D:uc() +
~ > kqmUra,,·d_brolcer.dolntcrprctO:
con\' = (Convcrhtion)
com~~tion;
km" ~·onv.!D<:IKQ~IL~l:ur:lJ,;cr();
Siring perrOnnllli\'C '" ms!}scIPcrRlnn:ltivcO;
if (pcrronnali\'e.«iul1slgn()reC~uc(
"brcol.:cr':'III")) (
return doBrokcrAll(con\'crsation.
msg);
} else if{pcrformllli\'c.equ:llslgnorcC.uc("rccruit-ol1c"))
{
relUm doRecruitOne(coll\'cn:lIioll,
nllg);
} else ir(~rrOm\31i\-c.e<IUl.lsls.noreC:uc("sorry~))
(
return doSorry{col1\"Cl"ution. Ill',):
} clse if(pcrfQnnali\"c.cquJ.lslgllortC;uc("crror"»
{
rClum doError(corwCrnliQII,
I11S1:);
}clsc(
return lupcr.dolmerprcl(con
••••
nuS):
I
entcrcd~):
I
'"
• Hlndles broker·J.lI perfonnath~.
• p:lTam con\~rutioll
reference to the Convcn:lllion
• fipar1Il1 Ill'; KQ~IL Illcu:s,:c
:@n:1urntrueifmCisageisimcrprctedluCCClsfully,otherwisefJlsc.
"
protected boolean doBrolcrAlI(Crnwen.:uion
convcn:lIion,
KQML mit) (
if(dclxlSl
Syltem.err.primln(new
0:1\(:0 +
~ > \.qml_tl'.wd_brokcr.doBrokcrAIl
entcred");
KQtl.IL rtn1\ba - new KQML(};
COII\'cualion COIl\' = (CQlm:I'IJ.lion) convcl'liJ.tion;
idgcn ••OO/lv.;.ctlDGcnerl1tor(J;
Siring id - idtcn.!:.ctIDO;
KQ~IL asKJ\It:;
if(ms;.st1ConlcntO
inltlnC«lf";:Q~'IL)
(
&11.1\11: "(KQ1>.IL) Im.I;.l.ctConlcnl():
if(! Mk.\Is •. &t1Perfonnfllivo().cquaJ51InorcCIl5aeask.all"»
(
if(delxl;;J
Syslcm.crr.prinlln(ncw
Di1te() +
~ ·lqml_Ir;J,\-eI_brokcr.dol3rokcrAII:
borkcr-all conl'enlS i. not ask-.,II.
try {
rtn~IsI·"tP~rfomlJ.live("sorry~);
rtn~Is~.lCtP:uamctcr(":k.--ndcr".
m""eIPJ.rlllllelcn.":~ivcr"»);
nn1\.IJ,g..5ClPJ.r.tmetcr(":rccei\~,
mS~SC1Partimeter(":l('nder"»;
nn~lsK.5ctP.1r.tlllctcr(";iIl-rcpl)'-lo",
ms!;.),"CtPl\r:lIllt!tcn.":reply-with"»;
nn~ bg.scIP.1r.lInctcr1":ro:pl),-with",
id);
nn~Is,.sctP"r.tmelcr(~:I:tngu~e",
ml:;,1:,CtParnmctcr(":lsngu3"ic"»;
r1n~ IsS;.sctP;\rameten." :OIllO[O;y", mSI.,etPar;unctc.r("
:ol1lo[ogy"));
nn~hK.letCo\lIenl("(:crrllls,
\"cannot hlllldl~ brolcr-nll"
+
;'\s~I'&·ltctPcrf\Jrllloti\'cO+"\")");
} c:lIch(Exccption
ex) {
tx.primSlnckTracct);
I
Conn'rUli\}llc=nu!l;
10'1
");
130
C: km.Jendl\lcl13/:e(nnl
.•.ls&);
} c~tch ,ScndFailtxlExccption
ex) (
ex.printSI3.CkTnlCc();
) cltch ,lnv.llidFonnntExcclltion
ex) {
cx.printSlxkTr3CC();
} c.llch (InV3lid~Ic:ss:\~eScqut'ncc:ExcC'plion
ex.printSIKkTra.:CI);
} Cllch (JKQ~ILExccptioo
ex) {
ex.prinISlxkTrxc{);
ex) (
I
i«c-null){
SYilem.err.prinlln(ncw
D:ucO +
"< kqmUr:l\'c:I_bro\::er.doBrokcrAIIO:
retumr3.11.c;
s.cnding response
} else {
if(debut)
SYitem.crr.priulln(ncwD!tIC'()+
"< kqmUI1I.\'t!I_brokcr.doBrokcrAIIO:
relurnlru.:;
,
melnge
r"ilcd"):
!.ent T'CillOnk mCH:I\l.C .uccc.urull)''');
I
lelse{
i«debuS)
Systcm.err.primln(ncw
D.1\t.:O+
". kqmUr.l\'cl_brokcr.doBrol..crAII
broker""II'icontcnl
is not KQf',IL. ");
II)'{
nn~Is:.setPerromlrllivt1.·sorl)''');
nn~ Is!.iCt P3r3lllctcrt ":scnder", msg'I::.t!lPllrnmcter1" :n:cci \'cr~
rtn~lsg.sctP:uamcler(":recti\,l'r·,
lllil.g.ctP;,ramclcr(":iCndcr"»;
rtnf',lsg.scIParlmctcr(":in-rcpl),-to",
mli:,.\l.ctP"r.llllctcr(":rcpl)'·with"J);
rtnl\lsl.scIP<tramctcr(":rcply-wilh",
id);
rtnl\ls:.k:tPII;r:uneter{":lJn,u:.:c",IllIG·,cll'lramctcrt":lal1l:.uac,c"J);
rtnl\lsg.s.ctf\mulIclcr(":OIltolor,:I'".
mi~:eIP.1T'i1lnclcr(·:Olltolo;y"»;
nnl\'hB.lttCantC'nl("(:eITmII>
\"brokt'r-ulrs COnlc-nlis nOI KQML\" )");
} c:uch \Exctption ex) (
ex.printStxkTroce();
}
Converulion
c: null;
try {
c '" km.lcnd~k'1».&.c(nn!\"btJ;
} CllCh (Sendf:tiledExeeption
ex) {
ex.prinISt.1d. Tmcc{);
} c:lIch (Jrl\'JliJFornllIExccption
cx) {
t':<.printSIlCkTr.lCC():
I CJtch (In\alidl\ICU3.tcScqucnceException
ex) {
ex.prinISI:1d:Tmcc{);
} c;llch (JKQ~jLE:O(<<,plion ex) (
c)..printStllckTmce();
»;
I
if(c": null):
Syslcm.err.prinlln(new
Date() +
"< L.olmUr.wel_brokcr.doBrokcrAIIO:
n.'tumiallC:
} tlsc {
if(dcbugl
S)il~nu:rr.prillllnlncw
D31C() +
" < I.qmUrrncl_brokcr.dolll'OkerAIIO:
relumtruc:
,,
sendillJ; rcspouse:
fent ll:'ponlC
.1/lOci expirJliolllimc
from the content or 3sk-a1l
\'~lOrlokcns
=
Plr1CConlent.p.1.m(tSlring)
a1kr-.h~.£etConlcnt(»;
/I der~lult C:Xpirt'lliof1 time is 10 scronds
StrinliJ c'(pi~tionTime
'" new Slrins(,'IO");
fl)r (int i"O; i < loLenuizc();
i++) {
menage
U\csu:e
f;tiled");
succeurull)''');
131
i((lSlrin~
10kens.e1cmenIAI(i)).«Ju:a1s1r.no(\.--CUC(H:cxpirnlionTime~))
expirnlionTime '" (Slrins) tokens.ckmentAl(++i);
if(debu~)
S),stem.err.primln(llcYI·D;ltc()+
kqmUrl.\'el_brokcr.doBrokcrAIl
p;loflin:: cXllir.1.Iion"nme:
T o:xpirationTimc};
eontinlK;
I
W
_
(
R
I
KQ~IL rct~lsg '" new KQ~IL(); II crc:ate rcc;ruil-:lll mcs»:.c:
uy {
rel~ b;..ktPcrform:ui\"c(
"recru it.:aII
rCI~IsJ,sClrlrolrllCler(":lenckr",
mSla:o:tP.tTMl1C:tCr(":rcccivcr")};
ret~Is:"etPll'tlmctcrt":n:et"i\"cr",
f,K"iliullor);
If retMs,"seIParameter(H:in-reply-to",
ms&-£cIParJ.metcr( :rcpl)"-wilh"));
1"Ct~ls"setPlr:nl\etcrt~:rcplr-wilh",
id);
rclto.ls£..seIP.trnmelcrt":I:tn£.u3~e",
"KQML"):
rcl~ Ist.I"CIP .tmmeler(":ontolo~yR,
"kqrnl'ollto!ogy");
rct~IJ"KICOIIICnt(lUk"lsg);
} Clleh(Exeeplion
ex) {
eX.printSt:tekTmcc():
}
" Com'erution
c;
/I c'" (COII\'CTSlilion) km.send~le"3.£C(rct~lsg);
Con\'ers:uione=null;
tr)'{
c '" lColI\'crSlltion)
km.K"lldl\lc:u:\.&evctMsg};
} Clleh (~ndF3ilC"dExccption
ex) {
ex.primSI!ld:T~'el);
} e;l.Ich (hwalidFonn:UUCC"plion
ex) {
cx.printSI~kTm~);
} c:lIch (InvalidMessag.:SequcnccExccption
e,) {
e,\:.printStlCkTT3cc:();
} C;lICh (JKQMLExecption
e.x) {
cx.printStaekTmce();
}
if(e-null){
Srstem.err.println{r~w
DJ.te() +
".::: kqmU['.tvel_brokcr.do8ro~crAlllr
l('uding responte lIles~ge f:tiled");
rctumfalsc;
} clie {
if{debug)
SYltcm.err.println(ncw
Dlte{) +
"< kqmUravd_broker.dolJrokerAI!O:
K"l11 rt:!il>onse mC»lI&.e success(ully");
I/w.1ilforrcsull
Ions wlitmills = lIew LOI\g.(expiralionTimc).lon,ValuC()·
1000;
long due" SYIICm.CUrrentTimer"IiIIil()
+ w"lillllills;
long len;
Vector ni:.hll" new VCClOr();
Slrin~Bun(:r content ••new StringBurrer();
if(dcbu~)
S),stcm.err.println{nc-w
D:lle() +
• - kqmUra\'eI_brokcr.doBrokerAIlO:
w.1iling in" + cxpiro.lionTime
+ • for response
recruit-ail.·);
"hile ((len'" due - SYllcm.currentTimeMillis(»
> 0) (
c .•eIResull().WlitFor(lefi);
if(c.~IRe1u1t().ilAv3il:\blc()
(
RelurnValue nn - tRcturnValuc:) q:eIRclultO.tctSubseribcdResultO;
if (nn.bOKt))
{
iftrtn.,,-1ReturnVlhlc()
insllllccof
V •..
"Clor) {
ni:llIl "" (Ve<::tor) nn.tC1R("lurnVllluc();
fOf (int j""O; i < Oidlluil4.iJ;
i++) {
Flil:,hllnfo niyhllnfo "" (flight!llfo)
ni~htl.c1c1l1cntAt(i);
if(do:buS)
SYllem.crr.println(lIew
DJtcO +
"- kqmUra\'cl_brokcr.dol3rokerA1l0:
got Flilthtlnfo."
W
);
or
132
+ " m:!.Idng tell nles~e·):
conlcnl.!lppcndl"
:c::lrrier "};
contenl.:lppcnd(nightlnfO.J;.ctC:uricr();
conll-nl.:lppcnd("
:flithl ");
contcnl.:lppend{nithtlnfo·t<:tFlightl,));
contcnu.ppendt"
:dc\XIr1ure ");
COIIlcnl.:lppcnd{"\"" + l;ctAirPor1(Oit,htlulb.s.etlkl».rtUre(j)
contCllI.3ppendt" :arri\';\''');
colllcnt.appcndC,\H"
+ getAirPon(Oi&htlnro..ccIArri\'J.I(»
conlcnt.nppcndr
:dcplTlmc ");
COIlICIIl.!'Ippcnd(,"\ ••••
+ sctTil1lc(m~t[nrO.'CIDcptTimc())
contclll.:lppcnd("'tn");
+ ••
\••••
);
+ "' ••••
);
+ "\"");
I
I
I
I
I
id-id,cn.£ctIDO:
if(conlcnUcntlhO!'"
0) (
try {
nni\ls~.$CII)crronu:lti\'ct·'Ie1I");
rtn~'I.;.lcIP;aranlCtcti.":lendcr".
rIlSlu:,cIP!lr.1mClcr(":rcceivcr"»;
rtnt\ Isg.sctP;al"amclcr(":rc«ivcr",
Il\sg.&CIPIlr3Ulctcr(":scndcr"»;
nnMSi:.KtP:H:unelcr(":in-replyolo",
msg.tctl'llf"\!,/lICICI\ ":n:ply-wilh"»;
rlnl\ill:.scIPar;JmClcr(":reply-wilh",id);
nll"h~ICIPn.r.Ul\CI~'f(":I3I1'U;Jtc",
":mACL");
nnl\lsg.scIP:ar:J.met~r1":onlolosy",
~Ir:t\d~);
nn"ilK.ICIColllcnl("r+
conlcnt +" )");
} c:ltch (E~ccptioll ex) (
cx.printSI3CkTr3C'e();
1 else
I
{
ir(dcbuS)
S),ltcm.crr.println(ncw
Dltc(l +
"- I..qmUrn\'~i_brokcf.lloOrokcrAII:
No flil:in rL'(;ic\'cd."l;
1,,(
r1n"hlf-,lcll'crformllh'c("lOfry");
nn~ hs..~IPn.rnlllelcr(" :sendcr", Illli.£.tci P,lnltr\elcr1 ": receiver"));
rtnl\ls£.iCll'itr.llllctCr(":rL'Ccivcr",rnsuo:tl'lrJ,IIlClcr(":scnocr"));
rltll\bIPctl':ut\metcr(":in-n:plY-lo",
nl1.,.~ctPill1\mclcr1.":r('pl>,·wilh"»;
rtn.\bll.lCtPn.r.\lIIctcr(":rcply••••.
ith", id);
rtnr-.ls~.scll'ar:J.lllctl.'r(":I;mguJl:.c",
":tnACL");
nnl\lsJP('tI"UJlllctcr(":olltolo~'",
"tr:1\'e!-brokcr");
nnl\II!:.~IContcl11("(:crrmJ'
\" No flithl fOllnd.\"),,);
} catch (Exception e.~) (
cJ(.printSt.1ckTr.llce();
I
I
1/
c ••(ColI\'t:rJ3tion)
J,;m.sendMcu;lge(nnl\·lss);
try {
c,. (CorlYC'r~'lion) km.sendl\'Icu.."'I;c(rlnMfll;
} catch (Scntlf;JiledEx...~ptioo
ex) {
ex.printSti\CkTr-,lCC'{);
) calch (1rl\'atidFonnJtExcepliOfl
ex) (
cx.primSrlld.Tr:wc();
} catch {In\,:llidt.ku3s~Sc-quencc:ExttptioTl
(:x) {
e_~.printSI:l..:kTr.1cclJ;
'c:ttch (JKQl\II.E)'C'I.'plion ex) (
cx.priTltSL:k:I..Trxc();
,
if(c"'"
nUll) {
Systcrn.crr.println(lIcw])a{c()+
" < kqmUr.m~U)rokcr.dol3rokcrAll:
rclUrn false:
}o:lscf
if (debug)
sending rt'Sponsc mesu.gc railed"};
133
SYIt<:m.crr.println(ncwDJ.IC()+
" < kqrnUr~,,-cI_brokcr.doBmL:crAII:
rctumtruc;
sent
reSI)()lIlC
mcua,ge
successfully");
I
I
I
'"
·H:.,"dlcJrecruil·onel)Crr~rmlli\C:
.
• @p3~m
con\'crs..tlion reference to Ihe Con\'CfUlion
• @pl.r:lm
mit KQl\ IL message
~ r(!:rclurn lrue if /lIctSl,~C is interpreted
successfully.
otherwise
prolKled boolcl.n doR~ruil011c(Com"Cru(ion
C()[WCl'SatiC)lI,
if(debu10
SYSIi!m.crr.prinlln(ncw
D:ue() +
"> kqmUra\'cI_brokcr.doRec.ruiIOnc
entered");
(\lIse.
KQ~IL illS!:) (
KQI\'IL nnMlg"
new KQ:-'IL{);
COIl\'cl'1:\I1ol1 CQIIV= (Coll\'crs:uion) •..
'OIIV/""f'I3Iion;
idGcn - conv.~eIIDGencmlor();
SIring id" id~cn.;ctIDO;
KQI\'IL lubJ\ls; '" null; /I sublCril>c mclS~c
KQ:-'IL .ukl\bg '" null; lI:ask-311 mcsS3Sc
Slrin!:crmllg-null;
II error chcck
if(msl.,S.cIConlcnll)
inltlln.;cof •.•.
Q~IL) {
subflols:" (KQt..IL) ms~.J;cIColllcnIO;
if(! subMIS.SC1l'erfonllati\'e().cqu:tbISrlO~CJ.s.«"lubs.:ribc"»
(
crrrnlg = new Strin£l~Con1Cn1 of the ~l'nJil-(lnC is nOI sub~ribc. ~);
} else if(sub~'Is£,SC1COn1CnIO inSiancrof KQ~'L) (
:'lSL:~lsg- \KQ!\IL) lub~bg.getConteIlIO;
if(! '\lk~bt;;"ctPerfunnJ.lh't'{).cqu:llsl~nortC.ue(~l1Sk-311"»
(
crnllSi -= new StrinCl"Contelll ofs.ubscribe of the recruit-one is not"
+ ~ Uk·311. ~);
} else (
1/ (I'C'Cruil·otlc (subtcribc (uk-all ..») is OK.
)
) clsc {
errmsg - new Slrin~"Cont~nl
of subscribe of the rocruit-onc is not"
+" KQML. ~);
)
} ebc {
emlllg - new Slrinllt"Conlcnt
ofth\! recruit-onc is 1\01 KQtl.IL");
)
if(crrtm,!::::
lIull) (
if(debu;)
Syslcm.crr.prilltlntncw
DJ.leO +
~ - kqml.-'~\'t'I_brokcr.JoBrokcrAIl:
borkcr·:l1l conlcnts ii; ;lIv~lid\::
+ "re:lSoo: " + crrmsg);
uy{
nn~ls,"selrcrform3Ii\'c(~S()ny");
nn~1s~.5eIParlmclen.":scndcr".
msg.~IPaJ'l.lllelcr(":recch'Cr")};
nnl\b,.lcIPar.llllctcre:rC1:ei\-;:r".
ml,.getP;a~llletcr(":~ndcr"»;
nn~!t,.sctl'.lramctcr(":in·rcply-lo".
mS:;.tC'lI':lr:lmClcr(":rcply-wilh")t
nn1lo1~g.sctramJJlctcr(~:T('pl)'-with".
id);
nn~1sg.ICIPI\r.llllelcr(":hmgual::.c".
m,uctPar:trnetcr(":lan,u::\J:.e"»);
nn 1\ I 51. sc(ParnmetC'r( ":Olllolo:y". ms,.gct P('lr.UllCICr(":ol1lolog,y" ,,;
nn~b~.seIConlenl("(:crnnss
\ ••••
+ ;;-rmlSS + "\~)");
} c01tch (Exc(plionc:t)
(
cx.primSl;1ck Tmcc();
I
1/
/I
Con\'tnltioll
C;
c ••knl.lcnd~ IcsS:tt,c(nnMs!;);
Com'1:rsOltion C = null;
try {
"
134
c = knl.Scl\d!'o.tcu~!;e(nlll\!JS);
} CllCh (ScndF:tikdExceplion
ex) {
cx.printSlld;TrtKX:();
} cllch (Invl1idFormltExccplioll
ex) {
cx.prinISI:lclTraccO;
} c:ltch (1n\·J.lidl\lcul~cScquenccEn,,<ption
cx.printSt:u:kTri)Cc();
I cllch (JKOt-.ILExccptiOIl
ex) {
cx.printSI:I;;:kTr3Cc.'{);
)
if(c=null)
{
System.err.prinlln(ncw
DateO +
~< kqml_tT.we1_brokcr.doBrokcrAI1():
return r.~I3.c;
}dle(
iqJd)u~)
Syslem.crr.primln(ncw
DJlc() +
"< kqml.)ri\\-d_broker.doBrokcrAIIO:
return tTUC:
J
c.~) {
ICndin.g respontc
sent respollie
mC5So.'1SC
mesuge
("lied");
succcssrullyM);
I
Vector tokens'" P:trscConttnt.p;,rsc({String)
ask~hs.g.ctConlelltt»:
Slril\f:, cl'lTrier= nul!;
String c.micrURL:::> null;
for(im i=O; i < tol..cns.si:tc(J: i++) (
if«(lStrinsllok(''T\.\.cJclllcntAt(i)).cqu:lls's"orcCJsc('':c:micr~))
(
c3.rricr::: (Stringllokcns.ckmcntr\I(++i);
if (debug)
Systcnl.err.prilltll1(ncw
D:1t',() ~.
" - kqmUr1vcJ_broker.doIV:cruitOne
p:1f1,inS: c;trricr: "
tc~mi",r);
continue:
,
I
if(carricr == twill {
if{dcbu:,:)
System.err.println(n..:wDJ.1<."()+
"- kqm'_lrJ.vcJ_brokcr.doRccruitOnc:
cJ.rricr nOI detccted in ~ +
"oontCn( ,,/ ,'~IHlrll'er(orm;l1 iv\!." \:
try {
rtn~ IIi:. ,~·t P~r fllrmJ.l i\"C("sorry"};
rtnt.h-g.K'"tr'.lr:lmel\~rt":s<:nJcr". rns:;.;ctP:lramctcr{":recciver")I;
rtn~I$.&.selPM:tll1etcrt":ro:cein~r'·.
nlSg.I,tr:tP.lr1metcrt":scndcr");
rtn~ hs;:.~cl P:u""."Imeten.
":i n- rep! Y-IO". tlIS&.J:t.1Pnrltl11eh.'-rl" :reply-wit h"));
r1n~lsg.5dI':lr ..'hl\eter(":rcply-wilh",
id);
r1n ~ Isll.sctPar:lI11ctcrt ": 1:111
gIH'lSl''', Ill,.g..set P aT."ImClcrt ": 1anSun;:.;;"));
rtnl\ hg. ~..:tPar .unctcr( ":01110 logy", m5;.getP."Irnmclcr("
:ontology"»;
r1n~lsS.seIC"')l1Icrll("l:crrmsg
\"no carrier J.pe(ified in contenl.\"
f);
} c."ltch (E;..cepti~)\l ex) {
cx.printSt,KkTr:lCe();
}
1/
Com-en:ttion..:;
COllvcrs3.tion c"'null;
\ry{
c = km.scnd:-.t.:sSlg~rtn/l.h&);
} c:itch (Scndf!tiledE:\ceptioll
eX) (
CX.priIlISt!'k:\.:Tr3.cc():
} catch (lnv:11idForm:lIExccption
cx) {
c){.printSt-'ClTr.lCC();
} c:ltch l[llv"'idi\leuJ.~cScq\lenceExccption
cx.prinISta.:~TrncI!O;
} c"t..:h (JKQlI.1LExccption
cx) {
c){.printSI:lcl Tr3CC();
}
if(c"''''l1ull){
ex) {
135
S)'1tcm.crr.println(new
D:lleO +
< l.qllll_l~vel_brol.:cr.doRttruitOnI!'O:
"+
" sending rcspomc meslage (:tiled");
rclurnf.tlsc;
} cls.e {
if(debug)
Syslcrn.crr.primln(llcw
DaleO +
" < kqmUra\,d_broker.doRccruitOnt.'{):
"+
"lent response IIlCU3g,C sUCCCSJrully~);
rtturntruc;
M
I
I else (lIiflc:micr-"'null)
KQI\IL ukOnc'"
new KQML();
ir{deb\J~)
S)stcll1.err.printin(ncw
O .•I<.'() +
" < kqmUr;l\'cl_brokcr,doRlx:(uitOncU:
"(:'IIk-one LC (:n3mc
H
+
" + c:uricr
+" )) Clc:lled.");
'0'(
lukOn\:: .H~I Perf onn:1I iYe'( ";'15\;:-one");
ukOne.~tl'J.rnmclcrt":scndcr",
msg.cctp.uamCRr(
":~ciycr"»;
IlskOnc.!CIP:l.r:llIlctcr{":rcccivcr".
(1ICilitnlor);
ukOnc.k'IPammClct(":in-rcpIY-lo",
msucIPlI.r;lmclcr(":~pl)'-with"»;
:ukOnc.scIPilramcterl":rcply-with",
id);
ukOnc.SC1Pammctcr(":13nsu:tge",
":.1nACL ");
:askOnc:.setP;v3mctcrt":olltulogy",
Hli(I!Cyclc");
askOne.lCtCOnlcnl(~I:nanK'
~ + c:\rrier +" t);
} c:!.tch (Exception ex) {
C'x.prill\SI;tckTr~):
I
1/
1/
id- id.cn.l:,c:lID1,):
Con\'cl'$:I.lion c:
C "lConvcn':lIion)
km.~lIdMCf,S~e(a.sl.:Onc);
COII\'cf1:tlion c :;::null;
'0'(
c:;:: (Coll\'crs:!Iiun)
km.send~less'-S.e{3iI.:Onc};
} c:tlch (ScndFailcdExccption
ex) {
cx.pdmStl\<;I.:Tr~);
} C>ltch (Inv;,lit!rvrm:ltE\,ccptioll
cx) {
"'·llrimSI:lI.:kTmtc();
} c:tlch (In\',,1iJ~leU3!>c:ScqucllceExlXption
ex) {
cx.printSt:tckTr~cO;
} CJlch (JKQi\II.Exceplian
ex) {
cx.printStx\..1hcc{);
I
ir(c==null)
(
Syslem.crr.println(nL'w
D:tteO +
" < kqmUr:wcl_brokcLllof{ccruitOne():
"+
.•Knding :ul.:-onc mCS13g.c (itiJcd
I\:tum(JIk:;
} elte{fli((c"''''llull)
(
ir(tkbu!:)
S),stC1n.err.printlnlncw
D31c() +
..< I.:qmUravcl_brokcr.doRc-cruiIOne():
.•+
~Icnl.uk·onc
mc»3&c 11I<x.'curully~);
If ••••
71il for Ii(d:ycie respon~
c.gI.1Rciult().\uitFort,IOOOO):
If 10 teconds ••••
'3it
ir(C·CCIRcsuIIO.isAnil:tblc(»)
(
RcturnV:tlue nn ••(f{C:lumV:l!uc) q~cIRcsult().tctR«ult():
ir(nn.~i.'IRclurnV:\luc:{l inst:tnceof Asclltlnfo) (
Atentlnfo ;"g.cnl = (Agcmlnro) nn.s,etRcturnV:'Ilue{):
c:mil'rl'RL
= ag.(!nq:(;IUI~L();
ir(dcbug)
System.crr.println(new
Dllli.) +
" -< kqmUr.t\';:U)ro\.:cr.dnRceruitOnc():
., +
"tell oraslr.::·onc r~"'Ci\'ed: URL:· + c:lrrierURL}:
ft
);
136
I
ir(c:.rricrURL""'"Ilutl){
if(dcbu~)
S)"Ilcm.crr.prinlln(new
DaleO +
"- L:qmUnvcl_broL:er.doRt.'CruitOne:
c3rTier URL not resolvcd. M);
1')'(
rtnMsS·«tPttforrn
•.•.
tivc(·soo,y ••);
nnMsg.scIJl"mlll('tcr{~:'cndcr".
I11sg.,etll:lrJ.mclcr(":rccciv-c:r"»;
rtn~Is;.I.:tI}:Ir.'ImCI~r(":rc.;ei\'\:r",
msc.,eIP~r2mctcr(·:scndcr"»;
rtn~lsH.iCIP.U'''meler{":in-rcpIY-lo",
mls.;cll':ualllclerl
":rcjl'y •••••.
ith·);
rtn~hg.sctP:mlmelcr(":n:pl)'-wilh
.••id);
nnhlf&.sCIP •••.
rotlllClcr(":I"'nc.uJ.G.C", lIug_tL1P.:tr.lIllClcrI,":lan;u:lIGc"));
rtni\"'.ICtP~r:trnclcr(":onloJogy",
msg..gcIP:uIIlICH.'1"(M:onlolol:)'"));
nni\lsll,K1Conlt'nt("(:crmlSS
\"cllrricr URL C:II1I\OI mol\'w.\" )"1;
} c:llch (Exo:eplion ('A) {
ex.prilltSlad. Tmcc(j;
I
c
=
(Convcrs:uion)
km.scndp..ku3,go(rtn!\-bg);
II)' {
c - (COllvcfI",ion) Iml.l('mJ!"'lcn3l:.e(rtn~'IIg);
) c..nch (Sendf:l.ilcdExc~plion
ex) {
ex.printStackTnK'C!(};
) c:uch (In\'''lidForrll:lIExc~rlion
ex) (
ex.prinlSI~kTrnce();
} C31ch (lm'31idMcsu,l:,eScqucllCcExccplion
cx) {
cx.prinISllid. Tm.:e();
) C31ch (JKQ~ILExccplion
ex) {
cx.prinISllld ..Tt3Ce();
}
if{cl::.Zllum {
Systclll.crr.println(ncw
Dale() +
~< L:qml_Ir3\~I_broL:~r.doRC'CruiIOne():"
+
"sendin;
respons~ rncJ,J3:e failed");
returnfJ.isc;
) else {
if(debu£)
SYSlcm.crr.primilllnew
0;\1(:0 +
"< I..qmUra\'CI_broL:er.doRocTlliIOnc();"
+
"sent ~ponlC
nlC1s",c succcufull)'");
rcluTIllrue;
}
} else (/I iqcarricrULR
c-"<
nUll)
KQ1-.1L f••••
-elMs!: ro new KQ~IL();
iqdebug)
S)'Ilcm.crr.prilllln(ncw
DateO +
~ - kqml_lr.n ei_brol:cr.doRecruitOne:
forward subtcribe ,""-all" +
"mcuageicnding."j:
try (
fwd~ Is!:.sc[ PerfonnJ.t iyei,~forward");
(wd/rllsg.KIPar3metCT(":to".
c3rricrURL);
(wd~ls,.scIP;munclcli.":rrom",
msS-,CII';tr:lnIClcr{":S4..'ndcr"J);
fwd~ls~.scIPa.r.ullelerf":n.'CciYer".
c;mierURL);
(wd~ls£.scIP:lrllmclert.":scndcr".
ms&.gt1Pi\ranlctcr(":rccci\·cr"»);
fwd~hJ:.sctP"r.unetcrt";rcpl)'-with".
id);
fwdl\II"ieIP:m\lllct~r(":l:.\ngu,~~c~,
"KQ~IL ~);
fwdl\158.,cIP:tr1lmctertM:oJlloio,)'~,
~kqmi-onlol0.Y");
fwd/\. hl,;.fCtC olll~nll~ub~ Isg);
sllbl\lsy.ICIP;tt-alllctcr{M;recti\·cr",
c:micrURL);
If I should h:tlldlc ncsted subJcribed pcrforllllll\'c ...
«KQ1-.IL) subl\hS·gcIC(lntcntO).sctP:tr1'mcler(":~ci\'cr",
clrrierURL);
} ctlh:h (Exccplioncx)
(
c)(.prinISI;tckTr:we();
}
c" (ColI\'crs:Alion) km.scndl\lesugC((wdMs\:);
I')'{
c.., (Con\'erntion)
knl.lcnd"less..,!;.C\fwd"ls~);
} c.:lIth (ScndF~ilcdException
cx) {
C:X,flrintSlad:Tmcc{);
} c:ltch l!nnlidForm:lIException
ex) {
cx.primStsckTf3CC!();
} c;'Itch (lrwalid!\lcsJ:ll.cScqucmxException
ex) {
ex.prinI5Ild •.TrnceO;
} C31th (JKQMLExceplion
ex) (
c"(.printSlxkT~O;
l
if(c = nUll) {
SYSlcm.err.primln(ncw
D:ucO +
"< k(IFl1Ur:wc:l_broL:cr.dolh.'CruitOnc(l:
"+
" knding forwa.rd menage
rttumflllse;
flikd");
lel ••(
if(dcbu~)
Syslcm.err.prilltll1(ncw
O;llc() +
" <: kqrnUravcl_brokcr.dolkcruitOncO:
"senl forwlrd rn{'nJ~
rctumlruc;
I
I
} II if(C2rricr
..
"+
luccessfully"):
"'••null)
I
/
• 1·1:\l1dlcllOrry perform.uive
.
• @p:u,,1l\ con\,~I'1:\Iion rtfcrence 10 Ihe Con\,crs •.
\Iion
·@p;mtm
illig KQ"IL rncu:\!:c
:@.I\.'tunltrueifmcsJ:lteisinterpretedsuccessfully,otherwise(:2I5(.
protl.'Cll.-d boolean doSoI1)(Collvcrsalion
cOlwcr\:uion, KQ~ ..IL Illss) (
if (debug)
SYllcm.crr.prilltln{ncw
D:'ItcO + " > kqmUr.:wcLbrokcr.doSorry
entertd");
Corwcrs:ttion call\, '" (Co/l\,cfution)
convel'1ltion:
Result res = cOI\\'.,cIResult();
1~'{
Vector tokens" I'III"KContcnt.parsc«(Strint;)
rmj;.1:.ctContclltO);
Srringcrrms,,-null;
ror (illt i=O; i < tokcns.si:r.c(); i++) {
if(((Strin~) tol..cnl.clclIlcnIAt\i)}.;,.-qu:tls[t:.norcCJ.S(";crrmsy·'»
errtllSa "lString)
tokcns.clcmentAr(i + I);
brcJ.k:
I
I
if(dcbu&) {
S)'lcm.erq>rilllln(new
OJtcO +
" • I..qmUr.wd_brokcr.doSorry
crruIS};: " + emus,);
System.crr.printlnlncw
D:'IIc(} +
~ • kqmUr.wc\_broker.doSony
Result: ••+ 1\."");
(
l
res.ICIRct:ult{ne'W
Re1ltrnV:lIuc(r"lsc.
crrms.gl};
1'\.'1.complctc():
iildebu.)
Syllcrn.crr.prinlln(llI:w
D:llcO +
~ <: kqmUrnvel_broker.doSorry
completedM);
rclurnlr\le;
} c:ltch (RctuhExceplion
cx) {
SYllcm.crr.prinlln(cx-i;ct1\!cU-;!I;e());
if(dcbu,)
Systcm.crr.println\ncw
D:\I\:O +
n < kqmUr:wcl_brokcr.cloSoTry:
ResultExccplion
cx.~ctt.lcss~r(»;
Tclurntrue;
I
C~u1:..ht."
+
138
I
/"
• !-I:\ndJcs error IX'rfOrnIJli\'t~.
·@p;tr:tmccl1\'ttUlion
reference 10 the COII\~I"I.,tion
• @'p:tram milt KQML mcn."s.e
~ @relUrn true i(l11cn~c
is interpreted Iu'-'."'Cslfully. olherwi~
fibe.
,/
protected boole:tn doError(Com'Crs;nion
COIIVCrtllion. KQML nn~) ,
if(dcbuy)
S)'Slcm,err.print[n(nC"lY
DaleO +
"> kqmUr.tvc[_brokc:r,docrror
entered");
COllvcl"I:uion cony = (Com-crs,.,tion)
COf!VCI"I.1tion;
Result res"" ,onv.gcIRclult{);
loy I
V«tor tokens = P:uscConlcnt.p.lrtt'(JSlrin£)
msa,:..t.CtCOfllcnIO);
Sirin; crnllll=
null:
fur lint i=O; i < coken5.lizcO; i++) {
if«(lSlring) lokcns,c1cmcntAt(i)).equloI!llj;.norcCasc(":errnu&"Jj'
c:rrms~ = (Slril1l:;) lokcns,clemcntAt(i
+ I);
break;
I
I
if(dcbu;.){
Systcm,crr.println(ncw
DallX) +
• • kqmUr.wcl_brokc:r.doError
emnsg: • + crmlS;:);
S)'Stcm.err.primln(ncw
D;JlcO +
• - kqIllUl'avd_broL.er.doErrnr
Result:·
+ res);
)
reuctRcsull{new
RelurnVillue(f.llse.
emnsg));
Rs.complc1e();
if(dcbu.g)
SYSlclI1.crr.println(ncw OJIc() +
• < kqml_tr;t,·cl_broker.doError
completed");
return true:
} e:llch (Re5ultExccptioll
I.'x) (
S)'Stelll.crr.println(4:x.l:;ct1\lcsJ3Sc(»;
if{dcbu~)
SYSlcm.crr.println(ncw
O;"lICO+
"< kqml_tr:1vcl_brok(Or.doError:
RCtu!tExocplion caulghl." +
cx.gc,I\leul1.g.c(»;
rClurnlruc;
)
)
/
..
.• Handles ~rformati,~s
COfI\·CNiation
msg KQ~IL
truc ifmcn~c
whieh not supponcd
~fcrellce
in this chi".
to the Convcmtion
1lll"U.."\gc
is interpreted
succt"fully.
otherwire
fJ.lse.
'/
/'
protccted boolean doOlhcrPcrfonn:uives(Convc:!rutiofl
com·cn:uion.
if(dlbuyl(
SYSlcm.crr.priI1l1n(ncw
Dalli) +
•• kqrnUm\'cl_brokcr.doOthcrPcrfomlntivcs:·
+ "unknow pcrfonmlti"c: "+ mse-;cIPcrfornll.livC(j
+ rccil'\'cd. 1I1ClS~gc: is ig.nored.");
ft
I
f'Cturnfulsc;
I
'(
String g.c:tAirPon(String
:lirpon) {
if(l1.irport.cllllnlsli;.llor.:CaKi,"NRT"))
(
n:turn nC'o'l' Slrilli:t',\"(NRT) To~')'o, J:tp:,m
(N:lrilll)\"");
KQ~IL 1111;) (
139
} else if(3irporl.cqu:!.lslplOrt"C:Uc("CDG"))
{
return new Slrint("\~(CDG)
P:!.ris, Fral1C'C(Ch:.rlcs Dc G:!.ullc)\ ••••
);
} else if(:lirport.equ:tlsl~loreCllsceSFO~»
{
return new Slring,"\"(SFO)
53n FrnnciKo, CA, USA' •.••
);
} cI~ if(:l.irport.cqu;dsl~no~CMc("JFK"»
(
rclUm new Slring("\"(JFK) New York, NY, USA (Kennedy Inll)\U);
} else if(llirporc.cqu:tlsl;.noreC:ue{"LHR"»
{
f'C'IUnl new Slrins(',\"(LHR)
London, Engl:md (HCJlhrowi'·~J;
) else if(:.irpon.equ:J\sl,"orcC:m:("HKG"»
(
!'\:turn new Slril1J>(."\"(HKG) HOII~ Kons., Hong Kong\U);
} clec ir(:r.irp(lrt.cqu:d'I;J1on:C:as~.'("HNL"})
(
return new Slrinc("'"(HNL) Honolulu,
HI, USA\"");
} else (
return airport;
1
1
SIring ~eITilll'iSlrirl8
time) {
ifllimc.cndsWith("P~'''))
{
return "\"" + lilllc.conc:tl("12:1,5")
+ "\"";
} ct'<: irltirl1t~.C11ds\\'ilh("A~'''»
{
return "\"" + timc.eone;'u(" 10:15") + ~''''';
) cit<: {
rcturntimc;
1
1
1
I" Ptrioll~IAuiiil.j;n·:t"J
pxk:1gc com.ibm.KI.kqmls."lmplc.tnwt:l;
impon l.'Om.ibm.:ld.kqml.·;
impon com.ibm.:KI.ril('ilil:ltor.Facilil:llurPropcnics;
imponj,wa.la.nt-·;
irnponj:tvajo.·:
irnponj:w:l.nct.·:
imponj:l\'3.Ulil.·;
'"
• This ~nt
has the rer •..rencc of KQMLM:ln:lt:,cr.lhis
• KQ~lL·SIK':lk:lblc.
"
pri\':lle
,,,
KQ~'ILM::II1:1&cr
lJ.l:Ul:l\:.cr;
·~cntn:Il11C:
"
pri\':llc
Strill}; ag.:mN:ullC';
'"
• local hOllll:l.OlC (kIp fonn:a!)
"
pr;v:uc String loc-:1I1·losl;
'"
• f~;litator
ilddreu(ktp
"
priVo\lcStrin:
(onnat)
fltCilitllor;
'"
• lil\"'C)"C!CID
"
priv.lIc Strin,lircc),clcID;
I"~
• )'cllowl>a;.c1D
"
privlle String rcllowp;tgcID;
'"
·rnl1lc
"
priV:ltc Pcrson;llt\uiSltr:unc
'"
• (TI1tllC
"
frome;
:\tcnt is
140
pri\':lIC PCrJoIIJ.1Scl«tW;l\dow
sdeetWindow;
'"
• port number
"
private inll>Ort;
'"
tTfIl\'clBrokcrAddrcu
"
,.,
priv'3.lc
SlringtravelDrokcr;
• COllilructor
• @p:mllll
port socket I>on numOCr.
"
public Pcrson~IAn;SI(int
Ih;l,port'" port;
FacililllorPropcnics
portH
fp;
tl)'{
fp '" new Facilit<llorPropcrtic1():
} catch UOExceptioll c)t) {
c)(.prinISttlckTr3C-Cl);
return;
)
ftlcililJlor = fp.gcIOncURL("klp");
if(r.lcilita!Or==
null) {
priru(" no kip f:lcililalor found, 1)'SlclIl t'xil!");
SYit¢nI.c.xit(I);
)
~cntN:\ll\c::: new 5IrinJ;("Pcl'loll;\IAnisl");
print("port" + port);
try {
InctAddreu
home = InctAddreu.£cILoc:lIHOlIt);
Strin&BuiTc( bur= new StringBuffcr("klp:/r);
buf.!1ppcndfhome.£,(1J-iostN:une()
+ ":");
bur.:tppcmJllnlc~cr.toSlrin&(port»;
loc31Host = new Slrinl,O(burJoStritlSO);
} c::uch (UnknownHoslExccplion
e) (
S)'1.1em.crr.println("Unkllown
H01IN!1!l1c"J;
/I
Syttcm.c.'l:il(1);
)
ir(-I !""pon){
kM:Ul~cr = new KQ~ILManlJ,;cr(:l.S;::nlName,
(mme = new pCf1()rll'AUisIF~mc{lhil);
fmmc.lho\,.{);
{/sccn.uio -(35)
lCtRegilterL{);
/I sccII:\rio -l2~')
sctAsk3I1Vl);
I
public KQ~IU.llln:t:Cf
rcturnkl\[J.113g.cr;
"lop", poOl;
£ctKQl\ILM:I.n;t,ge-r() {
)
public SlrinS sctTT3\,clBro!:cr()
return trl.\'clBrokcr;
{
)
public Siring gi.'tl.oc:tIHo110
return IOCllHoll;
{
)
'"
: Jhowfll~hISch~llllh .•clIU"d by
"
fll:fKllllll •.•.•
ultfrJ.me.
public \"oid JhowFlightSchcdulC\Flightlnro
prinl{"timc Khcduk ");
printl"c:lrrier
+ fln(o.,SctC:uricr(»;
M
flnfo. int expirooTime)
{
141
IIprinl(~nidll
prinll"dcp3r1Urc
prinlr:mivtll
print("dcptTimc
prinlt"ExrirtdTimc
.•+ nn(o.);
.•+ nnfo,£ctDep:lrturc:();
.•+ nnrO.tctArti\,1I1());
.•+ nn(o.tc1DcptTime());
.•+ expircdTime);
if( nnfo.tcIArri\'3.10.cqu:lh("lNRT,Tokro,
nnfo.scIArriv31("NRT");
} else if( nnfo.;ctArriv:!.IO.equ:lIs(',\CDG)
nnfiucIArriv31l"CDG"):
} dsc if( nnfo.i:,CIArriv31().cqullse(JFK)
tlnf').IcIArrivJI("JFI.:.");
Jlp:tn",)
(
Puis. Fr.tnce~»
(
New York, U.S."»
I
if( nn(o.~(:IDcplnllrc().cqu:tlS("lNRnToi..)'O,
nn(o.u,Dcp.'utufC\"NRT"):
} elK' if( nn(o.GC1lXp:lrlurc'().c<\u31tl"(CDG)
t1nfo.tctDcp3r1UI'd,
"COG" J;
} elle if( nnfo.l,;.eIDcp;lrtlln:O.cqu(\\s\,'(JFK)
nnfo.lctlXp.,nurc("JFK");
Jallan",)
{
t
Pari" I'moce")
Ntw Yorl,
{
U.S.")
){
I
IIsccn:uiol:!-3)
Vc<:lor :airLineCandidltes
= sclBrkallAsbllTtllnfo,
if{llirLincCrmdidM,,:s!=llull){
IclcctWindow
- ncw Pcrson:llSclccl\vindow(lhis,
} clsc {
SYIICIll.CrT.princlnrno
result l\.."'Crl3rio(2-3n;
cxpircdTimc);
:tirLineCandid:ucs);
I
I
"'
- Person:llAuill:ml
-l«nario(J.5)
rtt;.isCe:r on LifeCydc
"
rrivate: void sctRe~jsterL()
{
KQML kqml <K new KQMLO;
Slril\, rw" new Scrin.t{kf'.·bnaser.g.ellniti311D(J);
kqml.ltt Pcrfornl3C ive{ Nrcti"cr~);
kqml.sctP3r:UllClcr{N:n3mc",
a~ntNilmc);
kqllll.~IPni.\meterl..":kndcr",
IOC3IHosI);
k(jml.sctP3ramCler(":r«ch-er",
(l\Cilillllor);
k:qml.lttPnr.:uneler(":reply·wilh",
rw);
kqml,lcIP:tr:mlc'{'((":I:lniU~CH,
":1IlACL");
kqml.s.C:tPnNUllclcr( ":onlology".
"tif«yclc");
k<1I111.SC1COtlICIII("(:cllu Pcrsol\J.IAuisllnl)");
Con\'crs:tlion
con\," null;
'')'1
(Con,'cr1:1.lion) kM3n,,!er.5cnd~len3ge(kqml);
} C31Ch lScndF3iktlExCC]lIion
ex) {
cX.priI1lSIIle\.,Tr:"l«O;
} eltch (In\':"IlidFonn:uExccption
ex) {
cx.printSlnd.. TflICc(J;
} c:uch lln"J.l1d~·les~cScquenceExccption
ex) {
cx.printStack:1"r:k-e();
} c:ltch (JKQI\ILExceplion
ex) {
ex.prinISt.:"lckTrntt{);
I
con\,.gcIRclull().w3itFor(45000):
Result res "" oonv.&ctResu1tO:
if( rcs.ilA\'Jil.:"1bIcO) {
RcturnV31uc
nil =IRctumVl'Ilue)res.gC1ReJul1{);
irlrtn.i!OKl)){
lifccyclclD'"
new Strit~tString.)nn.:eIRC'lurnV:\lucO);
print("rcGiucr:"
•.lifC(}·c1c1D);
) clse{
S),Slcm.crr.prinlln("JCIRcsisti.'rLO
:Error in rcgi~t(ml
Syslem.crr.println«Strins)ctn.l;ctRelurnVJluc()\;
proceu",;
142
Syslcm.cxiu,-I);
)
} elsc {
Syslern.t:rr.priOllnl~setR('&iltcrL{)
:Error Retull iSn'11\'3ilable");
/I
SYllcm.cxit(·I);
)
I
'"
• PCI"IOf1:aiAuiI3sk-a1l yp on Ycllowp:s:~
• scenllrio(2-n
'(
privatc void KI .••.•
sbIlY(j (
KQ~IL kqml::: I1('W KQ:\ILO;
SIring rw II: rlCWSlril1gtkJo.I3n,,~r.g~llnitj:sIlD(J);
kqml.1CIPcrform3tive("3sk':'Ill");
kqml.lCIP3rnmclcr(":n:lI11e".
"t~ntN3.mc};
kqml.KtP:munclcr(":ltntkr",loc\llllnst);
kqI111.lCIPammctl'r(":recci\'Cru•
fllciJilllor/;
kqml.scIPl1rnmClcr{,,:r-cply-wilh",
rVl);
kqllll.sctParmnch:r( ":llItl.ll:U;\l:.C", "3n,~CL");
kqnll.sctP3rnmclcrtM:onlol~",
"ycllowpl:es");
SIring COl\lenl ••new ~Iring(
"(:c;ucl:0ry
Inwd"
+'~'n"+
":lubCalc£Ory Ir3sd·broker)"
);
kqml.k1Colllc11I(contcl1Il;
Conversation con\' '" null;
try {
cony =
(COIwcrs:llion)
k~l:\n:tgcr.lcndr-.lcsusc(l:qmIJ;
} c::Ilch lScndF:r.ilcdhccption
ex) I
cl(.printSlad.Trxcl):
} c:!.Ii:h (In\'3IidFonnat[).ccption
~x) (
u.printStackTra.:ct);
} calch (In\'alidi\kna};cScqucnccE.\ccplion
e.,<) {
cx,primSlxhTroccf'r:
} catch (Jt-.::QMLExceplion ex) (
cl(,prinISllcLTr;w;e(l:
)
COIl\'.,CI Rcsu 11\).\\ .lil r: 01'14.5000);
RClullrcs·cClllv.£etRcsllh();
ir(~jsA"ailablcO){
RClurnValuc rtn '"' lRcturnValuc)rci.SctRc,u!tU;
if(rln.isOt-.::()
:
.,,&cl1llnfo ~clliinfo '" new A~cnllnfo();
Veclor :t&cnllnfos = (Voclor)rtn.;cIRctumV3IucO;
EmnncrnllOn enllnl = 3gcnllnfos.clcmcnts():
.•••
hilc (clltull.hasfo.loreEkmcnuO)
{
3&cminfo = (AtcnllnfiJ}cnum.ncxtElcmcntt);
prinWNmnc
: ~ + 3ttnlinfo.:cIA;entN:utlClI
1;
print(~URL
:" + a,!;cntinlo.setURLO);
prinWCI;lilN:\lllC : " + 3gentinfo.tetCluIName()}:
1r.\Vcl/]l'ul;cr'"' ncw Stringtagentinfo.£etURL());
)
}cJ5e{
S)'Itcm.crr.prinlln("SCIAlbIlYO
:Error in :"\;'::111 pcrformJli\'c");
Syslclll.crr.println(lStrillg)rtn.,£ctRetumV31ue(»;
1/
SYllcm.cxit(-I);
I
) C:lsc {
SYSlcm.err.prilltln~"lcIAsbHY()
)
I
'"
, sccn:trio(2-3)
:Error Re5ult isn', :anilnblc");
143
'/
pri\':ttc Vector IC1BrkJIlAsbIlT{Flid!tlnro
nnr\). int c>:piredTimc) (
KQML k.qml- new KQ~IL();
Siring rw = ne .•••.
Strin:(kM:aIlAl:..-r,ttliniliJlID());
SIring "",2 - !le\\ StrinJ,;(k.\I:r.II~cr.~'nili;rIlDt.H:
kqml.scIPcrrormlth'C(~brokeNIl~);
"ql11l.lcIPmmcter(~:nlrl)e",
:3ig,cnlNanw:);
kqml.scIPJ.ramt'lcr(":~ndcr",
]oc01II-1osl);
kqml.U1P.lrJmCler(":rccch'er".I",~lBroker};
kqmi.scIP:lramcu::r(":rcply-wilh",
rw);
kqmJ.sctpjJ,r;unclcr(":bn~u1g.e".
"KQML ");
kqmI.KtP3rJ.rncter(":onlolo~y".
"tra\'t:l-brol..er")::
KQ~IL kqmU = new KQMLO;
kqml_i.scIPerfvrnllui\"C("uk-:llt");
kqml_i.ICtPllramelert":namc~.
3;enIN:!mc};
kqml i.scIPOlmmCICI'I.";scntlcr",locaIHOlt);
I..qrn(i.scIPnrnmclcr(":reccivcr".lr.m:1Brokcr);
kqrnU·setP;u-:tmctcr(":rtply-with",1'",,2);
kqmU.kIP;\r:l11lCICr(":I;tllSuagC",
":tnACL HJ;
kqml_i.~tP3r.alllctcr(":ontolo&y".
"1f3\"tl~);
Stringoontcnt;
int cxpirtltiol1Timc
'" I:xpircdTimc.
10; 1110 k"'Condl for.::Olllllni;::ation
with Tr:!vel broker
if (nl1fO.CCIC:uricr(
).cqualllglloreOuc\
"I!lny"») {
content = new Slring(
~( :ck-p.1ClUrC ~ + nnfo.i:etDc~nurtO
+"\n +
~::uri\·31
+ nnfo.tctArri",,]O
+"\n"+
M:dcptTime \-" + nnfo.:etDcptTilllc()
+ "\"'n" +
":cxpirationTime "+ ncw Intcrcr(c)(l'irntionTimc}
+ 'T
);
)clse{
cOlllcllI""ncwString(
"( :carricr" + nnfo.~ctC!lITicrO
+"\11"+
":dcp.1nure
+ nnfo ..tctDep:\nurc()
+"'.11"+
"::mh·al"
+ fln(o-letArri,,;al()
+"\n"+
":dcptTime \0. + nnfo.:ctDcp'TimcO
+ "\"\11" +
";c1:pirltionTimc
.•+ nrw IlIto!;:.:r(c"<pimlionl'ime)
+ ")"
);
)
kqml_i.scIConlcnl(COlllcnt);
I.qml.lCtColllcnI(kqml_i);
print("qucry ,trin; :" + I..qml.toStrintO);
COII\'CI1o:ttionl..'On\': null;
M
M
0
."'(
con""
(Com'c~tioll)
kMJn~cr.S(nd}'ICin.ge(l..qml);
} c:uch (ScndF4ilcdExccption
ex) (
ex.printStxkTrnee();
} c:ltch (In\'31idFonllltExccption
ex) (
cx.prinISI~kTrxc();
} c:lIch (I1l"OllidMcu3gc$equcnceExccptioo
ex) {
cx.printStkkTnlC~):
} ulch (JKQMLExl.'eplion
ex) {
cx.prinISlxkTroceO;
}
Jt~Jutl r« '" conv.tetR~5U[I();
RClumV:tlucrtn:
VI..'ClorcJndid:lles '" new Vt'CtorO;
rcs.w;liIFor(expireJTimc
- 1000);
if(r.:s.iIA\':Ii1l1bkO)
{
if(nulll'"
(rtll" (RClumV:tlll.::)rcl,t;ctSubocribcdReiuhO»'
if(rln.v:tRclurnVOlluc()
insl3rlccof VI..'Clor)(
Veelor m~hll = (VI..'1;lor}nrq;..ctlh:turnV::ilue{);
Enumcr:ttion
enullI:II nighlS.clcmcnU();
whIle (~num.lrlUl\IOreEI~'rl1elllS()) (
Flightlnfo rcsuhFlnr.., : (fli;hIInfo)
cnum.ll<:xtElcmcntt);
144
c:andid:llcl.3ddE1c:mt.nt{rcsuItFln(tJ):
prim(-C:l.TTiC'r : ~ + muhFlnfo.\:C'ICarrierO):
print("F1ilOht
:" + rcnlItFJn(o.G.etFli~ht(»;
printl"Dcp.1nure:
+ reiultFln(o.J;clDcplrtuf1'(»;
print\"Arri\'31
:" + r~whFlnro.tetArri"21());
printpkptTime
:" + resuhFlnro.;ctDeptTimc()};
M
I
I
I
} else {
Srstelll.crr.println(·sctBr~J.lIAd"llllT()
}
f1.!1urnc;\ndid:lIel:
}
public void st:l.rtSubscribe(FIiJ:lilinfo
I
,..
:Error R"ull
iSI1'\av-.tilabJe");
finfo) {
: print for d~buI:.
·@JXlr"rn
mig print rncSS3tc
,/
pri\,Jlc\,oidprint{Stringmsll)
(
ir(KQML~lrm:\&('r.dcbug)
{
SY'ItcllI.crr.prinlln("Pcrson:itlAnisl."'"
I
tn.,}:
I
r'
* n13inroU1inc
aoo
• @p:lT"m :tf",;sl] port number. The def.lult number is
I.
'/
public SI:l.lic void lI1:1in(Strin, :u'j;.s[J) (
ililpoo-IIOI;
:!Iulnsusa;;,,"
new Slring(·U~c:
PenonalAuist [-Ir3C'C] ,-port <ponH»
in! :1I~c".u&S.It.'tl~lh;
ror (jm i '"0; i < :utC; i++) {
try {
ir(:tr,t[i].equ!lIW·tl";1ce~»
{
KQ~lLl\l!1n.,I1:~r.dC'bu~
'" true;
} else ir(n'11l!i).equJll("·pon~n
{
port ••lntcgc:qurselnl(llrgs[++ij);
} el-,cif(:Hi;l!i].equah.("·hdp"»
{
SY:llc1I1.err.println(ulltC):
S}'Ilcltl.cxil(O);
}CI5C{
Sy'tcm .•.•
rr.println\uu:el;
S)'lclll.exit(I);
}
} c~tch (Am'lylndcxOuIOfBoundsExccplion
e) {
SYJlclll.crr.prinllnlun:cj;
Srslcm.exil(l};
} calch (NumberFonnlllEAceplion
nfe) (
SYSletll.err.prinlln(u~e):
S>"tlcm.cxh{I);
I
I
PersonalAuiSI
2pl' '" ncw PcrwnaIA:l1isl(pon);
I
I
'"''crlon:IIAuiitfr,lllIc.j:ln.'''
p3d:"tc com.ibm.acU.:qml!ampJc.ll"ll\·cl;
import com.ii.>m.:'oCI.i:qml.';
importjava.lnn.(:.':
imporlj:w;l.Ulil.':
importj:wa.3wl.';
illlportj;!'\'a.3wl.imJSc,';
[.hclp)~);
145
imponjll.\".l.io.';
private
Pcrson:dAuiil
ogene;
priv;,tc Choice
c.lrricr
= ne .•••.
Choice();
priwllc
TcxtField ni£ht
= new TcxtFicld(,"');
priva!¢ Choicc
dCplr1UrC
'" new Choicc();
private Choice
:mh'.ll
'" new Choice();
pri\'llC Choice
monch
'" ne ••••.
Choice();
pri\'\ltc Choice
d;ty
'" new Choict();
priV3tc Choice
time Range
'" new Choice();
priv:!.!c TntFicld
expired
'" new TexIFicld("30");
pri\'.ltc Button
lhow
::: new BUllon("Show Flil!.ht~);
priv~uc [)ulton
clelr
'" new llultoo("Clt1r");
priw\tc Button
do:>c
::: new Buuon(~Closc");
pri\";l1c F1ithtlnfo ni~htlnr" = new Fli;htlnfoO;
,..
.• Conllructor
.•@p3ntlll.li;cntrderencetoKTI'Agetll
'/
public PCriOllaIAuistFuntc{,Pcrwn:llAuis\
supcreFli;.ht Pbn in PcrromllAuil\llnt");
this ..lscnt= 3.1cnt;
:.~cntl (
Hearrier
sclauder\);
I/dcp..uture
scIDc~rtur~O;
II :trriv~1
~tArri\'310;
II month
tttl\fonth();
IId;\y
1CtD~)~);
IItimcR3n~c
timeRnnr,c.3(!dltcmrAi\\");
tinlcR:lr\~e.:lddltcm("P/l.I");
II title label
LnbcltitlcLilbel"
new LabcWTrl\,c! Aniu3nq;
IfLlbcltitlcubd
= new L:..bcl("Pcflonal .4..uist:lnt");
tit1cLzlbcl.sctFont(new Font("Hch'cti~",
Font.BOLD, 36));
tit1cL.1bcl.leIFofo:srollnd(ncw
Co\or(60, 170, 60J); 1/ green
PaneltitlcPanel
= new PandO;
litIcPancl..,dd(ljlleL~bcl);
titIcPllncl.sctBl\Cl.:ground(Color.white);
/1 PAnel I ....--..-.-----.---...----...
GridB3£l....lyout Srid~
= new GridB~L:\)'OutO:
Pand p.,nd I = new PandO;
p;lnd 1.~luyout{ tridb~1:);
p;tn~ll.sctB)Ck:round(Color.
while);
DePlrture
LnbellllbelDcp'"
new L:lbcl("lXp:mur;!");
l:IbdDep.sctFont(ncw
Font("Time1RlJm:ln",
fom.BOLD,
eotl!lntin(p.lncll,
bbdDcp, 0, 0, 2,1,5,5.5,5);
J':I)'lrtur~.ktFont(n<.:\\
Funl("Tim<.:~Rolll:mM, Font.BOLD,
constr:tin(p.1nel1,
dcp.lrtllre, 0,1,1,1, 5, 5,5.5);
IIICI
1&));
15));
IIlctArrh':tl
L:tbel hlbdArr '" nc\\' Label(" Arri\,.ll");
l<'!bclArr.setFont(new
Font("TimesRQI1l3n", Font.BOLD,
II);
cotlltra.in{pal1cll, blxlArr, 0, 2, 2, 1,5,5,5,5);
:mi\~I.sclF'om(new
F'ont("TimelRonnn",
Font.BOLD. 15));
conslruin(p.lndl,:uri\'al,O,),I,I,
5.5,5, 5):
II set C~rricr
L:lbel1:t1x:1Caf = new L:llx:l("C;trricr~);
labcICnr.sctFol1t(ncw
Fom("TimcIRoJtlan",
Font.BOLD,
eonslmin(p.,ncll,
!JbclClr, 0, 4, I, 1,5,5,5,5);
II»:
146
c;mier.lttFont(ncw
Font("TimuRoman",
Font.BOLD,
cOIl1train(p:l.llel1,c~rricr,O,
5, I, 1,5,5,5, 5J;
15»;
llioCl~lonlh
L1belllbelr.lon:=
new Label("i\lonth
");
Ilbcl1'.lon.leIFont(ncw
Fon!("TimcsRom;lIl".
Font.130LD. IS));
COnSlrl.\in(p:lncll, l.bcl~'lon.2, 0, I, 1,5,5,5.5);
rnonthsctFont(llcw
ronl("Tim~'Romln",
Font.BOLD, 15));
IIconltfain(plnell,monlh,2,
1, I, 1,5,5,5.5);
constr.tin(p3.ncll, month,
2,\.1,1,
12,0,
GridB3.:Constraints3"':ONE,
GridB:\,gConstr.lims.NORTHWEST,
0.0,0.0,5,5,5,5);
If let TimcRlI.n,c
Label bbclTimc = new LAbclt"Till\eR.ln~c");
IJbeITimc.$dFom(new
FonWTIrnctRom:m".
Font.BOLD,
COllilfJ.in()X'lIcll, l'lbcITirnc.2, 2,1, J, 5, 5, 5, 5);
timcRangc.iCtFont(ncw
FOnl("TimclRom:tn",
Fonl.BOLD,
cOnl:tmill(p.:mc! 1, timcRange,
2,3, I, I,
50,0,
GridB:agConstrllintl,1\ONE,
GridB,,~Conltf:\ints.NORTHWEST,
0.0,0.0,5,5,5,5);
II set DJY
LOlbcl bbelDly
= new Lltbel("DlyK);
100beIDJy.ICtFOIII(IlCW Font("TilMsRotl1nn",
Font.OOLD,
conmOlin(plllCll, [~bcID~y,4, 0, I, 1,5,5,5,5);
dlly.sctFont(ncw Font\"TilllcsRom:tn",
FOIlt.IlOLD,
IS));
/lcof1Slr:lin(p:mcll, d!lY, -I, I, I, 1,5,5,5,5);
COI1IIr.1in(p:allell, dllY,
4,1.1,1,
::!O.O,
Gridlll,SCOlUlrJinl1.NONE,
GridBJ!.:Consl~inlS.NORTHWEST,
0.0,0.O,5,:i,
5, 5);
II));
15»;
18));
II rei Expired
Ll.bcl bbclExp '" new Llbcl("Expired Timc
bbclExp.~tFonllnew
Font{"Tim~sRom:tn", Font.BOLD, II»;
conllmin(plncl1,
bbclExp, -I,::!, I, 1,5,5,5,5);
cxpircd.lctFonl(new
Font("TimcsRolll:Ul",
FonI.130LD,
IS));
IlcoflSlf:lin(p:mcll,cxpircd,-I,J,
1. 1,5,5,.5,5):
constrOlin(plncll,cxpircd,
4,3,1,1,
21,0,
GridB:tgConSlrlinu.NONE,
GridBlg,Conllflinls.NORTHWEST,
0.0,0.0.5,5,5,
!i);
IIlcll3ullon
.. •.... ••••.. •••·•••••.·••••
Panel bu\lonP:md '" new P3nelt);
buItOnP;tllel.sell.:I),ouUllcw FlowLll.yotll(FlawLlyout.CENTER»;
butlonPancl.s<:'11J3"::\.:!lcound(Color.white);
M
);
show'" new j"\'3.:l\\1.Bullon("Show
Flight");
t.how.IctFotlt(ncw Fonl("Couricr", FOllt.BOLD,
/It.how.rt"Shll>C(j.!i,IO.23);
IIshow.lct13oundl(ncw
Rcctmltk(5,5,SO.23
bu!\onPanc!."dd{.Ihow);
13»);
»;
close'" new jl\·:u.wt.l3ul\on("
Clo!c ");
clO1C.ktFonl{IICW Font("Courier", Font.BOLD,
IIcl05C.rc$h~p<.>(IOO,5,SO,21);
IIcIOl~.t.etl3oundi(ncw R~J.ngII!{IOO,!i,SO,23));
13»;
147
bU!lonP"ncl.~dd(close);
/lconmllin(buIIOflP:mcl. show, 0,0,1,1 ,GridBatConSlrllints.NONE,
II
GridB3sConstrainls.CENTER,
0.3, 0.0, 0,0,0.0);
llconsl~in(bu\lonPancl,
close, 2,0.1, I.GridB;t;Consl~ints.NONE,
II
GridB~ConSlrllints.CENTER.
0.3, 0.0, 0,0,0,0);
II 1<1Layout o( ~ hole (rame ••••._ .••••.•__ ..•
SoeIL3yout(;ridi»l:l;
setB3Ck:C.round(Color.whitc);
conllrain(lhis, litIcP'ncl.O,O,I.I,
GridBagCooslrainlS.NONE.
GridBlgCofUtrainlS.CENTER,
0.0, 0.0, I, I, I, I);
conmolin(this, JWlCII ,0, 1,1,1, GridB~ConS(f;'linlS.BOTH,
Gridlh:Conurolints.NORTHWEST,O.O,O.O,
1,1,1, I);
eonslr1lin(lhis., butlonPoln~I,0,2,1, I, Gril,\l3,,:Conllr.lints.HOR
IZONTAL,
GridB;1sCOnIIT.lints.CENTER,
0.0, 0.0,10.0,10,0);
IISClinilial\''\lue
:mi\".lI.scl«ll·'(CDG)
P~uis. Fraocc");
mOlllh.lCl«I~"t..l;uch");
d3y.icl«t("2IM);
limcR3.nl:c.lctecl("A"'I");
1I~ISil.c(400.J2S);
p3ck();
.how(};
,,'
1
, aclion on Button and Choice
·€PJ.f3ll1eC\'~t
• 4Ep3.nm oobjcct
"
public book.m :t.:liunl..Ewnt e. Object oJ {
i((c.I:1IJcl inll1ncco(Bu\lon)
{
i(C.I'-'"ICI =co mow) {
Oi&hlln(o.letC:urjc~c:mjer.,ctSdl!(:lcdllcm{J);
i1i:I\llnfo.«IDcp3nur;!(dCp3nurc,~ctSclt'Cledllcm());
ni,htlnfo.LCIArrivll1(:uri\';\l.gdScil'CtcdltemO);
Strin:Buff~r 11rbuf '" ncw StringBuITcr(momhToNumbcr(moTlth.:cISelcctooltcrnO»;
Slrbuf·JPpend(~I");
strbuf.3ppend(dly·tctSck'(lc:dltcm\));
mbuf.artX'00("!97");
Ilrbuf.3ppend(timcR3n:.q~elxl«lcdIICm\));
fli~hlln(o.IeIDcpITilllC(llrbuf.toSlring());
imex]ljr~dTillle;
S!rina lemp" cxpi~d.~cITI:"'tO;
if( temp"=
null)
expiredTimc:= IS;
,I.,
cxpircdTinu: =lntcJ;.CT.p::U1;c:lnl(lemp):
2~enuho\\FIi:hISchedule(ni£htlnfo.
cxpircdTimc);
rclurntrue:
}el~if(c.llr,ct"c:do5CI(
JiJpos~,\,:
Sysll'lll.exil(O);
}
} elst ir(~.urgct inSIl.ncl.'OfChoicc)
print("~I~""1. Choice~);
}
return super.3(lion(c. 0);
(
1
'"
, h;J.ndlcc\,cnt
'@p:mmttc\,crtt
"
public boolcllI
if(e.id
h;mdlcEwnt(Evcllt
c) (
""" E\,cllI.WINDOW_DESTROY)
{
148
tlisposC!();
Sysletn.exit(O):
rctumtruc:;
,
}
return luper.h!lndlcE\'Cnt(e);
'"
'sclcl1rrier.
,/
pri\'3tcYoidscICmier(){
c:micr.xldr'em("J.ny~):
c)rricr.:addIICm("]AL"):
cmicr.:lddllcm(".A.NA"):
,
'"
'sct dep1J1urc
'/
pri\'Jlc\'oid 5C1[kplrlUrt() {
dep:mure.addllc!1)("(NRT)
Tokyo, J:l1>-1n");
dCplrlure.iJddltclll\"\CDG}
P,uis, fr;\Ilcc");
dCPJ.rturc.~dJ1Cm("tJFK) New YOfk, U.S.");
,
'"'sct,minl
'/
privillcvoid scIArri\"Jh) (
lrri\'JI.!lddllcm("(NRT)
Tokyo, );\Jl.111"):
:lrri\"ll.\!ddltcm("(CDG)
PlHi1, Frnncc"):
3rri\'lbddIICm("lJFh)
New York, U.S.");
,
'"
'sctrnomh
,/
printc void set1l.Iomhn {
month.Mdllenl(" Jlnulry~);
mOllth.1!ddIICm("F.:brary");
month.ldd[tem{~\ 13fCh");
month.lddllcm("April"l;
month.:sJdltemi"\I:w");
month.:lddllcm("Jun~·');
mOmh.3ddllemi"Jul>");
lllonth.lddlle'rll(~:\U:LJ'I"):
1ll01lIh.;U!dlICIll!"s.;ptcmbcr");
nlonth.3dd!tClllt"O~h)Ucr");
monlh.addlICm("No,"r.'mbcr~);
montlu.ddltctn("Deccmlx"r"J;
,
'"* seidl),
,/
priVJICYoid sctDJ)"tl {
d!l,y.~ltcm("OI"):
d3y.:lddltcm("O::!"j;
dl\y ..,ddltcm("03"j;
d"}·.:l.dd!tclll("O-t"):
dtly.:.ddllenl("05"J:
dly.:sddhcm("06"l:
d:ty.:'Iddltcm("07"):
uly.:multC!1l("Oh"):
dly.:KIdltem{"OQ·'i:
mp.ddltem("lOl:
d:ly.:\C[dlti.'m("I 1"1:
d:l}'.3ddltcl1I(" I~ .,:
d:ly.:adrlltcm("13"l:
ulIy.MdHemr
I -1"1:
uly.addltcrnt"15"):
U:ly.3ddltcm("16"):
149
dsy.addltem("lr):
dOl}'.lddltcm(~IS");
(by.::addltcml"\9");
d3)'.addltcm( ":!O");
d:ly.addllcrn{"21");
d:1y.:l.ddlteml"22");
d:w.3dd[tem(~:!3");
dl~·.2ddltem("2<1N);
da;,..ldd1tcmr25");
day.!\ddllcm("26");
dly.llddltcm("27");
dJ,V.3ddlh:m("21");
dl)·.~ddltt:m("29");
tllY·llddltem("JO");
dl),.S(ldllcln("31");
,..
I
"(ramcutility
'/
public \'oid constr:lin(Cont;'lincr cont:l.incr, COlllpQncnt con'ponenl,
inl ;rid_,'(, int ;rid~v, int srid_width, int SfidJtci£ht,
int ipld_x, int ip:KI....>'.
illlli1l, int :mchor, double wcisht_x, double wci~ht3,
int lap, int left. int bonorn, int riShl) {
GridB3gConstr3ints
c =: new GridlhgConstr:lints();
q:ridx =: ;rid_x; c.gridy ••£ridy;
c.ipldx =: ip3d_x; c.ipJ.dy:: ip3d..J·;
q;,ridwidlh =: grid_width; c.tridheight
'" srid_hcithl;
c,till at fill; c.cnchor = ~nchor;
('o\\ei;hIX = weighl_x; c.weig.hl)' '" weiShtJ;
if( lOp + boltom + left + ri£llt > 0 )
c.in!C1S '" new lntcts((op, len, bonom, righl);
(l G r;dl3 :\ILlYOUI )coll\:lincr ,teILayoUl()).IoCIConslT3
iillS{componenl,c);
coo!Jiner.:.dd(componcnt);
}
/"
·fr:l.meulility
'/
publk \'Oid cons\rain(Conlaincr
COlllllill~r, Componenl componenl,
illl :,riu_x, inl ;.ridJ', inl ,rid_width,
illl grid-'lci~l\,
i1ll fill, illl :.nchor, double wci£hUI(, double w;:itht~',
int lOp, int leil, inl bottom, int risht) {
GridB3gConmaints
C '" new GridBngConsIF.linti();
q:ridx '" grid_x: c,gridy '" 1!ridJ;
c.gridwidth '" :;rid_witllh: c.;ridheighl '" grid_hci£ht;
c.fill'" fill;c.ilIllchor=:Inchor;
c.wci:hlx =: \\ci •.hl_,'I:; c.wci:.hty '" \\'eightJ;
if{ lOp + bottom + len + risht> 0)
~.inlclS '" nl:'Yo<lnscli(IOp, len, bottom. riaht);
Ilprinll"cOntliJ1cr.gc!L:t),OIlIl)"
+ cont:lincr.j;ctl...2youl();
l(GridB~Lil}'out)conl:liner·tcILayouIO).JeIConsll1\inls(coml>oncnl,c);
cOIIl.lincr.:sdd(compollcnt);
,..
I
tfT3J1lculility
'/
publi,; \'Oid ~""IHtmin(COnl;lincr
conl:'lincr, C0Il11lOJ1Clll component,
int grid_x. int ;ritlJ,
int lOI'id_wiulh,int grid_hci,sht}{
con1tr'.Iin(conIJincr. ctltllponcnt, nrid_x, ~id"'y. ~rid_width, IOrid_hcight,
GriJ8:t~C01111r:tinls.NONE,
GritlB:~ColI~tr.liIl15.NORTHWEST.
0.0, 0.0. 0, O. 0, 0):
I
"'
t
'/
{mJl1culility
Download

interacao entre agentes usando kqml - TCC On-line