You are on page 1of 85

Universidade de Braslia - UnB

Faculdade UnB Gama - FGA


Engenharia de Software

SIMULADOR DE AMBIENTES ACSTICOS


ORIENTADO A UMA ABORDAGEM
MULTIAGENTES

Autor: Gabriel Augusto Barbosa


Orientador: Dr. Maurcio Serrano

Braslia, DF
2014
Gabriel Augusto Barbosa

SIMULADOR DE AMBIENTES ACSTICOS


ORIENTADO A UMA ABORDAGEM MULTIAGENTES

Monografia submetida ao curso de graduao


em Engenharia de Software da Universidade
de Braslia, como requisito parcial para ob-
teno do Ttulo de Bacharel em Engenharia
de Software.

Universidade de Braslia - UnB


Faculdade UnB Gama - FGA

Orientador: Dr. Maurcio Serrano


Coorientador: Dr Milene Serrano

Braslia, DF
2014
Gabriel Augusto Barbosa
SIMULADOR DE AMBIENTES ACSTICOS ORIENTADO A UMA
ABORDAGEM MULTIAGENTES/ Gabriel Augusto Barbosa. Braslia, DF,
2014-
83 p. : il. (algumas color.) ; 30 cm.

Orientador: Dr. Maurcio Serrano

Trabalho de Concluso de Curso Universidade de Braslia - UnB


Faculdade UnB Gama - FGA , 2014.
1. Simulador Acstico. 2. Multiagentes. I. Dr. Maurcio Serrano. II. Universi-
dade de Braslia. III. Faculdade UnB Gama. IV. SIMULADOR DE AMBIENTES
ACSTICOS ORIENTADO A UMA ABORDAGEM MULTIAGENTES

CDU 02:141:005.6
Gabriel Augusto Barbosa

SIMULADOR DE AMBIENTES ACSTICOS


ORIENTADO A UMA ABORDAGEM MULTIAGENTES

Monografia submetida ao curso de graduao


em Engenharia de Software da Universidade
de Braslia, como requisito parcial para ob-
teno do Ttulo de Bacharel em Engenharia
de Software.

Trabalho aprovado. Braslia, DF, 24 de novembro de 2014:

Dr. Maurcio Serrano


Orientador

Dr Milene Serrano
Coorientadora

Wander Cleber M. Pereira da Silva


Convidado 1

Carla Silva Rocha Aguiar


Convidado 2

Braslia, DF
2014
Este trabalho dedicado s crianas adultas que,
quando pequenas, sonharam em se tornar cientistas.
Agradecimentos

Agradeo primeiramente a Deus, que plantou em mim um sonho que hoje se ma-
terializa, e pelos dons a mim proporcionados para que eu atinja meus objetivos nessa
caminhada.
Agradeo aos meus pais, Arnaldo Pereira Barbosa e Giselma Augusto de Oliveira,
pela ateno e amor, pelo exemplo de garra e perseverana e principalmente, pelos esforos
a mim dedicados. Vocs so minha maior inspirao.
Agradeo tambm pelo imensurvel apoio da minha irm e amiga Ana Lusa Au-
gusto Barbosa, que por mais difceis que fossem as circunstncias, sempre esteve ao meu
lado.
Agradeo ao grupo de professores de Engenharia de Software da Faculdade UnB
Gama por dedicarem seu tempo e sua sabedoria para minha formao acadmica. Em
especial, sou grato a alguns professores que citarei devido a importantes contribuies
pessoais e profissionais.
Agradeo ao Prof. Ricardo Matos Chaim pelas oportunidades e projetos desenvol-
vidos durante o curso.
Agradeo ao orientador Prof. Maurcio Serrano pela orientao ao longo deste
trabalho e por todas as experincias acadmicas e profissionais compartilhadas; por todos
os ensinamentos fornecidos que so fundamentais para minha formao profissional, seus
ensinamentos abriram horizontes que eu no havia explorado ainda, estendendo ainda
mais minha aprendizagem em diferentes aspectos da Engenharia de Software.
Agradeo Prof. Milene Serrano, coorientadora deste trabalho, agradeo por suas
orientaes, ateno e generosidade em seus ensinamentos. Suas contribuies foram muito
valorosas para o meu desenvolvimento como engenheiro de software;
Agradeo Karolliny Braz de Arajo pelo apoio, amor e pacincia ao longo da
minha formao; por me ajudar a construir um grande futuro e por compartilhar meus
sonhos;
Agradeo aos meus companheiros de graduao, em especial aos meus colegas
Jeann Feitosa Figueiredo, Ewerson Jackson Oliveira Feitosa Carvalho e Luan Guimares
Lacerda, pelo incentivo e apoio constantes alm dos conhecimentos compartilhados ao
longo dessa formao. Vocs continuaro presentes em minha vida com certeza.
Agradeo a equipe da SEPLAN do Tribunal de Contas da Unio, em especial
a Patrcia Jussara Mendes e a Renata Miranda Passos Camargo, pela oportunidade do
convvio que me proporcionou vrios desafios e experincias fundamentais para meu ama-
durecimento e formao durante meu perodo de estgio.
Agradeo aos demais amigos e familiares pelo apoio, amizade e por participarem
ativamente da minha vida pessoal.
Por fim, a todos que direta ou indiretamente fizeram parte da minha formao, o
meu muito obrigado.
Que os vossos esforos desafiem as impossibilidades,
lembrai-vos de que as grandes coisas do homem foram
conquistadas do que parecia impossvel.
(Charles Chaplin)
Resumo
Um projeto acstico deve ser cuidadosamente estudado. Trata-se do projeto acstico de
um ambiente onde o controle da acstica realizado atravs de aplicao de materiais que
influenciam no som. O emprego desses materiais deve ser cuidadosamente estudado a fim
de aplicar materiais que contribuam com um bom projeto acstico e evitar o emprego de
materiais suprfluos.
O uso de simulaes computacionais vem sendo cada vez mais frequente no dia a dia do
projetista acstico, a fim de atingir projetos mais eficientes e que atendam as necessidades
acsticas esperadas pelo cliente.
Neste trabalho, descrevemos a proposta de um simulador que permita a simulao do
comportamento do som dentro de um ambiente fechado para que o projetista e/ou o
especialista em acstica possam acompanhar e avaliar se os parmetros da sala esto
realmente adequados. Trata-se de uma ferramenta de software livre baseada no para-
digma multiagentes, recorrendo a alguns recursos da orientao a objetos. Neste trabalho,
tambm descrita a implementao de uma prova de conceito utilizada para avaliar a
viabilidade do projeto assim como refinar a proposta inicial do projeto.

Palavras-chaves: simulador. acstica. multiagentes. materiais.


Abstract
An acoustic design should be carefully studied. This is the design of an acoustic environ-
ment where the noise control is achieved through application of materials which influence
the sound. The use of these materials should be carefully studied in order to apply ma-
terials that contribute to a good acoustic design and avoiding the use of unnecessary
materials.
The use of computer simulations has been increasingly common in everyday acoustic
designer in order to achieve more efficient designs that meet the acoustical requirements
expected by the client.
In this paper we describe a proposal of a simulator which allows the simulation of the
sound behaviour in enclosed, so the acoustic designer can monitor and evaluate if the
parameters of the environment are really suitable. It is a free software tool, based on
multi-agent paradigm, using some features of object orientation. This work also described
the implementation of a proof of concept used to assess the viability of the project as well
as refine the initial project proposal.

Key-words: acoustic. simulator. multi-agents. materials


Lista de ilustraes

Figura 1 Grfico de frequncia (SILVA, 1971) . . . . . . . . . . . . . . . . . . . . . 30


Figura 2 Transmisso, absoro e reflexo do som (SILVA, 1971) . . . . . . . . . 31
Figura 3 Reflexo. (SILVA, 1971) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Figura 4 Tela de simulao 3D do Odeon . . . . . . . . . . . . . . . . . . . . . . . . 40
Figura 5 Telas de interface grfica do software AcMus . . . . . . . . . . . . . . . . 41
Figura 6 Processo TCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Figura 7 Fonte Sonora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Figura 8 Ambiente bidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Figura 9 JADE GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Figura 10 Arquitetura do Simulador Acstico . . . . . . . . . . . . . . . . . . . . . . 52
Figura 11 Arquitetura JADE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Lista de tabelas

Tabela 1 Cronograma TCC 1 (2014) . . . . . . . . . . . . . . . . . . . . . . . . . . 44


Tabela 2 Cronograma TCC 2 (2015) . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Lista de abreviaturas e siglas

c.p.s ciclos por segundo

FGA Faculdade do Gama

FIPA Foundation for Intelligent Physical Agents

GPLv2 General Public License verso 2

GUI Graphical User Interface

IDE Integrated Development Environment

JADE Java Agent Development Framework

JDK Java Development Kit

LGPL Lesser General Public License

LTS Longo Tempo de Suporte

TCC Trabalho de Concluso de Curso


Lista de smbolos

Letra grega Gama, smbolo da Faculdade do Gama (FGA).

Hz Hertz

T Perodo

f Frequncia

W Energia sonora, medida em watt

S Superfcie, medida em 2

Coeficiente de dissipao sonora.

Coeficiente de reflexo.

Coeficiente de transmisso.

Coeficiente de absoro sonora.

Energia acstica incidente.

Energia acstica dissipada.

Energia acstica refletida.

Energia acstica transmitida.

LATEX Sistema de preparao de documentos utilizado na confeco deste tra-


balho.
Sumrio

1 INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.1 Contextualizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2 Questo de pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.4.1 Objetivo geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.4.2 Objetivos especficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5 Organizao do documento . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2 REFERENCIAL TERICO . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1 Acstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.1 Conceito do som . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.2 Frequncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.3 Intensidade sonora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.1.4 Reflexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.5 Absoro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2 Simulao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.1 Simulao acstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3 Sistemas Multiagentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4 Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3 SUPORTE TECNOLGICO . . . . . . . . . . . . . . . . . . . . . . . . 37
3.1 Ferramentas de desenvolvimento . . . . . . . . . . . . . . . . . . . . . . 37
3.1.1 JADE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.1.2 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.1.3 JUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.4 Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.5 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.6 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.7 LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 Simuladores acsticos similares . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.1 Odeon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.2 AcMus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3 Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1 Classificao da pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2 Planejamento da pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 Cronograma da pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4 Modelagem da metodologia . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5 Prova de conceito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5.1 Especificaes tcnicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.5.2 Descrio da prova de conceito . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.5.3 Refinamento da proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5 PROPOSTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

APNDICES 55

APNDICE A CDIGO FONTE DA CLASSE AMBIENT . . . . . 57

APNDICE B CDIGO FONTE DA CLASSE SOUNDSOURCE . 59

APNDICE C CDIGO FONTE DA CLASSE SOUND . . . . . . 63

APNDICE D CDIGO FONTE DA CLASSE OBSTACLE . . . . 69

APNDICE E CDIGO FONTE DA CLASSE LINE . . . . . . . . 71

APNDICE F CDIGO FONTE DA CLASSE NORMALLINE . . 75

APNDICE G CDIGO FONTE DA CLASSE VERTICALLINE . 79

APNDICE H CDIGO FONTE DA CLASSE LOCALIZATION . 81


25

1 Introduo

Segundo Silva (1971, pg. 17), uma boa acstica em um ambiente consequncia
da aplicao, pelo arquiteto, dos princpios da Acstica Arquitetnica.
Um projeto acstico deve ser cuidadosamente estudado. Deve ser funcional, isto ,
todos os detalhes devero ter uma razo de ser, a fim de se evitar o emprego de materiais
suprfluos, tornando o uso de simulaes computacionais cada vez mais frequentes no dia
a dia do projetista acstico, a fim de atingir projetos mais eficientes e que atendam as
necessidades acsticas esperadas pelo cliente. (SILVA, 1971).

