universidade do vale do itajaÍ centro de ciÊncias ...siaibib01.univali.br/pdf/giovani...
Post on 07-Dec-2018
213 Views
Preview:
TRANSCRIPT
UNIVERSIDADE DO VALE DO ITAJAÍCENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DE COMPUTAÇÃO
SISTEMA ESPECIALISTA DE DIAGNÓSTICO DO MAR PARA PRÁTICA DO SURF
por
Giovani Marin
Anita Maria da Rocha Fernandes, Dra.
Orientadora
São José, julho/2014
ii
UNIVERSIDADE DO VALE DO ITAJAÍCENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
SISTEMA ESPECIALISTA DE DIAGNÓSTICO DO MAR PARA PRÁTICA DO SURF
Giovani Marin
São José, julho/2014
Orientadora: Anita Maria da Rocha Fernandes, Dra.
Área de Concentração: Inteligência Artificial
Linha de Pesquisa: Sistema Especialista
Palavras-chave: Inteligência Artificial. Sistema Especialista. Surf. Diagnóstico de formação de ondas.
Número de páginas: 105
RESUMO
A composição geográfica do litoral catarinense mostra-se favorável à prática do surf, porém não há disponível um método de diagnóstico e previsão de ondas automatizadas até o momento. Este estudo propôs o desenvolvimento de um software que realize tal tarefa por meio da utilização da técnica de Inteligência Artificial (IA) denominada Sistema Especialista. Para o desenvolvimento do projeto adotou-se a pesquisa bibliográfica com o intuito de buscar os melhores conceitos de IA a serem aplicados no desenvolvimento do software, além de levantar itens que influenciem no diagnóstico das características das ondas. O desenvolvimento deste software apontou que é possível realizar o diagnóstico das ondas por meio da combinação entre o conhecimento de especialistas na área e a tecnologia computacional. Os resultados obtidos com este estudo mostraram 57% de assertividade do tipo convergente, ou seja, exatamente o previsto, entre os diagnósticos disponíveis atualmente e aqueles realizados pelo software desenvolvido por meio deste estudo. Além disso, obteve-se 34% de diagnósticos considerados aproximados, em virtude da diferença de horários entre a disponibilização dos boletins eletrônicos e os dados meteorológicos. Logo, se futuramente forem realizados em horários idênticos, podem passar a serem diagnósticos convergentes.
iii
ABSTRACT
The geographical composition of the shoreline in Santa Catarina (Brazil) has shown to be favorable to surfing activities; however, there is not an automatic method for diagnosis and wave forecast available until this day. This study proposes to develop a software which is able to do such activity using Artificial Intelligence (IA) technique named as Expert System. A bibliographical research was performed with the purpose of finding the best AI concepts to be applied at software development, as well as pointing out items which influence the diagnosis of wave characteristics. The software development showed that it is possible to perform the diagnosis of wave formation considering the combination between the knowledge of experts and computer technology. The obtained results showed 57% of assertiveness in the convergent type, that means, exactly as predicted, among the electronic diagnoses provided nowadays and the ones performed by this software. Other than that, 34% of the diagnoses were considered approximate, because of the time difference between electronic diagnoses available and the weather forecast. So, if in the future, the diagnoses be performed at the exact same time, these results might be considered as convergent diagnoses.
Key-words: Atificial Intelligence. Expert System. Surfing. Wave formation diagnosis.
iv
LISTA DE TABELAS
Tabela 1. Análise de características ....................................................................................................15Tabela 2. Dimensão das ondas ...........................................................................................................27Tabela 3. Variáveis e seus possíveis valores .......................................................................................44Tabela 4. Características dos trabalhos relacionados...........................................................................45Tabela 5. Dados cadastrais da praia da Joaquina.................................................................................78Tabela 6. Dados cadastrais da praia da Mole (centro) .........................................................................79Tabela 7. Dados cadastrais da praia da Mole (canto norte)..................................................................80Tabela 8. Resultados comparativos.....................................................................................................80
v
LISTA DE FIGURAS
Figura 1: Exemplo de site de previsões meteorológicas ......................................................................11Figura 2: Exemplo de site de boletim visual .......................................................................................12Figura 3: Exemplo de site misto .........................................................................................................13Figura 4: Exemplo de site de broadcasting .........................................................................................14Figura 5: Dispersão radial ..................................................................................................................25Figura 6: Exemplo de combinação de duas ondulações ......................................................................26Figura 7: Rebentação das ondas .........................................................................................................26Figura 8: Nomenclatura dos componentes de uma onda (Legenda: 1 Espuma; 2 Lábio; 3 Bolsa; 4
Crista; 5 Base; 6 Parede; 7 Ombro; 8 Sentido da rebentação; 9 Zona de impacto) .......................27Figura 9: Tipos de rebentação ............................................................................................................28Figura 10: Imagem dos tipos de rebentação........................................................................................29Figura 11: Refração na areia...............................................................................................................31Figura 12: Refração no promatório.....................................................................................................32Figura 13: Componentes do fundo......................................................................................................32Figura 14: Exemplo da configuração do fundo, Bingin Reef, Bali, Indonésia .....................................33Figura 15: Componentes de um SE ....................................................................................................39Figura 16: Estrutura de um SE ...........................................................................................................40Figura 17: Arquitetura de um SE com módulos adicionais..................................................................40Figura 18: Fluxo da informação do sistema ........................................................................................51Figura 19: Estrutura de pacotes ..........................................................................................................54Figura 20: Diagrama da classe Alimentador .......................................................................................55Figura 21: Diagrama da classe ParseWatherToObject ........................................................................55Figura 22: Diagrama das classes de mapeamento do World Weather Online ......................................56Figura 23: Diagrama da classe Diagnosticador ...................................................................................56Figura 24: Diagrama das classes de modelo........................................................................................57Figura 25: Tela de manutenção de estados..........................................................................................57Figura 26: Tela de manutenção de cidades .........................................................................................58Figura 27: Tela de visualização das praias cadastradas .......................................................................58Figura 28: Formulário de cadastro de praia.........................................................................................59Figura 29: Tela de visualização de previsões ......................................................................................59Figura 30: Tela de visualização de dados meteorológicos...................................................................60Figura 31: Tela de visualização de diagnósticos .................................................................................60Figura 32: Tela de visualização de detalhes de diagnósticos ...............................................................60Figura 33: Modelo de dados relacional...............................................................................................61Figura 34: Diagrama de sequencia da rotina principal ........................................................................62Figura 35: Rational Unified Process ...................................................................................................62Figura 36: Estrutura do DE.................................................................................................................65Figura 37: Mapa mental da textura do mar .........................................................................................71Figura 38: Mapa mental do tamanho da onda .....................................................................................72Figura 39: Refração da ondulação entrando na diagonal .....................................................................73Figura 40: Reflexo de ondas...............................................................................................................73Figura 41: Representação do efeito de sombra....................................................................................74Figura 42: Mapa mental da formação da onda ....................................................................................76Figura 43: Template do diagnóstico....................................................................................................77Figura 44: Praia da Joaquina ..............................................................................................................78
vi
Figura 45: Praia Mole (centro) ...........................................................................................................79Figura 46: Praia Mole (canto norte)....................................................................................................80Figura 47: Percentual de assertividade................................................................................................82
vii
LISTA DE ABREVIATURAS E SIGLAS
BC Base de ConhecimentoBPM Bussiness Process ManagingCEP Complex Event ProcessCPTEC Centro de Previsão de Tempo e Estudos ClimáticosCRUD Create, Read, Update, DeleteDAO Data Access ObjectDE Drools ExpertGFS Global Forecast SystemHTTP Hypertext Transfer ProtocolIA Inteligência ArtificialIDE Integrated Development EnvironmentJ2ME Java 2 Micro EditionJAXB Java Architecture for XML BindingJDK Java Developer KitJSF Java Server FacesJSON JavaScript Object NotationMI Motor de InferênciaMT Memória de TrabalhoMVC Model, view e controlREF Requisito funcionalREN Requisito não funcionalRP Regras de produçãoRUP Rational Unified ProcessSE Sistema EspecialistaSGDB Sistema Gerenciado de Banco de DadosSQL Structured Query LanguageTCC Trabalho de Conclusão de CursoUNIVALI Universidade do Vale do ItajaíXML eXtensible Markup LanguageW3C World Wide Web ConsortiumWCT World Championship TourWSDL Web Services Description Language
viii
SUMÁRIO
INTRODUÇÃO ........................................................................................ 101.1 PROBLEMA DE PESQUISA........................................................................ 101.1.1 Solução Proposta .......................................................................................... 151.1.2 Delimitação de Escopo ................................................................................. 161.1.3 Justificativa .................................................................................................. 161.2 OBJETIVOS................................................................................................... 181.2.1 Objetivo Geral.............................................................................................. 181.2.2 Objetivos Específicos ................................................................................... 181.3 METODOLOGIA........................................................................................... 181.3.1 Metodologia da Pesquisa.............................................................................. 181.3.2 Procedimentos Metodológicos ..................................................................... 191.4 ESTRUTURA DO TRABALHO ................................................................... 21
2 FUNDAMENTAÇÃO TEÓRICA...................................................... 222.1 SURF ............................................................................................................... 222.1.1 Definição....................................................................................................... 232.1.2 Ondas............................................................................................................ 242.1.3 Estrutura da onda ........................................................................................ 272.1.4 Classificação ................................................................................................. 282.1.5 Direção da ondulação................................................................................... 292.1.6 Estrutura da costa........................................................................................ 302.1.7 Marés ............................................................................................................ 342.1.8 Vento............................................................................................................. 342.2 SISTEMA ESPECIALISTA .......................................................................... 352.2.1 Conceitos....................................................................................................... 362.2.2 Características.............................................................................................. 372.2.3 Classificação ................................................................................................. 382.2.4 Componentes ................................................................................................ 392.2.5 Conhecimento............................................................................................... 422.3 CONSIDERAÇÕES ....................................................................................... 44
3 TRABALHOS RELACIONADOS .................................................... 453.1 TRABALHOS RELACIONADOS AO NEGÓCIO...................................... 463.1.1 IN PARADISE.............................................................................................. 463.1.2 WINDGURU ................................................................................................ 463.1.3 WAVES......................................................................................................... 473.1.4 Veja ao vivo .................................................................................................. 473.2 TRABALHOS RELACIONADOS À TECNOLOGIA................................. 483.2.1 Sistema Especialista para apoio a paramédicos ......................................... 483.3 ANÁLISE COMPARATIVA......................................................................... 48
ix
3.4 CONSIDERAÇÕES ....................................................................................... 50
4 DESENVOLVIMENTO...................................................................... 514.1 VISÃO GERAL DO SISTEMA..................................................................... 514.2 ANÁLISE DE REQUISITOS ........................................................................ 524.2.1 Requisitos Funcionais .................................................................................. 524.2.2 Requisitos não Funcionais ........................................................................... 524.2.3 Regras de Negócio ........................................................................................ 524.3 MODELAGEM DO SISTEMA ..................................................................... 534.3.1 Diagramas de Classe .................................................................................... 534.3.2 Telas do sistema............................................................................................ 574.3.3 Modelagem de banco de dados relacional................................................... 614.3.4 Diagrama de sequencia da rotina principal................................................ 614.4 DETALHAMENTO DO DESENVOLVIMENTO ....................................... 624.5 ENGENHARIA DO CONHECIMENTO ..................................................... 684.5.1 Entrevista...................................................................................................... 694.5.2 Extração do conhecimento........................................................................... 704.6 DESCRIÇÃO DOS EXPERIMENTOS ........................................................ 774.7 RESULTADOS............................................................................................... 80
5 CONCLUSÕES.................................................................................... 835.1 TRABALHOS FUTUROS ............................................................................. 84
REFERÊNCIAS BIBLIOGRÁFICAS................................................... 86APÊNDICE A........................................................................................................ 90APÊNDICE B........................................................................................................ 97
10
INTRODUÇÃO
Atualmente, Santa Catarina está na rota de um dos principais circuitos do surf mundial, o WCT
(World Championship Tour), o que contribui para que o estado seja uma referência quando se fala do
esporte. A exemplo disso, atletas como Teco Padaratz e Guga Arruda são representantes do surf e do
estado conhecidos nacionalmente. Com um litoral de aproximadamente 500 km de extensão composto
por belas paisagens e praias, a prática do surf já se tornou parte integrante da cultura de Santa Catarina.
Em algumas praias, é possível encontrar escolas para os interessados em aprender a surfar,
visto que possuem águas mais calmas. Já em praias de mar aberto, as quais exigem mais preparo e
experiência do atleta, os surfistas estão presentes sempre que possível. Como exemplo disso, segundo
Moreira (2007), a qualidade da rebentação está diretamente relacionada à direção da ondulação,
estrutura da costa, marés e ventos. Assim, constata-se que não só há diferenças entre as praias, como
essas distinções influenciam diretamente a prática do esporte. Como agravante da dificuldade de
praticar o esporte, os atletas dependem não somente dessas variáveis, mas também, das combinações
possíveis entre elas e seu real resultado final.
Um nível de conhecimento mínimo da combinação dessas variáveis é necessário ao atleta e/ou
especialista para que haja um diagnóstico da condição das ondas. Esse atleta/especialista analisa as
características e agrega o diagnóstico visual para, respectivamente, decidir se entrará ou não no mar e
emitir um parecer para os boletins.
1.1 PROBLEMA DE PESQUISA
Como poucos podem estar próximo ao mar para analisá-lo, algumas alternativas foram
disponibilizadas para os surfistas a fim de evitar o deslocamento desnecessário. Entre as alternativas
para obtenção de diagnóstico de ondas está o boletim via rádio em horários específicos, como o
divulgado pela rede Atlântida (100.9 FM) de Florianópolis, em que um especialista descreve o mar e
dá sua opinião sobre a condição atual e prevista. Existem ainda sites especializados em disponibilizar
estes boletins, variando a forma como é apresentada a informação, sendo eles:
Site de Previsões Meteorológicas: apesar das informações meteorológicas
disponibilizadas, o usuário é quem precisa analisar e fazer um diagnóstico através dos
números apresentados. Como exemplo tem-se o WINDGURU.
11
Este método é o que mais se aproxima do proposto neste trabalho, porém ele não faz
diagnóstico algum, apenas disponibiliza as informações meteorológicas, conforme apresentado na
Figura 1, e o trabalho que existe é o de atualização dos dados e formatação destes, o qual é feito
computacionalmente.
Figura 1: Exemplo de site de previsões meteorológicas
Fonte: WINDGURU (2012)
Site de boletim visual: apresenta fotos da praia, com informações descritivas e um breve
diagnóstico das condições para a prática. Como exemplo tem-se o IN PARADISE.
12
Com a apresentação de vídeos e fotos das praias do leste de Florianópolis, o site IN
PARADISE apresenta uma proposta abrangente referente a boletins de ondas, porém limitada a três
praias. São dois boletins diários, diagramados conforme a Figura 2, um ao amanhecer e outro no início
da tarde, sem compromisso de horário. Esses boletins, comparados aos existentes, são os mais
completos devido à quantidade recursos visuais disponibilizados. Para obtenção das fotos e vídeos e
realização do diagnóstico, o responsável desloca-se até a praia, posteriormente publicando o conteúdo
no site e descrevendo um diagnóstico de forma não computacional.
Figura 2: Exemplo de site de boletim visual
Fonte: IN PARADISE (2014)
13
Site misto: apresenta fotos e as informações meteorológicas, além de uma descrição do
diagnóstico, conforme exemplo da Figura 3 que apresenta o WAVES.
Figura 3: Exemplo de site misto
Fonte: WAVES (2014)
14
Site de Broadcasting: oferece uma transmissão ao vivo da praia, para que o usuário
visualize e diagnostique a formação das ondas, conforme exemplo da Figura 4 que
apresenta o VEJA AO VIVO.
Figura 4: Exemplo de site de broadcasting
Fonte: VEJA AO VIVO (2014)
A proposta deste TCC visa suprir alguns dos pontos fracos dos boletins visuais, que são a
desatualização de diagnósticos das condições do mar e, o custo e logística envolvidos para a cobertura
de novas praias. Com a câmera 24hs transmitindo imagens da praia, por mais que o diagnóstico esteja
desatualizado, é possível ver imagens ao vivo da praia. Em contrapartida, os equipamentos que ficam
na praia necessitam de um cuidado especial, além do custo com a transmissão dos dados, fazendo com
que a multiplicação deste método se torne de alto custo.
Se analisadas as técnicas atualmente utilizadas, todas elas apresentam alguns obstáculos e
limitações os quais podem ser categorizados conforme disposto na Tabela 1.
15
Tabela 1. Análise de características
Característica Site de vídeo Site de boletim visual ou misto
Site de Previsões Meteorológicas
TCC
Segurança de equipamentos
Câmeras suscetíveis a furto
Nenhum risco Nenhum risco Nenhum risco
Custos Diretos Alto Alto Baixo BaixoAtualização Constantemente
atualizado.Dois boletins diários (6h e 12h).
Atualizado de acordo com a alimentação automática
Atualizado de acordo com a alimentação automática
Diagnóstico Depende do conhecimento de quem visualiza a transmissão.
De acordo com o especialista que analisou.
Depende do conhecimento de quem visualiza as informações.
De acordo com as regras
Abrangência Proporcional ao investimento em câmeras
Limitada à mão de obra disponível
Dependente da alimentação das informações marítimas da praia.
Dependente da alimentação das informações marítimas da praia.
1.1.1 Solução Proposta
A proposta deste trabalho é o desenvolvimento de um Sistema Especialista (SE) diagnosticador
das ondas para a prática do surf. Como base conceitual para o SE, o trabalho visa utilizar a teoria de
Perotto (2000 apud MATTOS et al, 2002 p. 1), em que os “[...] sistemas tem como base o
conhecimento de especialistas, chegando às mesmas conclusões que estes chegariam à resolução de
problemas semelhantes, essa representação permite a modelagem do conhecimento para forma
computacional”.
Para tal, o analisador inteligente tem um módulo alimentador que buscará dados
disponibilizados por um conjunto de web services, que segundo a W3C (2014), é um software
designado a suportar a operabilidade entre aplicações através de uma rede. O software provedor tem
uma interface que descreve o formato, geralmente um WSDL (Web Services Description Language).
O outro sistema, o consumidor, interage com o web service processando as mensagens recebidas,
geralmente em tecnologias padrão de internet, como XML (eXtensible Markup Language) ou JSON
(JavaScript Object Notation) serializado via protocolo HTTP (Hypertext Transfer Protocol).
Este conjunto de web services é composto pelo web service do Centro de Previsão de Tempo e
Estudos Climáticos (CPTEC) e o web service do World Weather Online, serviço pago orientado à
longitude e latitude.
Segundo Lucci (1997 apud SCHWALBE, 1999, p. 26), “[...] as condições atmosféricas podem
mudar de um instante para o outro ou dentro de poucas horas, e nesse caso o tempo já não será o
16
mesmo”. Com isso, o módulo alimentador irá se adaptar a estas alterações, registrando assim as
previsões e as condições reais do tempo.
Em um segundo módulo, os dados registrados são submetidos a uma série de regras: em um
primeiro momento coletadas em entrevistas com especialistas no esporte e estudos científicos. A
submissão desses dados às regras coletadas terá como objetivo a realização de um diagnóstico mais
próximo possível das reais condições das ondas para a prática do surf
1.1.2 Delimitação de Escopo
O escopo deste trabalho engloba um sistema web desenvolvido na linguagem JAVA que
permita (1) cadastrar novas praias; (2) buscar dados meteorológicos disponíveis na internet para cada
uma delas; (3) submeter estes dados a um sistema especialista; e (4) prover diagnósticos específicos
para a prática do surf, citando características próprias, tais como: formação da onda, textura do mar,
entre outros, para cada praia cadastrada e seu respectivo conjunto de dados.
No entanto, o escopo do trabalho não prevê a adição automática de novos provedores de dados
ou a adição dinâmica de novas regras ao sistema especialista. A edição manual de diagnósticos
também não está prevista.
1.1.3 Justificativa
Com base na consulta realizada sobre os métodos disponíveis para a previsão de ondas,
constataram-se deficiências que motivam o desenvolvimento do método proposto neste trabalho.
Quanto ao método de broadcasting, ao passo que disponibiliza visualização 24 horas da praia, em
contrapartida existe uma preocupação com os equipamentos de transmissão das imagens, além do
custo e manutenção dos mesmos.
Tanto o método de broadcasting quanto o método de boletim visual geram custo diretamente
proporcional à quantidade de praias cobertas pelos métodos. Assim, o custo com a transmissão de
dados e/ou deslocamento do responsável por obter as imagens da praia aumenta juntamente com o
número de praias que serão diagnosticadas. Portanto, este é um limitador da elasticidade de cobertura
de praias, visto que para maior abrangência, os mantenedores de boletins teriam obrigatoriamente um
custo maior, possivelmente tornando inviável o diagnóstico de todas as praias onde a prática do surf é
possível.
17
Outra deficiência presente no método de boletim visual é a atualização, pois caso as condições
das ondas mudem no intervalo entre boletins, estes estarão diferentes da condição real. A atualização
dos boletins na solução proposta visa ser orientada a disponibilidade dos dados meteorológicos, sendo
assim, a cada nova remessa de dados fornecidos pelo módulo alimentador, um novo diagnóstico é
realizado.
Além das deficiências encontradas nos métodos atuais, outros fatores motivaram a formulação
da solução proposta, tais como o ineditismo no Brasil e a elasticidade de cobertura de praias. Quanto
ao ineditismo no Brasil, a proposta é caracterizada de tal forma por não haver outro trabalho
envolvendo previsão de ondas para a prática do surf com o uso de técnicas de Inteligência Artificial
(IA) no meio científico nacional. No entanto, existe uma tese de mestrado publicada pelo Instituto
Superior Técnico de Lisboa escrita pelo pesquisador Nelson Luna Silvestre e publicada em 2007. Até a
presente data a tese não esta presente por meio eletrônico, apenas fisicamente na biblioteca da
universidade onde foi publicada, por ainda não há como explicar o grau de similaridade entre os
trabalhos, mas os objetivos são semelhantes. Já no que permeia a elasticidade de cobertura de praias,
como o propósito da solução é definir regras baseadas nas características topográficas de cada praia,
consequentemente, praias semelhantes topograficamente poderão ser submetidas às mesmas regras.
O trabalho é classificado como de alta complexidade, pois envolve variáveis não controladas,
que são: a obtenção das regras e a confiabilidade das mesmas. Estas regras serão obtidas por meio de
literaturas relacionadas ao surf e entrevistas com especialistas sem comprovação científica de sua
experiência, mas que possuem conhecimento tácito e arraigado na comunidade praticante do esporte.
A solução proposta é viável quanto à estruturação dos módulos sugeridos, porém fica
diretamente dependente da obtenção, validação e volume de regras, bem como o histórico de dados
meteorológicos e diagnósticos assertivos armazenados no sistema.
18
1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo geral do trabalho é automatizar diagnósticos das condições atuais e futuras das
ondas para a prática do surf através da criação de um Sistema Especialista.
1.2.2 Objetivos Específicos
São objetivos específicos deste trabalho:
Analisar as variáveis envolvidas direta e indiretamente na prática do surf;
Criar uma base de conhecimento a partir da engenharia do conhecimento;
Estabelecer a inter-relação das variáveis;
Implementar o sistema como um todo; e
Validar e testar o sistema.
1.3 METODOLOGIA
Para a realização desse trabalho foi feita uma pesquisa bibliográfica voltada para o surf,
englobando a fundamentação do esporte, sua plataforma de execução, o mar, os fatores e
características que influenciam na formação da onda. Também foi feita uma pesquisa bibliográfica
para a técnica de Inteligência Artificial envolvida no trabalho, SE, para que uma fundamentação
teórica sobre as mesmas seja descrita e seja explícito o relacionamento de cada uma delas com a
solução proposta. Como o trabalho envolve a captação e documentação de um conhecimento que hoje
pertence aos especialistas e não está documentado, este foi realizado através de entrevistas e pesquisas
exploratórias em trabalhos científicos.
1.3.1 Metodologia da Pesquisa
Enquanto método científico, o trabalho fez uso do método hipotético-dedutivo, visto que, uma
vez definido o problema de pesquisa, definiu-se a técnica computacional, neste caso um Sistema
Especialista, para emprego na solução do problema (hipótese) com o intuito de investigar se a escolha
atende a demanda (dedução).
19
Sob o ponto de vista de sua natureza este trabalho pode ser considerado como pesquisa
aplicada, visto que a proposta do estudo é levantar práticas para solucionar um problema específico,
uma vez encontrada a solução, mesmo que parcial este tende a gerar conhecimento na comunidade
científica para aplicação em outros casos de natureza semelhante.
Sob o ponto de vista da forma de abordagem do problema este TCC possui uma etapa de
pesquisa qualitativa contemplada, pois o levantamento de conceitos computacionais que pudessem
solucionar o problema de pesquisa foi necessário. Em uma segunda etapa, o trabalho faz uso de
abordagem baseada em pesquisa qualitativa, uma vez que trata as entrevistas com especialistas para
levantamento regras para promover experimento entre causa e efeito.
Sob o ponto de vista de seus objetivos este trabalho pode ser considerado como pesquisa
exploratória, no âmbito do levantamento de informações sobre formação de ondas, itens que atuem
diretamente sobre as mesmas e/ou influenciam-nas. A fase exploratória também foi utilizada para
pesquisa de técnicas computacionais adequadas para solução do problema.
1.3.2 Procedimentos Metodológicos
Os procedimentos metodológicos utilizados foram a pesquisa bibliográfica, a pesquisa
exploratória, a metodologia de análise e projeto de sistemas, bem como a metodologia de
implementação, testes e validação do sistema.
1.3.2.1 Pesquisa bibliográfica
Inicialmente pesquisaram-se trabalhos relacionados ao tema, e possíveis linhas de pesquisas
existentes com os mesmos objetivos. Em um segundo momento, buscou-se trabalhos científicos
voltados para o surf, independente de previsão, com o intuito de um aprofundamento teórico e
compreensão do esporte e nas variáveis que o cercam, possibilitando assim um maior senso crítico
para a definição das regras.
A pesquisa bibliográfica se estendeu à fundamentação do Sistema Especialista, módulo do
sistema que gerencia as regras documentadas e submete os dados meteorológicos para obtenção do
diagnóstico.
20
1.3.2.2 Pesquisa exploratória (entrevistas)
Segundo Boni e Quaresma (2005, p. 70),
[...] o ponto de partida de uma investigação científica deve basear-se em um levantamento de dados. Para esse levantamento é necessário, num primeiro momento, que se faça uma pesquisa bibliográfica. Num segundo momento, o pesquisador deve realizar uma observação dos fatos ou fenômenos para que ele obtenha maiores informações e num terceiro momento, o pesquisador deve fazer contatos com pessoas que possam fornecer dados ou sugerir possíveis fontes de informações úteis.
Portanto, para contemplar o terceiro momento da investigação científica, este trabalho coletou
dados e regras que compuseram o motor de inferência por meio de entrevista com praticantes experientes,
“gurus” do esporte, surfistas aposentados, analistas e divulgadores de boletins, os quais detêm o
conhecimento sobre o comportamento do mar voltado para a formação da onda para a prática do surf.
Conforme Haguette (1997, p. 86), entrevista é um “processo de interação social entre duas
pessoas na qual uma delas, o entrevistador, tem por objetivo a obtenção de informações por parte do outro,
o entrevistado”. No TCC, a etapa em que se refere à extração da informação por meio da entrevista será a
que oferece o maior grau de incerteza, por isso a preparação da mesma é de fundamental importância e
exigem alguns cuidados como o planejamento, que visa os objetivos a serem alcançados; a escolha,
disponibilidade e confidência da identidade dos entrevistados; e a preparação específica do roteiro ou
formulário com as questões (LAKATOS; MARCONI, 1996).
Dentre os tipos de entrevista disponíveis para pesquisas científicas, aquele que melhor se enquadra
para o TCC é a entrevista semi-estruturada, uma vez que “O pesquisador deve seguir um conjunto de
questões previamente definidas, mas ele o faz em um contexto muito semelhante ao de uma conversa
informal” (BONI; QUARESMA, 2005, p. 75).
Para Manzini (1990/1991, p. 154 apud MANZINI, 2004), “a entrevista semi-estruturada está focalizada
em um assunto sobre o qual confeccionamos um roteiro com perguntas principais, complementadas por outras
questões inerentes às circunstâncias momentâneas à entrevista. Para o autor, esse tipo de entrevista pode fazer
emergir informações de forma mais livre e as respostas não estão condicionadas a uma padronização de
alternativas”.
Manzini (2003) cita alguns cuidados que o pesquisador deve ter ao formular as perguntas: quanto (1) à
linguagem; (2) à forma das perguntas; e (3) à sequência das perguntas. O item (3) é de grande relevância para a
entrevista deste trabalho, uma vez que existe uma relação de dependência direta entre as perguntas.
21
1.4 ESTRUTURA DO TRABALHO
Este trabalho é composto por cinco capítulos. O primeiro capítulo é introdutório, explanando
sobre o problema de pesquisa, a solução proposta com suas limitações e a justificativa. Dentro deste
capítulo também há os objetivos gerias e específicos do trabalho, assim como a metodologia utilizada.
O segundo capítulo é responsável pela fundamentação teórica do trabalho, onde o estado da
arte, neste caso o surf e a formação da onda para sua prática é conceituado, juntamente com a técnica
utilizada, neste caso sistema especialista.
O 3º capítulo faz um comparativo de trabalhos relacionados. Primeiramente trabalhos
relacionados ao negócio, independente de tecnologia, ou seja, serviços que de alguma forma se
relacionam com o proposto no TCC, dos mais variados âmbitos. Ainda neste capítulo há um
comparativo com trabalhos relacionados com a tecnologia, onde sistemas especialistas que foram
desenvolvidos para outros contextos são comparados ao desenvolvido.
Detalhes do desenvolvimento são apresentados no quarto capítulo. Após apresentar uma visão
geral do sistema, requisitos funcionais, não funcionais e regras de negócio compõem o subcapítulo de
análise, assim como a modelagem do sistema apresenta os diagramas elaborados, telas do sistema e
estrutura do bando de dados e as tecnologias utilizadas para o desenvolvimento são citadas.
Complementando esse capítulo a engenharia do conhecimento á apresentada com a aplicação prática
do que foi fundamentado na metodologia do capítulo introdutório, mostrando como foi elaborada a
entrevista e a extração do conhecimento, resultante da execução desta. Por fim, este capítulo é
finalizado com a descrição dos experimentos realizados e seus resultados.
O último capítulo descreve as conclusões deste trabalho, discutindo sobre as experiências e
obstáculos encontrado no decorrer do trabalho e cita as oportunidades e possíveis incrementos para
trabalhos futuros.
22
2 FUNDAMENTAÇÃO TEÓRICA
A fundamentação teórica abordará o surf como esporte, explicando seus conceitos e relação
com o mar, local onde o mesmo é exercido. Após será explicado a formação das ondas, sua estrutura e
origem e características que influenciam diretamente para a prática o surf.
Depois de explicado o estado da arte, uma abordagem de sistema especialista será feita,
acompanhada de conceitos de probabilidade, finalizando com a relação entre ambos, resultando na
fundamentação de um sistema especialista.
2.1 SURF
O surf é um dos esportes classificados como praticado na natureza e, consequentemente
dependente desta. Conforme Bessy e Mouton (2004, p. 57 apud MOREIRA, 2007), “Inicialmente, na
segunda metade do século dezenove, o termo utilizado era actividades de ar livre (“plein air”), tendo
como principal ideia o exercício em meio natural, com um ambiente saudável”. Assim encara-se este
momento como o início do surgimento de movimentos defendendo o retorno à natureza, ou mesmo, o
“interesse ecológico, tendo como objetivo a conservação e equilíbrio da mesma” (MOREIRA, 2007, p.
58).
O esporte apresenta basicamente duas dependências: a proximidade física do participante no
local para o surf, e as condições, sendo elas favoráveis ou não. Segundo Moreira (2007), no ano de
1988, em Portugal, um programa nacional de educação física sugeriu atividades de exploração à
natureza em algumas escolas. De acordo com a condição geográfica, às escolas próximas ao litoral
foram designadas atividades aquáticas, enquanto às escolas afastadas do litoral, montanhismo.
Já a segunda dependência pode ser justificada pela definição de Almada (1992 apud
MOREIRA, 2007), em que o autor classifica o surf como atividade de adaptação ao meio, visto que se
distingue “da dos grandes espaços por se conhecerem à priori o tipo de condições que poderão ser
encontradas”. Ainda surge outro termo, conforme apresentado por Moreira (2007, p. 61):
denominado por Marimon (2004) como “sistemas praxiológicos adaptativos, onde a dominante é a adaptação da conduta dos praticantes, à incerteza do meio físico, através da análise dos indícios de alteração do meio, de forma a antecipar os acontecimentos”. Esta denominação deixa clara a variabilidade que existe em torno do meio em que o esporte é praticado, diferenciando atletas que conseguem decifrar os padrões e adaptarem-se aos comportamentos que fogem destes.
23
Moreira (2007 p. 62) ainda reforça esta ideia dizendo que:
não há dúvida que os desafios e as metas a ultrapassar são impostos pela natureza, muitas vezes de uma forma aleatória. Portanto o principal confronto é efetuado entre o Homem e a Natureza (Almada, 1992; Araújo, 1983), sendo necessária uma constante adaptação dos gestos, em função das alterações do envolvimento (Lacroix, 1985), independentemente de existirem adversários.
Inventado na Polinésia e desenvolvido nas ilhas Havaianas, o surf, como é conhecido
atualmente, teve sua origem por volta do século XI. O europeu, representado pelo Capitão James
Cook, teve o primeiro contato com o surf em 1778, porém este só é reconhecido como esporte e estilo
de vida após a Primeira Guerra Mundial, resultado da expansão no início do século XX (KAMPION;
BROWN, 1998; WARSHAW, 2003 apud MOREIRA, 2007).
O primeiro campeonato de surf foi realizado em 1964, em Manly, Austrália, marco no esporte,
que despertou para a evolução técnica, consequência de pranchas menores e mais leves, aparecimento
de acessórios como o leash, nacionalmente conhecida como cordinha, permitindo mais tempo de
prática e segurança, aumento de quilhas e aerodinâmica das pranchas (KAMPION; BROWN, 1998;
WARSHAW, 2003; CRALLE, 2001 apud MOREIRA, 2007).
O ano de 1992 é marcado pelo primeiro campeonato de surf, o WCT (“World Championship
Tour”), em que os 44 melhores surfistas disputam elevadas quantias em prêmios. Destaque para Kelly
Slater (10 títulos), Andy Irons (3 títulos), Lisa Anderson (4 títulos), Layne Beachley (7 títulos) e
Gabriel Medina, surfista brasileiro que é o mais novo campeão com apenas 17 anos.
2.1.1 Definição
O surf é basicamente a utilização da força da gravidade para deslizar na inclinação criada pela
formação da onda, em uma prancha, assim dependendo das condições do mar e do equipamento
utilizado, neste caso a prancha. Moreira (2004) denomina como a expressão do surf a particularidade
das execuções das manobras por cada atleta, tendo relacionado aspectos cognitivos e mecânicos, como
a força, velocidade, ângulo da manobra e características físicas do surfista (MOREIRA, 2004 apud
MOREIRA, 2007, p. 70).
Em termos de localização no mar, Henriquez (2004 apud Moreira, 2007) classifica como “line
up” o ponto entre o alto mar e a rebentação que os surfistas ficam esperando atentamente a
24
aproximação das ondas para apanharem com o auxílio da remada para realizar o “take off”, transição
da posição de remada para a posição de pé, ou seja, iniciar as sessão de manobras.
2.1.2 Ondas
Segundo Moreira (2007, p. 71), “existem dois contextos distintos, para as ondas, o natural, no
mar e no rio, e o artificial, em piscinas e em estruturas especialmente imaginadas para o efeito”. O
estudo deste trabalho será focado no detalhamento das ondas exclusivas do mar.
Moreira (2007, p. 71) faz um apanhado teórico sobre a formação das ondas e coloca que
Tudo começa com a energia solar em contacto com a atmosfera, aumentando a temperatura do ar, que em conjunto com a força de Coriolis provoca uma tridimensional e complexa deslocação do ar. Isto porque na frente polar, o ar frio do pólo, encontra o ar quente vindo do equador, formando-se então a depressão de média latitude. Estas depressões, em contacto com a superfície do oceano, dão origem à formação da ondulação (Abbott & Baker 1989; Butt & Russell, 2002; Soultrait & Cazenave, 1995).
As ondas são geradas pelo vento. Existe uma transferência de energia do vento sobre o mar liso
(“flat”), formando pequenas ondas, as conhecidas marolas. Esse evento é o primeiro de uma
combinação de dois mecanismos para a formação completa da onda. O segundo evento é o
crescimento exponencial do tamanho, resultado da associação das ondas e dependente da força e
tempo que o vento sopra sobre. Dessa forma, a onda se forma e só não toma proporções infinitas em
função do ponto de saturação, equilíbrio entre o vento e a força da gravidade (ABBOTT; BAKER,
1989; ALDERSON, 1996; BUTT; RUSSELL, 2002; SOULTRAIT; CAZENAVE, 1995; MOREIRA,
2007).
Depois de formadas, as ondas propagam então pelo mar, em um movimento elíptico e vertical,
não horizontal e sobre a influência de fenômenos físicos como dispersão circunferencial, dispersão
radial e agrupamento de ondas (BUTT; RUSSELL, 2002; SOULTRAIT; CAZENAVE, 1995).
Estes conceitos de dispersão já foram estudados por Butt e Russell (2002 apud MOREIRA,
2007), que dizem que “a dispersão circunferencial é a expansão das ondas numa área progressivamente
mais ampla, observando-se um aumento do perímetro, diretamente proporcional à distância da origem
da ondulação”, fazendo com que a onda perca 30% de sua altura cada vez que dobra sua distância.
Como demonstrado na Figura 5, as ondas sofrem uma separação, pois seus comprimentos de
onda são diferentes, variando de 6 a 18 segundos (56 a 505m). Sendo assim, uma dispersão radial
25
caracteriza-se pela relação entre a velocidade e comprimento da onda, aquelas com maior
comprimento, viajarão com mais velocidade que ondas com menor comprimento.
Figura 5: Dispersão radial
Fonte: Moreira (2007)
Essa informação influencia diretamente a formação das ondas e este dado já é fornecido pelo
CPTEC, porém as regras poderão ser associadas a essa informação, como a velocidade da onda e
ângulo de onda na rebentação.
Outro fenômeno que ocorre para formação de ondas é o Agrupamento, que permite a
formação de conjunto de ondas (‘Sets’). Segundo Butt e Russell (2002, apud MOREIRA, 2007, p. 74),
“quanto maior for a dispersão relativa à origem da ondulação, embora por vezes, já bastante longe, se
verifique uma ondulação desordenada e aleatória, devido à mistura de duas ou mais ondulações, que
chegam de diferentes origens”. Com base nesta informação, é possível concluir que a probabilidade de
o mar estar mexido no caso de ondulações dispersas é alta, porém, esta informação sobre as
ondulações seria necessária para poder chegar a tal conclusão.
Devido à complexidade deste fenômeno, pelas diferentes origens das ondulações, com
comprimento, direção e tamanhos distintos, há séries entre 2 e 15 ondas, de tamanhos e intervalos
diferentes. Essa combinação de ondulações gera um resultado que pode ser observado na Figura 6, em
que “no momento em que a crista e a base das ondas coincidem nas duas ondulações, temos uma
interferência construtiva, aumentando o tamanho da onda, mas se uma crista coincide com uma base,
da outra ondulação, temos uma interferência destrutiva, anulando-se a onda e surgindo um espaço
entre os agrupamentos” (BUTT; RUSSELL, 2002 apud MOREIRA 2007, p. 75).
26
Figura 6: Exemplo de combinação de duas ondulações
Fonte: Butt e Russell (2002 apud MOREIRA, 2007)
Outro conceito que deve ser dada atenção é o conceito de Rebentação. O fenômeno da
rebentação é o momento em que a crista da onda ultrapassa sua base, devido à redução de velocidade
que a onda sofre ao seu contato com o fundo, como pode ser exemplificado na Figura 7.
Figura 7: Rebentação das ondas
Fonte: Moreira (2007)
27
2.1.3 Estrutura da onda
A dificuldade da onda é definida pelos parâmetros de alguns componentes da onda. São eles (1)
a altura; (2) Ângulo de deslocamento da rebentação; (3) Intensidade da rebentação; e (4) comprimento
da secção, ilustrados na Figura 8 as nomenclaturas utilizadas, para melhor compreensão (HUTT et al,
2001; MEAD, 2003; SCARFE et al, 2003 apud MOREIRA 2007).
Figura 8: Nomenclatura dos componentes de uma onda (Legenda: 1 Espuma; 2 Lábio; 3 Bolsa; 4 Crista; 5 Base; 6 Parede; 7 Ombro; 8 Sentido da rebentação; 9 Zona de impacto)
Fonte: adaptado de Abbott e Baker, (1989); Guisado, (2003); Hutt, (2001) (apud MOREIRA, 2007)
O surf é praticado na onda prestes a rebentar, podendo variar de acordo com a manobra, o
surfista pode explorar desde o lábio da onda até o limite da parede, desde que tenha velocidade
suficiente. A altura da onda pode ser medida entre a base e a crista, sendo esta a forma científica de
quantificar este parâmetro, no entanto, existem outras formas de cálculo, assumindo valores díspares e
muitas vezes exagerados (ARMSTRONG, 2005; CRALLE, 2001; DIXON, 2001; SCARFE et al.,
2003; WARSHAW, 2003).
De acordo com Dixon (2001, apud MOREIRA 2007), as dimensões das ondas podem ser
classificadas de acordo com a Tabela 2.
Tabela 2. Dimensão das ondas
Ondas Pés Metros
Pequenas 1 a 2 0,3 a 0,5Médias 3 a 5 1 a 1,5Grandes 6 a 8 2 a 2,5Muito Grandes 9 a 14 3 a 4Gigantes > 15 > 5
28
Um fator importante a ser levado em consideração na formação da onda é o ângulo de
deslocamento da rebentação, que é definido pela parede onda, zona onde o surfista se desloca, por
rebentar, e pelo espaço que liga as extremidades da espuma. Com isso, a velocidade de deslocamento é
o produto da velocidade da onda em direção à praia x a velocidade da rebentação. Esta seria a
velocidade que o surfista precisaria atingir para poder entrar na bolsa da onda (HUTT et al., 2001;
MEAD, 2003; apud MOREIRA, 2007).
2.1.4 Classificação
Para a boa pratica do surf, indicam-se ondas com a rebentação adequada. A literatura sobre o
tema classifica as ondas de acordo com a sua rebentação (Figura 9) em progressivas, mergulhantes e
espraiadas, sendo que somente as progressivas seriam favoráveis a prática. Estas ainda se dividem em
vertente e cavada, de acordo com sua velocidade e formação (ALDERSON, 1996; BUTT &
RUSSELL, 2002; MEAD, 2003; PEREIRA, 2001; WARSHAW, 2003).
Figura 9: Tipos de rebentação
Fonte: Moreira (2007)
De acordo com Moreira (2007, p. 81),
[...] a onda espraiada movimenta-se com velocidade e, com grande potência, entendendo-se pela a praia, em vez de rebentar. [...] A onda mergulhante, rebenta na totalidade, desmoronando-se em toda, ou quase toda, a sua largura, sendo, na gíria, uma onda fechada ou que fecha toda.
Portanto, estes tipos de ondas estariam inviabilizando a prática do esporte, restando ondas com
rebentação progressiva, que são aquelas que começam a rebentar em um ponto e continuam depois
pela sua largura, para esquerda ou para a direita (MOREIRA, 2007). A diferença entre os tipos de
ondas podem ser observadas na Figura 10, que ilustra cada um dos tipos de rebentação.
29
Figura 10: Imagem dos tipos de rebentação
Fonte: Moreira (2007)
Para o mapeamento de regras envolvendo o contexto destas variáveis, existe o Número de
Irribarren, que considera a altura da onda, o período e o declive do fundo, sendo que o resultado da
expressão (1,25 x Altura da onda) x Período x Declive do fundo, no caso do resultado ser inferior a 0.4
caracteriza ondas vertentes, valores entre 0.4 e 2 ondas cavadas e para valores acima de 2, ondas
espraiadas (BUTT & RUSSELL, 2002; MEAD, 2003).
A seguir, o detalhamento dos condicionantes da rebentação da onda, no sentido de qualidade da
rebentação será apresentado.
2.1.5 Direção da ondulação
A direção da ondulação é um dos fatores que influenciam na qualidade da rebentação. De
acordo com a direção que a ondulação entra, e a posição geográfica da praia, possibilitará a boa
formação da onda para o surf, ou seja, a onda será progressiva ou não. Segundo Mead e Black (2001)
esta direção da ondulação define-se como direção ortogonal favorável, sendo o melhor alinhamento,
para cada local, que permite a criação de boas ondas em rebentação, para o surf. Quando esse
alinhamento não é garantido, as ondas rebentam muito depressa, ou ao invés, muito devagar, não
servindo, em ambos os casos, para um surf de qualidade.
A direção da ondulação é constante e paralela até o momento em que chega à costa, sofrendo o
processo que Moreira (2007) nomeia de Refração, que é a quebra da linha da ondulação, devido às
diferenças de profundidade, provocando um decréscimo na altura da onda. Portanto, condicionada
30
pela forma da costa e pela batimetria, é dependente do período e verifica-se que quanto maior for o
comprimento da onda, maior será o ângulo de refracção (BUTT & RUSSELL, 2002; PHILLIPS et al,
2003).
2.1.6 Estrutura da costa
No estudo realizado por Moreira (2007), os locais onde rebentam ondas, boas para o surf,
podem ser classificadas pela estrutura da costa, em que se considera o tipo de fundo, forma da costa,
forma do fundo e declive do fundo.
Os tipos de fundos podem ser classificados em fixos e móveis, onde os fixos seriam de rocha
e/ou corais e os móveis, de areia. As ondas provocadas por fundo fixo, geralmente resulta em uma
onda cavada de alta potência, resultante de uma mudança repentina da profundidade. Segundo Butt e
Russell (2002) as ondas têm este comportamento devido à refracção côncava, concentrando a energia
no local onde se encontra o coral ou a rocha, tornando a onda maior e mais potente, para continuar
mais suavemente, nas zonas de maior profundidade. Já no caso de um fundo de areia, isto dependerá
diretamente da forma que o fundo tomou. Podemos então, de acordo com vários autores ter duas
situações: praias de declive reduzido, com a possibilidade da barreira de areia ser paralela à ondulação,
que provocam as ondas mergulhantes (ABBOTT & BAKER, 1989; BUTT & RUSSELL, 2002;
DIXON, 2001; HENRIQUEZ, 2004); praias com vários bancos de areia, separados por canais de
maior profundidade, rebentando a onda em vários pontos em simultâneo, devido à refração côncava
nas zonas de menor profundidade, provocando o aparecimento de muitas secções, o que permite a
formação de ondas com abertura para direita e esquerda, bem como uma distribuição mais equilibrada
dos praticantes ao longo da praia (Figura 11).
31
Figura 11: Refração na areia
Fonte: Moreira (2007)
Pontos que devem ainda ser levados em consideração para a formação das ondas, que estão
relacionados à estrutura da costa, são os promatórios que podem gerar uma refração suficiente para
uma onda regular que longa (Figura 12). Este comportamento é associado à forte refração convexa,
que provoca uma dissipação da energia por uma grande área, como se referem Butt e Russell (2002) e
Henriquez (2004).
De acordo com Cralle (2001) e Warshaw (2003), a foz do rio, permite a acumulação de bancos
de areia que favorecem a rebentação das ondas nestes locais, à frente ou lateralmente à boca do rio.
32
Figura 12: Refração no promatório
Fonte: Moreira (2007)
A forma do fundo é também uma condicionante, como comprova o estudo de Mead e Black
(2001a), sobre a batimetria de locais de surf de qualidade superior, reconhecidos a nível mundial, onde
classificaram os fundos observados, em função das suas componentes: rampa, “ramp”; plataforma,
“platform”; foco, “focus”; cunha, “wedge”; parapeito, “ledge”; relevo, “ridge”; cume “pinnacle”
(Figura 13).
Figura 13: Componentes do fundo
Fonte: Moreira (2007)
33
Porém, os mesmo autores, mas em outro estudo, concluem que na prática os fundos não são
exclusivos, podendo haver misturas dos tipos de fundos, gerando fundos mais complexos. Como
exemplo de combinações pode haver rampa com cunha, rampa plataforma e cunha, rampa foco e
cunha, entre outros, que acabam gerando resultados diferentes, mas já observados (Figura 14).
Figura 14: Exemplo da configuração do fundo, Bingin Reef, Bali, Indonésia
Fonte: Mead e Black (2001 apud MOREIRA, 2007)
Existe outra condicionante associada ao fundo do mar, que é o declive do fundo que, de
acordo com Mead e Black (2001), tem uma relação direta com a intensidade de rebentação, ou seja,
como refere Pereira (2001), com um declive suave teremos ondas vertentes e com uma alteração
abrupta na profundidade do mar surgem ondas cavadas, ou mergulhantes, se a ondulação for paralela
ao declive. As ondas espraiadas, não chegam a rebentar, porque não perdem velocidade e não ganham
altura, devido à grande profundidade da água (PEREIRA, 2001).
34
2.1.7 Marés
Sendo as marés consideradas condicionantes da onda, é fundamental conhecer alguns dos
aspectos com elas relacionados, nomeadamente a sua dependência da posição relativa entre a Terra, a
Lua e o Sol. Isto porque os oceanos estão sob a influência da força gravítica da Lua e do Sol, numa
relação de 2 para 1, e da força centrífuga da Terra (BUTT & RUSSELL, 2002; CRATO, 2000;
GUISADO, 2003; WARSHAW, 2003).
O ciclo de marés, dependente da relação entre a Terra e a Lua, é constituído por duas fases,
onde a maré desce e depois sobe, com um intervalo de 12 horas e 25 minutos para completá-lo, desde a
maré cheia, passando pela maré baixa até alcançar novamente a maré cheia, verificando-se assim um
atraso diário de 50 minutos (BUTT & RUSSELL, 2002; GUISADO, 2003; WARSHAW, 2003). De
acordo com Guisado (2003) e Warshaw (2003), as ondas na maré cheia ficam mais lentas, com uma
inclinação menor, enquanto que na baixa-mar estas são mais rápidas e tubulares.
Portanto, como a formação das ondas de qualidade, depende do contato da base da onda no
fundo da praia, a maré está diretamente relacionada a condição para prática do surf, alterando o nível
d’agua que terá na praia, consequentemente, ditando se haverá onda no local ou não. “[...] existem
alguns locais onde se consegue uma margem de duas a três horas para a prática do surf, associada à
meia maré, quando enche ou quando está a vazar, podendo melhorar as condições, neste caso, durante
as marés” (BUTT; MARSHAL, 2002; WARSHAW, 2003 apud MOREIRA, 2007, p. 98).
2.1.8 Vento
Para a prática do surf, podemos classificar o vento em três categorias: (1) Sem vento, que não
interfere na formação das ondas nem na textura do mar; (2) vento Terral (“offshore”), que é o vento
que sopra da terra em direção ao mar; e (3) vento Maral (“onshore”), que é o vento que sopra do mar
para a terra.
De acordo com Butt e Russell (2002), os ventos locais são geralmente térmicos, ou seja, no
inicio da manhã, a temperatura da terra e do mar é semelhante, geralmente não havendo vento. Ao
longo da manhã, o sol vai aquecendo a terra, verificando-se um deslocamento de um ar fresco do mar
em direção a terra, o mesmo ocorrendo em sentido inverso no período da noite. Depois do meio dia,
pode-se observar um deslocamento do vento de oeste para noroeste, devido ao Coriolis (resultado da
rotação da Terra).
35
O vento Maral, perturba bastante a formação das ondas, não sendo indicado para a prática do
surf, pois provoca uma rebentação prematura e mais no “outside”, além de diminuir a intensidade da
rebentação. Já o vento Terral, é mais favorável para o surf, desde que suave, pois aumenta a
intensidade da rebentação e facilita a verticalidade da parede, principalmente em ondas cavadas
(ABBOTT; BAKER, 1989; BUTT; RUSSELL, 2002; GUISADO, 2003; SCARFE et al. 2003;
WARSHAW, 2003).
2.2 SISTEMA ESPECIALISTA
Técnicas de Inteligência Artificial (IA) estão cada vez mais presentes em uma variedade de
subcampos, indo desde tarefas específicas, como um jogo de xadrez, até áreas abrangentes de
percepção e aprendizado. Através da IA é possível sistematizar e automatizar tarefas intelectuais e,
portanto, é potencialmente flexível e adaptável para qualquer esfera da atividade intelectual humana
(RUSSELL; NORVIG, 2004).
Segundo Branco Neto (2010), os domínios de aplicação da IA são:
Processamento de Linguagem Natural;
Demonstrações Automáticas de teoremas;
Bases de dados Inteligentes;
Robótica;
Tomada de Decisão;
Diagnóstico;
Reconhecimento de Padrões;
Ensino;
Planejamento; e
Entretenimento.
Será dada ênfase aos pontos de diagnóstico e reconhecimento de padrões, domínios que podem
ser aplicados ao trabalho.
Dentre os subcampos da IA, encontra-se o Sistema Especialista (SE) que conforme Passos
(1989), este subgrupo da IA é assim denominado porque possui conhecimento de um especialista em
uma determinada área e tem como objetivo resolver os problemas relativos a um domínio específico,
podendo ser aplicado praticamente todas as áreas que precisem de um especialista. Programas de
36
computador que tentam resolver problemas que os seres humanos resolveriam emulando o raciocínio
de um especialista, aplicando conhecimentos específicos e inferências são ditos “Sistemas
Especialistas” (SAVARIS, 2002).
O primeiro SE desenvolvido foi o Mycin, levou em torno de 5 a 6 anos para ser desenvolvido
na Universidade de Stanford, e foi escrito em Lisp como a dissertação de Doutorado de Edward
ShortLiffe sob orientação de Bruce Buchanan. O Mycin operava com um motor de inferência bastante
simples, e uma base de conhecimento de aproximadamente 600 regras, e era uma série de perguntas
questionadas a um paciente, que buscava uma consulta médica, com o objetivo de diagnosticar as
possíveis bactérias culpadas.
2.2.1 Conceitos
“Sistemas Especialistas são programas de computador concebidos para reproduzir o
comportamento de especialistas humanos na resolução de tarefas de um domínio específico”
(BITTENCOURT, 2001).
Segundo Branco Neto (2010), SE pode ser utilizado para atividades de Diagnóstico,
Monitoração, Controle, Interpretação, Previsão, Projeto, Planejamento, Simulação e Tutorial.
Durante o processo de raciocínio, o mecanismo de inferência vai verificando qual a importância
dos fatos que encontra, comparando-os com as informações já contidas no seu conhecimento
acumulado sobre esses fatos e hipóteses. Neste processo, vai formulando novas hipóteses e verificando
novos fatos, que influenciaram no processo de raciocínio. Este raciocínio é sempre baseado no
conhecimento prévio acumulado. Um especialista com esse processo de raciocínio pode não chegar a
uma decisão se os fatos de que dispõe para aplicar o seu conhecimento prévio não forem suficientes.
Pode, por este motivo, inclusive chegar a uma conclusão errada, mas este erro é justificado em função
dos fatos que encontrou e do seu conhecimento acumulado previamente (SAVARIS, 2002).
Segundo Hermon e King (1998), o que define o desempenho de um SE é a quantidade e
qualidade de suas regras. Estas são compostas por fatos e heurísticas, onde os fatos podem ser
definidos como informações largamente compartilhadas, publicamente disponíveis e bem aceitas pelos
especialistas de um campo e heurísticas são em sua maioria privadas, intrínseco, regras pouco
discutidas, porém de bom discernimento (regras de raciocínio plausível, de boa conjectura).
37
2.2.2 Características
Para considerarmos um sistema, como Sistema Especialista ele deve ter as seguintes
características, segundo Ferreny (1985, apud SAVARIS, 2002):
Uma linguagem de expressão dos conhecimentos fornecidos pelos especialistas;
Uma base de conhecimento, para armazenar conhecimentos específicos de determinada
aplicação, que pode ser fornecido por um sistema especialista, ou acumulado pelo
sistema ao fim de um teste; e
Um motor de inferência, programa que explora o conhecimento da base precedente,
considerando-a como a fonte da informação.
Existe ainda um ponto de vista diferente para caracterização de um SE, baseado na análise de
seu comportamento, onde Carvalho, Monteiro e Genaro (1987) sugerem os pontos:
Resolver problemas muito complexos tão bem quanto o melhor especialista da área, por
não ter influencia externa, emocional ou cultural;
Raciocinam heuristicamente, baseados em regras práticas;
Manipulam e raciocinam sobre descrições simbólicas;
Contemplam hipóteses múltiplas simultaneamente; e
Justificam suas conclusões.
Logo, pode-se concluir que um sistema especialista pode substituir um especialista humano de
determinada área, e baseado em regras, resolver problemas como os especialistas resolveriam.
38
2.2.3 Classificação
De acordo com o seu funcionamento, é possível classificar os SE’s, e segundo Rabuske (1995),
estas classificações são:
Interpretação – São sistemas que fazem descrições de situações a partir da observação
de fatos fazendo uma análise de dados e procurando determinar as relações e seus
significados. Devem considerar as possíveis interpretações, descartando as que se
mostrarem inconsistentes.
Diagnóstico – São sistemas que detectam falhas oriundas da interpretação de dados ou
falhas na não detecção destes. Orientado a exceção, já vem embutido o sistema de
interpretação, ou seja, a interpretação faz com que seja detectada a falha ou não.
Monitoramento – Interpreta as observações de sinais sobre o comportamento
monitorado. Tem como característica a verificação periódica de limites pré-
estabelecidos.
Predição – Com base na observação de dados do passado e presente, este SE foca na
previsão de acontecimentos, possíveis comportamentos, raciocínios hipotéticos,
verificando as tendências de acordo com os dados de entrada.
Planejamento – Prepara um programa de iniciativas a serem tomadas para atingir um
determinado objetivo. Para atingir este objetivo o SE estabelece etapas e subetapas,
prioriza etapas conflitantes e particiona o problema em menores, menos complexos,
onde a intervenção humana é inevitável.
Projeto – Assemelha-se ao de planejamento, porém, deve confeccionar especificações
que atentam os objetivos dos requisitos particulares. Esse é um sistema capaz de
justificar a alternativa atual e futuras escolhidas.
Depuração – Trata-se de sistemas que possuem mecanismos de solução de para mau
funcionamento provocado por distorções de dados. Provê, de maneira automática,
verificações passo a passo para validação de uma cada etapa de um processo qualquer.
39
Reparo – Segue um plano para administrar uma solução encontrada em uma etapa do
diagnóstico.
Instrução – Tem um mecanismo para verificar e corrigir o comportamento do
aprendizado de algum processo.
Controle – É um sistema que governa o comportamento geral de outros sistemas (não
apenas de computação).
Com base nessa visão geral da classificação de SE’s, o SE de interpretação é o que mais
caracteriza o trabalho proposto, pois este receberá dados meteorológicos, interpretando-os, analisando-
os e determinando seus significados para resultar em um diagnóstico. Como os dados de entrada
contemplarão tantos dados presentes, quanto futuros, o sistema a ser desenvolvido terá uma influência
do SE de monitoramento, pois na busca da condição ideal do mar estará diretamente relacionada a
limites pré-estabelecidos.
2.2.4 Componentes
Segundo Teive (1997), um SE possui os seguinte componentes principais: a base de
conhecimento, mecanismo de inferência e memória de fatos, conforme apresentado na Figura 15.
Figura 15: Componentes de um SE
Fonte: Teive (1997)
40
Neste modelo existe uma relação direta do usuário com o mecanismo de inferência, o que é
questionável, pois na arquitetura apresentada por Branco Neto (2010), esta relação está intermediada
pela interface, conforme Figura 17.
Figura 16: Estrutura de um SE
Fonte: Branco Neto (2010)
Branco Neto (2010) ainda defende que um SE ainda pode ter componentes adicionais,
conforme pode ser visto na Figura 17.
Figura 17: Arquitetura de um SE com módulos adicionais
Fonte: Branco Neto (2010)
41
Segue a definição de cada um dos componentes:
Base de conhecimento (Base de regras)
A Base de Conhecimento (BC) é o elemento que armazena o conhecimento abstrato de um ou
mais especialistas humanos sobre um determinado domínio. Também conhecida como banco de
regras, estas representadas por regra de produção do tipo:
Se (situação) => Então (conclusão ou ação)
Memória de trabalho (Base de Fatos)
A Memória de Trabalho (MT) é o módulo que contém os fatos sobre o problema, o
conhecimento concreto, ou seja, o processo que pode ser considerado fato antes do processo de
inferenciação. Vale lembrar que a MT é de caráter transitório, já que novos fatos estão sendo
acrescentados continuamente, assim como fatos existentes são excluídos.
Motor de inferência
O Motor (Mecanismo ou Máquina) de Inferência (MI) é considerado por alguns autores como o
coração de um SE (CASTILHO; ALVAREZ, 1991). Sua principal função é combinar as bases de
regras com a base de fatos gerando conclusões e novos fatos.
Módulos Adicionais
Quanto aos módulos adicionais, a interface com o usuário seria, em alguns casos, uma
interação por forma de perguntas e respostas, para que seja dada as conclusões, ou simplesmente, de
forma mais natural possível, a apresentação dos resultados, podendo ser através de gráficos, ícones ou
imagens que ilustram as conclusões geradas pelo SE.
O Mecanismo de explanação seria o módulo que mostraria para o usuário o raciocínio utilizado
para ter chego à conclusão e o módulo de aprendizagem é o responsável por atualizar
(automaticamente ou não) a base de conhecimento, visando melhorar os resultados do SE.
42
2.2.5 Conhecimento
Para Durkin (1994), conhecimento é um termo abstrato, que tenta medir o quanto um
determinado indivíduo sabe sobre um determinado assunto.
Segundo Durkin (1994) o conhecimento pode ser classificado em: Processual, Declarativo,
Meta-conhecimento, Heurístico e Estrutural. Giarratano e Rilley (1993) também reconhecem a forma
tácita de conhecimento.
Conhecimento Processual: Descreve como o problema é resolvido. Regras, estratégias e
procedimentos são os tipos de conhecimentos processual utilizados em SE’s.
Conhecimento Declarativo: Descreve o que é conhecido de um problema, podendo ser
verdadeiro ou falso.
Meta-Conhecimento: Descreve o conhecimento sobre outros conhecimentos. Geralmente
usado para selecionar outros conhecimentos a fim de aumentar a eficiência na resolução do problema.
Conhecimento Heurístico: É empírico e representa conhecimento de um especialista, baseado
em problemas anteriores e descreve regras que guiam o processo de raciocínio.
Conhecimento Tácito: refere-se ao conhecimento que não pode ser explicado formalmente ou
facilmente transferido, não disponível de forma pública e implícito a um agente social ou econômico,
como um especialista, organização ou os dois (LEMOS; LASTRES; ALBAGLI, 1999).
Aquisição do conhecimento
Segundo Mastela (2004), a Aquisição do conhecimento consiste no processo realizado pelo
Engenheiro do conhecimento de compreender e organizar o conhecimento extraído de várias fontes. A
organização consiste em codificar e armazenar na BC para que quando o SE necessitar, possa consultar
a mesma.
Segundo Costa e Silva (2005) não há uma metodologia eficiente, confiável e padrão para a
extração e organização do conhecimento das várias fontes. Apesar da dificuldade, a aquisição do
conhecimento é essencial, pois apenas ela permite a construção do BC, que é inerente a existência do
SE. As fontes podem ser classificadas e documentadas, que são livros, artigos, filmes, gráficos,
43
diagramas, entre outros, e não documentadas, que residem na mente das pessoas que atuam no domínio
da aplicação do sistema.
Costa e Silva ainda explanam sobre as técnicas existentes de aquisição de conhecimento,
classificando-as em automáticas, que são sem interferência humana, e podemos citar como exemplo
técnicas de mineração de dados, redes neurais, entre outras, semi-automáticas, que é a mistura entre
técnicas automáticas e manuais, e por fim as manuais, que se dividem em imersão em literatura,
entrevistas e acompanhamento.
Imersão em literatura – Consiste em um estudo sobre o assunto do problema, com o intuito
de adquirir um conhecimento inicial sobre o domínio. Este estudo é fundamental para que já se
obtenha regras básicas e para que a conversa com o especialista se torne algo natural, pois segundo
Costa e Silva (2005) o simples uso de alguns jargões poderá vir a impossibilitar o engenheiro do
conhecimento a adquirir determinadas informações.
Entrevistas – Como o próprio nome diz, esta técnica é a entrevista com o especialista. Divide-
se em duas, a não estruturada, que se caracteriza por ser uma conversa informal, com o objetivo de
obter uma visão geral sobre o domínio, recomendada para as entrevistas inicias, e a entrevista
estruturada, que envolve maior formalidade em sua concepção, com perguntas bem elaboradas, e/ou
formulários que o especialista responde. Para a entrevista estruturada, deve-se tomar planejar e revisar
as perguntas antes de aplicá-las, com o cuidado para que as estas não influenciem as respostas do
especialista.
Acompanhamento – Consiste no acompanhamento das atividades do especialista, com o
intuito de obter o conhecimento vivenciando o que o especialista realiza. Esta técnica permite um
maior detalhamento da obtenção do conhecimento, além de permitir que dúvidas sejam saciadas em
“tempo real”, porém, é um processo demorar e um número significativo de amostragens pode levar
muito tempo.
Representação do conhecimento
Depois de adquirido o conhecimento, o próximo passo é a representação deste. Branco Neto
(2010) define a representação como a transformação em uma forma processável pelo computador, de
forma lógica (booleana), Objetos, Frames, Redes Semânticas e Regras de Produção, além da
representação do conhecimento incerto, onde há as Redes Bayesianas e os Conjuntos Difusos.
44
Já Solange (2003, p. 29) diz que a representação do conhecimento é uma forma sistemática de
estruturar e codificar o que se sabe sobre determinado assunto, sendo que esta codificação tem que ser
compreensível ao ser humano, robusto e generalizável. As Regras de Produção são uma forma de
representar o conhecimento, gerando a partir de diferentes informações já conhecidas, novas
conclusões.
Exemplo: SE<condição> ENTÃO <conclusões e ações> (NEGHEVITSKY, 2002, p. 30).
Tendo a Regra de Produção como base para a elaboração de regras do SE, existem técnicas que
auxiliam na organização e elaboração da base de conhecimento, como a estruturação das variáveis
envolvidas em árvore, no caso de hierarquia, ou então uma tabela com as variáveis e seus possíveis
valores, como pode ser exemplificada na Tabela 3.
Tabela 3. Variáveis e seus possíveis valores
Variável Possíveis valoresDireção da ondulação Pontos cardeais e pontos colateraisAltura da ondulação Valores em metros variando de 0 a 5Influencia da ondulação Pontos cardeais e pontos colateraisEstado da ondulação Aclive ou DecliveVelocidade do vento Valores em k/h variando de 0 a 200Direção do vento Pontos cardeais e pontos colateraisMaré Subindo ou descendoAltura da maré Valores em metros variando de 0 a 2Período Valores em segundos variando de 4 a 18Orla da praia Pontos cardeais e pontos colaterais
Na Tabela 3 constam algumas variáveis que poderão vir a compor, combinadas e condicionadas
entre elas o SE a ser desenvolvido. Após a fase de entrevistas estruturadas na aquisição do
conhecimento, estas serão revisadas e validadas para a geração das Regras de Produção.
Segundo Branco Neto (2010), a incerteza pode surgir devido à aleatoriedade de eventos,
imprecisão de conceitos, informações contraditórias ou a falta de alguma informação. Exemplos que
por coincidência ou não, se encaixam no problema proposto nesse trabalho.
2.3 CONSIDERAÇÕES
A fundamentação apresentada nesse capítulo, tanto do estado da arte, quanto das técnicas que
serão utilizadas, dão um embasamento técnico científico para que a realização do projeto escrito no
próximo capítulo. É possível que novas fontes sejam consultadas ao decorrer do desenvolvimento,
visando um melhor aproveitamento das técnicas disponíveis.
45
3 TRABALHOS RELACIONADOS
Este capítulo mostrará detalhadamente trabalhos relacionados tanto com o negócio envolvido
quanto com a tecnologia utilizada, neste caso, Sistema Especialista.
Para a comparação de trabalhos relacionados com o negócio serão levados em consideração os
seguintes critérios apresentados na Tabela 4.
Tabela 4. Características dos trabalhos relacionados
Característica
Custo Alto Médio BaixoAtualização Uma ou duas vezes ao dia Atualização de hora em hora Tempo realAbrangência Municipal Nacional InternacionalEscalabilidade Dependência de terceiros e
logísticaApenas dependência de terceiros ou apenas logística
Sem dependência e sem logística
Diagnóstico Descritivo Descritivo e com mídia ou prognóstico
Descritivo com mídia e prognóstico
Segurança Equipamentos de valor sem supervisão
Equipamentos de valor com supervisão
Sem preocupação com segurança
Pontualidade Sem horário definido Tolerância de 1 hora Sempre no mesmo horário
Custos – Gastos para que o seja realizado o diagnóstico.
Atualização – Periodicidade e risco de mudança do estado diagnosticado e a real
situação.
Abrangência – Quantidade de praias diagnosticadas.
Escalabilidade - Facilidade de abranger uma grande quantidade de praias
Diagnóstico – Existência ou não do mesmo.
Segurança dos equipamentos – Preocupações com segurança de equipamentos
necessários.
Pontualidade – Horários definidos e garantia que haverá diagnóstico no horário.
Para cada trabalho, será dada uma nota de 1 a 5 em cada critério, onde 1 é baixo ou inexistente
e 5 é alto.
46
3.1 TRABALHOS RELACIONADOS AO NEGÓCIO
Nesta seção serão detalhados e comparados ao TCC métodos relacionados ao negócio, ou seja,
métodos que proveem informações meteorológicas que possam servir como base para um diagnóstico
ou até mesmo oferece um diagnóstico. Dentre essas categorias haverá quatro métodos que serão
avaliados. Dois provedores de diagnósticos voltados para o surf, o In Paradise e Waves. E dois
provedores de informações de base, Windguru e Veja ao vivo.
3.1.1 IN PARADISE
In Paradise é um portal local da região de Florianópolis de notícias, fotos e boletins de ondas.
Os boletins oferecidos pelo in Paradise oferece mídia em vídeos e foto além de uma descrição onde o
tamanho e formação das ondas são escritos por um especialista.
O portal in Paradise disponibiliza dois boletins diários, sem compromisso de horário, estes são
disponibilizados em torno das 06h30min da manhã e ao meio dia. O custo está diretamente relacionado
às praias que são diagnosticadas, pois existe um deslocamento do fotógrafo até a praia para tirar as
fotos e elaborar o vídeo. A cobertura é de quatro praias, Joaquina, Mole, Barra da lagoa e
Moçambique.
Este método de trabalho oferece precisão e qualidade ao diagnóstico, com a desvantagem na
escalabilidade, limitando-se a quatro praias, pois uma maior abrangência aumentaria
proporcionalmente o custo.
3.1.2 WINDGURU
O Windguru site global baseado em modelos meteorológicos globais como o Global Forecast
System (GFS) que renderiza dados meteorológicos de hora em hora de até sete dias. Os dados
disponibilizados são de velocidade do vento, rajadas, direção do vento, ondulação, período, direção da
ondulação, temperatura, precipitação, entre outros que podem ser customizados para visualização.
O Windguru não disponibiliza nenhum diagnóstico voltado para o surf, o que dificulta para
quem não tem o conhecimento necessário para interpretar os dados meteorológicos e concluir se no
local escolhido haverá condição para a prática ou não, porém, uma pessoa com esse conhecimento
poderá prever e diagnosticar sempre que os dados meteorológicos estiverem certos, correndo o risco de
diagnosticar equivocadamente.
47
Este é o que mais se aproxima do trabalho proposto nesse TCC, pois o trabalho se baseará nos
dados meteorológicos disponibilizados na internet, com o agregado do Sistema Especialista que irá
interpretar os dados e entregar um diagnóstico automaticamente.
3.1.3 WAVES
O Waves é um subdomínio do portal Terra, segue a mesma linha do in Paradise, porém com
âmbito internacional. O site provê um boletim diário, com exceção de domingo, geralmente por volta
das sete horas da manhã para as praias. O boletim contempla duas fotos da praia, informações
meteorológicas como tamanho e direção da ondulação, tábua de marés, direção e intensidade do vento,
fornece um parecer descritivo de um especialista.
O Waves tem uma proposta bem interessante para a previsão de ondas para a prática do surf.
Existe uma análise descritiva, uma tabela de dados meteorológicos, porém com alguns indicativos de
dados que possam promover boas ondas, por exemplo, o período, no caso de um período previsto
acima de 9 segundos, o site mostra esse indicativo da cor verde, entre sete e oito segundos amarelo e
no caso de um período abaixo de sete em vermelho. Isso porque o período está diretamente
relacionado com a força e alinhamento da onda que chega a costa, logo, um período acima de nove,
sempre se espera boas ondas. Por fim, o Waves utiliza de uma linguagem própria dar o entender ao
usuário quando mar vai ter condições favoráveis, porém de forma superficial. Funciona da seguinte
forma, são quadrados que podem variar em cor e tamanho. O tamanho do quadrado está diretamente
relacionado ao tamanho das ondas e a cor do quadrado representa a qualidade da onda, sendo vermelho
para o mar ruim, amarelo para um mar intermediário e verde para um mar muito bom.
3.1.4 Veja ao vivo
Veja ao vivo é um site de vídeo broadcast de vários lugares da cidade. Os lugares que o site
cobre é avenidas, trevos e praias. O contexto em que se relaciona com o trabalho é essa imagem ao
vivo da praia, pois por meio desta é possível visualizar a condição do mar em tempo real.
Apesar de estar sempre atualizado e não haver preocupação com pontualidade esse recurso não
disponibiliza um diagnóstico pronto, necessitando de que o usuário tire suas conclusões ao visualizar
as imagens. O custo e a segurança são outros pontos que impedem que a escalabilidade seja natural,
pois a cada nova praia, uma nova câmera e ponto de transmissão deverão ser providenciados, ou seja,
inviável em lugares inacessíveis.
48
3.2 TRABALHOS RELACIONADOS À TECNOLOGIA
3.2.1 Sistema Especialista para apoio a paramédicos
Este trabalho foi desenvolvido em 2009 por Sirleno José Vidaletti e Sidnei Renato Silveira no
Centro Universitário Ritter dos Reis, Porto Alegre, Rio Grande do Sul, Brasil e foi inspirado por
alguns casos de emergência os paramédicos serem obrigados a ligarem para uma central de
atendimento para descrever a situação atendida a um médico.
Segundo o artigo que detalha o desenvolvimento, os paramédicos são técnicos habilitados a
darem atendimentos emergenciais, e recebem em torno de 110 horas de treinamento clínico e
emergencial, precisando assim de um auxílio de um médico, e em alguns casos ser obrigado a fazer o
contato, para auxiliar no diagnóstico da vítima.
A tecnologia utilizada é similar, porém não há a utilização de um framework e armazenamento
das regras em arquivos, mas sim em um banco de dados. O trabalho emprega o conjunto de
tecnologias JAVA, mais precisamente J2ME (Java 2 Micro Edition) e o SGDB (Sistema Gerenciado de
Banco de Dados) Oracle.
Como há a utilização de um SE, os mesmos componentes e passos são realizados, como a
estrutura do sistema com a interface com o usuário, motor de inferência e base de conhecimento, e a
aquisição do conhecimento através da elaboração e execução de uma entrevista.
Quanto ao conhecimento que foi adquirido nas entrevistas, há certa vantagem, pois o estado da
arte envolvido é provido de uma maior formalidade, sendo que há uma academia completa para
formação de profissionais atuantes na área, além de pesquisadores, mestres e doutores na expertise em
foco. Em contrapartida, para este trabalho existe a responsabilidade com o resultado esperado do
sistema, pois este envolve atendimentos de emergência, vida de pessoas, onde não há tolerância para
falhas ou um diagnóstico equivocado.
3.3 ANÁLISE COMPARATIVA
Olhando pelo prisma de cada característica que foi levantada, segue a classificação dos níveis
de uma e a justificativa de cada avaliação.
49
Para o custo foi considerado o valor monetário gasto para cada diagnóstico acesso a
informação. No caso do IN PARADISE e WAVES, como é uma pessoa que presencialmente precisa ir
até a praia e tirar as fotos e elaborar o vídeo, além do custo com equipamento, há um custo com o
deslocamento e o com o profissional que realiza. Veja ao vivo tem um custo com a câmera e a
transmissão do vídeo. O melhor dos casos é quando não há custo, como no TCC há um custo de
desenvolvimento, este se iguala ao WINDGURU.
No quesito de atualização é considerado o tempo entre o acesso a informação e o tempo real no
momento da visualização da mesma, ou seja, no caso do Waves que disponibiliza apenas um boletim
por dia, existe uma grande chance de estar desatualizado. In Paradise diminui esse risco emitindo dois
boletins. No caso da emissão de boletins de hora em hora já diminui consideravelmente o risco de estar
desatualizado, mas a câmera ao vivo não corre esse risco.
A abrangência leva em consideração a quantidade de praias cobertas pelo método. Este item
está diretamente relacionado com a escalabilidade, pois os dois se mostrando baixos mostra um
método já em seu limite, porém este com escalabilidade alta mostra um método não maduro, que pode
crescer. O TCC se igualará às praias que o in Paradise cobre, utilizando o mesmo inclusive para
comparativo. Veja ao vivo oferece uma cobertura maior de praias e o WINDGURU e WAVES são de
escala global.
A escalabilidade está classificada de acordo com a facilidade de o método ampliar sua
cobertura de praias. No caso do In Paradise e o Waves, como são soluções manuais, acaba envolvendo
uma logística mais complexa. O envio de vídeo ao vivo, está diretamente relacionado ao custo, pois
com o investimento necessário, facilmente é adicionada uma nova praia. Os outros métodos por serem
automáticos acabam sendo menos complexos para adicionar novas praias. Um ponto a ser levado em
consideração é a dependência que estes métodos apresentam, pois a obtenção dos dados é terceirizada.
O diagnóstico voltado para a prática do surf não existe em dois dos métodos, por isso estes não
receberam avaliação. Para os outros métodos, com exceção do TCC o diagnóstico é bem específico e
informativo. Para este trabalho o foco ficará na assertividade do diagnóstico, por isso ele será apenas
descritivo, mas na seção de Conclusão será comentado sobre o aprimoramento do diagnóstico.
O quesito de segurança é mais agravante no método de broadcasting, por existir o cenário onde
o equipamento fica sem a supervisão, no caso dos outros métodos é menos agravante.
50
O último item então é avaliado a pontualidade do método, ou seja, o grau de confiabilidade
referente ao tempo em que o dado será disponibilizado. Nos métodos utilizam de logística manual,
como o In Paradise e o Waves sempre há um risco maior de não pontualidade, e a variação de horário
foi uma constante no período de observação. No método de broadcasting sempre esteve disponível, e
por ser de tempo real, não há compromisso com a pontualidade, e por fim os métodos de obtenção de
dados automáticos há uma pontualidade de hora em hora, mas pouco afetada por fatores externos.
Característica In Paradise Windguru Waves Veja ao vivo TCC
Custo
Atualização
Abrangência
Escalabilidade
Diagnóstico
Segurança
Pontualidade
Quadro 1. Análise comparativa dos trabalhos relacionados ao negócio
3.4 CONSIDERAÇÕES
Apesar das vantagens e desvantagens de cada método em relação ao trabalho proposto, cada
um realiza seu propósito, e utilizados em conjunto oferecem amplas informações para o usuário. O que
mais se aproxima do trabalho proposto é o Windguru, porém no TCC há um agregado que é o
diagnóstico descritivo obtido através do SE.
51
4 DESENVOLVIMENTO
Neste capítulo será apresentada a visão geral do trabalho executado; bem como levantamento
de requisitos funcionais e não funcionais e a modelagem do sistema. Também serão apresentados
detalhamentos do desenvolvimento e os resultados obtidos com o experimento.
4.1 VISÃO GERAL DO SISTEMA
O sistema desenvolvido tem como base um sistema especialista, que armazena regras coletadas
por meio da engenharia do conhecimento de especialistas do ramo de surf e literaturas relacionadas.
De um modo geral, o sistema se comporta conforme a Figura 18, que mostra o fluxo da informação do
sistema desenvolvido.
Primeiramente há um módulo captador, que periodicamente busca informações meteorológicas
e armazená-las. Este módulo busca as informações disponibilizadas por um conjunto de web services e
atualiza os dados futuros. Há também um módulo administrativo, que permite o CRUD (Create – Read
– Update – Delete) das entidades do sistema, estado, cidade e praia e a visualização de dados
meteorológicos e diagnósticos
O segundo módulo, é o módulo diagnosticador. Este, a cada atualização das informações
captadas pelo módulo supracitado, submete estas a uma bateria de regras cadastradas no motor de
inferência, resultando assim no diagnóstico do mar, para a prática do surf.
Figura 18: Fluxo da informação do sistema
52
4.2 ANÁLISE DE REQUISITOS
4.2.1 Requisitos Funcionais
REF 01 – O sistema deve permitir que realize o CRUD de estados.
REF 02 – O sistema deve permitir que realize o CRUD de cidades.
REF 03 – O sistema deve permitir que realize o CRUD de praias conforme REN 01.
REF 04 – O sistema deve buscar periodicamente a cada hora as informações meteorológicas
disponibilizadas por um conjunto de web services.
REF 05 – O sistema deve permitir visualizar as informações meteorológicas cadastradas.
REF 06 – O sistema deve ao final da captação de informação meteorológica, submeter às
informações ao motor de inferência, gerando assim um diagnóstico que deve ser persistido.
REF 07 – O sistema deve permitir visualizar os diagnósticos gerados pelo sistema.
4.2.2 Requisitos não Funcionais
RNF 01 – O sistema deverá ser desenvolvido na linguagem java.
RNF 02 – O sistema deverá rodar em ambiente web.
RNF 03 – O sistema deverá rodar com banco de dados MySql.
4.2.3 Regras de Negócio
REN 01 – Ao cadastrar uma praia (REF03), esta deverá ter pelo menos o id, nome, cidade,
estado, pelo menos uma orientação geográfica relacionada à mesma, referente posição que sua orla
está em relação ao mar, latitude e longitude.
REN 02 – O sistema deve permitir filtrar informações meteorológicas por praia (REF03).
REN 03 – O sistema deve permitir filtrar informações meteorológicas por data (REF03).
REN 04 – O sistema deve permitir filtrar informações meteorológicas por hora (REF03).
53
REF 05 – O sistema deve permitir filtrar os diagnósticos por praia (REF07).
REF 06 – O sistema deve permitir filtrar os diagnósticos por data (REF07).
REF 07 – O sistema deve permitir filtrar os diagnósticos por hora (REF07).
4.3 MODELAGEM DO SISTEMA
Nesta seção serão apresentadas as modelagens elaboradas para a criação do sistema. Dentre
elas estão os diagramas de classes e estrutura de pacotes, prototipação de telas referenciadas nos
requisitos funcionais, modelagem do banco de dados e um diagrama de sequência detalhando o
algoritmo da rotina principal. Após apresentar os devidos diagramas, será detalhado o sistema,
mostrando a conexão entre os elementos apresentados. Por fim, o plano de teste será apresentado,
assim como sua execução e os resultados obtidos.
4.3.1 Diagramas de Classe
Através da Figura19 é possível visualizar de forma geral como estão separadas as classes do
sistema. Existem dois pacotes principais relacionados ao negócio, que representam os módulos
Alimentador e Diagnosticador. Os pacotes restantes são pacotes técnicos, o DAO responsável pelas
classes que se comunicam com o banco de dados, Model armazena as entidades de negócio, Servlet
tem apenas uma classe, a Servlet responsável por invocar a rotina periódica do sistema, Útil têm
classes utilitárias, usadas em vários pontos, e por último o pacote View armazena os Converter,
DataModel e Bean, classes necessários para algumas funcionalidades do JSF.
54
Figura 19: Estrutura de pacotes
55
Alimentador
Alimentador é o pacote responsável por mapear e fazer a conversão dos web services para o
objeto Previsao. Como pode ser visto no diagrama da Figura 20, possui apenas um método que recebe
a Praia como parâmetro e retorna uma lista de previsões.
Nos diagramas da Figura 21 e 22 é possível visualizar as classes responsáveis pela conversão
do web service do World Weather Online para objetos de negócio.
class alimentador
Alimentador
- weather: ParseWeatherToObject = new ParseWeathe...
+ run(Praia) : List<Previsao>
Figura 20: Diagrama da classe Alimentador
class ws
ParseWeatherToObject
- KEY: String = "jvp97fy9znus5t... {readOnly}- FORMAT: String = "xml" {readOnly}- URL: String = "http://api.wor... {readOnly}
+ getWs(String, String) : Data
«property get»- getURL(String, String) : URL
Figura 21: Diagrama da classe ParseWatherToObject
56
class model
Data
- weathers: List<Weather>
+ getPrevisoes() : List<Previsao>
Hourly
- hora: Integer- temperatura: Integer- velocidadeDoVento: Integer- grausDoVento: Integer- precipitacao: Double- humidade: Integer- visibil idade: Integer- pressao: Integer- alturaSignificativaondulacao: Double- alturaOndulacao: Double- direcaoOndulacao: Integer- periodo: Double- temperaturaDaAgua: Integer
+ toPrevisao() : Previsao
Weather
- data: String- hourly: List<Hourly>
+ getPrevisaoHora() : List<Hourly>+ getDataToObject() : Date
Figura 22: Diagrama das classes de mapeamento do World Weather Online
Diagnosticador
class diagnosticador
Diagnosticador
- TEXTURA_RULES: String = "textura.drl" {readOnly}- kbuilder: KnowledgeBuilder- kbase: KnowledgeBase- ksession: StatefulKnowledgeSession
+ Diagnosticador()+ run(Previsao) : void- startSession() : void- errorHandling() : void- loading() : void+ getKbuilder() : KnowledgeBuilder+ setKbuilder(KnowledgeBuilder) : void+ getKbase() : KnowledgeBase+ setKbase(KnowledgeBase) : void+ getKsession() : StatefulKnowledgeSession+ setKsession(StatefulKnowledgeSession) : void
Figura 23: Diagrama da classe Diagnosticador
57
Model
Figura 24: Diagrama das classes de modelo
4.3.2 Telas do sistema
A primeira tela que será apresentada será a tela para a manutenção de estados Figura 25. Esta
tela consiste em um dataGrid que permite visualizar os estados cadastrados, editá-los clicando no ícone
de opções, que então habilita a opção de excluir e por fim, clicando no botão “Novo”, uma nova linha é
habilitada para a inclusão do novo estado.
Figura 25: Tela de manutenção de estados
A tela para a manutenção de cidades (Figura 26) funciona de forma similar a anterior. Esta tela
é dependente de pelo menos um estado estar cadastrado, pois não há como cadastrar uma cidade sem
58
estado. Nela, da mesma forma que é realizada a manutenção dos estados, as cidades são visualizadas,
alteradas, excluídas e adicionadas ao sistema.
Figura 26: Tela de manutenção de cidades
Para a manutenção de praias, necessitou-se de um cadastro com mais informações. Portanto,
esta foi dividida em duas telas. A primeira tela apresenta as informações básicas da praia, e os botões
para adicionar, editar e excluir uma praia, como pode ser visto na Figura 27.
Figura 27: Tela de visualização das praias cadastradas
A segunda tela envolvendo a manutenção de praias é então o formulário para a edição e
cadastro de praias (Figura 28). Permite escolher o estado e cidades do mesmo, informações sobre a
praia com nome, longitude e latitude e relacionar as coordenadas de sua orla.
59
Figura 28: Formulário de cadastro de praia
As previsões que estarão constantemente sendo cadastradas e atualizadas pelo sistema também
poderão ser visualizadas através da tela de visualização de previsões (Figura 29). Nela será possível
visualizar todas as previsões e se necessário filtrar por praia, data e hora que a previsão foi realizada.
Figura 29: Tela de visualização de previsões
Depois de encontrada a previsão desejada, é possível ver todos os dados meteorológicos, como
podemos ver na Figura 30. Estes são apresentados através de uma tela modal de visualização detalhada
da previsão, clicando na linha da previsão.
60
Figura 30: Tela de visualização de dados meteorológicos
Os diagnósticos que o sistema irá gerar a partir das previsões também poderão ser visualizados
através de uma tela específica, ilustrada na Figura 31, mostra a lista de diagnósticos com seus dados
básicos e os possíveis filtros, que são a praia, data e hora em que o diagnóstico se refere.
Figura 31: Tela de visualização de diagnósticos
Por fim, a última tela do sistema é a tela em que os detalhes do diagnóstico serão apresentados.
Uma tela modal que após o diagnóstico escolhido ser clicado é apresentada, conforme a Figura 32.
Figura 32: Tela de visualização de detalhes de diagnósticos
61
4.3.3 Modelagem de banco de dados relacional
Figura 33: Modelo de dados relacional
4.3.4 Diagrama de sequencia da rotina principal
A Figura 34 explana a interação entre o invocador da rotina principal, o TimeTask, a camada de
acesso a dados e os dois módulos do sistema, o Alimentador e o Diagnosticador. A cada hora a rotina é
chamada, indo até o banco de dados e buscando todas as praias cadastradas, para cada praia o módulo
Alimentador busca as previsões. Além de salvar as previsões, cada uma delas é enviada para o módulo
Diagnosticador realizar sua responsabilidade de diagnosticar e salvar estes para serem consultados
posteriormente.
62
Figura 34: Diagrama de sequencia da rotina principal
4.4 DETALHAMENTO DO DESENVOLVIMENTO
O projeto foi executado baseado no processo de desenvolvimento RUP (Rational Unified
Process), como pode ser visto na Figura 35.
Figura 35: Rational Unified Process
63
A modelagem de negócio, levantamento de requisitos, análise e projeto foram desenvolvidos e
executados ainda no TCC1, e serviram de insumo para o desenvolvimento.
Conforme pré-definido nos requisitos não funcionais desse documento, o sistema foi
desenvolvido na linguagem de programação JAVA, para web em um servidor Tomcat versão sete e
com banco de dados MySql.
A escolha destas se dá por serem tecnologias não pagas, além de características de cada uma
que fazem com que a utilização destas em conjunto torne o desenvolvimento natural.
O JAVA é uma linguagem de programação interpretada de alto nível, com suporte a orientação
a objetos e com seu ponto forte a grande comunidade de seguidores, que fazem a linguagem oferecer
vários frameworks em estado de maturidade avançado, como alguns utilizados neste trabalho.
O Java oferece um recurso de isolamento da regra de negócio, o Enterprise JavaBeans, mais
conhecido como EJB, este recurso não será utilizado no trabalho, e isso justifica a utilização do
Tomcat como servidor da aplicação. Tomcat é um servidor web leve e suficiente para as necessidades
do trabalho.
Por fim, o Mysql foi o banco de dados escolhido em função de oferecer ferramentas de
administração e projeto, através do Mysql WorkBench, além de suas qualidades de performance como
banco de dados.
Segue a lista de frameworks, bibliotecas e ferramentas que foram utilizados para aperfeiçoar o
desenvolvimento, como:
DROOLS (http://www.jboss.org/drools.html)
Após definidas as Regras de Produção, estas serão codificadas dentro do sistema. Essa
codificação será através da sintaxe estabelecida pelo FrameWork Drools. Framework é uma estrutura
de suporte definida em que outro projeto de software pode ser organizado e desenvolvido. Um
conjunto de linhas de código, implementadas genericamente para um determinado fim.
Geralmente, um framework nasce da necessidade comum e repetitiva de alguns softwares, onde
pelo fato dessa necessidade repetir, com o intuito de economizar trabalho, se desenvolve pequenas
bibliotecas genéricas passíveis de reutilização. Um framework possui as seguintes vantagens:
64
Utilidade – O objetivo primeiro do framework é ser útil, facilitar de alguma forma o
trabalho que ele se propõe a fazer.
Segurança – Um bom framework geralmente é protegido contra erros comuns e
ingênuos. Isto por sua larga utilização faz com que esses erros sejam facilmente
detectados, reportados, e corrigidos.
Extensibilidade – Cada software sempre terá suas particularidades, sendo assim, um
framework deverá permitir que particularidades sejam implementadas sobre suas regras
genéricas.
Economia de tempo – Para as atividades comuns, o framework deverá realizar de forma
simples e rápida.
Documentação – Como haverá a necessidade de outras pessoas utilizarem os códigos
pertencentes ao framework, é indispensável que estes sejam facilmente entendíveis, ou
seja, sua compreensão deverá ser natural.
O Framework DROOLS é uma ferramenta desenvolvida pela Red Hat, empresa
desenvolvedora e mantenedora do famoso servidor de aplicação jBoss. O DROOLS é voltado para
gerenciamento de regras de negócio e fluxos de negócio, e está dividido nos seguintes módulos:
Drools Expert – É o módulo principal, que compreende o motor de regras, linguagem de
regras e a implementação do algoritmo de pattern matching.
Drools Flow – Adiciona as capacidades de lidar com BPM.
Drools Fusion – Adiciona a capacidade de lidar com o CEP (Complex Event Process).
Drools Guvnor – Ferramentas de gerência de regra de negócio.
Dentre as vantagens que influenciaram a escolha da utilização do DROOLS está:
Desacoplamento – As regras de produção ficam totalmente separadas da aplicação, não
necessitando o build da aplicação no caso de alguma alteração na regra.
Leitura – Utiliza os próprios objetos para a geração das regras, fazendo assim com que
tanto programadores, quanto analistas possam ler as regras e compreendê-las.
65
Integração – Ferramentas integradas com a IDE Eclipse, da qual será utilizada para o
desenvolvimento deste trabalho.
Difundido – Larga participação da comunidade e empresas como Red Hat, e a própria
jBoss utilizarem, faz com que o exista um vasto material para consulta disponível na
internet.
Sua estrutura do DE é composta por basicamente 4 módulos principais, como pode ser visto na
Figura 36.
Figura 36: Estrutura do DE
Fonte: Drools Expert User Guide (2012)
Working Memory (Memória de Trabalho) – É onde residem os fatos.
Production Memory (Base de Conhecimento) – É onde reside todo o conhecimento de
negócio (regras).
Pattern Matcher (Reconhecedor de padrões) – Responsável por casar os fatos na memória de
trabalho com as condições das regras e criar ativações a partir dos casamentos.
Agenda – Responsável pela ordenação das ativações para execução.
66
Para a elaboração das regras de produção, um arquivo com extensão .drl é criado, e nele as
regras são digitadas, de acordo com a sintaxe presente no Quadro 1.
Rule “Nome da regra”when
<condição>then
<ação>end
Quadro 1. Sintaxe da regra de produção no DE
Fonte: Drools Expert User Guide (2012)
Um exemplo simples, somente para entender como o DE funciona, será demonstrado no
Quadro 2 uma classe java Pessoa, com os atributos nome, idade e maiorDeIdade, dos tipos, String,
Integer e Boolean, respectivamente, e será criada uma regra para dizer se a pessoa é maior de idade ou
não.
public class Pessoa {private String nome;private int idade;private boolean maiorDeIdade;// getter e setter aqui
}
Quadro 2. Classe Java de Pessoa
Fonte: Drools Expert User Guide (2012)
Agora será demonstrado no Quadro 3, como se aplica a regra de produção que irá validar se a
pessoa é maior de idade ou não.
rule "É maior de idade"
when $a : Pessoa( idade < 18 )then $a.setMarioDeIdade( false );
end
Quadro 3. Regra de produção para verificar se a pessoa é maior de idade.
Fonte: Drools Expert User Guide (2012)
67
A simplicidade e facilidade que envolve o desenvolvimento com DE chama a atenção,
porém, para a resolução de problemas mais complexos, não será o DE que irá auxiliar no trabalho, mas
sim na modelagem das RP e na capacidade de representar o conhecimento. Para o problema proposto,
umas séries de incertezas estarão sendo colocada a prova, exigindo uma modelagem sobre as RP do
Sistema Especialista, caso se mantivesse apenas regras de produção sem probabilidade, seria um
trabalho muito grande, devido a grande quantidade de regras necessárias para tratar todas as exceções.
HIBERNATE (http://hibernate.org) – Framework para mapeamento objeto relacional.
Permite mapear classes de negócio que representam as tabelas do banco de dados,
fornecendo operações de manipulação de dados e em conjunto com a biblioteca
Criteria, realizar consultas nos dados sem a utilização direta de SQL.
Java Server Faces – O JSF é um framework MVC Java para construção de interfaces
para o usuário baseado em componentes.
Primefaces (http://primefaces.org) – Biblioteca de componentes para o JSF.
TimerTask – Interface que compõe o Java Developer Kit (JDK) que permite agendar a
execução de uma rotina.
JAXB – Biblioteca de comunicação e conversão entre objetos e xml.
JUNIT – Framework java de testes de unidade.
Eclipse – Integraded Development Environment (IDE) open-source para
desenvolvimento de software.
Maven – Ferramenta para o gerenciamento das dependências e a construção do projeto.
O sistema foi divido em dois módulos principais, o Alimentador e o Diagnosticador. O
primeiro a ser desenvolvido foi o Alimentador. Para a construção desse módulo, primeiramente
configurou-se e implementou-se a interface TimerTask para a execução periódica da rotina principal.
Esta rotina, conforme pode ser vista no diagrama de sequencia SEQ01, busca as praias cadastradas,
para cada praia busca seus dados meteorológicos, salvar estes no banco de dados e invocar o módulo
Diagnosticador para cada previsão. Com a elaboração desse diagrama, identificou-se três
implementações que já poderia ser iniciadas. O mapeamento do webservice provedor de dados
68
meteorológicos, o mapeamento das tabelas de praia e previsões do banco de dados e a chamada para o
segundo módulo.
Para a leitura dos dados meteorológicos a biblioteca JAXB foi utilizada, criando o mapeamento
do XML provido pelo webservice, como pode ser visto no apêndice A. Feito o mapeamento, criou-se
uma classe comum de dados meteorológicos, o que permite a comunicação com vários provedores de
dados, como se fosse um protocolo.
A configuração e mapeamento do banco de dados foi o segundo passo. Com o auxílio do
hibernate com annotations, as tabelas de estado, cidade, praia e previsão foram criadas e boa parte da
rotina pode ser criada.
Por fim, o Drools foi incorporado ao projeto, criando a classe que invoca o motor de regras
para a execução do diagnóstico e salvamento.
Depois de codificação completa dos componentes do servidor, iniciou-se a implementação da
interface proposta nos protótipos de tela. Para isso utilizou-se o JSF em conjunto com o Primefaces.
Componentes prontos foram customizados e algumas necessidades de conversão e manipulação dos
dados foram saciadas através dos Converters e Beans, classes que o JSF exige para a extensão dos
componentes.
4.5 ENGENHARIA DO CONHECIMENTO
A engenharia do conhecimento nada mais é que a extração do conhecimento do especialista
para uma forma computacional, realizada pelo engenheiro do conhecimento. Esta se divide nas
seguintes etapas:
Identificação do problema;
Aquisição do conhecimento;
Representação do problema;
Implementação; e
Verificação e testes.
69
Depois de identificado o problema, as outras etapas são desenvolvidas de forma interativa e
evolucionária durante o desenvolvimento e a base de conhecimento deverá ser refinada, aumentando o
conhecimento ou corrigindo as imperfeições (LIEBOWITZ, 1988).
A explanação do processo da engenharia do conhecimento executado neste trabalho será
dividida em dois tópicos, o tópico da entrevista, que mostra como esta foi elaborada e executada, e o
tópico da extração do conhecimento, que mostra o conhecimento obtido das entrevistas.
4.5.1 Entrevista
Conforme descrito na metodologia deste trabalho, foi elaborada uma entrevista semiestruturada
baseada em três perguntas encadeadas, onde a resposta da primeira pergunta resulta em uma lista de
itens, e para cada um destes itens é realizada a segunda pergunta, que por sua vez também resulta em
uma segunda lista de itens, que então para cada item dessa segunda lista então é aplicada a terceira
pergunta.
As perguntas são:
1) Quais as características de uma onda para a prática do surf?
2) Para cada característica obtida na pergunta anterior, quais são os dados meteorológicos que
a influenciam?
3) Para cada dado meteorológico, quais os valores ou faixa de valores possíveis e o que este
resulta?
A primeira pergunta tem como o objetivo extrair dos especialistas as características de uma
onda que devem ser levada em consideração para a prática do surf. Através da literatura já foi possível
prever alguns itens que seriam levantados pelos especialistas, porém a execução desta pergunta ajudou
para a sincronização dos pensamentos entre o engenheiro do conhecimento e o entrevistado e para a
validação das características, possibilitando a interatividade desde a primeira entrevista. Olhando do
ponto de vista da representação do problema e implementação, cada item que compor a resposta desta
pergunta, será uma variável a ser mapeada na segunda pergunta e consequentemente terá um conjunto
de regras associada a ela.
70
A segunda pergunta já relaciona os dados meteorológicos que impactam ou influenciam nas
características levantadas na primeira pergunta. É o elo entre a identificação do problema, o
conhecimento do especialista e as regras que estarão presente no motor de inferência.
Por fim, a terceira pergunta visa que após a conversa e linha de raciocínio criada através das
duas primeiras perguntas, o especialista chegue o mais próximo possível das regras propriamente dita.
Porém, como o conhecimento é tácito, dificilmente se chegou a este nível a conversa realizada nas
entrevistas, na maioria das vezes o engenheiro do conhecimento teve que intervir e entender o que
estava sendo explicado, para então categorizar e escrever de forma que o conhecimento pudesse ser
então traduzido para a forma computacional.
4.5.2 Extração do conhecimento
A execução das entrevistas então foi orientada pelas perguntas supracitadas, mas caracterizou-
se mais como uma conversa informal, em função da distância entre a formalidade computacional e o
conhecimento do especialista.
O perfil dos especialistas entrevistados é composto por três profissionais envolvidos com o surf
e praticantes do esporte, do sexo masculino e com mais de 20 anos de experiência na área, um deles é
shaper (profissional que elabora pranchas de surf) desde 1987, trabalha com conserto de pranchas
desde 1980, e surfa desde 1979. Os outros dois especialistas são responsáveis por fotografar e realizar
boletins de diagnósticos para sites, um deles para o In Paradise, site citado nos trabalhos relacionados
deste TCC e o outro para o “Ondas do Sul”.
Como resultado da execução da primeira pergunta, obtiveram-se três itens como resposta
comum entre os entrevistados, 1) textura do mar; 2) Tamanho da onda; e 3) Formação da onda. Para
cada uma dessas características foi criado um mapa mental, relacionando os dados meteorológicos
(respostas da segunda pergunta) e as classes de equivalência com o resultado esperado para cada
combinação (respostas da terceira pergunta).
Para a textura do mar, as variáveis meteorológicas que podem ser verificadas foram:
71
Histórico da textura do mar: dividida em duas situações, esta variável tem influencia na
textura quando em um período inferior a 3 horas o mar esteve mexido, caso afirmativo,
este modifica a percepção de textura.
Velocidade do vento: O vento foi classificado de acordo com a sua velocidade quando
este é menor de 10 nós, o que equivale a aproximadamente 20 km/h ou maior que 10
nós. Este combinado com a direção também tem impactos diferentes na textura.
Direção do vento: Para esta variável foi assumido quatro valores possíveis. O vento
poderá ser no sentido da terra para o mar, também chamado de terral; o inverso, que
seria o maral; e os ventos laterais, com ou sem obstáculo.
Estas variáveis combinadas resultam em oito possibilidades de textura do mar (Figura 37): liso,
liso com spray, encrespado, mexido, muito mexido.
Figura 37: Mapa mental da textura do mar
Para o tamanho da onda, os resultados esperados serão categorizados através de um
arredondamento por aproximação, induzindo a medidas de meio em meio metro, por exemplo: meio
metro, um metro, um metro em meio, dois metros e assim sucessivamente. Para chegar a estes valores
foi elaborada juntamente com os especialistas uma fórmula, levando em consideração o tamanho da
72
ondulação que chega à costa e o período, variando de acordo com a direção da ondulação, conforme
Figura 38.
Figura 38: Mapa mental do tamanho da onda
O período tem um papel muito importante para obter o tamanho da onda. Na literatura ele é
indicado como o tempo em segundos entre as ondas que chegam à costa. No entanto, as entrevistas
apontaram que o período também indica a velocidade da onda, força da onda e a distância em que a
ondulação se forma. Assim, quanto maior o período, mais rápida e forte é a onda, e consequência da
distância que se formou a ondulação, há um melhor alinhamento das ondas.
Ondulação entrando de frente sem obstáculo: Não há interferência geográfica,
permitindo utilizar a fórmula básica, tamanho da ondulação × (período ÷ 10).
Ondulação entrando de frente com obstáculo: Utiliza-se a fórmula básica, tamanho da
ondulação × (período ÷ 10) com um acréscimo de 10% próximo ao obstáculo.
Ondulação entrando na diagonal sem obstáculos: Neste caso, a ondulação que chega à
costa sofre uma refração do fundo (Figura 39), fazendo com que aconteça uma
desaceleração e consequentemente a perda de força da onda. A este evento foi atribuído
uma perda de 20% no tamanho calculado da onda, a fórmula então fica tamanho da
ondulação × (período ÷ 10) × 0.8.
73
Figura 39: Refração da ondulação entrando na diagonal
Ondulação entrando na diagonal com obstáculo a 45º: Neste cenário a ondulação
encontra um obstáculo lateral de 45º que faz com que através do reflexo (Figura 40)
acumule a força da onda na sua proximidade, gerando uma onda maior. A esse acúmulo
foi atribuído o valor de 25% a mais no tamanho da onda em cima da fórmula básica,
ficando então tamanho da ondulação × (período ÷ 10) × 1.25.
Figura 40: Reflexo de ondas
Ondulação entrando na diagonal com obstáculo a 90º: Para este caso existe “efeito de
sombra” (Figura 41). A ondulação passa por um obstáculo de 90º e este causa uma
interferência na ondulação mudando sua direção e consequentemente diminuindo sua
força proporcionalmente, ou seja, quanto maior a mudança da direção, menor a onda.
Para efeitos práticos, depois que a ondulação passa, quanto mais próximo do obstáculo,
menor a onda. Com isso foi elaborada uma fórmula que trabalha em cima do ângulo do
74
local, pois há um decréscimo gradual do tamanho da onda, ficando então tamanho da
ondulação × (período ÷ 10) × (ângulo do local ÷ 90).
Figura 41: Representação do efeito de sombra
Ondulação entrando na diagonal com obstáculo: Neste caso, a ondulação está entrando
na diagonal e na praia há um obstáculo, porém este obstáculo não se enquadra em
nenhum caso anterior, mas ele está lá, consequentemente protegendo a praia, gerando
um decréscimo de 70% na ondulação que entra, ficando então tamanho da ondulação ×
(período ÷ 10) × (0.3).
Lateral sem obstáculo: Muito parecido com o caso em que a ondulação entra na
diagonal sem obstáculo, mas neste caso há uma maior desaceleração, deixando a
fórmula sendo o tamanho da ondulação × (período ÷ 10) × (50%).
Lateral com obstáculo antes: Ondulação entrando de forma lateral na orla de uma praia
com um obstáculo antes da rebentação, o que resulta em uma perda de 80% no tamanho
da onda, na sua maioria das vezes passando a ondulação por fora da rebentação.
Lateral com obstáculo depois: Muito parecido com ao cenário lateral sem obstáculo,
porém o obstáculo segura parte da ondulação, fazendo com que ocorra uma perda de
40% da ondulação.
Por fim, a característica de formação da onda foi mapeada. Esta se mostrou a mais complexa
por apresentar a maior quantidade de variáveis envolvidas e consequentemente mais combinações
possíveis. Até mesmo para os especialistas, algumas combinações não estavam previstas, sendo assim
necessário recorrer à observação para uma certeza maior do resultado esperado.
75
Os valores possíveis foram classificados em:
Regular: onda que se forma constantemente do mesmo jeito, não necessariamente do
melhor jeito.
Abrindo: onda que se forma gradualmente, e tem como principal característica a
possibilidade de maior quantidade de tempo de surf em uma onda.
Cavada: Onda rápida, abrindo, geralmente para surfistas com mais experiência.
Espraiada: Também chamada de onda “gorda”, é a onda que não chega a rebentar, sem
pressão.
Fechando: Onda que rebenta de uma vez só, não permitindo a pratica do surf.
Irregular: Onda sem formação.
As variáveis que foram levadas em consideração para se obter os resultados supracitados
foram: 1) a existência de no mínimo meio metro de onda; 2) a influência do vento, ou seja, este ser
maior ou menor que 10 nós; 3) a direção do vento, dividida em terral, maral ou lateral; 4) o período,
separado em menor que 8, entre 8 e 14 e maior que 14; e 5) a geografia da praia, que pode não
apresentar obstáculo, um obstáculo lateral, frontal ou diagonal. A combinação destas e o resultado
esperado podem ser visualizados na Figura 42.
76
Figura 42: Mapa mental da formação da onda
Por meio da combinação dos resultados esperado para cada uma dessas características podemos
chegar a um diagnóstico que dará insumo a decisão de qual praia terá a melhor condição para o surf.
Será também possível, de acordo com a o nível de experiência do surfista, saber qual a melhor
77
indicação, pois apesar de ser uma escolha pessoal, o tamanho e a formação da onda é um fator que
distingue um surfista iniciante dos mais experientes, além da preferência e estilo de surf. Uma onda
cavada ou rápida, combinado a um tamanho maior de um metro são ondas que exigem maior
habilidade do atleta, tornando-se até mesmo perigoso para quem não tem experiência suficiente. Mas
nada impede que surfistas experientes possam surfar em mares menores.
Com isso é possível criarmos um template de diagnóstico, onde variáveis serão preenchidas de
acordo com o obtido pelo SE, conforme a Figura 43.
Figura 43: Template do diagnóstico
4.6 DESCRIÇÃO DOS EXPERIMENTOS
Para a validação da ferramenta foram realizadas comparações com os boletins existentes.
Atualmente, é possível visualizar as condições das ondas por meio de dois sites de boletins, o
INPARADISE, com boletins às 06h00min horas e outro às 12h00min; e o WAVES, com um boletim
às 07h00min horas da manhã. Como a rotina capta informações meteorológicas de hora em hora, mas a
previsão é feita de três em três horas (0, 3, 6, 9, 12 15, 18 e 21 horas), a captação
foi realizada às 06h00min da manhã e às 12h00min, para que fosse possível conduzir uma comparação
manual entre o boletim gerado pelo sistema e o diagnóstico disponibilizado pelos sites supracitados
nas seguintes praias:
78
Praia da Joaquina
Figura 44: Praia da Joaquina
Tabela 5. Dados cadastrais da praia da Joaquina
Nome Orientação Latitude Longitude Obstáculo
Joaquina até a pedra do careca SSE -27.63 -48.45 SO
Joaquina depois da pedra do careca SSE -27.63 -48.45 -
79
Praia Mole (centro)
Figura 45: Praia Mole (centro)
Tabela 6. Dados cadastrais da praia da Mole (centro)
Nome Orientação Latitude Longitude Obstáculo
Mole (centro) ESE -27.60 -48.43 -
80
Praia Mole (canto norte)
Figura 46: Praia Mole (canto norte)
Tabela 7. Dados cadastrais da praia da Mole (canto norte)
Nome Orientação Latitude Longitude Obstáculo
Mole (canto norte) SSE -27.60 -48.43 S
4.7 RESULTADOS
Apesar de registrada, a praia Mole (canto norte) não foi possível comparar, em função da
indisponibilidade de fotos da mesma, assim, somente a praia da Joaquina e Mole (centro)
possibilitaram os testes comparativos.
Para análise dos resultados, foi realizado um comparativo entre os resultados obtidos pelo
sistema desenvolvido e os diagnósticos dos sites IN PARADISE e WAVES, atribuindo a cor verde
para informações convergentes, a cor amarela para resultados aproximados e vermelho para resultado
divergentes, como pode ser visto na Tabela 8:
Tabela 8. Resultados comparativos
Data Praia Característica Sites de boletins SE
10/06/2014 6:00 Joaquina
Textura liso com spray Encrespado
Tamanho Meio metro Menos de meio metro
Formação Regular abrindo Regular
81
10/06/2014 6:00 Mole
Textura Encrespado Encrespado
Tamanho Meio metro Meio metro
Formação Regular abrindo Regular
10/06/2014 12:00 Joaquina
Textura Encrespado Encrespado
Tamanho Menos de meio metro Menos de meio metro
Formação Regular Regular
10/06/2014 12:00 Mole
Textura Encrespado Encrespado
Tamanho Menos de meio metro Meio metro
Formação Regular Regular
11/06/2014 6:00 Joaquina
Textura Mexido Encrespado
Tamanho Menos de meio metro Menos de meio metro
Formação Regular Regular
11/06/2014 6:00 Mole
Textura Liso Mexido
Tamanho Meio metro com maiores Meio metro com maiores
Formação Regular Regular
11/06/2014 12:00 Joaquina
Textura Encrespado Mexido
Tamanho Menos de meio metro Meio metro
Formação Espraiada Regular
11/06/2014 12:00 Mole
Textura Mexido Mexido
Tamanho Meio metro com maiores Um metro
Formação Regular Regular
12/06/2014 6:00 Joaquina
Textura Liso com spray Mexido
Tamanho Meio metro com maiores Um metro
Formação Regular/espraiada Regular
12/06/2014 6:00 Mole
Textura Encrespado Encrespado
Tamanho Um metro Dois metros
Formação Fechando/regular Regular
12/06/2014 12:00 Joaquina
Textura Encrespado Mexido
Tamanho Um metro Um metro
Formação Regular Regular
12/06/2014 12:00 Mole
Textura Mexido Mexido
Tamanho Um metro e meio Dois metros
Formação Regular Regular
82
Foram realizados 36 comparativos no total, sendo que 12 deles para a característica de textura,
12 para a característica de tamanho e 12 para a característica de formação. Obteve-se 20 resultados
convergentes, 13 aproximados e 3 divergentes, ou seja, 57%, 34% e 9%, respectivamente, quando
comparados ao diagnóstico manual realizado pelo site IN PARADISE, como observado na Figura 47.
Figura 47: Percentual de assertividade
Se levado em consideração a variação que o mar pode ter em questão de minutos, os boletins
não foram realizados exatamente nos horários de disponibilidade de dados meteorológicos, o que
acarreta em uma margem de mudança. Em virtude desta variação, os resultados podem ser
considerados aproximados, atingindo, assim, 91% de assertividade nos testes realizados.
83
5 CONCLUSÕES
Dentro dos objetivos específicos listados neste estudo, o que diz respeito à análise das
variáveis, levantou-se itens relevantes com base na literatura, nos serviços provedores das informações
meteorológicas e por meio de entrevistas com especialistas. Os serviços utilizados para fornecer dados
meteorológicos foram limitadores das variáveis, uma vez que por mais que uma variável seja relevante
para o diagnóstico, se esta não for provida por um serviço, inviabilizaria a funcionamento do sistema.
Já a literatura serviu como nivelamento para um diálogo mais aproximado com os especialistas, além
de um levantamento inicial das variáveis, em que se percebeu a existência de variáveis passíveis de
controle, ou seja, providas por algum serviço de monitoramento, com a ondulação, vento, entre outras,
e as não passíveis de controle, por exemplo, o fundo de areia, que varia de acordo com correntes
marítimas e não há serviços que forneçam esse tipo de informação. Por fim, as entrevistas foram
construtivas não somente para validação e exploração das variáveis, mas também para apontar outros
itens não mapeados, mas com grande relevância para trabalhos futuros.
Quanto ao objetivo que considera a criação da base de conhecimento por meio da engenharia
do conhecimento, este trabalho fez uso da transcrição de termos semânticos, para que existisse o elo
entre o conhecimento do especialista e o computador. Isso pode ser exemplificado na definição de
textura do mar, onde o vento influencia e as variáveis envolvidas são a velocidade do vento, sua
direção e a geográfica da praia. O termo semântico criado levou em consideração a forma como o
vento chega à praia, podendo ser terral, maral ou lateral. Como a direção do vento e a orla da praia são
fornecidos no formato de ângulos geográficos de 0 a 360 graus, códigos foram criados para a
interpretação do sentido do vento em relação a praia. Assim, esta transcrição foi necessária para que a
base de conhecimento pudesse ser interpretada de forma semântica, aproximando a forma como o
sistema foi codificado com as informações levantadas na engenharia do conhecimento.
Para concretizar o objetivo que estabelece a inter-relação das variáveis, foram criados mapas
mentais que exploram as possibilidades de combinação das variáveis envolvidas com cada
característica do mar e da onda para a prática do surf, neste caso a textura, tamanho e formação da
onda. Sendo assim, a organização da informação em forma de mapa mental, auxiliou tanto na inter-
relação de variáveis quanto no estabelecimento e documentação das regras do sistema que compõem a
base de conhecimento.
84
O objetivo específico que visava a implementação do sistema como um todo, foi concretizado
conforme o previsto. No entanto, o desenvolvimento e modelagem do software seriam otimizados se
executados após a realização das entrevistas, assim, com esse maior conhecimento sobre o negócio que
envolve o software, não seria necessária a adequação para englobar as novas informações obtidas com
os especialistas.
Um ponto importante para a conclusão da análise dos resultados é o tempo, recursos e a
quantidade de diagnósticos comparados. Os cenários possíveis que cada praia pode apresentar é a
combinação entre todas variáveis que influenciam seus aspectos, ou seja, como pode haver variáveis
que não estão mapeadas neste estudo, uma maior quantidade de testes é necessária para ter-se certeza
da robustez do sistema nos resultados obtidos.
O método utilizado para comparação dos resultados foi realizado com base em diagnósticos de
sites de boletins, sendo que o cenário ideal seria o monitoramento e acompanhamento ao vivo nas
praias, além de o monitoramento de uma maior quantidade de praias, visando o reconhecimento de
padrões e comportamentos, porém a falta de recurso impossibilita esse cenário.
Apesar destes limitadores, os resultados obtidos foram satisfatórios, concluindo que, apesar da
necessidade de refinamento das regras, o estudo contribui com a modelagem inicial de um cenário
computacional até então não proposto nacionalmente. Isto proporcionará o aperfeiçoamento e servirá
de motivação para que futuros trabalhos possam dedicar mais tempo de testes e observação, com o
objetivo de atingir-se um nível de assertividade muito próximo de 100% para os boletins,
possibilitando usufruir dos benefícios listados para este método de diagnóstico de ondas para a prática
do surf.
5.1 TRABALHOS FUTUROS
Como todo estudo científico, este trabalho mostrou algumas lacunas que podem inspirar outras
pesquisas. Dentre elas, destacam-se o pouco tempo para a validação da totalidade das regras, a
dificuldade de estabelecer conexão entre o tema e o conhecimento dos especialistas, a descoberta de
variáveis não mencionadas em literatura que possam impactar nas regras e a necessidade de
complemento do software por meio de outras técnicas computacionais.
Devido à complexidade, infinidade de possíveis combinações e tempo de coleta, elaboração e
utilização das regras que compõem a base de conhecimento, existe a possibilidade delas não cobrirem
85
por completo todos os cenários. Desta forma, para a evolução e robustez das regras, é indicado que
futuramente seja feito um trabalho conferência e testes avançados com base na observação de novos
cenários, convergindo assim para uma maior consistência da base de conhecimento.
Conforme constatado na literatura utilizada para fundamentar a entrevista semiestruturada, há
uma barreira entre o engenheiro do conhecimento e o especialista, uma vez que o artefato do estudo
não está pronto, tornando a explicação introdutória na entrevista muito abstrata, afastando o
especialista do objetivo central e dificultando a conexão entre o conhecimento e a modelagem do
trabalho. Com isso, é sugerido uma padronização de apresentação introdutória antes da entrevista,
assim como, a utilização de ferramentas de mídia que facilitem a ilustração do tema, otimizando tempo
e o foco da entrevista.
As entrevistas contribuíram não somente para validação e extração de regras passíveis de
controle, como também para levantar outras variáveis até então não mencionadas na literatura ou nos
boletins existentes. Variáveis como a pressão atmosférica, correntes marítimas, entre outras, foram
mencionadas pelos especialistas, porém estes não souberam classificar a influência delas nas
características da onda. Cabe considerá-las para um estudo futuro, averiguando se há algum impacto
nas características da onda e qual o seu grau, com o intuito de aperfeiçoar a assertividade do software.
Por fim, o estado da arte mostrou-se um tanto quanto complexo para que apenas uma técnica
fosse suficiente na resolução do problema de pesquisa. Portanto, é relevante considerar a utilização de
outras técnicas e aparatos de apoio, tais como redes neurais, captação de multimídia com integração
com redes sociais, armazenamento de histórico, mineração de dados, entre outras, em conjunto com o
sistema especialista para garantir maior precisão nos diagnósticos.
86
REFERÊNCIAS BIBLIOGRÁFICAS
ABBOTT, R.; BAKER, M. Aprenda Surf. Tradução de C. Jardim & E. Nogueira. Lisboa: Editorial Presença, 1989.
ALDERSON, W. Surfing. A beginner’s manual. West Sussex: Fernhurst Books, 1996.
ALMADA, F.; Cadernos da Sistemática das Actividades Desportivas 2. Base Conceptual da Sistemática das Actividades Desportivas. Taxonomia das Actividades Desportivas. Modelos de Tratamento do Conhecimento. Cruz Quebrada: Edições FMH, 1992.
ARMSTRONG, N. Comment mesurer la taille des vagues? Surf Session Hors-Série Vagues, p. 92-93, 2005.
ARAÚJO, M. P.; A educação mesológica: Contribuição das actividades físicas de ar livre e exploração. Ludens, p. 29-36, 1983.
BONI, V.; QUARESMA, S. J. Aprendendo a entrevistar: como fazer entrevistas em Ciências Sociais. Em Tese, v. 2, n. 1, p. 68-80, 2005.
BRANCO NETO, W.C. Inteligência Artificial – Notas de Aula. Lages: UNIPLAC, 2010. 55p.
BUTT, T.; RUSSELL, P. Surf science. An introduction to waves for surfing. Cornwall: Alison Hodge, 2002.
CASTILHO, E. ALVAREZ, E. Expert System: uncertainty and learning, the Alden Press. The Alden Press, Oxford, UK, 1991, 331 p.
COSTA, W.S.; SILVA, S.C.M.; Aquisição De Conhecimento: O Grande Desafio Na Concepção De Sistemas Especialistas, 2005, 46 p. (Artigo) Sistemas e Computação – Universidade Federal do Rio Grande do Norte, Natal, 2005.
COSTA NETO, P. L. O. ; CYMBALISTA, M. Probabilidades. 2.ed. São Paulo: Edgard Blücher,2006.
CRALLE, T. Surfin’ary. A dictionary of surf terms and surfspeak. Toronto: Ten Speed Press, 2001.
CRATO, N. De novo marés vivas. Jornal Expresso, Revista, p. 74-75, 2000.
DIXON, P. The complete guide to surfing. Guilford: The Lyons Press, 2001.
DURKIN, J. Expert System: Design and Development. Nova Iorque: Macmilian Publishing Company, 1994, 800 p.
GIARRATANO, J. C.; RILLEY, G. Expert System: principles and programming, Boston: PWS Publishing Company, 1993, 597 p.
87
GUISADO, R. The art of surfing. A training manual for the developing and competitivesurfer. Connecticut: The Globe Pequot Press, 2003.
HAGUETTE, T. M. F. Metodologias qualitativas na Sociologia. 5a
edição. Petrópolis: Vozes, 1997.
HARMON, P.; KING, David. Sistemas Especialistas: A Inteligência Artificial chega ao mercado. Edi. Campus, 1988.
HUTT, J.; BLACK, K.; MEAD, S. Classification of surf breaks in relation to surfing skill. In K. Black (Ed.), Natural and artificial reefs for surfing and coastal protection. Journal of Coastal Research, Special Issue 29, 66-81, 2001.
HENRIQUEZ, M. Artificial surf reef. Unpublished master’s thesis, Environmental Fluid Mechanics Section, Faculty of Civil Engineering, Delft University of Technology, The Netherlands, 2004.
IN PARADISE. Disponível: < http://www.inparadise.com.br/>. Acesso em: 18 de maio de 2014.
KAMPION, D.; BROWN, B. (1998). Stoked. Uma história da cultura do surf. Koln: Benedikt Tashen Verleg GmbH
KORB, Kevin B., NICHOLSON, Ann E. Bayesian Artificial Intelligence. 1.ed. Washington D.C:Chapman & Hall, 2004.
LACROIX, G.; Les sports de glisse. Revue Education Physique et Sport, 194, 6-9, 1985.
LAKATOS, E. M.; MARCONI, M. A. Técnicas de pesquisa. 3a
edição. São Paulo: Editora Atlas, 1996.
LEMOS, C.; LASTRES, H. M. M.; ALBAGLI, S. Inovação na era do conhecimento. Informação e globalização na era do conhecimento. Rio de Janeiro: Campus, p. 122-144, 1999.
LIEBOWITZ, J. Introduction to Expert Systems. Santa Cruz, California: Mitchell Publishing, 1988.
MARIMON, J. Los Sistemas praxiológicos adaptativos in F. Lagardera & P. Lavega. La ciencia de la acción motriz. (p. 101-118), Lleida: Edicions de la Universitat de Lleida, 2004.
MANZINI, E. J. A entrevista na pesquisa social. Didática, São Paulo, v. 26/27, p. 149-158, 1990/1991.
MANZINI, E.J. Considerações sobre a elaboração de roteiro para entrevista semi-estruturada. In: MARQUEZINE: M. C.; ALMEIDA, M. A.; OMOTE; S. (Orgs.) Colóquios sobre pesquisa em Educação Especial. Londrina:eduel, 2003. p.11-25.
MANZINI, E. J. Entrevista semi-estruturada: análise de objetivos e de roteiros. Seminário internacional sobre pesquisa e estudos qualitativos, v. 2, p. 58-59, 2004.
MARQUES, R. L.; DUTRA, I. Redes Bayesianas: o que são, para que servem, algoritmos eexemplos de aplicações. Rio de Janeiro: [s.n.], 2008. Disponível em: <www.cos.ufrj.br/~ines-/courses/cos740/leila/cos740/Bayesianas.pdf>
88
MASTELA, J. S. Técnicas de aquisição de conhecimento para sistemas baseados em conhecimento. 2004. 39 p. (Monografia) Ciência da Computação – Universidade Federal do Rio Grande do Sul, Porto Alegre, 2004.MATTOS M. et al. Sistema Especialista Probabilístico para Prognóstico de Doenças Bucais -PROBUCAL. In: VIII Congresso Brasileiro de Informática em Saúde, 2002, Natal / RN. VIII Congresso Brasileiro de Informática em Saúde. Natal: SBIS - Sociedade Brasileira de Informática em Saúde, 2002.
MEAD, S. Surfing science. In K. Black, & S. Mead (Eds.), Proceedings of the 3rd International Surfing Reef Symposium (pp. 1-36). Raglan, New Zealand: ASR limited, 2003.
MITCHELL, T. M. Machine Learning. [S.l.]: McGraw-Hill, 1997.
MOREIRA, M.A.A.G. Matriz de Análise de Tarefas Desportivas: Sistema de Classificação estrutural – Modelo taxinômico de Surf. 503p. (Tese) Doutorado em Motricidade Humana na especialidade de Ciência do Desporto – Universidade Técnica de Lisboa. 2007.
MORGADO, A. C. et al. Análise Combinatória e Probabilidade. Rio de Janeiro: SBM, 2001.
NEGHEVITSKY, M. Artificial Intelligence: a Guide to Intelligent Sistems. Adilson Wsley Editora, 2002.
RUSSEL, S.; NORVIG P. Inteligência Artificial. Rio de Janeiro: Campus, p. 1021, 2004.
PASSOS, E. L.; Inteligência Artificial e sistemas especialistas ao alcance de todos. Rio de Janeiro: LCT, p. 195, 1989.
PETER, J.F. Lucas. Bayesian networks in biomedicine and health-care. Elsevier Health. Cascais –Portugal, v.30, p.201-214, 2004.
PEREIRA, F. Manual do nadador salvador. Cruz Quebrada: Instituto de Socorros a Náufragos, Edições F.M.H, 2001.
PEROTTO, F. S. Modelagem do Conhecimento, Sistemas Especialistas e o Projeto SEAMED. Instituto de Filosofia e Ciências Humanas e Instituto de Informática Universidade Federal do Rio Grande do Sul, 2000.
PHILLIPS, D.; MEAD, S.; BLACK, K.; HEALY, T. Surf zone currents and influence on surfability. In K. Black, & S. Mead (Eds.), Proceedings of the 3rd International Surfing Reef Symposium, p. 60-82. Raglan, New Zealand: ASR limited, 2003.
SAHEKI, A. H. Construção de uma Rede Bayesiana aplicada ao diagnóstico de doenças cardíacas. 2005.84f. Dissertação (Mestrado em Engenharia) – Escola Politécnica de São Paulo, São Paulo, 2005.
SAVARIS, S. V. A. M.; Sistema especialista para primeiros socorros para cães. 156 f. (Dissertação) Mestrado em Ciência da Computação – Universidade federa de Santa Catarina, Florianópolis, 2002.
89
SCARFE, B.; ELWANY, M.; MEAD, S.; BLACK, K. The science of surfing waves and surfing breaks. A review. In K. Black, & S. Mead (Eds.), Proceedings of the 3rd International Surfing Reef Symposium (pp. 37-59). Raglan, New Zealand: ASR limited, 2003.
SCHWALBE, L. Protótipo de um software educacional para ensino de meteorologia. Blumenau: Universidade Regional de Blumenau, 1999. 77p.
SOLANGE, O. et.al. Sistemas Inteligentes: fundamentos e Aplicações. Manole, 2003.
SOULTRAIT, G.; CAZENAVE, S. L’homme et la vague. Guéthary, France: Vent de Terre, 1995.
SOUZA, Anderson Luiz Ara; NETO, Francisco Lousada. Redes Bayesianas: Uma introdução aplicada a Credit Scoring. In: SINAPE – Simpósio Nacional de Probabilidade e Estatística, 19., 2010, São Paulo. Anais Eletrônicos... Disponível em <http://www.ime.unicamp.br/inape/19sinape/node/1026>. Acesso em nov. de 2010.
TEIVE, R.C.G.; Planejamento da expansão da transmissão de sistemas de energia elétrica utilizando sistemas especialistas. 1991, 160 f. (Tese) Doutorado em Engenharia de Produção –Universidade Federal de Santa Catarina, 1997.
VEJA AO VIVO. Disponível: < http://www.vejoaovivo.com.br/>. Acesso em: 18 de maio de 2014.
W3C. Disponível: < http://www.w3c.br/Home/WebHome>. Acesso em: 18 de maio de 2014.
WARSHAW, M. The encyclopedia of surfing. Orlando: Hartcourt, Inc, 2003.
WAVES. Disponível: < http://waves.terra.com.br/surf/ondas/santa-catarina/florianopolis/mole>. Acesso em: 18 de maio de 2014.
WINDGURU. Disponível: < http://www.windguru.cz/>. Acesso em: 23 de maio de 2012.
90
APÊNDICE A – DIAGRAMA DE CLASSES
91
class alimentador
Alimentador
- weather: ParseWeatherToObject = new ParseWeathe...
+ run(Praia) : List<Previsao>
class ws
ParseWeatherToObject
- KEY: String = "jvp97fy9znus5t... {readOnly}- FORMAT: String = "xml" {readOnly}- URL: String = "http://api.wor... {readOnly}
+ getWs(String, String) : Data
«property get»- getURL(String, String) : URL
class model
Data
- weathers: List<Weather>
+ getPrevisoes() : List<Previsao>
Hourly
- hora: Integer- temperatura: Integer- velocidadeDoVento: Integer- grausDoVento: Integer- precipitacao: Double- humidade: Integer- visibil idade: Integer- pressao: Integer- alturaSignificativaondulacao: Double- alturaOndulacao: Double- direcaoOndulacao: Integer- periodo: Double- temperaturaDaAgua: Integer
+ toPrevisao() : Previsao
Weather
- data: String- hourly: List<Hourly>
+ getPrevisaoHora() : List<Hourly>+ getDataToObject() : Date
92
class dao
CidadeDao
+ findAll () : List<Cidade>+ save(Cidade) : void+ delete(Cidade) : void+ findByEstado(Integer) : List<Cidade>
DaoFactory
- praiaDao: PraiaDao = new PraiaDao()- previsaoDao: PrevisaoDao = new PrevisaoDao()- diagnosticoDao: DiagnosticoDao = new DiagnosticoDao()- estadoDao: EstadoDao = new EstadoDao()- cidadeDao: CidadeDao = new CidadeDao()- orientacaoDao: OrientacaoDao = new OrientacaoDao()
+ getPraiaDao() : PraiaDao+ getPrevisaoDao() : PrevisaoDao+ getDiagnosticoDao() : DiagnosticoDao+ getEstadoDao() : EstadoDao+ getCidadeDao() : CidadeDao+ getOrientacaoDao() : OrientacaoDao
DiagnosticoDao
+ findAll() : List<Diagnostico>+ save(Diagnostico) : void
EstadoDao
+ findAll() : List<Estado>+ findById(Integer) : Estado+ save(Estado) : void+ delete(Estado) : void
OrientacaoDao
+ findAll() : List<Orientacao>
PraiaDao
+ findAll() : List<Praia>+ save(Praia) : void+ delete(Praia) : void
Prev isaoDao
+ findAll() : List<Previsao>+ findPrevisaoExistente(Previsao) : Previsao+ save(Previsao) : void
-orientacaoDao
-cidadeDao
-estadoDao-diagnosticoDao -previsaoDao-praiaDao
class diagnosticador
Diagnosticador
- TEXTURA_RULES: String = "textura.drl" {readOnly}- TAMANHO_RULES: String = "tamanho.drl" {readOnly}- FORMACAO_RULES: String = "formacao.drl" {readOnly}- kbuilder: KnowledgeBuilder- kbase: KnowledgeBase- ksession: StatefulKnowledgeSession
+ Diagnosticador()+ run(Previsao) : void- startSession() : void- errorHandling() : void- loading() : void+ getKbuilder() : KnowledgeBuilder+ setKbuilder(KnowledgeBuilder) : void+ getKbase() : KnowledgeBase+ setKbase(KnowledgeBase) : void+ getKsession() : StatefulKnowledgeSession+ setKsession(StatefulKnowledgeSession) : void
Prev isaoRules
- periodo: Integer- alturaDaOndulacao: Double- anguloDaOndulacao: double- historicoMexido: boolean- velocidadeDoVento: int- anguloDoVento: double- praia: Praia
+ PrevisaoRules(Previsao)+ entrandoDeFrenteSemObstaculo() : boolean+ entrandoDeFrenteComObstaculo45() : boolean+ diagonalSemObstaculo() : boolean+ diagonalComObstaculo45() : boolean+ diagonalComObstaculo90() : boolean+ tamanhoEntrandoDeFrenteSemObstaculos() : String+ tamanhoEntrandoDeFrenteComObstaculos45() : String+ tamanhoEntrandoNaDiagonalSemObstaculos() : String+ tamanhoEntrandoNaDiagonalComObstaculos45() : String+ tamanhoEntrandoNaDiagonalComObstaculos90() : String- formulaBase() : Double- classificacaoDoTamanhoDaOnda(double) : String+ marNaoEsteveMexidoMexido() : boolean+ marEsteveMexido() : boolean+ ventoAbaixoDeDezNos() : boolean+ ventoAcimaDeDezNos() : boolean+ ventoTerral() : boolean+ ventoMaral() : boolean+ lateralSemProtecao() : boolean+ lateralComProtecao() : boolean+ periodoBaixo() : boolean+ periodoMedio() : boolean+ periodoAlto() : boolean+ semObstaculo() : boolean+ obstaculoDiagonal() : boolean+ obstaculoLateral() : boolean+ obstaculoFrontal() : boolean
93
class model
Serializable
Cidade
- serialVersionUID: long = -45599815625169... {readOnly}- idcidade: int- nome: String- estado: Estado- idEstado: Integer
+ Cidade()+ getIdcidade() : int+ setIdcidade(int) : void+ getNome() : String+ setNome(String) : void+ getEstado() : Estado+ setEstado(Estado) : void+ getIdEstado() : Integer+ setIdEstado(Integer) : void
Diagnostico
- idDiagnostico: Integer- previsao: Previsao- data: Date- hora: Integer- textura: String- direcaoVento: String- intensidadeVento: String- temperaturaAgua: String- direcaoOndulacao: String- tamanhoOndulacao: String- formacao: String- dataFormatada: String- header: String- body: String
+ fi l lPrevisao(Previsao) : void+ getIdDiagnostico() : Integer+ setIdDiagnostico(Integer) : void+ getPrevisao() : Previsao+ setPrevisao(Previsao) : void+ getData() : Date+ setData(Date) : void+ getHora() : Integer+ setHora(Integer) : void+ getTextura() : String+ setTextura(String) : void+ getDirecaoVento() : String+ setDirecaoVento(String) : void+ getIntensidadeVento() : String+ setIntensidadeVento(String) : void+ getTemperaturaAgua() : String+ setTemperaturaAgua(String) : void+ getDirecaoOndulacao() : String+ setDirecaoOndulacao(String) : void+ getTamanhoOndulacao() : String+ setTamanhoOndulacao(String) : void+ getFormacao() : String+ setFormacao(String) : void+ getCampoId() : String+ getId() : Integer+ getDataFormatada() : String+ setDataFormatada(String) : void+ getHeader() : String+ setHeader(String) : void+ getBody() : String+ setBody(String) : void- headerDiagnostico() : String- bodyDiagnostico() : String
Serializable
Estado
- serialVersionUID: long = -12431790255231... {readOnly}- idestado: Integer- nome: String- sigla: String
+ getIdestado() : Integer+ setIdestado(Integer) : void+ getNome() : String+ setNome(String) : void+ getSigla() : String+ setSigla(String) : void
Fonte
- id: int- nome: String- url: String
+ getId() : int+ setId(int) : void+ getNome() : String+ setNome(String) : void+ getUrl() : String+ setUrl(String) : void
Model
+ getCampoId() : String+ getId() : Integer
Orientacao
- idOrientacao: Integer- abreviatura: String- nome: String- grausInicio: Double- grausFim: Double- grausInicioCobertura: Double- grausFimCobertura: Double- praias: List<Praia>
+ getIdOrientacao() : Integer+ setIdOrientacao(Integer) : void+ getAbreviatura() : String+ setAbreviatura(String) : void+ getNome() : String+ setNome(String) : void+ getGrausInicio() : Double+ setGrausInicio(Double) : void+ getGrausFim() : Double+ setGrausFim(Double) : void+ getGrausInicioCobertura() : Double+ setGrausInicioCobertura(Double) : void+ getGrausFimCobertura() : Double+ setGrausFimCobertura(Double) : void+ getPraias() : List<Praia>+ setPraias(List<Praia>) : void+ equals(Object) : boolean+ anguloEntre(Double) : boolean+ anguloEntreCobertura(Double) : boolean
Praia
- idPraia: Integer- nome: String- latitude: Double- longitude: Double- cidade: Cidade- orientacoes: List<Orientacao>- obstaculo: Orientacao
+ Praia()+ getIdPraia() : Integer+ setIdPraia(Integer) : void+ getNome() : String+ setNome(String) : void+ getLati tude() : Double+ setLati tude(Double) : void+ getLongitude() : Double+ setLongitude(Double) : void+ getCidade() : Cidade+ setCidade(Cidade) : void+ getOrientacoes() : List<Orientacao>+ setOrientacoes(List<Orientacao>) : void+ getObstaculo() : Orientacao+ setObstaculo(Orientacao) : void+ getCampoId() : String+ getId() : Integer
Previsao
- idPrevisao: Integer- praia: Praia- data: Date- hora: Integer- velocidadeDoVento: Integer- anguloDoVento: Integer- alturaSignficativa: Double- alturaOndulacao: Double- anguloDaOndulacao: Integer- periodo: Integer- temperatura: Integer- temperaturaDaAgua: Integer- pressaoAtmosferica: Integer- visibil idade: Integer- humidade: Integer- precipitacao: Double- dataFormatada: String
+ getIdPrevisao() : Integer+ setIdPrevisao(Integer) : void+ getPraia() : Praia+ setPraia(Praia) : void+ getData() : Date+ setData(Date) : void+ getVelocidadeDoVento() : Integer+ setVelocidadeDoVento(Integer) : void+ getAnguloDoVento() : Integer+ setAnguloDoVento(Integer) : void+ getAlturaSignficativa() : Double+ setAlturaSignficativa(Double) : void+ getAlturaOndulacao() : Double+ setAlturaOndulacao(Double) : void+ getAnguloDaOndulacao() : Integer+ setAnguloDaOndulacao(Integer) : void+ getPeriodo() : Integer+ setPeriodo(Integer) : void+ getHora() : Integer+ setHora(Integer) : void+ getTemperatura() : Integer+ setTemperatura(Integer) : void+ getTemperaturaDaAgua() : Integer+ setTemperaturaDaAgua(Integer) : void+ getPressaoAtmosferica() : Integer+ setPressaoAtmosferica(Integer) : void+ getVisibil idade() : Integer+ setVisibil idade(Integer) : void+ getHumidade() : Integer+ setHumidade(Integer) : void+ getPrecipitacao() : Double+ setPrecipitacao(Double) : void+ getCampoId() : String+ getId() : Integer+ getDataFormatada() : String+ setDataFormatada(String) : void
-obstaculo
-praia
-cidade
-previsao
-estado
class serv let
TimerTask
Rotina
+ run() : void
HttpServlet
Scheduler
- serialVersionUID: long = 339051245805353845L {readOnly}- PERIODICIDADE: long = 3600000 {readOnly}
+ init() : void
94
class util
HibernateUtil
- sessionFactory: SessionFactory = null- serviceRegistry: ServiceRegistry = null
+ configureSessionFactory() : SessionFactory+ getSessionFactory() : SessionFactory+ save(Object) : void+ delete(Object) : void+ getById(Class<?>, Model) : Object+ findAll(Class<?>) : List
OrientacaoUtil
+ maisAngulo(Double, Integer) : Double+ menosAngulo(Double, Integer) : Double+ getOrientacaoNorte() : Orientacao+ getOrientacaoNorteNordeste() : Orientacao+ getOrientacaoNordeste() : Orientacao+ getOrientacaoLesteNordeste() : Orientacao+ getOrientacaoLeste() : Orientacao+ getOrientacaoLesteSudeste() : Orientacao+ getOrientacaoSudeste() : Orientacao+ getOrientacaoSulSudeste() : Orientacao+ getOrientacaoSul() : Orientacao+ getOrientacaoSulSudoeste() : Orientacao+ getOrientacaoSudoeste() : Orientacao+ getOrientacaoOesteSudoeste() : Orientacao+ getOrientacaoOeste() : Orientacao+ getOrientacaoOesteNoroeste() : Orientacao+ getOrientacaoNoroeste() : Orientacao+ getOrientacaoNorteNoroeste() : Orientacao+ getOrientacaoByAngulo(double) : Orientacao
95
class v iew
Serializable
CidadeBean
- serialVersionUID: long = 463962896655021873L {readOnly}- cidadeList: List<Cidade>- estadoList: List<Estado>
+ CidadeBean()+ getCidadeList() : List<Cidade>+ getEstadoList() : List<Estado>+ setEstadoList(List<Estado>) : void+ setCidadeList(List<Cidade>) : void+ onEdit(RowEditEvent) : void+ onCancel(RowEditEvent) : void+ addCidade() : void
Serial izable
EstadoBean
- serialVersionUID: long = -269830164042104045L {readOnly}- estadoList: List<Estado>
+ EstadoBean()+ getEstadoList() : List<Estado>+ setEstadoList(List<Estado>) : void+ onEdit(RowEditEvent) : void+ onCancel(RowEditEvent) : void+ addEstado() : void
Serializable
PraiaBean
- serialVersionUID: long = -17769083847753... {readOnly}- praiaList: List<Praia>- selectedPraia: Praia- idPraia: Integer- idEstado: Integer- idCidade: Integer- nome: String- lati tude: Double- longitude: Double- estadoList: List<Estado>- cidadeList: List<Cidade>- orientacoes: DualListModel<Orientacao>- obstaculoList: List<Orientacao>- idOrientacaoObstaculo: Integer
+ PraiaBean()+ getPraiaList() : List<Praia>+ setPraiaList(List<Praia>) : void+ getSelectedPraia() : Praia+ setSelectedPraia(Praia) : void+ getIdPraia() : Integer+ setIdPraia(Integer) : void+ getIdEstado() : Integer+ setIdEstado(Integer) : void+ getIdCidade() : Integer+ setIdCidade(Integer) : void+ getNome() : String+ setNome(String) : void+ getLati tude() : Double+ setLati tude(Double) : void+ getLongitude() : Double+ setLongitude(Double) : void+ getEstadoList() : List<Estado>+ setEstadoList(List<Estado>) : void+ getCidadeList() : List<Cidade>+ setCidadeList(List<Cidade>) : void+ getOrientacoes() : DualListModel<Orientacao>+ setOrientacoes(DualListModel<Orientacao>) : void+ getObstaculoList() : List<Orientacao>+ setObstaculoList(List<Orientacao>) : void+ getIdOrientacaoObstaculo() : Integer+ setIdOrientacaoObstaculo(Integer) : void+ addPraia() : String+ savePraia() : String+ editPraia() : String+ deletePraia() : String- getPraiaFromForm() : Praia- selectedPraiaFromForm() : void- clearForm() : void
Serializable
Prev isaoBean
- serialVersionUID: long = -47683157640348... {readOnly}- previsaoList: List<Previsao>- previsaoFiltrada: List<Previsao>- idPrevisao: Integer- selectedPrevisao: Previsao- mediumPrevisaoModel: PrevisaoDataModel
+ PrevisaoBean()+ getPrevisaoList() : List<Previsao>+ setPrevisaoList(List<Previsao>) : void+ getPrevisaoFiltrada() : List<Previsao>+ setPrevisaoFil trada(List<Previsao>) : void+ getIdPrevisao() : Integer+ setIdPrevisao(Integer) : void+ getSelectedPrevisao() : Previsao+ setSelectedPrevisao(Previsao) : void+ getMediumPrevisaoModel() : PrevisaoDataModel+ setMediumPrevisaoModel(PrevisaoDataModel) : void+ onRowSelect(SelectEvent) : void+ onRowUnselect(UnselectEvent) : void
Serial izable
DiagnosticoBean
- serialVersionUID: long = 9099175361440024711L {readOnly}- diagnosticoList: List<Diagnostico>- diagnosticoFiltrado: List<Diagnostico>- idDiagnostico: Integer- selectedDiagnostico: Diagnostico- mediumDiagnosticoModel: DiagnosticoDataModel
+ DiagnosticoBean()+ getDiagnosticoList() : List<Diagnostico>+ setDiagnosticoList(List<Diagnostico>) : void+ getDiagnosticoFiltrado() : List<Diagnostico>+ setDiagnosticoFil trado(List<Diagnostico>) : void+ getIdDiagnostico() : Integer+ setIdDiagnostico(Integer) : void+ getSelectedDiagnostico() : Diagnostico+ setSelectedDiagnostico(Diagnostico) : void+ getMediumDiagnosticoModel() : DiagnosticoDataModel+ setMediumDiagnosticoModel(DiagnosticoDataModel) : void+ onRowSelect(SelectEvent) : void+ onRowUnselect(UnselectEvent) : void
96
class converters
Converter
CidadeConv erter
+ getAsObject(FacesContext, UIComponent, String) : Object+ getAsString(FacesContext, UIComponent, Object) : String
Converter
EstadoConv erter
+ getAsObject(FacesContext, UIComponent, String) : Object+ getAsString(FacesContext, UIComponent, Object) : String
Converter
OrientacaoConv erter
+ getAsObject(FacesContext, UIComponent, String) : Object+ getAsString(FacesContext, UIComponent, Object) : String
Converter
ObstaculoConverter
+ getAsObject(FacesContext, UIComponent, String) : Object+ getAsString(FacesContext, UIComponent, Object) : String
class dataModel
ListDataModelSelectableDataModel
Prev isaoDataModel
+ PrevisaoDataModel()+ PrevisaoDataModel(List<Previsao>)+ getRowData(String) : Previsao+ getRowKey(Previsao) : Object
ListDataModelSelectableDataModel
DiagnosticoDataModel
+ DiagnosticoDataModel()+ DiagnosticoDataModel(List<Diagnostico>)+ getRowData(String) : Diagnostico+ getRowKey(Diagnostico) : Object
97
APÊNDICE B – REGRAS DO MOTOR DE INFERÊNCIA
rule "Mar não esteve mexido, vento calmo e terral"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marNaoEsteveMexidoMexido() && $previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.ventoTerral())
then $diagnostico.setTextura("Liso"); end
rule "Mar não esteve mexido, vento calmo e lateral com proteção"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marNaoEsteveMexidoMexido() && $previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.lateralComProtecao())
then $diagnostico.setTextura("Liso"); end
rule "Mar não esteve mexido, vento calmo e lateral sem proteção"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marNaoEsteveMexidoMexido() && $previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.lateralSemProtecao())
then $diagnostico.setTextura("Encrespado"); end
rule "Mar não esteve mexido, vento calmo e vento maral"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marNaoEsteveMexidoMexido() && $previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.ventoMaral())
then $diagnostico.setTextura("Encrespado"); end
rule "Mar não esteve mexido, vento forte e terral"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marNaoEsteveMexidoMexido() && $previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral())
then $diagnostico.setTextura("Liso com spray"); end
rule "Mar não esteve mexido, vento forte e lateral com proteção"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marNaoEsteveMexidoMexido() && $previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralComProtecao())
then $diagnostico.setTextura("Encrespado"); end
rule "Mar não esteve mexido, vento forte e lateral sem proteção"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marNaoEsteveMexidoMexido() && $previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao())
then $diagnostico.setTextura("Mexido"); end
rule "Mar não esteve mexido, vento forte e vento maral"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marNaoEsteveMexidoMexido() && $previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral())
then
98
$diagnostico.setTextura("Muito mexido"); end
rule "Mar esteve mexido, vento calmo e terral"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marEsteveMexido() && $previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.ventoTerral())
then $diagnostico.setTextura("Encrespado"); end
rule "Mar esteve mexido, vento calmo e lateral com proteção"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marEsteveMexido() && $previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.lateralComProtecao())
then $diagnostico.setTextura("Encrespado"); end
rule "Mar esteve mexido, vento calmo e lateral sem proteção"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marEsteveMexido() && $previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.lateralSemProtecao())
then $diagnostico.setTextura("Mexido"); end
rule "Mar esteve mexido, vento calmo e vento maral"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marEsteveMexido() && $previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.ventoMaral())
then $diagnostico.setTextura("Muito mexido"); end
rule "Mar esteve mexido, vento forte e terral"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marEsteveMexido() && $previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral())
then $diagnostico.setTextura("Encrespado com spray"); end
rule "Mar esteve mexido, vento forte e lateral com proteção"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marEsteveMexido() && $previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralComProtecao())
then $diagnostico.setTextura("mexido"); end
rule "Mar esteve mexido, vento forte e lateral sem proteção"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marEsteveMexido() && $previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao())
then $diagnostico.setTextura("Muito mexido"); end
rule "Mar esteve mexido, vento forte e vento maral"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.marEsteveMexido() && $previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral())
then $diagnostico.setTextura("Muito mexido"); End
99
rule "Ondulação entrando de frente sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.entrandoDeFrenteSemObstaculo())
then $diagnostico.setTamanhoOndulacao($previsaoRules.tamanhoEntrandoDeFrenteSemObstaculos()); end
rule "Ondulação entrando de frente com obstaculo"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.entrandoDeFrenteComObstaculo45())
then $diagnostico.setTamanhoOndulacao($previsaoRules.tamanhoEntrandoDeFrenteComObstaculos45()); end
rule "Ondulação entrando na diagonal sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.diagonalSemObstaculo())
then $diagnostico.setTamanhoOndulacao($previsaoRules.tamanhoEntrandoNaDiagonalSemObstaculos()); end
rule "Ondulação entrando na diagonal com obstaculo 45 graus"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.diagonalComObstaculo45())
then $diagnostico.setTamanhoOndulacao($previsaoRules.tamanhoEntrandoNaDiagonalComObstaculos45()); end
rule "Ondulação entrando na diagonal com obstaculo 90 graus"when
$diagnostico: Diagnostico()$previsaoRules : PrevisaoRules()eval($previsaoRules.diagonalComObstaculo90())
then $diagnostico.setTamanhoOndulacao($previsaoRules.tamanhoEntrandoNaDiagonalComObstaculos90()); end
rule "Vento fraco, periodo menor que 8, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoBaixo() && $previsaoRules.obstaculoLateral())
then $diagnostico.setFormacao("Irregular"); end
rule "Vento fraco, periodo menor que 8, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoBaixo() && $previsaoRules.obstaculoFrontal())
then $diagnostico.setFormacao("Irregular"); end
rule "Vento fraco, periodo menor que 8, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoBaixo() && $previsaoRules.obstaculoDiagonal())
then $diagnostico.setFormacao("Espraiada"); end
rule "Vento fraco, periodo menor que 8, sem obstaculo"
100
when$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoBaixo() && $previsaoRules.semObstaculo())
then $diagnostico.setFormacao("Irregular"); end
rule "Vento fraco, periodo entre 8 e 14, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoMedio() && $previsaoRules.obstaculoLateral())
then $diagnostico.setFormacao("Regular"); end
rule "Vento fraco, periodo entre 8 e 14, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoMedio() && $previsaoRules.obstaculoFrontal())
then $diagnostico.setFormacao("Fechando"); end
rule "Vento fraco, periodo entre 8 e 14, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoMedio() && $previsaoRules.obstaculoDiagonal())
then $diagnostico.setFormacao("Regular"); end
rule "Vento fraco, periodo entre 8 e 14, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoMedio() && $previsaoRules.semObstaculo())
then $diagnostico.setFormacao("Regular"); end
rule "Vento fraco, periodo maior que 14, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoAlto() && $previsaoRules.obstaculoLateral())
then $diagnostico.setFormacao("Regular"); end
rule "Vento fraco, periodo maior que 14, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoAlto() && $previsaoRules.obstaculoFrontal())
then $diagnostico.setFormacao("Regular"); end
rule "Vento fraco, periodo maior que 14, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoAlto() && $previsaoRules.obstaculoDiagonal())
then $diagnostico.setFormacao("Fechando"); end
rule "Vento fraco, periodo maior que 14, sem obstaculo"when
$diagnostico: Diagnostico()
101
$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAbaixoDeDezNos() && $previsaoRules.periodoAlto() && $previsaoRules.semObstaculo())
then $diagnostico.setFormacao("Rápida"); end
rule "Vento forte e terral, periodo menor que 8, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoLateral())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e terral, periodo menor que 8, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoFrontal())then
$diagnostico.setFormacao("Espraiada"); end
rule "Vento forte e terral, periodo menor que 8, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e terral, periodo menor que 8, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoBaixo() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Espraiada"); end
rule "Vento forte e terral, periodo entre 8 e 14, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoLateral())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e terral, periodo entre 8 e 14, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoFrontal())then
$diagnostico.setFormacao("Fechando"); end
rule "Vento forte e terral, periodo entre 8 e 14, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Regular");
102
end
rule "Vento forte e terral, periodo entre 8 e 14, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoMedio() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e terral, periodo maior que 14, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoLateral())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e terral, periodo maior que 14, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoFrontal())then
$diagnostico.setFormacao("Cavada"); end
rule "Vento forte e terral, periodo maior que 14, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e terral, periodo maior que 14, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoTerral() && $previsaoRules.periodoAlto() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Fechando"); end
rule "Vento forte e lateral, periodo menor que 8, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoLateral())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e lateral, periodo menor que 8, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoFrontal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e lateral, periodo menor que 8, obstaculo diagonal"when
103
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e lateral, periodo menor que 8, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoBaixo() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Espraiada"); end
rule "Vento forte e lateral, periodo entre 8 e 14, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoLateral())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e lateral, periodo entre 8 e 14, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoFrontal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e lateral, periodo entre 8 e 14, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e lateral, periodo entre 8 e 14, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoMedio() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e lateral, periodo maior que 14, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoLateral())then $diagnostico.setFormacao("Regular");
end
rule "Vento forte e lateral, periodo maior que 14, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoFrontal())
104
then $diagnostico.setFormacao("Cavada"); end
rule "Vento forte e lateral, periodo maior que 14, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e lateral, periodo maior que 14, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.lateralSemProtecao() && $previsaoRules.periodoAlto() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Regular"); end
rule "Vento forte e maral, periodo menor que 8, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoLateral())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo menor que 8, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoFrontal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo menor que 8, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoBaixo() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo menor que 8, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoBaixo() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo entre 8 e 14, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoLateral())then
$diagnostico.setFormacao("Irregular"); end
105
rule "Vento forte e maral, periodo entre 8 e 14, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoFrontal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo entre 8 e 14, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoMedio() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo entre 8 e 14, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoMedio() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo maior que 14, obstaculo lateral"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoLateral())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo maior que 14, obstaculo frontal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoFrontal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo maior que 14, obstaculo diagonal"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoAlto() &&
$previsaoRules.obstaculoDiagonal())then
$diagnostico.setFormacao("Irregular"); end
rule "Vento forte e maral, periodo maior que 14, sem obstaculo"when
$diagnostico: Diagnostico()$previsaoRules: PrevisaoRules()eval($previsaoRules.ventoAcimaDeDezNos() && $previsaoRules.ventoMaral() && $previsaoRules.periodoAlto() &&
$previsaoRules.semObstaculo())then
$diagnostico.setFormacao("Irregular"); end
top related