1.1 Contextualizao
Projetos de estdios de gravao, salas de concerto, teatros, salas de aula ou locais
que necessitem de qualidade acstica para realizar suas atividades requerem estudos sobre
suas dimenses, volumetria, forma e composio de suas superfcies. papel do projetista
acstico definir esses parmetros a fim de garantir os requisitos acsticos do projeto.
(RAMIRES, 2011).
Em alguns casos, o volume e a forma desses ambientes j se encontram definidos,
restando, portanto, ao projetista, definir quais materiais iro compor as superfcies desta
sala, a fim de se obter um ambiente que cumpra com sua funo acstica (RAMIRES,
2011).
Segundo Santos (2011, pg. 6), a adaptao do ambiente, de acordo com o uso em
questo, realizada a partir do direcionamento da energia sonora dentro do mesmo. Esta
redistribuio pode ser tratada de diferentes maneiras, de acordo com o projeto ou com
sua finalidade, seja ela msica, fala ou mesmo palestras.
O estudo do comportamento acstico do campo sonoro em ambientes fechados foi
desenvolvido na tentativa de explicar objetivamente como se d o comportamento acstico
de ambientes, bem como os vrios parmetros necessrios para descrever o comportamento
do som dentro de tais ambientes. (TORRES, 2008).
O estudo da acstica de salas data do incio do sculo XX, porm, com a evolu-
o da tecnologia, a simulao acstica de salas sofreu um grande avano, sendo possvel
realizar simulaes que requerem cada vez menos tempo e gastos. Devido a esse avano,
atualmente possvel prever, por exemplo, o comportamento sonoro de salas ainda no
construdas, simular a acstica de construes antigas no mais existentes e ainda melho-
rar a acstica de salas j existentes (TORRES, 2008).
26 Captulo 1. Introduo

Segundo Torres (2008, pg. 1), as possibilidades trazidas pela simulao acstica
so muitas. Com o uso dessa tcnica, por exemplo, possvel projetar/simular uma sala
construda de tijolo e concreto com detalhes e com uma rica qualidade sonora, o qual seria
relativamente complexo sem o uso da simulao acstica.
Neste Trabalho de Concluso de Curso, ser tratado um sistema de simulao
acstica, sendo este uma ferramenta de software livre baseada em uma abordagem mul-
tiagentes. At o momento, no foi possvel encontrar na literatura investigada uma ferra-
menta que rene simulao acstica e uma abordagem multiagentes dentro do contexto
de software livre.

1.2 Questo de pesquisa


A questo motivadora desta pesquisa concentra-se em:
possvel desenvolver um sistema que simule o comportamento do som dentro de
um ambiente fechado utilizando uma abordagem multiagentes?

1.3 Justificativa
A construo de salas, estdios musicais, auditrios e ambientes, cuja propagao
sonora um fator importante, nem sempre realizada de maneira adequada. A qualidade
de som, a forma como este se propaga ao longo de uma sala e o isolamento acstico,
so alguns dos fatores determinantes para um bom projeto. Adicionalmente, esses fatores
podem influenciar diretamente na qualidade, nos custos e at mesmo no prprio comrcio
envolvido (SANTOS, 2011).
Em salas de aula, por exemplo, importante saber se nas fileiras mais afastadas do
professor possvel escutar com clareza as explicaes. Alm disso, importante verificar
se o projeto da sala foi eficiente o bastante para garantir que rudos externos no interfiram
na aula.
J em estdios musicais, muito importante medir a qualidade do som, uma vez
que esse fator est diretamente relacionado sua atividade comercial. Alm disso, verificar
se o projeto atende ao requisito de isolamento sonoro do estdio tambm requer especial
ateno (RAMIRES, 2011).
Tendo em vista as dimenses do auditrio, importante verificar qual o melhor
posicionamento dos alto-falantes, para que todos dentro do auditrio possam ouvir o som
com a mesma qualidade.
Atualmente, uma das dificuldades dos desenvolvedores de projetos de construo
civil predizer se o som se comporta adequadamente dentro das especificaes e necessida-
1.4. Objetivos 27

des deste projeto bem como verificar possveis melhorias de projeto, incluindo dimenses,
disposies, materiais, os quais atendam aos requisitos de qualidade do projeto (SANTOS,
2011). Neste sentido, proposto neste trabalho um software que apie visualizao do
comportamento dos elementos sonoros envolvidos em projetos de construo civil, auxili-
ando aqueles interessados na otimizao acstica dentro de determinados ambientes.

1.4 Objetivos

1.4.1 Objetivo geral


Desenvolver um software que permita a simulao do comportamento do som den-
tro de ambiente fechado para que o projetista e/ou o especialista em acstica possam
acompanhar e avaliar se os parmetros da sala esto realmente adequados.

1.4.2 Objetivos especficos

1. Estudar o comportamento do som dentro de ambientes acsticos, identificando va-


riveis acsticas presentes dentro desses ambientes.

2. Investigar parmetros e normas especficos para projetos acsticos.

3. Identificar ndices de absoro referentes aos materiais presentes nos ambientes em


anlise.

4. Propor um suporte tecnolgico baseado em uma abordagem multiagentes, o qual


ser utilizado para a implementao da soluo.

5. Explorar tcnicas de programao, padres de projeto e demais boas prticas da


Engenharia de Software visando o desenvolvimento de um simulador manutenvel e
extensvel.

6. Definir mtricas de qualidade visando realizar a anlise esttica e a cobertura do


cdigo do simulador proposto, com base em uma abordagem de teste apropriada
para o contexto, focada, principalmente, em testes funcionais.

1.5 Organizao do documento


Os prximos captulos esto organizados da seguinte forma:

Referencial terico - apresenta uma viso breve sobre os principais conceitos abor-
dados neste trabalho, baseado na literatura disponvel;
28 Captulo 1. Introduo

Suporte tecnolgico - apresenta as principais tecnologias utilizadas durante a con-


duo deste trabalho.

Metodologia - trata da descrio detalhada de todo o desenvolvimento do trabalho,


tal como a explicao do tipo de pesquisa e a descrio da prova de conceito.

Proposta - trata da descrio da proposta definida a partir do referencial bibliogr-


fico estudado e da prova de conceito desenvolvida.
29

2 Referencial Terico

2.1 Acstica
Nesta seo sero apresentados alguns conceitos importantes sobre acstica que
sero abordados neste projeto.

2.1.1 Conceito do som


Ao falarmos sobre som, existem dois conceitos importantes a serem tratados, o
som vibrao, ou pertubao fsica, que percorre um meio qualquer de propagao e o
som, sensao sonora, psico-fisiolgico, que captado pelo nosso ouvido. O conceito que
mais interessa aos profissionais da Acstica Arquitetnica o ltimo, isto , o do som,
sensao sonora, captada pelo nosso aparelho auditivo. (SILVA, 1971).
Segundo Bistafa (2006, pg. 6), o som pode ser definido como uma variao da
presso ambiente detectvel pelo sistema auditivo.
Para que haja a propagao do som, necessrio que ele esteja em um meio de
propagao, provido de inrcia e de elasticidade. O meio mais comum desta propagao,
para chegar at ao nosso ouvido, o ar que nos envolve. Se no houver gs preenchendo
o espao que nos circunda, os sons deixaro de ser ouvidos. (SILVA, 1971)

2.1.2 Frequncia
Segundo Silva (1971, pg. 34), chama-se de frequncia o nmero de oscilaes
completas por segundo, ou seja, o nmero de idas e voltas completas da partcula vibrante.
A Frequncia medida em ciclos por segundo (c.p.s) ou em Hertz (Hz).
Se representarmos o diagrama das presses para um ponto qualquer de um recinto,
onde se propague o som, em funo do tempo, encontraremos o grfico da figura 1, onde
as presses foram registradas em ordenadas e o tempo em abcissas. As suas unidades so,
respectivamente, 2 e . (SILVA, 1971)
O perodo T o tempo necessrio para se realizar uma oscilao completa. Por-
tanto, sendo a frequncia o nmero de perodos por segundo, a frmula que exprime seu
valor ser (BISTAFA, 2006, pg. 7):

= 1
30 Captulo 2. Referencial Terico

Figura 1 Grfico de frequncia (SILVA, 1971)

"Os sons audveis encontram-se no intervalo de 16 a 20.00


c.p.s. Aqueles, abaixo de 16 c.p.s, so chamados de infra-sons
e aqueles, acima de 20.000 c.p.s, so designados como ultra-
sons. Tanto uns como os outros no so captados pelo ouvido
humano. (SILVA, 1971, pg. 35)."

Em msica, o termo utilizado para a percepo da frequncia sonora pelo ouvido


humano a altura. Quanto maior o numero de oscilaes por segundo, maior a sua
altura, portanto, as frequncias baixas so percebidas como sons graves e as frequncias
mais altas como sons agudos.

2.1.3 Intensidade sonora


Para que possamos ter a sensao de audio, alm da necessidade de o som estar
entre o intervalo de 16 a 20.000 oscilaes por segundo, isto , ter determinada altura,
necessrio que ele tenha uma certa intensidade sonora. (SILVA, 1971, pg 42)
Segundo Silva (1971, pg 42), a intensidade sonora , medida em 2 , a
quantidade de energia sonora , medida em , que atravessa um centmetro quadrado
de rea, perpendicular direo em que o som se propaga. calculada atravs da frmula:

A menor variao de presso ambiente detectvel pelo sistema auditivo da ordem


de 1012 2 ,
tambm conhecido como limiar de audibilidade. J a variao de presso
2.1. Acstica 31

ambiente capaz de provocar dor o limiar de dor, que equivalente 1 2 . (BISTAFA,


2006, pg 6)

0 = 1012 2

= 1 2

2.1.4 Reflexo
Quando uma onda sonora atinge uma parede ou um obstculo qualquer, parte
da energia incidente refletida, parte dissipada pelo obstculo, transformando-se em
energia calorfica ou mecnica. O restante atravessa o referido obstculo, passando para
o outro lado, transmitindo-se atravs do meio adjacente. (SILVA, 1971).

Figura 2 Transmisso, absoro e reflexo do som (SILVA, 1971)

As paredes e divises, geralmente rgidas, vibram no todo ou em parte, devido


energia das ondas sonoras. Essas paredes e divises vibram como se fossem diafragmas e
rerradiam a energia, que nelas incida. Sendo assim, as paredes ou divises mais rgidas e
mais pesadas so melhores isolantes sonoros, do que aquelas construdas de material leve
e flexvel. (SILVA, 1971, pg. 83).
Segundo Silva (1971, pg. 84), quando uma onda sonora pura ou livre, isto ,
isenta de reflexes secundrias, atinge uma superfcie uniforme e relativamente grande,
em relao ao comprimento dessa onda, a reflexo do som assemelha-se muito com da
luz.
32 Captulo 2. Referencial Terico

Se representarmos as ondas sonoras pelos seus raios sonoros, elas sero retas diri-
gidas segundo a direo em que as mesmas caminham. (SILVA, 1971, pg. 84)
O angulo do raio incidente, com a normal superfcie refletora, igual ao ngulo
formado pelo raio refletido com aquela mesma linha e esto no mesmo plano, conforme
representado na figura 3.

Figura 3 Reflexo. (SILVA, 1971)

2.1.5 Absoro
Em ambientes fechados, a propagao da onda sonora, a partir da fonte, sofre
interferncia das ondas que so refletidas nas superfcies que delimitam o recinto como
paredes, teto e piso. (BISTAFA, 2006, pg 231)
Conforme foi ilustrado na figura 2, quando o som incide sobre uma superfcie, uma
parte da energia sonora refletida, enquanto o restante da energia incidente se compe
de duas outras parcelas: a energia sonora absorvida e a energia sonora transmitida para
o outro lado da superfcie. (BISTAFA, 2006, pg. 231)
Segundo (SILVA, 1971, pg. 126), um material dito acstico absorvente quando
uma grande percentagem da energia sonora que nele incide retida, degradando-se em
energia mecnica ou calorfica, ou ainda transmitindo-se para o outro lado, sendo dele
refletida apenas uma pequena parcela.
2.2. Simulao 33

Chama-se de coeficiente de dissipao sonora, , porcentagem de energia sonora


absorvida ou dissipada em um material qualquer, em relao quantidade de energia
acstica incidente na unidade de rea. (SILVA, 1971, pg. 126).

Coeficiente de reflexo, , a relao entre o fluxo de energia acstica refletida,


, e o fluxo de energia acstica incidente, , na unidade de rea. (BISTAFA, 2006,
pg. 232)

J o coeficiente de transmisso, , a relao entre o fluxo de energia acstica


transmitida, , e o fluxo de energia acstica incidente, , tambm, na unidade de rea.
(SILVA, 1971, pg. 127).

O coeficiente de absoro acstica, , a soma dos coeficientes de dissipao, ,


e de transmisso, , isto , a diferena entre a energia acstica incidente e a refletida.
(BISTAFA, 2006, pg. 231).


= + = = 1 1

A soma dos 3 coeficientes descritos acima :


+ + = + + = 1

Cada material tem um coeficiente de absoro e o seu valor no constante, pois


varia com a frequncia do som incidente. Uma superfcie, terica, infinitamente rgida e
polida, seria totalmente refletora e seu coeficiente de absoro seria nulo. J uma janela
aberta de um recinto qualquer, teria esse coeficiente igual a 1, o que significa que 100%
da energia incidente passa para o outro lado, isto , para o lado de fora. (SILVA, 1971).

2.2 Simulao
A simulao computacional possui diversos conceitos por diferentes autores, porm,
em sua grande maioria, acabam por convergir para o fato de que a simulao contribui para
34 Captulo 2. Referencial Terico

a resoluo de problemas complexos. (CARVALHO, 2003). A seguir sero apresentadas


as vises de alguns autores a respeito do conceito de simulao.
De acordo com (SCHRIBER, 1974), simulao pode ser definida da seguinte ma-
neira: "simulao implica na modelagem de um processo ou sistema, de tal forma que o
modelo imite as respostas do sistema real numa sucesso de eventos que ocorrem ao longo
do tempo".
Segundo Law e Kelton (1991), simulao a imitao de um sistema real, modelado
em computador, para avaliao e melhoria de seu desempenho. Ou seja, simulao
a representao de um processo do mundo real para um ambiente controlado onde se
pode estudar o comportamento do mesmo, sob diversas condies, sem riscos fsicos e/ou
grandes custos envolvidos. (TORGA, 2007).
Segundo Torres (2008), computadores so timas ferramentas para simular pro-
cessos do mundo em que vivemos. De acordo com Carvalho (2003), atualmente, simulao
praticamente sinnimo de simulao computacional digital.

2.2.1 Simulao acstica


A acstica geomtrica de salas um modelo de representao acstica de ambien-
tes fechados onde o conceito de onda sonora substitudo pelo conceito de raio sonoro.
(TORRES, 2008)
Dependendo da simplicidade do modelo, a utilizao de ferramentas matemticas
como clculo, lgebra ou probabilidade podem ser suficientes para se obter uma resposta
exata a respeito de parmetros como o tempo de reverberao do som em um ambiente.
Essa resposta exata conhecida como soluo analtica do modelo. (TORRES, 2008)
Apesar de ser possvel obter resultados utilizando ferramentas matemticas,
muito raro encontrar sistemas no mundo real que possam ser representados por mode-
los simples o suficiente para serem resolvidos de forma analtica, pois algumas equaes
clssicas da acstica de salas no so suficientes para oferecer bons resultados quando as
salas assumem geometria complexa. (BASTOS; CARDOSO; MELO, 2010)
Segundo Torres (2008, pg. 5), para modelos mais complexos, a simulao uma
ferramenta poderosa que pode ajudar a obter mais informaes a respeito de tais pro-
cessos, como ocorre em simulao acstica, tornando possvel prever a acstica de salas
complexas.

Para que os parmetros acsticos de um ambiente possam es-


tar de acordo com os padres previstos para sua finalidade,
recomendvel que se faa uma predio do seu comporta-
mento acstico, atravs de modelos de simulao, para que
sejam obtidos resultados com boa preciso em um tempo de
2.3. Sistemas Multiagentes 35

processamento relativamente curto, reduzindo custos e au-


mentando a eficincia dos projetos, quando da seleo correta
e quantidade certa de material a ser utilizada para se efe-
tuar tratamentos acsticos nesse ambiente. (BASTOS; CAR-
DOSO; MELO, 2010).

O avano na capacidade de processamento dos computadores atuais os tornou


capazes de calcular os mais diversos e complexos efeitos da propagao de ondas. Mtodos
numricos so capazes de transportar a realidade fsica para a linguagem computacional.
(CAMILO; TENENBAUM; COELHO, 2002).

2.3 Sistemas Multiagentes


Sistemas multiagentes so sistemas compostos de vrios elementos de computao
interagindo entre si, conhecidos como agentes. Agentes so sistemas computacionais com
dois recursos importantes. Primeiramente, eles so pelo menos a certo ponto, capazes de
realizar aes autnomas, ou seja, capazes de decidir por si mesmos o que eles precisam
fazer a fim de satisfazer seus objetivos de projeto. Em segundo lugar, eles so capazes de
interagir com outros agentes, no simplesmente pela troca de dados, mas por se envolver
em anlogos do tipo de atividade social que todos ns colocamos em nosso dia a dia: a
cooperao, coordenao, negociao, dentre outros. (WOOLDRIDGE, 2009).
Segundo Weiss (1999), "Agentes"so entidades autnomas, computacionais. Dizer
que os agentes so entidades computacionais simplesmente significa que existem na forma
de programas que so executados em dispositivos de computao. Dizer que eles so
autnomos significa que at certo ponto eles tm controle sobre seu comportamento e
podem agir sem a interveno de seres humanos ou outros sistemas. Agentes buscam
atingir objetivos ou realizar tarefas, a fim de encontrar seus objetivos de projeto, e em
geral, essas metas e tarefas podem ser tanto complementares, como conflitantes.
Dizer que os agentes so inteligentes no significa que eles so omnisciente ou
onipotente, nem significa que eles nunca falham. Pelo contrrio, significa que eles ope-
ram de forma flexvel e racional em uma variedade de circunstncias ambientais, dada
a informao que eles tm e as suas capacidades perceptivas e eficazes. O foco principal
est em processos como a resoluo de problemas, planejamento, pesquisa, tomada de
decises e de aprendizagem que tornam possvel para os agentes, mostrar flexibilidade e
racionalidade em seu comportamento, e sobre a realizao de tal processo em cenrios
multiagentes. (WEISS, 1999).
Agentes tambm interagem entre si, isto , os agentes podem ser afetados por
outros agentes em busca de atingir seus objetivos e executar suas tarefas. A interao pode
ocorrer indiretamente, atravs do meio ambiente em que esto embutidas, ou diretamente,
atravs de uma linguagem comum. (WEISS, 1999).
36 Captulo 2. Referencial Terico

Um sistema multiagentes pode ser descrito como uma comunidade de agentes aut-
nomos, onde estes interagem, se organizam e se comunicam, competindo ou cooperando
uns com os outros, a fim de alcanar o objetivo proposto para esse sistema. (THOMAZ,
2011).
A rea de sistemas multiagentes um promissor domnio tecnolgico para uso
em performances musicais interativas. Essa tecnologia vem sendo utilizada para resolver
problemas musicais de escopo especfico e alcance limitado, como por exemplo, a simulao
de instrumentos e o acompanhamento musical automtico. (THOMAZ, 2011).

2.4 Consideraes finais


Prever o comportamento do som dentro de um ambiente fechado vem se tornando
uma necessidade cada vez mais notvel, porm, no trivial. Para isto, est sendo cada
vez mais comum o uso de simuladores que auxiliem os profissionais da rea da acstica
arquitetnica na anlise do comportamento sonoro em seus projetos.
O paradigma de programao multiagentes apresenta um grande potencial para
tal finalidade, apesar de ter sido pouco explorado na rea de simulao de ambientes
acsticos. A capacidade de autonomia, paralelismo e cooperao dos agentes, demonstra
uma promissora capacidade de representao do som dentro de ambientes fechados.
37

3 Suporte Tecnolgico

3.1 Ferramentas de desenvolvimento

3.1.1 JADE

O JADE (Java Agent Development Framework)1 um framework de software total-


mente implementado na linguagem de programao Java. Ele simplifica a implementao
de sistemas multiagentes atravs de um midleware que est em conformidade com as es-
pecificaes FIPA (Foundation for Intelligent Physical Agents) e atravs de um conjunto
de ferramentas grficas que suportam as fases de depurao e implantao.
A especificao mnima do sistema para executar o JADE a verso 5 do Java (o
run time environment ou o JDK).
O framework JADE um software livre e distribudo pela Telecom Italia, titular
dos direitos de autor, em cdigo aberto sob os termos e condies da licena LGPL (Lesser
General Public License verso 2).
Alm da equipe do JADE, existe tambm, uma grande comunidade de desenvol-
vedores que comearam a participar no desenvolvimento do JADE nestes anos. Qualquer
pessoa que est disposta a contribuir com esta Comunidade, relatando erros, fornecendo
correes e contribuies ou simplesmente comentrios e sugestes, pode participar do
projeto.

3.1.2 Eclipse

O Eclipse2 uma IDE (Integrated Development Environment) open source para


desenvolvimento Java, porm pode suportar outras linguagens a partir de plug-ins.
O Projeto Eclipse foi originalmente criado pela IBM em novembro de 2001 e apoi-
ado por um consrcio de fornecedores de software. A Eclipse Foundation foi criada em
janeiro de 2004 como uma corporao sem fins lucrativos para permitir que uma comuni-
dade de fornecedores neutros, abertos e transparentes pudesse ser estabelecida em torno
do Eclipse. Hoje, a comunidade Eclipse composta por indivduos e organizaes de uma
seo transversal da indstria de software.

1
<http://jade.tilab.com/>
2
<https://www.eclipse.org/org/>
38 Captulo 3. Suporte Tecnolgico

3.1.3 JUnit
JUnit3 um framework open-source simples para escrever testes repetveis na
linguagem de programao Java. um exemplo da arquitetura xUnit para frameworks
de testes de unidade.

3.1.4 Ubuntu
O Ubuntu4 um sistema operacional open source, construdo a partir do ncleo
Linux, baseado no Debian e patrocinado pela Canonical Ltd. Seu desenvolvimento visa
segurana, sendo disponibilizadas atualizaes relacionadas segurana por pelo menos
18 meses para desktops e servidores e chegando trs anos na verso de Longo Tempo
de Suporte (LTS).
O Linux j foi estabelecido como uma plataforma de servidor de empresa em 2004,
mas o software livre no era uma parte da vida cotidiana para a maioria dos usurios de
computador. por isso que Mark Shuttleworth reuniu uma pequena equipe de desenvol-
vedores de um dos projetos Linux mais estabelecidos - Debian - e se props a criar um
desktop Linux fcil de usar, o Ubuntu.
A viso para o Ubuntu parte social e parte econmica: software livre, disponvel
a todos nas mesmas condies, e financiado por meio de um portflio de servios prestados
pela Canonical.

3.1.5 Git
Git5 uma sistema de controle de verso distribuda de forma livre e de cdigo
aberto projetada para lidar com variados tipos de projeto, com nfase na velocidade e na
eficincia.
O Git distribudo sob a licena GNU GPLv2 foi desenvolvido inicialmente para
ser utilizado no desenvolvimento do Kernel Linux, porm, j foi adotado por muitos outros
projetos.

3.1.6 GitHub
O GitHub6 um repositrio web projetado para auxiliar projetos que utilizam o
sistema de controle de verso Git. Essa ferramenta permite que um grupo de colaboradores
ou at mesmo que equipes de pessoas em um projeto ou organizao possam desenvolver,
se comunicar e acompanhar o status do projeto com facilidade. Tambm possvel revisar
3
<http://junit.org/index.html>
4
<http://ubuntu-br.org/ubuntu>
5
<http://git-scm.com/>
6
<https://github.com/>
3.2. Simuladores acsticos similares 39

mudanas, comentar linhas de cdigo, reportar issues e planejar o futuro do projeto com
ferramentas de discusso.
O GitHub escrito em Ruby on Rails e possui planos comerciais e gratuitos no
caso de projetos de cdigo aberto.

3.1.7 LATEX
LATEX7 um sistema de preparao de documentos para a composio tipogrfica
de alta qualidade. mais freqentemente usado para documentos tcnicos ou cientficos
de mdio a grande porte, mas ele pode ser usado para quase qualquer forma de publicao.
LATEX no um processador de texto, em vez disso, LATEX incentiva os autores a no se
preocuparem muito com a aparncia de seus documentos, e sim em obter o contedo certo.
LATEX baseada na linguagem TeX de Donald E. Knuth. LATEX foi desenvolvido
pela primeira vez em 1985 por Leslie Lamport, e agora est sendo mantido e desenvolvido
pelo Projeto LATEX3 , disponvel gratuitamente.

3.2 Simuladores acsticos similares


3.2.1 Odeon
O Software ODEON8 desenvolvido para simular a acstica interior de constru-
es. Dada a geometria e as propriedades das superfcies presentes no ambiente, a acstica
pode ser prevista, ilustrada e ouvida. O ODEON utiliza o mtodo de fontes virtuais com-
binado com o mtodo de traado de raios.
O projeto ODEON foi iniciado na cooperao entre a Universidade Tcnica da
Dinamarca (Departamento de Tecnologia Acstica) e um grupo de empresas de consultoria
em 1984, com a finalidade de fornecer software de previso confivel para acstica da sala.
Os anos investidos no desenvolvimento do ODEON resultaram em um software de medio
e previso acstica de salas confivel e fcil de usar.

O mtodo do Traado de Raios assume que o som irradiado


em forma de partculas na velocidade do som. As partculas
viajam pelo ar e so refletidas quando encontram um obst-
culo, i.e., as paredes da sala. Em cada reflexo so considera-
dos os coeficientes de absoro e de espalhamento da parede.
Quando a partcula atinge o receptor, sua energia e seu tempo
so registrados, para que seja construda a Resposta Impul-
siva do receptor. Este procedimento repetido at que algum
critrio de parada seja alcanado, como por exemplo, quando
a energia do raio for suficientemente pequena se comparada
energia inicial.
7
<http://latex-project.org/intro.html>
8
<http://www.odeon.dk/content/acoustics-simulation-software>
40 Captulo 3. Suporte Tecnolgico

O Mtodo das Fontes Virtuais pode ser comparado a uma questo ptica que envolve
espelhos e suas imagens. anlogo a uma sala de espelhos onde os objetos so refletidos,
e suas imagens tambm podem ser refletidas, e ambos podem ser observados. As imagens
que so refletidas diretamente do objeto so chamadas imagens de primeira ordem, as
imagens das imagens so chamadas de imagens de segundas ordem, e assim por diante.
No caso da acstica, os objetos refletidos so as fontes sonoras e os observadores so os
receptores A figura 4 ilustra o mdulo de simulao 3D da reflexo sonora dentro de um
ambiente.

Figura 4 Tela de simulao 3D do Odeon

Este simulador foi utilizado como base e inspirao para o projeto proposto neste
trabalho.

3.2.2 AcMus
O AcMus9 um projeto voltado para a pesquisa sobre acstica musical que visa
desenvolver modelos e ferramentas computacionais para o estudo de ambientes destinados
escuta musical. Este pretende ser o primeiro projeto de um ncleo de pesquisa interdisci-
plinar voltado para o assunto da acstica musical, nascido de um trabalho conjunto entre
os departamentos de Msica e Cincia da Computao da Universidade de So Paulo.
O AcMus uma ferramenta de software livre implementado como um arcabouo
orientado a objetos utilizando a linguagem de programao Java. A ferramenta rene, em
um nico ambiente integrado, medio, anlise e simulao acstica de salas.
A interface grfica da ferramenta baseada no template do IDE Eclipse3.1.2 IDE,
conforme pode ser visto na figura 5.
9
<http://gsd.ime.usp.br/acmus/menu.html>
3.3. Consideraes finais 41

Figura 5 Telas de interface grfica do software AcMus

3.3 Consideraes finais


As ferramentas de desenvolvimento citadas neste captulo so importantes tanto
para o desenvolvimento da prova de conceito quanto do simulador em si. Em conjunto,
essas ferramentas auxiliam o desenvolvimento de um sistema extensvel e manutenvel,
visando qualidade e boas prticas de programao.
As ferramentas de simulao acstica descritas, auxiliaram na compreenso do do-
mnio do problema. Essas ferramentas foram investigadas com intuito de verificar quais
so os sistemas existentes no mercado e como a simulao acstica tratada nessas fer-
ramentas. O estudo desses simuladores serviu de insumo para a elaborao da proposta
do simulador acstico, produto de trabalho deste TCC.
43

4 Metodologia

4.1 Classificao da pesquisa


Pesquisas so classificadas de acordo com seus objetivos gerais. O objetivo de uma
pesquisa exploratria a familiarizao com o assunto que ainda no foi bem explorado
e existem poucas informaes acerca do mesmo. Em sua maioria, a pesquisa assume
forma de planejamento bibliogrfico ou estudo de caso. Essas pesquisas podem envolver
levantamento bibliogrfico, entrevistas com pessoas que tiveram experincias prticas com
o problema pesquisado e tambm anlise de exemplos que estimulem a compreenso (GIL,
2002).
Outro tipo de classificao formulada com base nos procedimentos tcnicos uti-
lizados para seu desenvolvimento. A exemplo disto, existe a pesquisa experimental, que
se trata de uma pesquisa envolvendo algum tipo de experimento. Consiste ainda em de-
terminar um objeto de estudo, selecionar as variveis capazes de influenci-lo e definir as
formas de controle e observao dos efeitos que a varivel produz no objeto. Sendo assim,
as pesquisas experimentais so um procedimento importante para os cientistas testarem
hipteses que estabelecem relaes de causa e efeito entre as variveis. Portanto, essa tc-
nica garante ao pesquisador um carter de agente ativo e no apenas de mero observador
passivo. (SILVA; TAFNER, 2006).
Considerando os objetivos de estudo e o referencial bibliogrfico levantado at o
momento, este projeto se enquadra no modelo de pesquisa exploratrio, conduzido usando
experimentaes.

4.2 Planejamento da pesquisa


O processo de pesquisa tem sido conduzido inicialmente, por um levantamento
bibliogrfico, porm, o mesmo ser revisado durante todo o projeto. Durante a fase inicial
da pesquisa, algumas atividades tero um foco maior, como a definio do escopo, a
elicitao dos requisitos e o planejamento da abordagem. Esta ltima ser executada at
o final do desenvolvimento da pesquisa.
Aps a fase inicial da pesquisa, algumas outras atividades foram priorizadas, tais
como a implementao da prova de conceito, o refinamento da proposta e a elaborao
da parte escrita correspondente ao TCC 01.
As consideraes feitas pela banca de TCC 01 sero coletadas e registradas como
sugestes de melhoria. A partir dessas sugestes, sero realizadas as devidas alteraes
44 Captulo 4. Metodologia

no projeto. Com as melhorias implementadas, o desenvolvimento do Simulador Acstico


ser iniciado e conduzido utilizando conceitos de qualidade e tcnicas de programao
estudados durante o curso de graduao em Engenharia de Software.
Ao finalizar o desenvolvimento do Simulador Acstico, os resultados sero coleta-
dos e registrados, sendo ento incorporados parte escrita do projeto, que, por sua parte,
ter um foco maior nesta fase final da pesquisa.
Durante esse processo, esto sendo estudadas algumas metodologias de gerncia e
de desenvolvimento assim como ferramentas e tecnologias que possam proporcionar um
melhor acompanhamento e suporte ao projeto.

4.3 Cronograma da pesquisa


Segue o cronograma visando demonstrar como as principais atividades sero con-
duzidas ao longo dos TCCs 01 e 02. Trata-se de uma viso preliminar. Portanto, adap-
taes no cronograma so possveis, dada necessidade de melhorias na conduo do
processo.

Ago Set Out Nov Dez


Levantamento Bibliogrfico X X X
Definio do escopo X X
Elicitao dos requisitos X
Planejamento da abordagem X X
Levantamento do suporte tecnolgico X X
Implementao da prova de conceito X
Refinamento da proposta X
Elaborao da parte escrita do projeto X X
Apresentao para a Banca de TCC 1 X
Coletar sugestes de melhoria da banca X
Realizar correes X
Tabela 1 Cronograma TCC 1 (2014)

Jan Fev Mar Abr Mai Jun


Implementao do simulador X X X
Coletar primeiras impresses do simulador X
Dar continuidade a parte escrita do projeto X
Apresentao para a Banca de TCC 2 X
Refinamento da escrita com base nas consideraes da Banca X
Escrever Artigo X
Tabela 2 Cronograma TCC 2 (2015)
4.4. Modelagem da metodologia 45

4.4 Modelagem da metodologia


Com intuito de ilustrar como ser realizada a conduo deste projeto, segue a
figura 6 que apresenta a modelagem do processo metodolgico com base na metodologia
descrita nesta seo.

Figura 6 Processo TCC

4.5 Prova de conceito


A fim de entender melhor o domnio da aplicao e verificar a viabilidade do
projeto, foi desenvolvida uma prova de conceito. Essa prova de conceito permitiu que
alguns elementos que no puderam ser identificados apenas na fase inicial do projeto com
o referencial bibliogrfico estudado, fossem identificados, podendo assim, compor uma
proposta mais refinada da soluo.
46 Captulo 4. Metodologia

4.5.1 Especificaes tcnicas


As especificaes tcnicas da mquina no qual foi utilizada para a realizao do de-
senvolvimento da prova de conceito foram, um processador Intel Core i7, modelo 2630QM
de 2Ghz e uma memria RAM de 6Gb. O sistema operacional utilizado foi o Ubuntu,
verso 14.10 de 64 bits.

4.5.2 Descrio da prova de conceito


Para a construo dos agentes, optou-se pelo uso do framework JADE. O principal
motivo desta escolha foi o fato de ser uma ferramenta reconhecida pela comunidade que
trabalha com sistemas multiagentes, e por seguir os padres e normas estabelecidos pela
FIPA1 . Outro fator que que foi levado em considerao na escolha do framework foi o
fato de ser uma plataforma estabilizada no processo de criao de agentes alm da sua
boa documentao. (FRANA et al., 2012). O JADE inteiramente implementado na
linguagem de programao JAVA, portanto, as aplicaes que fazem uso deste framework
assim como sua integrao com o mesmo, feita por meio dessa linguagem.
Com base na literatura estudada, identificamos alguns elementos fsicos importan-
tes que devero ser representados no sistema e foram implementados de forma simplificada
para esta prova de conceito, tais como, paredes, obstculos e fontes sonoras que iro com-
por juntamente o ambiente a ser representado dentro do sistema. O som tambm deve ser
representado, porm, o conceito de onda sonora foi substitudo pelo de raio sonoro, onde
elas sero retas dirigidas segundo a direo em que as mesmas caminham, permitindo
assim, tratar melhor o evento da reflexo sonora (SILVA, 1971). O conceito de raio sonoro
j utilizado por grande parte dos softwares na rea de simulao acstica.
A princpio, todos os elementos identificados foram tratados e implementados como
agentes de software. O ambiente foi desenvolvido como o agente principal, responsvel pela
criao de todos os outros agentes que por final iro compor a estrutura do ambiente, com
exceo do som, que deve ser criado pela fonte sonora dentro do sistema.
Esse modelo apresentou alguns problemas de desempenho, no qual tornou invivel
o uso de um volume maior de agentes. Portanto, um novo modelo foi proposto. O modelo
consiste em uma soluo hbrida, composta pelos paradigmas multiagentes e orientado
a objetos, onde os obstculos do ambiente so tratados como objetos, devido ao fato
de no terem um papel significativo na comunicao dos agentes, pois so elementos
estticos dentro do sistema. Os demais elementos como o ambiente, a fonte sonora e o
som se mantiveram como agentes de software, sendo o ambiente responsvel por agrupar
os demais elementos do sistema, que so, fontes sonoras (agentes) e obstculos (objetos).

1
<http://www.fipa.org/>
4.5. Prova de conceito 47

A fonte sonora o agente responsvel pela criao dos sons, simulando o com-
portamento de pulso sonoro. J os sons, so os agentes mais ativos dentro do projeto,
sendo responsveis por exercerem seu papel e percorrerem todo o ambiente, identificando
as devidas colises, reflexes e alterando seus parmetros de intensidade sonora, direo,
dentre outros, at que o mesmo atinja uma intensidade inaudvel, ocasionando assim o
fim do mesmo.
O agente som dentro do sistema tratado como um ponto dentro do mapa do
ambiente. A fonte sonora o agente responsvel pela criao desses agentes sonoros,
emitindo assim um arco com uma abertura de acordo com a configurao da fonte. Por
exemplo, caso uma fonte sonora tenha sido configurada para emitir um pulso sonoro com
uma abertura de 90 e os agentes sonoros so criados com um intervalo de 1, essa fonte
sonora ir lanar 91 agentes sonoros a partir de sua origem, que no caso ser a fonte
sonora. A figura 7 ilustra esse evento.

Figura 7 Fonte Sonora

A fonte sonora lana cada agente em uma determinada direo. A potncia na


qual a fonte sonora emite os agentes pode ser configurada. Aps o agente sonoro ser
emitido pela fonte, ele seguir na direo em que foi lanado at encontrar um obstculo,
onde ento, ir recalcular sua intensidade sonora com base no ndice de absoro do
material do obstculo encontrado, e ir alterar tambm sua direo com base no ngulo
de inclinao do obstaculo. A cada reflexo, os agentes sonoros vo perdendo potncia
devido ao coeficiente de absoro sonora do material que reveste o obstculo, at atingir
uma intensidade sonora considerada inaudvel ao ouvido humano.
Nesta, prova de conceito, foram consideradas apenas duas dimenses para a re-
presentao simplificada do sistema, sendo assim, o som se desloca em um plano 2D e os
obstculos so definidos por linhas, conforme o exemplo de ambiente ilustrado na figura
8.
O comportamento dos agentes foi acompanhado a partir do JADE GUI, ferramenta
grfica nativa do JADE para acompanhamento dos agentes e suas trocas de mensagens.
A figura 9 ilustra esta ferramenta.
48 Captulo 4. Metodologia

Figura 8 Ambiente bidimensional

Figura 9 JADE GUI

Nesta abordagem hbrida para a soluo da prova de conceito, o agente som se


torna responsvel por conhecer os obstculos presentes no ambiente no qual est inserido,
pois os obstculos no participam ativamente do sistema, ou seja, no so capazes de
realizar trocas de mensagens com os agentes. Como o ambiente o agente que conhece
todos os elementos presentes na sala, ele responsvel por informar a fonte sonora como
esto mapeados os obstculos dentro do ambiente, a ento, quando a fonte sonora lana
um pulso, ela responsvel por passar a cada agente sonoro essa informao no momento
de sua criao.
4.6. Consideraes Finais 49

4.5.3 Refinamento da proposta


Aps a implementao da prova de conceito seguindo o modelo hbrido, onde os
obstculos so objetos e os demais elementos so agentes, foi possvel trabalhar com um
volume de at 447 agentes sonoros, ou seja, um agente a cada 0,2 considerando uma fonte
com abertura de 90, de forma segura, sem causar travamento do sistema e nem prejudi-
car a comunicao dos agentes. Porm a velocidade da simulao cai significativamente,
levando 3 minutos e 29 segundos at o final do ltimo som no ambiente. Com um volume
de 181 agentes, basicamente um agente a cada 0,5 em uma fonte sonora com abertura de
90, foi possvel realizar a simulao a um tempo de 1 minuto e 24 segundos. Ambos os
resultados foram mais satisfatrios que a proposta inicial do sistema totalmente baseada
em multiagentes, no apenas pelo tempo, mas tambm pelo fato de a primeira proposta
no suportar um volume maior que 91 agentes sem apresentar problemas na troca de
mensagens, ocasionando um erro associado identificao de coliso dos agentes com os
obstculos.
Vale ressaltar que as configuraes de mquina utilizadas nessa simulao no
so ideais. Sistemas multiagentes so intrinsecamente distribudos e para obter melhores
resultados em termos de desempenho, seria necessrio utilizar mais de uma mquina.
Entretanto, tal recurso no foi vivel durante a conduo do experimento.

4.6 Consideraes Finais


Este trabalho prope uma nova abordagem de simulador acstico, baseado em
sistemas multiagentes, onde os sons so representados como agentes autnomos dentro
do ambiente, sendo capazes de interagir com outros sons e com os recursos presentes no
ambiente atravs da troca de mensagens e de forma assncrona. Trata-se de uma pesquisa
exploratria, conduzida por meio de experimentaes.
A fim de refinar a proposta inicial do trabalho, que antes era baseada apenas no
referencial terico estudado, foi desenvolvida uma prova de conceito, onde foi criada uma
representao bidimensional de um ambiente, com obstculos e seus respectivos coefici-
entes de absoro, fontes sonoras e um conjunto de sons percorrendo e interagindo com
os elementos presentes no sistema.
Com a implementao da prova de conceito foi possvel identificar alguns pro-
blemas de desempenho que puderam ser reduzidos com um modelo de soluo multipa-
radigma. O uso dos paradigmas Orientado a Objetos e multiagentes, alm melhorar o
desempenho do sistema implementado na prova de conceito, tornou o modelo mais claro,
sendo mais intuitivo a representao de obstculos como objetos de software.
Uma proposta refinada do simulador acstico foi elaborada ao final desse processo
50 Captulo 4. Metodologia

metodolgico a partir das evidncias observadas com a prova de conceito.


51

5 Proposta

A partir do referencial bibliogrfico estudado neste trabalho e da prova de conceito


desenvolvida no decorrer do TCC 01, foi possvel definir que o simulador, objeto de estudo
deste trabalho, consiste em um sistema que seja capaz de representar o comportamento
sonoro dentro de um ambiente atravs de agentes de software, que sejam capazes de
interagir de forma autnoma com os elementos do ambiente representados no sistema.
Com base na simulao realizada na prova de conceito, foi possvel identificar que,
por questes de desempenho, a soluo do sistema final ser composta por pelo menos
dois paradigmas, o paradigma orientado a objetos e o de sistemas multiagentes.
Para a soluo final, o sistema ser evoludo a fim de simular um ambiente tridi-
mensional. O comportamento dos agentes sonoros tambm ser aprimorado, permitindo-os
estar preparados para diversas situaes e se aproximar ao mximo possvel do compor-
tamento real do som em um ambiente fechado.
Dada a arquitetura, o sistema composto por trs tipos de agentes, sendo eles,
ambiente, fonte sonora e sons. O outro elemento do sistema o obstculo, porm, este
deixou de ser um agente tratado agora como objeto.
O Ambiente o agente responsvel pela criao dos obstculos e da fonte sonora.
Ao criar a fonte sonora, o ambiente deve informar a localizao dos obstculos para que ela
possa transmitir esta localizao aos sons. A informao de localizao dos obstculos aos
sons de fundamental importncia, pois eles utilizaro essa informao para determinar
quais so os pontos de coliso e ento recalcular seus parmetros de direo e intensidade
sonora. O modelo da arquitetura est ilustrado na figura 10.
Alm da arquitetura base do sistema, a arquitetura do framework JADE, utilizado
para a implementao dos agentes neste projeto, tambm implementa em uma camada
inferior. A modelo da arquitetura do JADE pode ser visualizado na figura 11.
Tanto os agentes quanto os objetos do sistema sero escrito na linguagem de pro-
gramao Java. A ferramenta utilizada para controle de verso o git, juntamente com
o repositrio GitHub, afim de promover a cultura de software livre e abrir espao para a
comunidade que deseja contribuir ou estudar sobre o assunto.
52 Captulo 5. Proposta

Figura 10 Arquitetura do Simulador Acstico

Figura 11 Arquitetura JADE


53

Referncias

BASTOS, L. P.; CARDOSO, H. F. S.; MELO, G. d. S. V. de. Anlise numrica e


experimental dos parmetros acsticos de uma sala de aula da universidade federal do
par. Campina Grande - Paraba, 2010. Citado 2 vezes nas pginas 34 e 35.

BISTAFA, S. Acstica aplicada ao controle do rudo. [S.l.]: Edgard Blcher, 2006. ISBN
9788521203766. Citado 4 vezes nas pginas 29, 31, 32 e 33.

CAMILO, T. S.; TENENBAUM, R. A.; COELHO, J. L. B. Engenharia acstica


auxiliada por computador: um mtodo hbrido para simulao de acstica de salas.
Anais do SEMEA, 2002. Citado na pgina 35.

CARVALHO, D. D. T. d. Metodologia de anlise do desempenho da usina de


concentrao da samarco minerao sa baseada em simulao das operaes. Programa
de Ps-Graduao em Engenharia Mineral. Departamento de Engenharia de Minas,
Escola de Minas, Universidade Federal de Ouro Preto., 2003. Citado na pgina 34.

FRANA, R. M. et al. Anlise comparativa entre as plataformas multiagentes jade e


fipa-os. Acedido em Abril de 2012. Citado na pgina 46.

GIL, A. C. Como elaborar projetos de pesquisa. So Paulo, Brasil: Atlas, 2002. Citado
na pgina 43.

LAW, A. M.; KELTON, W. D. Simulation modeling and analysis. [S.l.]: McGraw-Hill


New York, 1991. Citado na pgina 34.

RAMIRES, F. Coeficiente de espalhamento sonoro de painis perfurados. dissertao


(mestrado). Faculdade de Engenharia Civil, Arquitetura e Urbanismo, Universidade
Estatual de Campinas, So Paulo, 2011. Disponvel em: <http://www.bibliotecadigital.
unicamp.br/document/?code=000811191&fd=y>. Citado 2 vezes nas pginas 25 e 26.

SANTOS, C. dos. Influncia do espalhamento acstico na percepo auditiva de espaos:


mtodos e desenvolvimentos. Campinas, SP, 2011. Citado 2 vezes nas pginas 25 e 26.

SCHRIBER, T. J. Simulation using GPSS. [S.l.], 1974. Citado na pgina 34.

SILVA, P. Acstica arquitetnica. Belo Horizonte, MG: Edies Engenharia e Arquitetura,


1971. (Publicao (Universidade Federal de Minas Gerais)). Citado 8 vezes nas pginas
15, 25, 29, 30, 31, 32, 33 e 46.

SILVA, R.; TAFNER, E. P. Apostila de metodologia cientfica. Associao Educacional


do Vale do Itaja-Mirim, 2006. Disponvel em: <http://www.teses.usp.br/teses/
disponiveis/18/18149/tde-2592012-204752/>. Citado na pgina 43.

THOMAZ, L. F. Um arcabouo para construo de sistemas multiagentes musicais.


Tese (Doutorado) Universidade de Sao Paulo, 2011. Disponvel em: <http:
//www.teses.usp.br/teses/disponiveis/45/45134/tde-13082011-113109/>. Citado na
pgina 36.
54 Referncias

TORGA, B. L. M. Modelagem, simulao e otimizao em sistemas puxados de


manufatura. Tese (Doutorado) UNIVERSIDADE FEDERAL DE ITAJUB, 2007.
Citado na pgina 34.

TORRES, M. H. C. Simulao acstica no ambiente acmus. dissertao (mestrado em


cincia da computao). Instituto de Matemtica e Estatstica, Universidade de So
Paulo, So Paulo, 2008. Disponvel em: <http://www.teses.usp.br/teses/disponiveis/45/
45134/tde-09092009-103134/>. Citado 3 vezes nas pginas 25, 26 e 34.

WEISS, G. Multiagent Systems: A Modern Approach to Distributed Artificial


Intelligence. MIT Press, 1999. (Intelligent Robotics and Autonomous Agents Series).
ISBN 9780262731317. Disponvel em: <http://books.google.com.br/books?id=
JYcznFCN3xcC>. Citado na pgina 35.

WOOLDRIDGE, M. An Introduction to MultiAgent Systems. Wiley, 2009.


ISBN 9780470519462. Disponvel em: <http://books.google.com.br/books?id=
X3ZQ7yeDn2IC>. Citado na pgina 35.
Apndices
57

APNDICE A Cdigo fonte da classe


Ambient

1 package s i m u l a t o r ;
2
3 import java . u t i l . ArrayList ;
4 import java . u t i l . List ;
5 import oo . L ine ;
6 import oo . L o c a l i z a t i o n ;
7 import oo . O b s t a c l e ;
8 import j a d e . c o r e . AID ;
9 import j a d e . c o r e . Agent ;
10 import j a d e . wrapper . P l a t f o r m C o n t r o l l e r ;
11 import u t i l s . Util ;
12
13 p u b l i c c l a s s Ambient e x t e n d s Agent {
14
15 p r i v a t e s t a t i c f i n a l l o n g s e r i a l V e r s i o n U I D = 1L ;
16
17 p r i v a t e f i n a l S t r i n g SOUNDSOURCE = " SoundSource " ;
18 p r i v a t e L i s t <O b s t a c l e > o b s t a c l e s = new A r r a y L i s t <>() ;
19 p r i v a t e L i s t <AID> s o u n d S o u r c e s = new A r r a y L i s t <>() ;
20
21 @Override
22 protected void setup ( ) {
23 defineAmbient ( ) ;
24 }
25
26 p u b l i c void defineAmbient ( ) {
27 PlatformController container = getContainerController () ;
28
29 O b s t a c l e w a l l 1 = new O b s t a c l e ( Li ne . g e t L i n e ( new L o c a l i z a t i o n ( 0 , 0 ) , new
L o c a l i z a t i o n (0 ,100) ) , 10) ;
30 O b s t a c l e w a l l 2 = new O b s t a c l e ( Li ne . g e t L i n e ( new L o c a l i z a t i o n ( 0 , 1 0 0 ) , new
L o c a l i z a t i o n (100 ,100) ) , 20) ;
31 O b s t a c l e w a l l 3 = new O b s t a c l e ( Li ne . g e t L i n e ( new Localization (100 ,100) ,
new L o c a l i z a t i o n ( 1 0 0 , 0 ) ) , 3 0 ) ;
32 O b s t a c l e w a l l 4 = new O b s t a c l e ( Li ne . g e t L i n e ( new L o c a l i z a t i o n ( 1 0 0 , 0 ) , new
L o c a l i z a t i o n ( 0 , 0 ) ) , 40) ;
33 O b s t a c l e w a l l 5 = new O b s t a c l e ( Li ne . g e t L i n e ( new L o c a l i z a t i o n ( 5 0 , 3 0 ) , new
L o c a l i z a t i o n (50 ,70) ) , 50) ;
34
35 o b s t a c l e s . add ( w a l l 1 ) ;
58 APNDICE A. Cdigo fonte da classe Ambient

36 obstacles . add ( w a l l 2 ) ;
37 obstacles . add ( w a l l 3 ) ;
38 obstacles . add ( w a l l 4 ) ;
39 obstacles . add ( w a l l 5 ) ;
40
41 / sound s o u r c e /
42 Object [ ] a r g s S o u n d S o u r c e = {new L o c a l i z a t i o n ( 0 , 5 0 ) , t h i s . getAID ( ) , 1 5 ,
obstacles };
43 s o u n d S o u r c e s . add ( c r e a t e O b j e c t ( argsSoundSource , c o n t a i n e r , t h i s .
SOUNDSOURCE) ) ;
44 }
45
46 p r i v a t e AID c r e a t e O b j e c t ( Object [ ] a r g s , P l a t f o r m C o n t r o l l e r c o n t a i n e r ,
S t r i n g type ) {
47 S t r i n g i d = g e t N e x t I d ( type ) ;
48 U t i l . initAgent ( container , args ,
49 " s i m u l a t o r . "+type , i d ) ;
50 System . out . p r i n t l n ( type + " c r i a d o ( a ) em : " + a r g s [ 0 ] ) ;
51 r e t u r n new AID( id , AID .ISLOCALNAME) ;
52 }
53
54 p u b l i c S t r i n g g e t N e x t I d ( S t r i n g type ) {
55 r e t u r n SoundSource . n e x t I d ( ) ;
56 }
57 }

src/simulator/Ambient.java
59

APNDICE B Cdigo fonte da classe


SoundSource

1 package s i m u l a t o r ;
2
3 import j a v a . u t i l . A r r a y L i s t ;
4 import j a v a . u t i l . L i s t ;
5
6 import oo . L o c a l i z a t i o n ;
7 import oo . O b s t a c l e ;
8 import u t i l s . Util ;
9 import j a d e . c o r e . AID ;
10 import j a d e . c o r e . Agent ;
11 import jade . core . behaviours . CyclicBehaviour ;
12 import jade . core . behaviours . TickerBehaviour ;
13 import j a d e . domain . DFService ;
14 import j a d e . domain . FIPAException ;
15 import j a d e . domain . FIPAAgentManagement . DFAgentDescription ;
16 import j a d e . l a n g . a c l . ACLMessage ;
17 import j a d e . wrapper . P l a t f o r m C o n t r o l l e r ;
18 import languagesAndMessages . Linguagem ;
19 import languagesAndMessages . Mensagem ;
20
21 p u b l i c c l a s s SoundSource e x t e n d s Agent {
22
23 p r i v a t e s t a t i c f i n a l l o n g s e r i a l V e r s i o n U I D = 1L ;
24
25 PlatformController container ;
26
27 p r i v a t e i n t updateTime = 1 0 0 0 0 ;
28
29 p r i v a t e s t a t i c L i s t <O b s t a c l e > o b s t a c l e s ;
30
31 p r i v a t e AID ambient ;
32 p r i v a t e AID soundSource ;
33 p r i v a t e AID sound ;
34
35 private Localization location ;
36 private int absorptionRate ;
37
38 @Override
39 protected void setup ( ) {
40 getParameters ( ) ;
60 APNDICE B. Cdigo fonte da classe SoundSource

41 registerSoundSource () ;
42 addBehavior ( ) ;
43 emitSoundPulse ( 0 , 9 0 , 8 0 ) ;
44 }
45
46 p r i v a t e v o i d emitSoundPulse ( d o u b l e d i r e c t i o n , d o u b l e opening , d o u b l e
potency ) {
47 double angle ;
48 c r e a t e S o u n d ( l o c a t i o n , d i r e c t i o n , potency ) ;
49 f o r ( d o u b l e i = 1 ; i<=o p e n i n g / 2 ; i ++){
50 a n g l e = U t i l . n o r m a l i z e A n g l e ( d i r e c t i o n+i ) ;
51 c r e a t e S o u n d ( l o c a t i o n , a n g l e , potency ) ;
52 angle = Util . normalizeAngle ( d i r e c t i o n i ) ;
53 c r e a t e S o u n d ( l o c a t i o n , a n g l e , potency ) ;
54 }
55 }
56
57 p r i v a t e v o i d addBehavior ( ) {
58 // Uncoment t o add t h i s b e h a v i o u r
59 // addBehaviour ( new UpdateSoundBehaviour ( t h i s ,
60 // updateTime ) ) ;
61 addBehaviour ( new GetMessageBehavior ( t h i s ) ) ;
62 }
63
64 private void registerSoundSource ( ) {
65 try {
66 DFAgentDescription dfd = new DFAgentDescription ( ) ;
67 dfd . setName ( getAID ( ) ) ;
68 DFService . r e g i s t e r ( t h i s , dfd ) ;
69 } c a t c h ( FIPAException e ) {
70 e . printStackTrace () ;
71 }
72 }
73
74 @SuppressWarnings ( " unchecked " )
75 pri vate void getParameters ( ) {
76 soundSource = t h i s . getAID ( ) ;
77 Object [ ] a r g s = getArguments ( ) ;
78 location = ( Localization ) args [ 0 ] ;
79 ambient = (AID) a r g s [ 1 ] ;
80 absorptionRate = ( int ) args [ 2 ] ;
81 o b s t a c l e s = ( A r r a y L i s t <O b s t a c l e >) a r g s [ 3 ] ;
82 }
83
84 p r i v a t e void createSound ( L o c a l i z a t i o n l o c a t i o n , double d i r e c t i o n , double
potency ) {
61

85 Object [ ] a r g s = {new L o c a l i z a t i o n ( l o c a t i o n ) , d i r e c t i o n , potency ,


ambient , soundSource , o b s t a c l e s } ;
86 f i n a l S t r i n g i d = Sound . n e x t I d ( ) ;
87 sound = new AID( id , AID .ISLOCALNAME) ;
88
89 container = getContainerController () ;
90 U t i l . initAgent ( container , args ,
91 " s i m u l a t o r . Sound " , i d ) ;
92
93 System . out . p r i n t l n ( i d + " c r e a t e d a t : " + l o c a t i o n ) ;
94 }
95
96 p r i v a t e c l a s s UpdateSoundBehaviour e x t e n d s T i c k e r B e h a v i o u r {
97
98 p r i v a t e s t a t i c f i n a l l o n g s e r i a l V e r s i o n U I D = 1L ;
99
100 p u b l i c UpdateSoundBehaviour ( Agent a , l o n g p e r i o d ) {
101 super (a , period ) ;
102 }
103
104 @Override
105 p r o t e c t e d v o i d onTick ( ) {
106 createSound ( l o c a t i o n , 0 , 60) ;
107 }
108 }
109
110 p r i v a t e c l a s s GetMessageBehavior e x t e n d s C y c l i c B e h a v i o u r {
111
112 p r i v a t e s t a t i c f i n a l l o n g s e r i a l V e r s i o n U I D = 1L ;
113
114 p u b l i c GetMessageBehavior ( Agent a g e n t ) {
115 super ( agent ) ;
116 }
117
118 @Override
119 public void action ( ) {
120 ACLMessage message = r e c e i v e ( ) ;
121
122 i f ( message != n u l l ) {
123 AID s e n d e r = message . g e t S e n d e r ( ) ;
124
125 i f ( message . g e t P e r f o r m a t i v e ( ) == ACLMessage .REQUEST && message .
g e t C o n t e n t ( ) . e q u a l s ( Mensagem .WHAT_IS_THE_LOCATION) ) {
126 responseLocalization ( sender ) ;
127 System . out . p r i n t l n ( " Sound S o u r c e : L o c a t i o n s e n t . " ) ;
128 }
62 APNDICE B. Cdigo fonte da classe SoundSource

129 e l s e i f ( message . g e t P e r f o r m a t i v e ( ) == ACLMessage .REQUEST && message


. getLanguage ( ) . e q u a l s ( Linguagem . INDEX) && message . g e t C o n t e n t ( ) .
equals ( location . toString () ) ){
130 System . out . p r i n t l n ( " SS : " + l o c a t i o n . t o S t r i n g ( ) ) ;
131 indexAnswer ( s e n d e r ) ;
132 }
133 else {
134 send ( Mensagem . getAnswerOfANotUnderstoodMessage (
135 sender ) ) ;
136 }
137 }
138
139 }
140
141 p u b l i c v o i d indexAnswer (AID d e s t i n a t i o n ) {
142 ACLMessage message = Mensagem . p r e p a r e M e s s a g e ( ACLMessage .INFORM,
Linguagem . INDEX, I n t e g e r . t o S t r i n g ( a b s o r p t i o n R a t e ) , d e s t i n a t i o n ) ;
143 send ( message ) ;
144 System . out . p r i n t l n ( " Sound S o u r c e : Index s e n t . " ) ;
145 }
146
147 p u b l i c v o i d r e s p o n s e L o c a l i z a t i o n (AID d e s t i n a t i o n ) {
148 ACLMessage message = Mensagem . p r e p a r e M e s s a g e ( ACLMessage .INFORM,
Linguagem .LOCATION, l o c a t i o n . t o S t r i n g ( ) , d e s t i n a t i o n ) ;
149 send ( message ) ;
150 }
151 }
152
153 private s t a t i c int id = 0;
154
155 public s t a t i c String nextId () {
156 r e t u r n " sound_source " + (++i d ) ;
157 }
158 }

src/simulator/SoundSource.java
63

APNDICE C Cdigo fonte da classe


Sound

1 package s i m u l a t o r ;
2
3 import j a v a . u t i l . A r r a y L i s t ;
4 import j a v a . u t i l . L i s t ;
5
6 import oo . L ine ;
7 import oo . L o c a l i z a t i o n ;
8 import oo . O b s t a c l e ;
9 import u t i l s . Util ;
10 import j a d e . c o r e . Agent ;
11 import jade . core . behaviours . TickerBehaviour ;
12 import j a d e . domain . DFService ;
13 import j a d e . domain . FIPAException ;
14 import j a d e . domain . FIPAAgentManagement . DFAgentDescription ;
15
16
17 p u b l i c c l a s s Sound e x t e n d s Agent {
18
19 p r i v a t e s t a t i c f i n a l l o n g s e r i a l V e r s i o n U I D = 1L ;
20
21 p r i v a t e s t a t i c f i n a l i n t UPDATE_PERIOD = 2 0 ; //Time o f a t u a l i z a t i o n o f
sound i n ms .
22 p r i v a t e s t a t i c f i n a l i n t SIZE_OF_STEP = 1 ;
23 p r i v a t e s t a t i c f i n a l d o u b l e ERROR = 1 ; //SIZE_OF_STEP/ 2 ;
24
25 p r i v a t e s t a t i c L i s t <O b s t a c l e > o b s t a c l e s ;
26
27 private Li ne r o t e ;
28 private Localization collisionPoint ;
29 private double c o l l i s i o n D i s t a n c e ;
30 private Obstacle c o l l i s i o n O b s t a c l e ;
31
32 Localization initialLocation ;
33 Localization actualLocation ;
34 double d i r e c t i o n ;
35 d o u b l e potency ;
36 int distance = 0;
37 double index ;
38
39 @Override
64 APNDICE C. Cdigo fonte da classe Sound

40 protected void setup ( ) {


41 getParameters ( ) ;
42 findNextObstacle () ;
43 soundRegister () ;
44 addBehavior ( ) ;
45 }
46
47 p r i v a t e v o i d addBehavior ( ) {
48 addBehaviour ( new UpdateSoundBehavior ( t h i s , UPDATE_PERIOD) ) ;
49 }
50
51 private void soundRegister ( ) {
52 try {
53 DFAgentDescription som = new DFAgentDescription ( ) ;
54 som . setName ( getAID ( ) ) ;
55 DFService . r e g i s t e r ( t h i s , som ) ;
56 } c a t c h ( FIPAException e ) {
57 e . printStackTrace () ;
58 }
59 }
60
61 @SuppressWarnings ( " unchecked " )
62 pri vate void getParameters ( ) {
63 Object [ ] a r g s = getArguments ( ) ;
64 a c t u a l L o c a t i o n = new L o c a l i z a t i o n ( ( L o c a l i z a t i o n ) a r g s [ 0 ] ) ;
65 i n i t i a l L o c a t i o n = new L o c a l i z a t i o n ( ( L o c a l i z a t i o n ) a r g s [ 0 ] ) ;
66 System . out . p r i n t l n ( " \ n I n i t i a l L o c a t i o n : " + i n i t i a l L o c a t i o n + " \ nActual
Location : " + actualLocation ) ;
67 d i r e c t i o n = ( double ) args [ 1 ] ;
68 potency = ( d o u b l e ) a r g s [ 2 ] ;
69 o b s t a c l e s = ( A r r a y L i s t <O b s t a c l e >) a r g s [ 5 ] ;
70 r o t e = Lin e . g e t L i n e ( i n i t i a l L o c a t i o n , d i r e c t i o n ) ;
71 }
72
73 private void findNextObstacle ( ) {
74 collisionPoint = null ;
75 collisionObstacle = null ;
76 Localization intersectionPoint = null ;
77 f o r ( Obstacle obstacle : o b s t a c l e s ) {
78 intersectionPoint = rote . searchSlopePoint ( obstacle . getLine () ) ;
79 i f ( i n t e r s e c t i o n P o i n t != n u l l && ! a c t u a l L o c a t i o n . e q u a l s (
i n t e r s e c t i o n P o i n t , ERROR) ) {
80 i f ( c o l l i s i o n P o i n t == n u l l | | a c t u a l L o c a t i o n . d i s t a n c e (
intersectionPoint ) < actualLocation . distance ( collisionPoint ) ){
81 collisionObstacle = obstacle ;
82 collisionPoint = intersectionPoint ;
83 collisionDistance = actualLocation . distance ( collisionPoint ) ;
65

84 System . out . p r i n t l n ( " O b s t a c l e found : \ nindex : " + o b s t a c l e .


getAbsortionRate () + " \ n c o l l i s i o n point : " + c o l l i s i o n P o i n t .
toString () ) ;
85 }
86 }
87 }
88 }
89
90 p r i v a t e v o i d update ( ) {
91 d i s t a n c e = d i s t a n c e + SIZE_OF_STEP ;
92 updateLocation ( ) ;
93
94 i f ( isCollisionPoint () ){
95 updateParameters ( ) ;
96 System . out . p r i n t l n ( " \nCOLLIDED ! ! ! ! ! " ) ;
97 System . out . p r i n t l n ( t h i s . w r i t e A c t u a l S t a t e ( ) ) ;
98 i f ( potency < 5 ) {
99 killSound () ;
100 return ;
101 }
102 findNextObstacle () ;
103 } else
104 System . out . p r i n t l n ( " \n "+t h i s . w r i t e A c t u a l S t a t e ( ) ) ;
105 }
106
107 pri vate void updateLocation ( ) {
108 a c t u a l L o c a t i o n . setX ( c a l c u l a t e X ( d i r e c t i o n , d i s t a n c e ) + i n i t i a l L o c a t i o n .
getX ( ) ) ;
109 a c t u a l L o c a t i o n . setY ( c a l c u l a t e Y ( d i r e c t i o n , d i s t a n c e ) + i n i t i a l L o c a t i o n .
getY ( ) ) ;
110 }
111
112 private boolean i s C o l l i s i o n P o i n t ( ) {
113 i f ( a c t u a l L o c a t i o n . e q u a l s ( c o l l i s i o n P o i n t ,ERROR) )
114 return true ;
115 return f a l s e ;
116 }
117
118 private void killSound () {
119 doDelete () ;
120 System . out . p r i n t l n ( "END OF SOUND ! ! ! " ) ;
121 }
122
123 p r i v a t e v o i d updateParameters ( ) {
124 distance = 0;
125 initialLocation = collisionPoint ;
126 calculateNewDirection () ;
66 APNDICE C. Cdigo fonte da classe Sound

127 calculatePotency ( c o l l i s i o n O b s t a c l e . getAbsortionRate () ) ;


128 r o t e = Lin e . g e t L i n e ( i n i t i a l L o c a t i o n , d i r e c t i o n ) ;
129 }
130
131 p r i v a t e void calculatePotency ( double index ) {
132 potency = potency ( potency ( i n d e x / 1 0 0 ) ) ;
133 }
134
135 private void calculateNewDirection ( ) {
136 d o u b l e o b s t a c l e S l o p e A n g l e = Math . t o D e g r e e s ( Math . atan ( c o l l i s i o n O b s t a c l e .
getLine () . getSlope () ) ) ;
137 double newDirection = 2 obstacleSlopeAngle d i r e c t i o n ;
138 d i r e c t i o n = Util . normalizeAngle ( newDirection ) ;
139 }
140
141 p u b l i c d o u b l e c a l c u l a t e X ( d o u b l e a n g l e , i n t hypotenuse ) {
142 r e t u r n Math . c o s ( Math . toRa dians ( a n g l e ) ) hypotenuse ;
143 }
144
145 p u b l i c d o u b l e c a l c u l a t e Y ( d o u b l e a n g l e , i n t hypotenuse ) {
146 r e t u r n Math . s i n ( Math . toRa dians ( a n g l e ) ) hypotenuse ;
147 }
148
149 private String writeActualState () {
150 r e t u r n t h i s . getAID ( ) . getName ( ) + " : " + " \ npotency : " + potency + " \
ndirection : " + direction + " degrees " + "\ ndistance of origin : " +
distance + "\ n i n i t i a l location : "
151 + initialLocation + "\ nlocation : " + actualLocation ;
152 }
153
154 private s t a t i c int id = 0;
155
156 public s t a t i c String nextId () {
157 r e t u r n " Sound_ " + (++i d ) ;
158 }
159
160 / COMPORTAMENTS
/
161
162 p r i v a t e c l a s s UpdateSoundBehavior e x t e n d s T i c k e r B e h a v i o u r {
163
164 p r i v a t e s t a t i c f i n a l l o n g s e r i a l V e r s i o n U I D = 5631501784835798992L ;
165
166 p u b l i c UpdateSoundBehavior ( Agent a , l o n g p e r i o d ) {
167 super (a , period ) ;
168 }
169
67

170 @Override
171 p r o t e c t e d v o i d onTick ( ) {
172 update ( ) ;
173 }
174
175 }
176 }

src/simulator/Sound.java
69

APNDICE D Cdigo fonte da classe


Obstacle

1 package oo ;
2
3
4 public c l a s s Obstacle {
5
6 p r i v a t e Li ne l i n e ;
7 p r i v a t e double absortionRate ;
8
9
10 p u b l i c O b s t a c l e ( Li ne l i n e ,
11 double absortionRate ) {
12 this . setLine ( line ) ;
13 t h i s . absortionRate = absortionRate ;
14 }
15
16 p u b l i c double getAbsortionRate ( ) {
17 return absortionRate ;
18 }
19
20 p u b l i c void setAbsortionRate ( double absortionRate ) {
21 t h i s . absortionRate = absortionRate ;
22 }
23
24 p u b l i c L in e g e t L i n e ( ) {
25 return l i n e ;
26 }
27
28 p u b l i c v o i d s e t L i n e ( L in e l i n e ) {
29 this . line = line ;
30 }
31 }

src/oo/Obstacle.java
71

APNDICE E Cdigo fonte da classe Line

1 package oo ;
2
3
4 p u b l i c a b s t r a c t c l a s s Li ne {
5
6 private Localization initialPoint = null ;
7 private Localization finalPoint = null ;
8 p r i v a t e double d i r e c t i o n A n g l e = 0 ;
9
10 p r o t e c t e d Li ne ( L o c a l i z a t i o n i n i t i a l P o i n t ,
11 Localization finalPoint ){
12 this . initialPoint = initialPoint ;
13 this . finalPoint = finalPoint ;
14 }
15
16 p r o t e c t e d Li ne ( L o c a l i z a t i o n i n i t i a l P o i n t ,
17 double d i r e c t i o n ) {
18 this . initialPoint = initialPoint ;
19 this . directionAngle = direction ;
20 }
21
22 p u b l i c s t a t i c Li ne g e t L i n e (
23 Localization initialPoint ,
24 Localization finalPoint ){
25 i f ( isVertical ( initialPoint , finalPoint ) ){
26 r e t u r n new V e r t i c a l L i n e ( i n i t i a l P o i n t ,
27 finalPoint ) ;
28 }
29 r e t u r n new NormalLine ( i n i t i a l P o i n t ,
30 finalPoint ) ;
31 }
32
33 p u b l i c s t a t i c Li ne g e t L i n e (
34 Localization initialPoint ,
35 double d i r e c t i o n ) {
36 i f ( isVertical ( direction ) ){
37 r e t u r n new V e r t i c a l L i n e (
38 initialPoint ,
39 direction ) ;
40 }
41 r e t u r n new NormalLine (
42 initialPoint ,
43 direction ) ;
72 APNDICE E. Cdigo fonte da classe Line

44 }
45
46 private s t a t i c boolean i s V e r t i c a l (
47 Localization initialPoint ,
48 Localization finalPoint ){
49 i f ( i n i t i a l P o i n t . getX ( ) ==
50 f i n a l P o i n t . getX ( ) )
51 return true ;
52 return f a l s e ;
53 }
54
55 public s t a t i c boolean i s V e r t i c a l (
56 double d i r e c t i o n ) {
57 i f ( d i r e c t i o n == 90
58 | | d i r e c t i o n == 2 7 0 )
59 return true ;
60 return f a l s e ;
61 }
62
63 p u b l i c a b s t r a c t double getSlope ( ) ;
64
65 public Localization searchSlopePoint (
66 Li ne l i n e ) {
67 i f ( l i n e i n s t a n c e o f NormalLine )
68 return searchIntersectionPoint (
69 ( NormalLine ) l i n e ) ;
70 return searchIntersectionPoint (
71 ( VerticalLine ) line ) ;
72 }
73
74 public abstract Localization searchIntersectionPoint (
75 VerticalLine line ) ;
76
77 public abstract Localization searchIntersectionPoint (
78 NormalLine l i n e ) ;
79
80 p u b l i c double getConstant ( ) {
81 return 0;
82
83 }
84
85 public Localization getInitialPoint () {
86 return i n i t i a l P o i n t ;
87 }
88
89 public void s e t I n i t i a l P o i n t (
90 Localization initialPoint ) {
73

91 this . initialPoint = initialPoint ;


92 }
93
94 public Localization getFinalPoint () {
95 return finalPoint ;
96 }
97
98 public void setFinalPoint (
99 Localization finalPoint ) {
100 this . finalPoint = finalPoint ;
101 }
102
103 p u b l i c double g e t D i r e c t i o n ( ) {
104 return directionAngle ;
105 }
106
107 public void s e t D i r e c t i o n (
108 double d i r e c t i o n ) {
109 this . directionAngle = direction ;
110 }
111 }

src/oo/Line.java
75

APNDICE F Cdigo fonte da classe


NormalLine

1 package oo ;
2
3 p u b l i c c l a s s NormalLine e x t e n d s L ine {
4
5 p r o t e c t e d NormalLine (
6 Localization initialPoint ,
7 Localization finalPoint ) {
8 super ( i n i t i a l P o i n t , f i n a l P o i n t ) ;
9 }
10
11 p r o t e c t e d NormalLine (
12 Localization initialPoint ,
13 double d i r e c t i o n ) {
14 super ( i n i t i a l P o i n t , d i r e c t i o n ) ;
15 }
16
17 public Localization searchIntersectionPoint (
18 NormalLine l i n e ) {
19 Localization intersectionPoint ;
20 double x ;
21 double y ;
22
23 i f (( this . getSlope ()
24 l i n e . g e t S l o p e ( ) ) != 0 ) {
25 x = ( l i n e . getConstant ( )
26 t h i s . getConstant ( ) )
27 /( t h i s . getSlope ( )
28 l i n e . getSlope () ) ;
29 y = l i n e . getSlope () x
30 + l i n e . getConstant ( ) ;
31 intersectionPoint =
32 new L o c a l i z a t i o n ( x , y ) ;
33 i f ( i n t e r s e c t i o n P o i n t != n u l l &&
34 t h i s . belongsToTheInterval (
35 i n t e r s e c t i o n P o i n t . getX ( ) )
36 && l i n e . b e l o n g s T o T h e I n t e r v a l (
37 i n t e r s e c t i o n P o i n t . getX ( ) ) )
38 return intersectionPoint ;
39 }
40 return null ;
76 APNDICE F. Cdigo fonte da classe NormalLine

41 }
42
43 public Localization searchIntersectionPoint (
44 VerticalLine line ){
45 double y ;
46 y = t h i s . getY ( l i n e . g e t C o n s t a n t ( ) ) ;
47
48 i f ( l i n e . belongsToTheInterval (y) )
49 r e t u r n new L o c a l i z a t i o n (
50 l i n e . getConstant ( ) , y ) ;
51 return null ;
52 }
53
54 public Localization searchSlopePoint (
55 Li ne l i n e ) {
56 i f ( l i n e i n s t a n c e o f NormalLine )
57 return searchIntersectionPoint (
58 ( NormalLine ) l i n e ) ;
59 return searchIntersectionPoint ((
60 VerticalLine ) line ) ;
61 }
62
63 protected boolean belongsToTheInterval ( double x ) {
64 i f ( t h i s . g e t F i n a l P o i n t ( ) != n u l l ) {
65 i f ( x <= Math . max(
66 t h i s . g e t I n i t i a l P o i n t ( ) . getX ( ) ,
67 t h i s . g e t F i n a l P o i n t ( ) . getX ( ) )
68 && x >= Math . min (
69 t h i s . g e t I n i t i a l P o i n t ( ) . getX ( ) ,
70 t h i s . g e t F i n a l P o i n t ( ) . getX ( ) ) ) {
71 return true ;
72 }
73 } else {
74 i f ( t h i s . g e t D i r e c t i o n ( ) > 90
75 && t h i s . g e t D i r e c t i o n ( ) < 270
76 && x <=
77 t h i s . g e t I n i t i a l P o i n t ( ) . getX ( ) ) {
78 return true ;
79 } else {
80 i f ( x >= t h i s . g e t I n i t i a l P o i n t ( ) . getX ( ) ) {
81 return true ;
82 }
83 }
84 }
85
86 return f a l s e ;
87 }
77

88
89 p u b l i c double getSlope ( ) {
90 i f ( t h i s . g e t F i n a l P o i n t ( ) != n u l l ) {
91 d o u b l e deltaX =
92 t h i s . g e t F i n a l P o i n t ( ) . getX ( )
93 t h i s . g e t I n i t i a l P o i n t ( ) . getX ( ) ;
94 d o u b l e deltaY =
95 t h i s . g e t F i n a l P o i n t ( ) . getY ( )
96 t h i s . g e t I n i t i a l P o i n t ( ) . getY ( ) ;
97 r e t u r n deltaY / deltaX ;
98 }
99 r e t u r n Math . tan (
100 Math . t oRadia ns ( t h i s . g e t D i r e c t i o n ( ) ) ) ;
101 }
102
103 p u b l i c double getConstant ( ) {
104 r e t u r n t h i s . g e t I n i t i a l P o i n t ( ) . getY ( )
105 this . getSlope ()
106 t h i s . g e t I n i t i a l P o i n t ( ) . getX ( ) ;
107 }
108
109 p u b l i c Double getY ( d o u b l e x ) {
110 return this . getSlope ()
111 x
112 + t h i s . getConstant ( ) ;
113 }
114 }

src/oo/NormalLine.java
79

APNDICE G Cdigo fonte da classe


VerticalLine

1 package oo ;
2
3 import u t i l s . U t i l ;
4
5 p u b l i c c l a s s V e r t i c a l L i n e e x t e n d s Li ne {
6
7 p r i v a t e s t a t i c f i n a l d o u b l e TOLERANCE = 0 . 0 0 0 0 0 1 ;
8
9 protected VerticalLine ( Localization initialPoint , Localization finalPoint
) {
10 super ( i n i t i a l P o i n t , f i n a l P o i n t ) ;
11 }
12
13 protected V e r t i c a l L i n e ( L o c a l i z a t i o n i n i t i a l P o i n t , double d i r e c t i o n ) {
14 super ( i n i t i a l P o i n t , d i r e c t i o n ) ;
15 }
16
17 public Localization searchIntersectionPoint ( VerticalLine line ){
18 return null ;
19 }
20
21 p u b l i c L o c a l i z a t i o n s e a r c h I n t e r s e c t i o n P o i n t ( NormalLine l i n e ) {
22 double y ;
23 y = l i n e . getY ( t h i s . g e t C o n s t a n t ( ) ) ;
24
25 i f ( t h i s . belongsToTheInterval (y) )
26 r e t u r n new L o c a l i z a t i o n ( t h i s . g e t C o n s t a n t ( ) , y ) ;
27 return null ;
28 }
29
30 p u b l i c L o c a l i z a t i o n s e a r c h S l o p e P o i n t ( Lin e l i n e ) {
31 i f ( l i n e i n s t a n c e o f NormalLine )
32 r e t u r n s e a r c h I n t e r s e c t i o n P o i n t ( ( NormalLine ) l i n e ) ;
33 return searchIntersectionPoint (( VerticalLine ) l i n e ) ;
34 }
35
36 protected boolean belongsToTheInterval ( double y ) {
37 i f ( t h i s . g e t F i n a l P o i n t ( ) != n u l l ) {
38 i f ( y <= Math . max( t h i s . g e t I n i t i a l P o i n t ( ) . getY ( ) , t h i s . g e t F i n a l P o i n t ( ) .
getY ( ) ) && y >= Math . min ( t h i s . g e t I n i t i a l P o i n t ( ) . getY ( ) , t h i s .
80 APNDICE G. Cdigo fonte da classe VerticalLine

g e t F i n a l P o i n t ( ) . getY ( ) ) ) {
39 return true ;
40 }
41 } else {
42 i f ( U t i l . compareDouble ( t h i s . g e t D i r e c t i o n ( ) , 2 7 0 , TOLERANCE) && y <=
t h i s . g e t I n i t i a l P o i n t ( ) . getY ( ) )
43 return true ;
44
45 i f ( U t i l . compareDouble ( t h i s . g e t D i r e c t i o n ( ) , 9 0 , TOLERANCE) && y >=
t h i s . g e t I n i t i a l P o i n t ( ) . getY ( ) )
46 return true ;
47 }
48
49 return f a l s e ;
50 }
51
52 p u b l i c double getSlope ( ) {
53 r e t u r n Double . POSITIVE_INFINITY ;
54 }
55
56 p u b l i c double getConstant ( ) {
57 r e t u r n s u p e r . g e t I n i t i a l P o i n t ( ) . getX ( ) ;
58 }
59
60 }

src/oo/VerticalLine.java
81

APNDICE H Cdigo fonte da classe


Localization

1 package oo ;
2
3 import u t i l s . U t i l ;
4
5 public class Localization {
6
7 p r i v a t e double x ;
8 p r i v a t e double y ;
9
10 p u b l i c L o c a l i z a t i o n ( double x , double y ) {
11 this .x = x;
12 this .y = y;
13 }
14
15 public Localization ( Localization l ) {
16 this ( l . x , l . y) ;
17 }
18
19 public Localization () {
20 t h i s ( 1 , 1) ;
21 }
22
23 p u b l i c d o u b l e getX ( ) {
24 return x ;
25 }
26
27 p u b l i c v o i d setX ( d o u b l e x ) {
28 this .x = x;
29 }
30
31 p u b l i c d o u b l e getY ( ) {
32 return y ;
33 }
34
35 p u b l i c v o i d setY ( d o u b l e y ) {
36 this .y = y;
37 }
38
39 p u b l i c double d i s t a n c e (
40 Localization location ) {
82 APNDICE H. Cdigo fonte da classe Localization

41 d o u b l e dx = Math . abs ( t h i s . getX ( )


42 l o c a t i o n . getX ( ) ) ;
43 d o u b l e dy = Math . abs ( t h i s . getY ( )
44 l o c a t i o n . getY ( ) ) ;
45 r e t u r n Math . s q r t ( ( dxdx ) + ( dydy ) ) ;
46 }
47
48 @Override
49 public String toString () {
50 r e t u r n " [ x : "+x+" ; y : "+y+" ] " ;
51 }
52
53 public boolean equals ( L o c a l i z a t i o n location ,
54 double p r e c i s i o n ) {
55 i f ( this . distance ( location ) < precision )
56 return true ;
57 return f a l s e ;
58 }
59
60 p u b l i c s t a t i c L o c a l i z a t i o n valueOf (
61 String loc ){
62 S t r i n g B u i l d e r x = new S t r i n g B u i l d e r ( ) ;
63 S t r i n g B u i l d e r y = new S t r i n g B u i l d e r ( ) ;
64 char coordinate = x ;
65 b o o l e a n foundANumber = f a l s e ;
66
67 f o r ( i n t i = 0 ; i < l o c . l e n g t h ( ) ; i ++){
68 i f ( ( C h a r a c t e r . i s D i g i t ( l o c . charAt ( i ) )
69 | | l o c . charAt ( i ) == .
70 | | l o c . charAt ( i ) == )
71 && c o o r d i n a t e== x ) {
72 foundANumber = t r u e ;
73 x . append ( l o c . charAt ( i ) ) ;
74 }
75
76 i f ( ( C h a r a c t e r . i s D i g i t ( l o c . charAt ( i ) )
77 | | l o c . charAt ( i ) == .
78 | | l o c . charAt ( i ) == )
79 && c o o r d i n a t e== y ) {
80 y . append ( l o c . charAt ( i ) ) ;
81 }
82
83 i f ( C h a r a c t e r . i s L e t t e r ( l o c . charAt ( i ) )
84 && foundANumber ) {
85 coordinate = y ;
86 }
87 }
83

88 r e t u r n new L o c a l i z a t i o n ( Double . v a l u e O f (
89 x . toString () ) ,
90 Double . v a l u e O f ( y . t o S t r i n g ( ) ) ) ;
91 }
92 }

src/oo/Localization.java

You might also like