universidade do vale do itajaÍ centro de ciÊncias ...siaibib01.univali.br/pdf/robson jean de...
Post on 16-Nov-2018
212 Views
Preview:
TRANSCRIPT
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
SOFTWARE PARA PREVISÃO DOS ESTADOS HIDROLÓGICOS DE ALGUNS SETORES DO MUNICÍPIO DE ITAJAÍ
por
Robson Jean de Souza
Itajaí (SC), novembro de 2012
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
SOFTWARE PARA PREVISÃO DOS ESTADOS HIDROLÓGICOS DE ALGUNS SETORES DO MUNICÍPIO DE ITAJAÍ
Área de Computação Aplicada
por
Robson Jean de Souza Relatório apresentado à Banca Examinadora do Trabalho Técnico-científico de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientador: Elieser Ademir de Jesus, M. Sc.
Itajaí (SC), novembro de 2012
AGRADECIMENTOS
Aos meus pais, Arlete Santos de Souza e José Manoel de Souza, por terem me dado a oportunidade de estar estudando e pela confiança que sempre depositaram em mim, além da educação que me deram.
Ao professor Elieser Ademir de Jesus por ter aceitado o convite para orientar este trabalho e por todo o empenho depositado, estando sempre disponível para ajudar, seja incentivando ou dando ideias.
Ao coordenador Everlei Pereira e a todos os profissionais da Defesa Civil de Itajaí que sempre estiveram à disposição contribuindo de forma bastante relevante para o desenvolvimento deste trabalho.
E também, a todas as pessoas, professores e amigos que contribuíram de certa forma para a realização deste projeto, tanto com ideias quanto contatos de pessoas que pudessem ajudar de alguma forma.
RESUMO
SOUZA, Robson Jean de. Software para Previsão dos Estados Hidrológicos de Alguns dos Setores de Itajaí. Itajaí, 2012. 122 f. Trabalho Técnico-científico de Conclusão de Curso (Graduação em Ciência da Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2012. As enchentes vêm castigando o Vale do Itajaí ao longo dos anos e principalmente a cidade de Itajaí, que sofre com o aumento do nível da água por receber influência de toda a bacia do rio Itajaí-Açú causando enormes prejuízos à população e ao governo. Devido à falta de informações que auxiliem na tomada de decisão sentida pela própria Defesa Civil de Itajaí durante uma enchente é que foi proposto um software que faça a previsão dos estados hidrológicos das regiões mais baixas da cidade de Itajaí. O principal objetivo deste sistema é automatizar a coleta das seguintes informações: previsão de chuva de Itajaí, previsão de chuva de Blumenau, previsão de chuva de Brusque e nível da maré. A partir destas informações, o sistema é capaz de apresentar os estados hidrológicos de dois dos setores de Itajaí (Imaruí e Murta), podendo assim, cada setor estar em estado normal, em estado de atenção, em estado de alerta ou em estado de emergência. Para que o sistema pudesse prever os estados hidrológicos do Imaruí e da Murta, foram criadas bases de regras juntamente com o coordenador da Defesa Civil e implementadas no sistema através de uma técnica de Inteligência Artificial (IA) chamada de Sistemas Especialistas. Este trabalho pode vir a ser útil para a Defesa Civil em períodos de enchente, porém seus testes e validação não puderam ser executados como deveriam devido a falta de dados históricos. É necessário que se tenha os dados para que se possa calcular o nível de confiabilidade do sistema. Palavras-chave: Enchentes. Sistemas de apoio a catástrofes. Previsão de estados hidrológicos.
ABSTRACT
The floods have been punishing the Itajaí Valley all over the years, especially the city of Itajaí that suffers with the high level of the water due to the influences from the whole watershed of the river Itajaí-Açú causing great losses to the population and the government. Due to the lack of information that could aid the decision-making while a flood is happening, said by the civil defense of Itajaí, the idea of developing a software that makes a forecast of the hydrological states for the lowest regions of the city of Itajaí came up. The biggest objective of this software to be achieved is automating the search for the information: forecast of rain of Itajaí, forecast of rain of Blumenau, forecast of rain of Brusque and the level of the tide. From this information, the software will exhibit the hydrological states of two of the sectors of Itajaí (Imaruí and Murta) where their status might be normal, warning, alert or emergency. In order that the software be able to forecast the hydrological states of Imaruí and Murta, rule bases were created with experts of civil defense and implemented in the system through a technique of Artificial Inteligence known as Expert Systems. This software may be useful for the Civil Defense in times of flood, however its tests and validation couldn’t be ran as they should due to a lack of historical data. It is necessary to have data in order to calculate the level of reliability of the software. Keywords: Floods. Systems to support natural disasters. Forecasting of hydrological states.
LISTA DE FIGURAS
Figura 1. Setores de Itajaí e seus estados. Murta em atenção (amarelo) e Imaruí em alerta (laranjado) .................................................................................................................... 16
Figura 2. Usuário editando as variáveis de entrada para o Sistema Especialista .................... 17 Figura 3. Perfis de ocupação de áreas inundáveis ................................................................. 21 Figura 4. Diferenças entre inundação gradual e brusca ......................................................... 23 Figura 5. Componentes de um sistema de IA baseado em regras .......................................... 28 Figura 6. Configuração e operação de um programa de IA ................................................... 34 Figura 7. Como a poda funciona em um Sistema Especialista............................................... 37 Figura 8. Localização de Itajaí no Brasil .............................................................................. 39 Figura 9. A bacia hidrográfica do rio Itajaí-Açú no contexto da linha da costa de Santa
Catarina, com indicação das principais cidades costeiras e do Vale do Itajaí, e localização na América Latina no detalhe ....................................................................................... 40
Figura 10. (a) Blumenau em 1983; (b) Blumenau em 2008 ................................................... 41 Figura 11. (a) Enchente de 2008 em Blumenau; (b) Deslizamentos de 2008 em Blumenau... 42 Figura 12. Exemplo de situação atual apresentada pelo sistema Alerta Rio ........................... 46 Figura 13. Amostra dos estados hidrológicos para a cidade de Blumenau nas últimas 24 horas
no CEOPS .................................................................................................................... 47 Figura 14. Diagrama de Casos de Uso .................................................................................. 52 Figura 15. Diagrama de sequência ........................................................................................ 54 Figura 16. Diagrama de estados............................................................................................ 56 Figura 17. A busca automática dos valores das variáveis de entrada ..................................... 57 Figura 18. Sistema informando que não pode realizar a busca das variáveis ......................... 58 Figura 19. Gráfico mostrando o valor que se deseja descobrir, no caso, o nível da maré para as
15 horas ....................................................................................................................... 60 Figura 20. Alguns dos nós da árvore de decisão da Murta .................................................... 63 Figura 21. Os nós que são percorridos na árvore de decisão para uma das regras da Murta ... 64 Figura 22. Gráfico gerado pelo sistema criado neste trabalho através do framework JFreeChart
..................................................................................................................................... 67 Figura 23. A Murta e o Imaruí estão em estado de atenção por estarem com a cor amarela ... 69 Figura 24. A regra "r29" da Murta sendo executada ............................................................. 70 Figura 25. A curva do gráfico de um dos pontos do sistema de telemetria do rio Itajaí-Açú em
Itajaí mostrada em um intervalo de 6 horas ................................................................... 70
LISTA DE TABELAS
Tabela 1. Comparativo das Ferramentas Similares ............................................................... 48 Tabela 2. UC01.01 Efetuar Simulação.................................................................................. 53 Tabela 3. UC01.02 Visualizar Gráficos do Sistema de Telemetria ........................................ 53 Tabela 4. UC01.03 Selecionar para Atualizar Variáveis Automaticamente ........................... 53 Tabela 5. UC01.04 Escolher o Dia em que Deseja Simular................................................... 54 Tabela 6. Valor faltante da maré........................................................................................... 59 Tabela 7. Exemplo do nível da maré em cada hora do dia..................................................... 61
LISTA DE QUADROS
Quadro 1. Uma das regras da base de regras para a Murta .................................................... 66 Quadro 2. Código em Java mostrando a utilização do framework HtmlUnit ......................... 66 Quadro 3. Código em JFreeChart capaz de criar um gráfico de linhas .................................. 67 Quadro 4. Objeto JSON contendo informações de algumas cidades do Vale do Itajaí ........... 68
LISTA DE ABREVIATURAS E SIGLAS
ANA Agência Nacional de Águas CEOPS Centro de Operação do Sistema de Alerta da Bacia do Itajaí DNAEE Departamento Nacional de Águas e Energia Elétrica HTML Hyper Text Markup Language IA Inteligência Artificial IGAM Instituto Mineiro de Gestão das Águas Geo-Rio Fundação Instituto de Geotécnica JEOPS The Java Embedded Object Production System JSON JavaScript Object Notation RF Requisito Funcional RN Regra de Negócio RNA Rede Neural Artificial RNF Requisito Não Funcional TTC Trabalho Técnico-científico de Conclusão de Curso UML Unified Modeling Language UNIVALI Universidade do Vale do Itajaí
SUMÁRIO
1 INTRODUÇÃO ..................................................................................... 12 1.1 PROBLEMATIZAÇÃO ........................................................................ 14 1.1.1 Formulação do Problema ............................................................................. 14 1.1.2 Solução Proposta .......................................................................................... 15 1.2 OBJETIVOS .......................................................................................... 17 1.2.1 Objetivo Geral .............................................................................................. 17 1.2.2 Objetivos Específicos .................................................................................... 18 1.3 METODOLOGIA .................................................................................. 18 1.4 ESTRUTURA DO TRABALHO .......................................................... 19 2 FUNDAMENTAÇÃO TEÓRICA ........................................................ 20 2.1 ENCHENTES, INUNDAÇÕES E ENXURRADAS ............................ 20 2.2 MÉTODOS DE PREVISÃO DE ENCHENTES .................................. 23 2.2.1 Histórico dos Métodos de Previsão de Enchentes ....................................... 24 2.2.2 Modelos de Previsão Atualmente Usados no Mundo ................................. 25 2.3 SISTEMAS ESPECIALISTAS ............................................................. 27 2.3.1 Definindo os Objetivos ................................................................................. 28 2.3.2 Definindo os Fatos ........................................................................................ 29 2.3.3 Obtendo Dados ............................................................................................. 30 2.3.4 Regras e Inferências ..................................................................................... 31 2.3.5 Verificação por Meio do Mecanismo de Inferência .................................... 33 2.3.6 Poda............................................................................................................... 35 2.3.7 Definindo Sistemas Especialistas ................................................................. 35 2.3.8 Regras Heurísticas........................................................................................ 36 2.3.9 Quadro-Negro............................................................................................... 37 2.3.10 Criando um Sistema Especialista ................................................................ 38 2.3.11 Conclusões .................................................................................................... 38 2.4 CARACTERIZAÇÃO DA ÁREA DE ESTUDO ................................. 39 2.4.1 O Município .................................................................................................. 39 2.4.2 O Rio Itajaí-Açú ........................................................................................... 39 2.5 HISTÓRICO DAS INUNDAÇÕES NO VALE DO ITAJAÍ .............. 40 2.5.1 As Enchentes de 1983 e 1984........................................................................ 40 2.5.2 A Enchente de Novembro de 2008 ............................................................... 42 2.5.3 A Enchente de Setembro de 2011 ................................................................ 43 2.6 SOFTWARES SIMILARES ................................................................. 44 2.6.1 Alerta Rio...................................................................................................... 44 2.6.2 Centro de Operação do Sistema de Alerta da Bacia do Itajaí (CEOPS) ................................................................................................................. 46 2.6.3 Sistema de Alerta contra Enchentes da Bacia do Rio Doce ....................... 47 2.6.4 Comparativo ................................................................................................. 48 3 DESENVOLVIMENTO ........................................................................ 50
3.1 ANÁLISE DE REQUISITOS ............................................................... 50 3.1.1 Requisitos Funcionais................................................................................... 50 3.1.2 Requisitos Não Funcionais ........................................................................... 51 3.2 DIAGRAMAS DE CASOS DE USO .................................................... 51 3.2.1 UC01.01 Efetuar Simulação ......................................................................... 52 3.2.2 UC01.02 Visualizar os Gráficos do Sistema de Telemetria ........................ 53 3.2.3 UC01.03 Selecionar para Atualizar Variáveis Automaticamente .............. 53 3.2.4 UC01.04 Escolher o Dia em que Deseja Simular ........................................ 54 3.3 DIAGRAMA DE SEQUÊNCIA............................................................ 54 3.4 DIAGRAMA DE ESTADOS................................................................. 55 4 IMPLEMENTAÇÃO ............................................................................ 56 4.1 A BUSCA DAS VARIÁVEIS DE ENTRADA ..................................... 57 4.2 A ÁRVORE DE DECISÃO ................................................................... 62 4.3 CONVERSÃO PARA REGRAS SE-ENTÃO ...................................... 63 4.4 CARACTERÍSTICAS DO FRAMEWORK JEOPS ........................... 64 4.5 UTILIZANDO O FRAMEWORK HTMLUNIT ................................. 66 4.6 UTILIZANDO O FRAMEWORK JFREECHART ............................ 66 4.7 UTILIZANDO O JSON ........................................................................ 68 5 TESTES E VALIDAÇÃO ..................................................................... 68 6 CONCLUSÃO ....................................................................................... 70 6.1 TRABALHOS FUTUROS .................................................................... 72 REFERÊNCIAS ..................................................................................................... 74 APÊNDICE A. RELATO SOBRE AS REUNIÕES REALIZADAS COM O COORDENADOR DA DEFESA CIVIL DE ITAJAÍ .......................................... 76 APÊNDICE B. ÁRVORE DE DECISÃO DA MURTA ...................................... 78 APÊNDICE C. ARQUIVO DA BASE DE REGRAS DO IMARUÍ ................... 79 APÊNDICE D. ARQUIVO DA BASE DE REGRAS DA MURTA .................. 117
12
1 INTRODUÇÃO
O Brasil é um dos países mais afetados pelas enchentes e inundações, ocupando uma
posição significativa em relação a outros países. De acordo com Collins (2004 apud Oliveira
2010), mais de 29 milhões de brasileiros residem em áreas suscetíveis às inundações e, em
média, 100 pessoas são vitimadas anualmente no Brasil em virtude destes desastres naturais.
Devido à falta de conhecimento do regime fluvial, ou seja, a variação do volume de água dos
rios durante o ano (WIKIPÉDIA, 2012), ao crescimento acelerado da urbanização, causando um
crescimento desordenado das cidades brasileiras, muitas pessoas residem nos leitos dos rios,
criando comunidades ribeirinhas em locais onde as chances de inundações são muito elevadas.
De acordo com Coutinho (2012), as enchentes em Itajaí dependem em grande parte da
intensidade das chuvas que acontecem na nascente do rio Itajaí-Açú, bem como das chuvas
ocorridas em todo o médio e alto Vale do Itajaí, e por fim, as fases da lua que interferem no nível
das marés, a saber: as luas Nova e Cheia. Com base nisso, observa-se que não necessariamente
precisa estar chovendo em Itajaí para que se tenha uma enchente de grande porte na cidade.
Existem modelos matemáticos provenientes de estudos sobre as enchentes, incluindo as
enchentes do Brasil, mais especificamente no Rio Grande do Sul (Collins, 2004 apud Oliveira
2010). Em uma das etapas deste trabalho foram avaliados modelos para previsão de enchentes,
como os modelos: IPH, SMAP, PREVAZ, PREVIVAZM, PREVIVAZ, PREVIVAZH, entre
outros. Porém, a maioria deles são complexos de se implementar devido ao grande número de
variáveis e de não se adequarem a situação específica de Itajaí. Por não considerarem todos os
fatores que influenciam na ocorrência de uma enchente na cidade e considerarem variáveis que a
Defesa Civil não possui os dados, decidiu-se utilizar outra abordagem.
Existem outras abordagens para o cálculo do nível da água dos rios como a utilização de
Redes Neurais Artificiais (RNAs). Para que se possa utilizar esta abordagem é necessário um
treinamento da rede com dados históricos. Em reuniões com a Defesa Civil de Itajaí verificou-se
que os dados históricos sobre as enchentes na cidade são inexistentes, o que impossibilitou o uso
desta técnica para previsão do nível do rio. Sendo assim, optou-se por utilizar a técnica de IA
chamada de Sistema Especialista. O Sistema Especialista simula o comportamento de um
humano especialista em determinado assunto através do processamento de regras, e neste caso, o
especialista é o coordenador da Defesa Civil. Através de regras elaboradas juntamente com o
especialista, o sistema é capaz de prever os estados hidrológicos de alguns setores (a Defesa
13
Civil divide a cidade em setores, sendo que estes podem englobar um ou mais bairros) de Itajaí,
setores estes que são: o Imaruí e a Murta. Cada um dos setores da cidade poderá estar em um dos
seguintes estados: normal, atenção, alerta ou emergência.
A princípio, no início deste Trabalho Técnico-Científico de Conclusão de Curso (TTC),
pensou-se em implementar uma previsão quantitativa do nível do rio em Itajaí. Porém, devido à
complexidade dos modelos hidrológicos e à falta de dados históricos para se utilizar uma RNA
decidiu-se implementar um Sistema Especialista, que ao invés de gerar uma previsão
quantitativa, realiza uma previsão qualitativa dos estados de cada setor da cidade.
Sendo assim, neste TTC foi desenvolvido um sistema para previsão dos estados
hidrológicos de dois dos setores do município de Itajaí. Os dados de entrada da simulação são
coletados de forma automatizada em websites que fazem previsões. As variáveis coletadas
automaticamente são: quantidade de chuva em milímetros (Itajaí, Blumenau e Brusque) e nível
da maré. Outras variáveis também são consideradas na simulação, como: estados hidrológicos de
Blumenau e Brusque e solo saturado, porém estas não estão disponibilizadas mais no site do
Comitê do Itajaí pelo fato de o site estar em manutenção, fazendo com que o usuário tenha que
entrar com seus valores de forma manual. No momento em que os dados são coletados já são
armazenados localmente e de tempos em tempos o simulador se atualiza automaticamente
fazendo uma busca por dados mais recentes.
O sistema coleta de forma automática os dados para as variáveis de entrada para a
simulação através da análise do código HTML (Hyper Text Markup Language) dos sites
considerados como confiáveis pela Defesa Civil.
As informações são coletadas de forma automática através de um framework em Java
chamado de HtmlUnit. Através deste framework é possível que navegar em diversos websites e
buscar as informações desejadas, informações estas que podem estar em elementos HTML como
div’s, tabelas, etc. É possível também realizar requisições de formulários como se fosse um
usuário clicando em botões, ou seja, é possível que se realize diversas ações que o usuário faria
em um navegador, porém via programação através do HtmlUnit. Com isso, é possível realizar
uma busca pelos valores referentes as variáveis de entrada que o sistema necessita para realizar a
simulação do estado hidrológico dos setores.
14
Sobre os gráficos que o sistema gera, foi utilizado outro framework em Java chamado de
JFreeChart. O JFreeChart permite a criação de diversos gráficos, tanto interativos como não
interativos.
As regras do Sistema Especialista foram validadas junto com a Defesa Civil a fim de
identificar situações em que o sistema apresenta estados hidrológicos que não correspondem
com a saída esperada para os dados inseridos para as variáveis de simulação.
A aplicação foi testada de duas formas, a primeira sendo a coleta de dados automática,
onde o sistema deve coletar os valores da chuva em milímetros em Itajaí, Blumenau e Brusque e
também os valores dos níveis da maré ao longo dos dias. O sistema deve coletar os valores
correspondentes ao dia selecionado para realizar a simulação, sendo que o sistema permite
realizar a simulação de até dois dias, além de permitir simular os estados do dia atual. Já o
segundo teste consistiu em verificar se as regras estão retornando os estados hidrológicos
corretos em relação aos valores inseridos para as variáveis de entrada. Nem todas as
possibilidades foram testadas, pois a chuva e a maré são classificadas em altas ou baixas, ou
seja, se a chuva em milímetros for maior ou igual a 50, então a chuva é alta, senão, baixa. Com a
maré acontece algo semelhante, a diferença é que se a maré for maior ou igual a 1, já é
considerada alta, caso contrário, baixa. As variações entre estes limites não foram testadas, pois
devem retornar o mesmo resultado.
Os usuários deste simulador serão os profissionais da Defesa Civil de Itajaí. Utilizando o
simulador, estes profissionais poderão tanto ver a situação atual dos setores de Itajaí em questão
(Imaruí e Murta) quanto simular como estará a situação dos setores nos próximos dois dias.
Decidiu-se por simular em até dois dias pelo fato de o site de previsão da UNIVALI realizar a
previsão do tempo em somente dois dias, e também pelo fato de que quanto mais recente for a
previsão do tempo mais confiável será.
1.1 PROBLEMATIZAÇÃO
1.1.1 Formulação do Problema
O Brasil é um dos países mais afetados pelas enchentes em relação a outros países. Mais
de 29 milhões de brasileiros residem em áreas de risco às inundações e, em média, 100 pessoas
são vitimadas anualmente no Brasil em virtude de desastres naturais Collins (2004 apud Oliveira
15
2010). O alto crescimento urbano e falta de conhecimento do regime fluvial são fatores que
elevam as chances de inundações.
Em novembro de 2008, os desastres ambientais não só atingiram o Vale do Itajaí, bem
como mais da metade da costa catarinense. Cerca de 1,5 milhões de pessoas foram afetadas
direta e indiretamente em 63 cidades. Em 16 destas cidades tiveram mortos e desaparecidos.
Em épocas de enchente na cidade de Itajaí é comum pessoas perderem seus bens
materiais pelo fato de grande parte da cidade ficar inundada, e com isso, a população e o
governo sofrem prejuízos tendo que restaurar a cidade.
Segundo o coordenador da Defesa Civil de Itajaí, em épocas de crise, como uma
enchente, o processo de tomada de decisão é feito acessando-se vários sites, analisando as
informações contidas nestes sites, relacionando-as e tomando as devidas decisões o mais rápido
possível, pois hà grande pressão psicológica tanto do governo, mídia, como da população em
geral.
Quando ocorre uma enchente, as pessoas utilizam da Internet para pedir ajuda e também
saber se serão afetadas ou se outras pessoas em diferentes partes da cidade serão. Porém, nem
sempre obtêm sucesso devido à falta de informações disponíveis sobre previsão de enchente,
então, a saída que encontram é ligarem para a Defesa Civil, rádios, canais de televisão locais,
etc. Até mesmo o coordenador da Defesa Civil sofre com a carência de informações na Internet e
associação e extração das poucas existentes, para que possa tirar conclusões e tomar decisões.
Mais detalhes sobre a forma como a Defesa Civil trabalha em épocas de enchente podem ser
vistos no relato feito com o coordenador em APÊNDICE A. Relato sobre as Reuniões
Realizadas com o Coordenador da Defesa Civil de Itajaí.
1.1.2 Solução Proposta
Neste TTC foi desenvolvido um sistema para auxiliar a tomada de decisões da Defesa
Civil de Itajaí. Este sistema apresenta o mapa da cidade de Itajaí dividido em setores (conforme
abordagem utilizada pela Defesa Civil), e também, os estados hidrológicos destes setores. Um
setor pode estar em estado normal, atenção, alerta ou emergência, conforme a Figura 1.
16
Figura 1. Setores de Itajaí e seus estados. Murta em atenção (amarelo)
e Imaruí em alerta (laranjado)
Para que seja feita a identificação do estado dos setores de Itajaí foi utilizada uma técnica
de IA chamada de Sistema Especialista. O uso desta técnica se dá através do processamento de
regras que resultam em uma informação de saída, neste caso, a saída será o estado de cada setor
de Itajaí. As regras foram definidas juntamente com o coordenador da Defesa Civil, onde as
bases de cada setor são bem similares, sendo diferentes apenas na quantidade de variáveis
envolvidas e quantidade de regras de setor para setor.
O Sistema Especialista do sistema desenvoldido tem como especialista o coordenador da
Defesa Civil, por ser quem tem o conhecimento sobre as enchentes e este conhecimento foi
então, transportado para o software de maneira a simular e consequentemente automatizar o
trabalho do coordenador.
O sistema proposto é capaz de coletar dados sobre as variáveis que influenciam nos
estados dos setores de forma automática através de sites na Internet. Este é o método utilizado
atualmente pelos profissionais da Defesa Civil, portanto parte deste trabalho consistiu na
automatização da coleta dos dados. As informações encontradas nos sites são armazenadas
localmente. Em caso de as fontes estarem inacessíveis o sistema utiliza as informações
armazenadas localmente. Neste caso, o sistema alerta aos usuários que a simulação está sendo
feita com dados antigos.
Além disso, em caso de o coordenador da Defesa Civil obter informações através de
telefone ou outros meios, o sistema permite a inserção dos dados de entrada da simulação
manualmente, permitindo fazer uma previsão com dados mais atuais e confiáveis. Na Figura 2
17
apresenta-se uma tela do sistema onde as variáveis foram coletadas automaticamente e o usuário
está editando a chuva em milímetros para Itajaí.
Figura 2. Usuário editando as variáveis de entrada para o Sistema Especialista
Espera-se que o sistema possa ser útil para a Defesa Civil de Itajaí por automatizar o
processo de coleta de dados que auxiliará a tomada de decisões em épocas de enchente. O
sistema realiza esta busca automaticamente e apresenta os resultados podendo ajudar a tomar
decisões, como por exemplo, evacuar as pessoas com antecedência de determinados bairros ou
mesmo abrigos que estejam ameaçados pelas águas.
1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo geral deste TTC é desenvolver um sistema que faça uma previsão dos estados
hidrológicos de Itajaí definidos pela Defesa Civil, mostrando (em um mapa) a situação atual ou
futura de alguns dos setores.
18
1.2.2 Objetivos Específicos
Os objetivos específicos deste projeto de pesquisa são:
Pesquisar e documentar conceitos relacionados a Sistemas Especialistas;
Pesquisar e analisar o funcionamento do framework The Java Embedded Object
Production System (JEOPS) para implementar o Sistema Especialista;
Criar os arquivos contendo as regras do Imaruí e da Murta que serão utilizados
para processar seus estados;
Especificar e modelar o software utilizando técnicas de engenharia de software;
Implementar o sistema;
Testar a implementação junto aos profissionais da Defesa Civil de Itajaí.
1.3 METODOLOGIA
A metodologia utilizada para elaborar o capítulo de Fundamentação Teórica envolveu
pesquisa bibliográfica no que diz respeito à leitura de textos selecionados, textos estes coletados
na Internet como: artigos, vídeos, conversas por e-mail com especialistas em Oceanografia e
áreas relacionadas às enchentes. Além disso, também foram realizados telefonemas e reuniões
com alguns destes especialistas, em especial com o coordenador da Defesa Civil de Itajaí.
Estudou-se também a possibilidade da criação de um modelo para a cidade de Itajaí,
porém a complexidade de se criar um modelo que apresente um resultado razoavelmente bom,
ou seja, próximo da realidade comparado a uma enchente, é algo ainda mais complexo que à
utilização e adaptação de um modelo já existente.
Também foi constatado que se utiliza bastante uma técnica de IA chamada de RNA.
Porém, a falta de dados históricos das enchentes em Itajaí tornou inviável o uso de uma RNA por
não se ter uma quantidade suficiente de dados históricos para treinar uma rede. Segundo o
coordenador da Defesa Civil de Itajaí, existe uma forte carência de dados históricos. Tem-se
registro apenas de dados referente as enchentes de 2008 e 2011, o que é relativamente pouco
para se poder utilizar RNA.
Portanto, decidiu-se utilizar outra técnica de IA denominada Sistema Especialista. Nesta
técnica, foram criadas regras com o auxílio do coordenador da Defesa Civil e utilizadas no
sistema. As regras foram criadas para dois dos setores de Itajaí (Imaruí e Murta), a fim de
19
descobrir o estado hidrológico dos mesmos, se estão em estado normal, atenção, alerta ou
emergência.
No Capítulo 2, foi realizada a busca por softwares similares, ou seja, sistemas que fazem
a simulação dos estados hidrológicos de uma cidade como referência para a criação do software
para a cidade de Itajaí.
No Capítulo 3 consta a parte dos requisitos funcionais e não-funcionais e um diagrama de
sequência que contribuíram para a implementação do software.
No Capítulo 4 são apresentados alguns detalhes do processo de implementação do
software. Os frameworks que foram necessários estudar para a criação do Sistema Especialista, a
busca automática pelas informações através do código HTML dos sites de previsão do tempo e
dos gráficos que o sistema gera do nível do rio nos diferentes pontos do sistema de telemetria de
Itajaí.
No Capítulo 5 são apresentados os testes e validações a serem realizados na base de
regras do Sistema Especialista. Este teste foi realizado junto a Defesa Civil a fim de encontrar
falhas nas regras, ou mesmo situações não previstas onde seria necessária a criação de novas
regras. Através das regras, foram realizadas simulações entrando com os valores para as
variáveis da simulação e verificando se o resultado gerado corresponde com o esperado.
No Capítulo 6 são apresentadas as conclusões finais e também sugestões para trabalhos
futuros visando a continuação deste.
1.4 ESTRUTURA DO TRABALHO
Este documento está estruturado em seis capítulos. O Capítulo 1, Introdução, apresentou
uma visão geral do trabalho.
No Capítulo 2, Fundamentação Teórica, é apresentada uma descrição sobre simulação,
bem como o uso desta na prevenção de desastres naturais. Neste capítulo, também é feita uma
descrição sobre as enchentes, inundações e enxurradas. Além disto, descreve-se alguns métodos
de previsão de enchentes. Também são abordas as características específicas das enchentes de
Itajaí, o uso de uma técnica de IA chamada de Sistema Especialista, que foi implementada no
sistema proposto e por fim, os softwares similares.
20
O Capítulo 3 apresenta o projeto detalhado do sistema que foi desenvolvido, incluindo a
sua especificação e a sua modelagem em UML.
O Capítulo 4 apresenta os detalhes da implementação do sistema. Já o Capítulo 5
apresenta os testes e validação que foram realizados logo após sua implementação.
Concluindo, no Capítulo 6, apresenta-se as conclusões finais e também sugestões para
trabalhos futuros como alternativas para a continuação deste trabalho.
2 FUNDAMENTAÇÃO TEÓRICA A fundamentação deste TTC aborda os seguintes assuntos: (i) conceitos de enchentes,
inundações e enxurradas; (ii) histórico dos métodos para previsão de enchentes e os modelos
atualmente usados no mundo; (iii) o conceito e o uso de Sistemas Especialistas para prever a
situação dos setores de Itajaí; (iv) caracterização da área de estudo; (v) o histórico das
inundações no Vale do Itajaí; e (vi) a apresentação de softwares similares.
2.1 ENCHENTES, INUNDAÇÕES E ENXURRADAS
A frequência com que as inundações ocorrem se altera devido a modificações na bacia
hidrográfica. Segundo Plate (2002 apud Kobiyama, Mendonça et al. 2006), a pressão exercida
pelo crescimento populacional faz com que a parcela mais pobre da população seja excluída, e
estas pessoas acabam vivendo na planície de inundação. Isto ocorre geralmente nas áreas
urbanas. Sendo assim, deveriam ser introduzidos novos conceitos e práticas para se conviver
melhor com este fenômeno.
Quando o volume de água que atinge o leito de um rio é superior à capacidade de
drenagem de sua calha normal, também chamado de leito menor ou calha principal, acontecem
os fenômenos denominados enchentes. Quando é excedida a capacidade de escoamento
acontecem às inundações das áreas ribeirinhas também conhecidas como planícies de inundação
ou leito maior do rio (CPRM, 2004 apud Silva 2006). Na Figura 3 é mostrada uma inundação.
21
Figura 3. Perfis de ocupação de áreas inundáveis Fonte: Silva (2012).
A ocorrência de inundação depende das condições meteorológicas e hidrológicas. O
conhecimento meteorológico de longo prazo é muito pequeno devido ao grande número de
fatores envolvidos nos fenômenos meteorológicos e à interdependência de processos físicos em
que a atmosfera está sujeita. As condições hidrológicas que causam inundações podem ser de
caráter natural ou artificial (SILVA, 2006).
As condições naturais são as que ocorrem pela bacia em seu estado normal. Algumas
destas condições podem ser: relevo, tipo de precipitação, cobertura vegetal e capacidade de
drenagem (SILVA, 2006).
As condições artificiais são as ações executadas pelo homem. Alguns exemplos são:
obras hidráulicas, urbanização, desmatamento, reflorestamento e uso agrícola. A bacia rural é
22
mais permeável por ter mais vegetação, menor escoamento na superfície e drenagem lenta. Já a
bacia urbana e mais impermeável devido às construções como: telhados, ruas e calçadas,
produzindo uma aceleração no escoamento superficial. A urbanização e o desmatamento
contribuem para o aumento da frequência das inundações nas cheias médias e pequenas (TUCCI,
2002 apud Silva 2006).
Segundo Kobiyama, Mendonça et al. (2006), outra definição diz que a inundação, que é
popularmente tratada como enchente é o aumento do nível do rio além da sua vazão normal,
ocasionando transbordamento de suas águas nas áreas próximas a ele. Quando o rio não
transborda mesmo estando praticamente cheio, tem-se uma enchente e não inundação. Portanto,
cientificamente, os termos “inundação” e “enchente” devem ser diferenciados.
As inundações são classificadas pela Defesa Civil em função da magnitude
(excepcionais, de grande magnitude, normais ou regulares e de pequena magnitude) e também
em função do padrão evolutivo (inundações graduais, inundações bruscas, alagamentos e
inundações litorâneas) (CASTRO, 2003 apud Kobiyama, Mendonça et al. 2006). Apesar dos
diversos termos, a maioria das situações de emergência ou estado de calamidade pública é
causada pelas inundações graduais e bruscas.
Segundo Castro (2003 apud Kobiyama, Mendonça et al. 2006), quando a água eleva-se
de forma lenta e previsível, mantêm-se como cheia durante certo tempo e escoa-se
gradualmente, temos as inundações graduais. Esta inundação não costuma ser tão violenta,
porém a área de impacto é extensa. Castro ainda cita rios como: Amazonas, Nilo e Mississipi, e
que este tipo de inundação possui uma sazonalidade (periodicidade).
Popularmente conhecida como enxurrada, a inundação brusca ocorre principalmente em
regiões de relevo acidentado devido a chuvas intensas e concentradas (CASTRO, 2003 apud
Kobiyama, Mendonça et al. 2006). Ela acontece em tempo próximo ao evento da chuva que a
causa. Apesar de a área de impacto ser bem menor do que acontece nas inundações graduais, a
elevação das águas ocorre repentinamente, causando mais mortos pegos desprevenidos.
23
Figura 4. Diferenças entre inundação gradual e brusca
Fonte: Kobiyama, Mendonça et al. (2006).
Baker (1994 apud Kobiyama, Mendonça et al. 2006) menciona que cientistas divergem
sobre as definições a serem adotadas. Few et al. (2004 apud Kobiyama, Mendonça et al. 2006)
também citam que devido as diferentes interpretações e terminologias utilizadas para as
inundações, existe uma dificuldade na padronização das categorias das mesmas.
Várias vezes as inundações graduais vêm sendo registradas como inundações bruscas e
vice versa. Porém, nem sempre isto ocorre pela falta de conhecimento, mas sim devido à
dificuldade de identificação do fenômeno. Além das diferentes definições, algumas
características são similares entre as inundações, ocorrendo tanto nas inundações graduais como
nas bruscas (KOBIYAMA, MENDONÇA ET AL., 2006).
2.2 MÉTODOS DE PREVISÃO DE ENCHENTES Os modelos matemáticos hidrológicos começaram a tomar forma de fato nos últimos 50
anos, e esta evolução está totalmente ligada ao uso dos computadores a partir dos anos 50
(FAYAL, 2008).
A partir da década de 80, com os estudos sobre o impacto ambiental, além da vazão, os
modelos passaram a quantificar outras variáveis envolvidas no escoamento da água sobre o solo
(FAYAL, 2008).
24
A água que escoa nos rios e lagos está interligada aos processos que ocorrem nas áreas
das bacias, watersheds. Para que a modelagem hidrológica seja o mais precisa possível nas áreas
que fazem o uso da água ou necessitam de informações sobre o ciclo hidrológico, é necessária a
compreensão destes diversos processos (FAYAL, 2008).
2.2.1 Histórico dos Métodos de Previsão de Enchentes
Os primeiros estudos hidrológicos que se tem registro possuíam objetivos bem práticos.
Há 4000 anos, foi instalada uma escala para leitura do nível do rio Nilo chamada de “nilômetro”.
A taxa de imposto cobrada era proporcional ao nível do rio Nilo. Cerca de 2000 anos, na Índia,
tem-se a primeira referência à medição de chuva (FAYAL, 2008).
Sobre a modelagem hidrológica, esta vem evoluindo, desde o Método Racional até os
modelos físico-distribuídos. Os grandes avanços começaram realmente a partir de 1930, quando
governos de países desenvolvidos começaram a desenvolver programas de pesquisas
hidrológicas. Em 1932, Sherman criou o Hidrograma Unitário. Em 1933, Horton desenvolveu a
teoria da infiltração, cujo modelo, a não ser para solos rasos e desprovidos de vegetação, não
funciona bem para a quantificação do escoamento. Em 1939, MacCarthy desenvolveu um
modelo de escoamento em rios, baseando-se no modelo Muskingun e Puls para o escoamento
em reservatório (FAYAL, 2008).
Na década de 50, com a disponibilidade do computador e do aprimoramento de técnicas
numéricas e estatísticas, houve um acelerado crescimento de modelos semi-conceituais de
transformação precipitação-vazão como os modelos SSARR. Estes modelos utilizam funções
empíricas e a equação da continuidade para cada uma das partes. Em seguida, vários modelos
foram propostos se diferenciando no maior ou menor detalhamento do ciclo hidrológico ou
propostas de equações empíricas (FAYAL, 2008).
Os modelos semi-conceituais têm sido bastante utilizados na engenharia para a resolução
de problemas, como: balanço hídrico, extensão de séries, vazão de projeto a partir da
precipitação, previsão em tempo real e impacto de modificação do uso do solo. Na maioria das
vezes, os resultados obtidos por eles atendem a maioria dos problemas existentes. Porém, a
implementação e calibração destes modelos podem apresentar diversas dificuldades, requerendo
robustas ferramentas matemáticas, grande quantidade de dados de calibração e certo grau de
experiência técnica ao utilizar o modelo HSU (FAYAL, 2008).
Juntamente com os modelos semi-conceituais, foram desenvolvidos os modelos
empíricos. Os primeiros modelos empíricos eram gráficos, como o método coaxial. Apesar do
25
grande sucesso do uso de modelos empíricos na previsão em tempo real, estes modelos
apresentam certas dificuldades no levantamento de seus parâmetros (FAYAL, 2008).
Os anos 60 e 70 foram marcados pelo surgimento de vários outros modelos que
contribuíram com características singulares, dentre outros se destacando o Stanford IV que
introduziu a distribuição espacial da avaliação da infiltração (FAYAL, 2008).
No final dos anos 70, duas tendências surgiram:
Como os modelos apresentavam muitos parâmetros, a primeira foi a de utilizar somente
os parâmetros dos processos mais importantes na modelagem hidrológica. Através desta
simplificação é possível obter resultados equivalentes, devido à pequena sensibilidade
dos demais parâmetros. A partir de então, foram surgindo modelos com menos funções e
parâmetros (IPH II e SMAP) e mais eficientes para a engenharia. Uma das aplicações
mais beneficiadas com isto foi a previsão em tempo real (FAYAL, 2008);
Com o aumento da preocupação ambiental e a alteração do uso do solo, desenvolveram-
se modelos com maior base física, relacionando as características físicas do sistema com
os parâmetros, reduzindo o empirismo na estimativa destes parâmetros. Neste caso,
destacam-se modelos na área de agricultura, com o objetivo de avaliação do escoamento,
sedimentos e componentes de qualidade da água, o ANSWERS. Em relação aos modelos
hidrológicos que retratavam somente a transformação chuva-vazão com fundamentos
hidrológicos físicos, temos o Topmodel e o SHE. Os modelos IPH I, SMAP,
ANSWERS, Topmodel e SHE são físico-distribuídos por utilizarem algum atributo
espacial de discretização e introduzirem expressões dinâmicas nos processos. Eles são
distribuídos por módulos ou por unidade hidrológica, considerando com maior detalhe a
variabilidade espacial das características da bacia e da precipitação. Porém, eles não
necessariamente apresentam melhores resultados que os modelos tradicionais. O seu
benefício é o de poder retratar processos distribuídos (FAYAL, 2008).
Nas últimas décadas, os modelos hidrológicos se desenvolveram principalmente em dois
sentidos: modelos para pequenas bacias, representando com maior precisão e de forma
distribuída, os processos hidrológicos; e modelos para grandes bacias, tratando de forma
empírica a distribuição dos parâmetros em áreas de grande magnitude (FAYAL, 2008).
2.2.2 Modelos de Previsão Atualmente Usados no Mundo
No Brasil foram desenvolvidos vários modelos hidrológicos para previsão de afluência
de vazões e operação hidráulica dos reservatórios em tempo real, modelos estes para previsão a
curto, médio e longo prazo. Entre eles, destacam-se os modelos estocásticos: IPH, SMAP,
26
PREVAZ, PREVIVAZM, PREVIVAZ e PREVIVAZH. Os modelos estocásticos PREVIVAZ e
PREVIVAZH são bastante utilizados para a previsão de vazões médias semanais e diárias
(FAYAL, 2008).
Os principais modelos utilizados no Brasil e no mundo, são descritos a seguir:
PREVAZ: em longo prazo, em base mensal, foi tradicionalmente utilizado pela
ELETROBRÁS (Centrais Elétricas Brasileiras S.A.), este modelo é baseado em
modelagem estocástica de séries temporais, utiliza técnicas misturando as abordagens
tradicionais com modelos auto-regressivos e o método de Yevjevich de análise periódica
da série transformada. A partir de maio de 1993, algumas empresas do setor elétrico
começaram a utilizar o modelo PREVIVAZ de previsão de vazões semanais (FAYAL,
2008);
PREVIVAZ e PREVIVAZM: o PREVIVAZ é um modelo para previsão de vazões
médias semanais constituído por um conjunto de alternativas de metodologias para
previsão de vazões em até seis semanas (FAYAL, 2008).
A versão 1.1 do PREVIVAZ foi entregue em dezembro de 1996 e, a partir de então,
começou a ser utilizado e aperfeiçoado. A partir de maio de 2000, optou-se definitivamente por
substituir o PREVAZ pelo PREVIVAZ nas previsões de vazões semanais.
O modelo PREVIVAZM tem como objetivo fornecer previsões mensais de afluências a
aproveitamentos hidroelétricos do Sistema Hidroelétrico Brasileiro em até 12 meses, sendo uma
ferramenta para estudos especiais de verificação de condições de atendimento da demanda
energética anual (FAYAL, 2008).
Os modelos PREVIVAZ e PREVIVAZM adotam uma abordagem para previsões de
vazões temporais, que consiste no uso do valor esperado de séries temporais. Sendo assim, a
previsão considera não apenas o comportamento conhecido das precipitações, mas também o
fenômeno denominado tendência hidrológica. A tendência hidrológica é o termo utilizado para
se referir à tendência observada das séries históricas e vazões fluviais naturais, ou seja, se em
certa época (semana ou mês), a vazão do rio foi superior a média daquela época, é provável que
em semanas ou meses, a vazão continuará subindo. Da mesma forma se a vazão for inferior à
média (FAYAL, 2008).
Modelos IPH – estes modelos foram desenvolvidos no Instituto de Pesquisas Hidráulicas
da Universidade Federal do Rio Grande do Sul e podem ser aplicados em diferentes contextos,
recebendo uma numeração que representa a versão. Uma característica positiva destes modelos é
o reduzido número de parâmetros (FAYAL, 2008).
27
Devido à complexidade em usar estes modelos e pelo fato de que estes não consideram
todas as variáveis que influenciam nas enchentes em Itajaí, como: previsão de chuva, nível do
rio em Blumenau, nível do rio em Brusque, nível do rio em Itajaí, situação das comportas ao
longo do rio Itajaí-Açú, profundidade do rio, entre outros, decidiu-se utilizar Sistemas
Especialistas na proposta deste TTC modificando um pouco o foco inicial que era de simular o
nível do rio e a mancha de inundação na cidade, para uma simulação da situação dos setores de
Itajaí através de regras em que o Sistema Especialista mostrará se os setores estarão em situação
normal, em situação de atenção, em situação de alerta ou em situação de emegência.
2.3 SISTEMAS ESPECIALISTAS Os elementos que compõem o processo humano de tomada de decisão como: objetivos,
fatos, regras, mecanismos de inferência e poda, podem geralmente ser reunidos em um programa
de computador classificado como um programa que possui IA, pois este programa está
automatizando o processo de raciocínio humano (LEVINE, DRANG, EDELSON, 1988).
Este tipo de estrutura de software, baseada na identificação separada de seus diferentes
componentes, é o principal fator que diferencia a programação de IA da programação comum e a
torna superior. Superiores pelo fato de mudanças poderem ser feitas sem abalar a estrutura
inteira de um programa. Identificando os elementos que formam o pensamento humano, pode-se
transferir a maneira de pensar para um programa que utilize IA (LEVINE, DRANG, EDELSON,
1988).
Ao contrário dos sistemas tradicionais, os Sistemas Especialistas possuem algumas
facilidades que aumentam a flexibilidade e eficiência, como: possibilidade para construção de
regras e tomada lógica de decisões sob imprecisão ou na ausência de informações. Em um
sistema tradicional, o método de busca é baseado no conhecimento previamente codificado.
Quando surge um novo conhecimento, o código tem que ser reescrito. Já os Sistemas
Especialistas podem recuperar novos fatos e regras e utilizá-los sem que seja modificada a
estratégia da busca (FERNANDES, 2003).
Os principais benefícios de um Sistema Especialista são: velocidade na determinação de
problemas, a decisão está fundamentada em uma base de conhecimento, segurança, exige um
número reduzido de pessoas para interagir com o sistema, estabilidade, dependência decrescente
de pessoal específico, flexibilidade, integração de ferramentas e evita a interpretação humana de
regras operacionais (FERNANDES, 2003).
28
2.3.1 Definindo os Objetivos
A primeira etapa é a de definição dos objetivos. É necessário saber que tipo de problema
se deseja solucionar e ser capaz de descrevê-lo em termos concretos para então se iniciar a
criação de um programa que o resolva (LEVINE, DRANG, EDELSON, 1988).
Figura 5. Componentes de um sistema de IA baseado em regras
Fonte: Adaptado de LEVINE, DRANG, EDELSON, 1988.
Considerando que um sistema de inteligência humana, ou seja, um ser humano é um
sistema capaz de atravessar uma rua com segurança e rapidez. Agora, este sistema se encontra
em um ponto de ônibus e tem apenas poucos minutos para decidir qual dos ônibus é mais
vantajoso. A meio quarteirão de distância é possível ver o ônibus que para em todos os pontos se
aproximando. Sendo assim, qual decisão tomar? Pegar este ônibus ou esperar pelo expresso? A
decisão de qual ônibus pegar é então o objetivo (LEVINE, DRANG, EDELSON, 1988).
Existe uma quantidade de fatos essenciais que devem ser considerados antes que se tome
uma decisão, todos estes baseados na experiência anterior de pegar ônibus. Por exemplo, quanto
tempo vai demorar para o ônibus expresso chegar? Algumas regras surgem graças à poda, como
“SE é necessário esperar mais de 10 minutos pelo ônibus expresso, ENTÃO levará mais tempo
para que se chegue ao trabalho do que através do ônibus que para em todos os pontos”. As regras
funcionam a todo o tempo, mesmo as que estão inseridas no mecanismo de poda, que
supervisiona os processos de pensamento a fim de detectar as regras específicas que são
necessárias para tomar a decisão imediatamente. Os fatos e as regras relacionados às tarefas para
que se chegue ao trabalho não têm relação com o objetivo de se chegar lá. Do mesmo modo,
Definindo os objetivos
Definindo a solução
Definindo fatos
Obtendo dados
Obtendo novos objetivos via regras e inferências
O mecanismo de inferência obtem novos fatos para verificar se os objetivos foram encontrados corretamente
29
fatos e regras são irrelevantes em um sistema de IA, exceto os que ajudam a alcançar o objetivo
definido (LEVINE, DRANG, EDELSON, 1988).
Outro exemplo de definição de objetivo pode ser o de determinar se uma criança tem
problema de aprendizado em aritmética. Este objetivo pode ser dividido em diferentes áreas da
aritmética e expresso de várias maneiras, como (LEVINE, DRANG, EDELSON, 1988):
Será que PESSOA tem problema de aprendizado com a ADIÇÃO?
Será que PESSOA tem problema de aprendizado com a SUBTRAÇÃO?
Será que PESSOA tem problema de aprendizado com a MULTIPLICAÇÃO?
Será que PESSOA tem problema de aprendizado com a DIVISÃO?
O objeto PESSOA é utilizado apenas como uma forma genérica para identificar qualquer
indivíduo, neste caso, qualquer aluno que esteja apredendo aritmética. Assim como poderia ter
sido usado ônibus como uma variável para dizer que um ônibus qualquer percorre tal trajeto
(LEVINE, DRANG, EDELSON, 1988).
2.3.2 Definindo os Fatos
Os fatos são essenciais em um sistema de IA, pois através deles é que se alcançam os
objetivos. Para alcançar o objetivo de decidir qual ônibus pegar, alguns fatos precisaram ser
considerados como apoio para aquela situação. Assim como toda situação tem um cenário
particular, todo objetivo tem seus próprios fatos (LEVINE, DRANG, EDELSON, 1988).
Considerando apenas um dos objetivos aritméticos, pode-se observar como o uso dos
fatos é implementado (LEVINE, DRANG, EDELSON, 1988):
Será que PESSOA tem problema de aprendizado em SUBTRAÇÃO?
A subtração é uma função que requer certas habilidades matemáticas e estas habilidades
são os fatos que apoiam os objetivos. Seguem algumas das habilidades que uma pessoa deve
dominar para ser capaz de realizar esta função (LEVINE, DRANG, EDELSON, 1988):
1. Subtrair dois números sem emprestar (2)
2. Subtrair dois números emprestando em uma única coluna (1)
30
3. Subtrair dois números emprestando em várias colunas (1)
Os números entre parênteses representam os pesos de cada habilidade, ou seja, a
importância de um em relação ao outro na avaliação do problema de aprendizado do indivíduo.
Cada um dos fatos define uma habilidade exigida para o domínio da subtração, e a inabilidade
em executar uma das técnicas indica um problema naquela área. Quanto maior o valor atribuído
a cada fato, maior a sua importância na contribuição para um problema de aprendizado em
subtração (LEVINE, DRANG, EDELSON, 1988).
2.3.3 Obtendo Dados
Uma que vez que os fatos foram definidos, é necessário adquirir os dados necessários
para instanciar as variáveis, ou seja, estabelecer o que as pessoas devem saber para poderem
realizar uma subtração. Mas agora é preciso descobrir quanto o sujeito, Fulano, sabe. E para isso,
os fatos devem ser convertidos em perguntas e as respostas em dados e devem ser utilizados até
que se atinja o objetivo. A seguir são apresentadas perguntas que devem ser feitas a fim de se
obter dados sobre os fatos listados em subtração (LEVINE, DRANG, EDELSON, 1988).
PESSOA consegue subtrair dois números sem emprestar?
PESSOA consegue subtrair dois números emprestando em uma coluna?
PESSOA consegue subtrair dois números emprestando em várias colunas?
Assim como a variável PESSOA deve ser alterada por um nome, neste caso Fulano, os
fatos representados por perguntas, devem ser substituídos pelas respostas. Sendo assim, as
instâncias de fatos se tornam em dados, ou seja, as respostas sim e não são os dados atribuídos
aos fatos (LEVINE, DRANG, EDELSON, 1988).
Esse processo de definição de fatos necessários ao entendimento da subtração através de
perguntas relacionadas a esses fatos é equivalente ao que o cérebro humano faz quando precisa
realizar uma decisão, por exemplo, qual ônibus tomar (LEVINE, DRANG, EDELSON, 1988).
Quando alguém se confronta com o dilema dos ônibus, nem todas as considerações são
as mesmas, pois uma pessoa pode tanto em viajar sentado como se preocupa com o fato de
chegar a tempo e vice-versa. Sendo assim, pensa-se em considerações para se chegar a uma
conclusão e é por isso que os números entre parênteses são chamados de fatores de peso. Alguns
aspectos da chegada ao trabalho são mais relevantes que outros, do mesmo modo que algumas
31
exigências para se realizar uma subtração são mais decisivas do que outras para se detectar um
problema de aprendizado (LEVINE, DRANG, EDELSON, 1988).
Uma resposta “não” para qualquer uma das perguntas anteriores referentes à subtração
indica que Fulano tem um problema com a técnica representada pelo fato. Já uma resposta “sim”
indica que Fulano possui determinada habilidade. Realizando-se a soma de todos os fatores de
peso associados às respostas “não”, tem-se uma indicação da gravidade do problema que Fulano
tem com a subtração (LEVINE, DRANG, EDELSON, 1988).
Questão 1 (2) = sim 0
Questão 2 (1) = não 1
Questão 3 (1) = não 1
Soma do fator de peso = 2
O número total que representa o grau do problema de aprendizado de Fulano é chamado
de soma dos fatores de peso. Este número serve para indicar se Fulano tem problemas com a
subtração e quão graves eles são. A soma máxima dos fatores de peso neste caso, indicando um
sério problema em subtração, aconteceria com “não” para todas as respostas e este número seria
o 4. No cenário do ônibus, um caso sério poderia ser a escolha por esperar pelo ônibus expresso
e chegar ao trabalho com uma hora de atraso e tendo que viajar o tempo todo em pé. Uma
análise que poderia ser feita é a de verificar o que de pior aconteceria em consequência de uma
decisão (LEVINE, DRANG, EDELSON, 1988).
2.3.4 Regras e Inferências
As regras de um sistema de IA devem ser planejadas para ajudar na avaliação dos dados
de forma que se possa alcançar o objetivo de descobrir se uma pessoa tem algum problema de
aprendizado em aritmética. Ainda considerando o caso da subtração, pode-se estabalecer uma
regra relacionada ao objetivo da subtração e chamá-la de regra da subração, tendo o seguinte
enunciado (LEVINE, DRANG, EDELSON, 1988):
SE a soma dos fatores de peso da subtração for maior que 1,
ENTÃO Fulano tem um problema de aprendizado em subtração.
32
Como no caso do Fulano, a soma dos fatores de peso é de 2, utilizando-se a regra de
subtração pode-se concluir que ele realmente tem um problema com subtração. A regra fornece
uma aplicação prática dos dados acumulados. O valor 1 na regra é chamado de limiar do nível de
decisão (LEVINE, DRANG, EDELSON, 1988).
Embora, ao invés de ter utilizado a regra da subtração, poderia ter sido utilizado um
conjunto de fatos que cobreria todas as possibilidades de a soma dos fatores de peso ser superior
a 1. A seguir são apresentados fatos necessários para cobrir todas as probabilidades e seus
fatores de peso, ou seja, um problema de aprendizado em subtração existe quando (LEVINE,
DRANG, EDELSON, 1988):
1. (S1$ = não) e (S2$ = sim) e (S3$ = sim)
Soma do fator de peso = 2
2. (S1$ = não) e (S2$ = sim) e (S3$ = não)
Soma do fator de peso = 3
3. (S1$ = não) e (S2$ = não) e (S3$ = sim)
Soma do fator de peso = 3
4. (S1$ = não) e (S2$ = não) e (S3$ = não)
Soma do fator de peso = 4
5. (S1$ = sim) e (S2$ = não) e (S3$ = não)
Soma do fator de peso = 2
A soma dos fatores de peso para cada conjunto de fatos é maior que 1, ou seja, a lista
anterior apresenta apenas cinco conjuntos diferentes de fatos e necessários para todas as
possibilidades, pois estas regras são totalmente abrangentes. É mais vantajoso programar uma
regra mais genérica do que vários fatos especializados. Um ser humano sem regras, novamente
comparado a um sistema, estaria esperando para atravessar uma rua, assaltado por um batalhão
de fatos e dados associados e sem um maneira de preocessá-los. Ninguém precisaria se
preocupar em tomar o ônibus, pois jamais conseguiria chegar até o ponto (LEVINE, DRANG,
EDELSON, 1988).
33
2.3.5 Verificação por Meio do Mecanismo de Inferência
Suponha-se que um assassinato tenha sido cometido onde uma pessoa é encontrada
trancada em um apartamento com três tiros. O médico-legista descarta a possibilidade de
suicídio por causa do ângulo dos ferimentos (processo de poda). A primeira coisa que a polícia
analisa é quem mais, além da vítima, tinha a chave do apartamento. O proprietário do
apartamento e vários vizinhos são interrogados e dizem que a pessoa assassinada tinha um amigo
que frequentava o apartamento. Investigações posteriores indicam que os dois discutiram
recentemente (LEVINE, DRANG, EDELSON, 1988).
Segundo FERNANDES (2003), existem duas maneiras de se validar as regras: através do
Forward Chaining (Encadeamento para Frente), onde se partindo de um ponto inicial, chega-se a
uma conclusão, e com o Backward Chaining (Encadeamento para Trás), que começa com uma
previsão e procura os valores que a confirmam.
A polícia tem agora um suspeito e é capaz de descobrir a partir de dados dos
interrogatórios, que o amigo da vítima é provavelmente o assassino (encadeamento para frente),
mas são necessárias evidências concretas. A melhor chance que se tem para descobrir o suspeito
em flagrante é através da arma do crime. Foi obtido então um mandado de busca para o
apartamento do amigo da vítima, foram procurados em todos os seus pertences, porém nada foi
encontrado. Depois de algum tempo, um detetive encontra um revólver dentro de uma lata de
lixo de um beco nas proximidades. Através das impressões digitais foi realmente comprovado
que a arma foi utilizada pelo amigo, e um teste de balística estabeleceu que aquela era a arma do
crime. Fim de caso. Obtendo-se novos dados e verificando se eram consistentes com a conclusão
original, a polícia pode atingir o objetivo de descobrir o assassino. O proceso de usar uma
conclusão para procurar por dados que a sustentem é chamado de encadeamento para trás. Neste
caso a conclusão é o suspeito e os dados, a arma (LEVINE, DRANG, EDELSON, 1988).
Em um programa de IA, o objetivo é comprovado através de um processo similar. O
objetivo foi atingido ao concluir que Fulano tem um problema de aprendizado em relação à
subtração, porém não foi determinado se o objetivo foi atingido corretamente. E para isso, deve-
se abordar o problema novamente com novos dados e regras. A regra a seguir comprovaria se
um indivíduo tem um problema de aprendizado em relação à subtração (LEVINE, DRANG,
EDELSON, 1988):
34
SE uma pessoa em um teste de subtração obtém um total de pontos abaixo da média,
ENTÃO essa pessoa obterá fatores de peso em subtração maiores que 1 (ou seja, a pessoa tem
um problema com subtração).
Sendo assim, para confirmar que foi alcançado o objetivo de identificar um problema de
aprendizado de subtração é preciso verificar se o número de pontios conseguidos em um teste de
subtração está abaixo da média (LEVINE, DRANG, EDELSON, 1988).
Através dos novos dados derivados do mecanismo de inferência, que assume que a
conclusão está correta, e comparando-os com os dados originais para verificação, tem-se um
caso de encadeamento para trás. O encadeamento para trás anda na direção contrária ao
encadeamento para frente, como o próprio nome sugere. Ao invés de se deslocar para um
objetivo definindo fatos e obtendo dados, o encadeamento para trás inicia após o objetivo ter
sido inicialmente alcançado (LEVINE, DRANG, EDELSON, 1988).
Se for constatado que Fulano tem um problema com subtração, o mecanismo de
inferência deve verificar se ele também recebeu notas baixas nos testes de subtração na escola.
Se isto ocorreu, então o objetivo foi atingido de forma correta. Caso as notas de seus testes não
foram baixas, os dados para alcançar o objetivo são insuficientes, e novos passos deverão ser
seguidos para comprovar o objetivo. Isto é, deve-se resolver o conflito em que Fulano ter
problemas em certas técnicas de subtração e o fato de suas notas terem alcançado a média
exigida (LEVINE, DRANG, EDELSON, 1988).
Figura 6. Configuração e operação de um programa de IA Fonte: Adaptado de LEVINE, DRANG, EDELSON, 1988.
Encadeamento para frente
Dado Obtendo dados
Obtendo novos objetivos via fatos, regras e
inferências
O mecanismo de inferência obtém novos fatos para verificar se os objetivos foram encontrados corretamente
Encadeamento para trás
35
2.3.6 Poda
A poda no cérebro humano guia a pesquisa por regras adicionais que comprovam o
objetivo até que todos os caminhos possíveis se esgotem. Pelo fato de o cérebro possuir uma
grande quantidade de informações armazenadas, pode existir várias regras que são acionadas no
alcance ou comprovação de apenas um objetivo, sendo que todas ou pelo menos algumas podem
ser chamadas em determinado momento (LEVINE, DRANG, EDELSON, 1988).
A poda permite que o computador pule ou processe qualquer parte do banco de
conhecimentos de acordo com sua relevância para determinado objetivo. Se Fulano obtiver um
bom desempenho em um teste de aritmética, então o mecanismo de poda passará por cima da
parte do banco de conhecimentos que diz respeito aos dados relativos às habilidades aritméticas.
Caso contrário, se o resultado neste mesmo teste for baixo, o mecanismo de poda guiará o
programa a executar o trecho referente a aquela seção. Isto ajuda a eliminar o processamento de
recursos que não ajudarão a alcançar o objetivo (LEVINE, DRANG, EDELSON, 1988).
A poda pode ser expressa como um conjunto de regras, sendo assim, o mecanismo de
poda utiliza de suas próprias regras especiais para tomar decisões. Uma regra de poda referente
ao exemplo da subtração poderia ser como a seguinte (LEVINE, DRANG, EDELSON, 1988):
SE os pontos obtidos no teste de subtração excederem o grau do aluno em dois ou mais
anos, ENTÃO pule a parte do programa que insere dados referentes a subtração e os avalia.
O objetivo da poda é o de apenas anular as considerações desnecessárias e irrelevantes
tanto no cérebro quanto em um sistema de IA. Um exemplo de poda para se chegar ao trabalho
poderia ser (LEVINE, DRANG, EDELSON, 1988):
SE estiver chovendo muito forte, ENTÃO ignore todas as informações relativas ao
ônibus, expresso ou não, e pegue o primeiro ônibus que passar.
2.3.7 Definindo Sistemas Especialistas
As áreas de interesse específico aos quais se pode modelar um sistema de IA, como
diagnosticar problemas de aprendizagem e tomar ônibus, são chamadas de domínios. Embora
seja inviável criar um programa que cubra qualquer domínio imaginável, muitos problemas
podem ser modelados desta forma, ou seja, definindo fatos e regras para se atingir objetivos
(LEVINE, DRANG, EDELSON, 1988).
36
Sistemas de IA geralmente são desenvolvidos para contextos de pequenos domínios, ou
seja, domínios que contenham uma quantidade administrável de informações. Um sistema de IA
criado para resolver problemas em um determinado domínio é conhecido por Sistema
Especialista. O conhecimento fornecido em um Sistema Especialista é fornecido por pessoas que
são especialistas em um domínio, em um determinado assunto. Os fatores de peso atribuídos às
técnicas de subtração representam um conhecimento que vem de pesquisas em um campo de
estudo. Todos os Sistemas Especialistas se baseiam em informações atuais e precisas sobre
determinado domínio (LEVINE, DRANG, EDELSON, 1988).
2.3.8 Regras Heurísticas
Suponha-se que um grupo de especialistas tenha sido chamado para resolver o seguinte
problema: há um derramamento de óleo em um rio, e qualquer uma das várias indústrias situadas
em suas margens pode ser a causadora deste derramamento. O objetivo é determinar a origem do
óleo para que seja detido (LEVINE, DRANG, EDELSON, 1988).
Um Sistema Especialista para este tipo de situação necessita de um mecanismo de
cálculos, como por exemplo: a taxa de dispersão do óleo na água, a direção e a velocidade da
corrente do rio, e outros fatores que podem ser considerados para se descobrir o local do
derramamento. Quando as devidas informações tiverem sido coletadas e a determinação do local
do derramamento tiver sido feita, um conjunto de regras especiais será utilizado para que se
tenha uma localização exata da fábrica, conforme as regras H1 e H2 logo em seguida. Estas
regras são denominadas de regras heurísticas e diferem das outras apresentadas anteriormente
pelo fato de não serem consideradas resultado de um conhecimento comum e reconhecido por
todos, elas são regras que apenas um especialista conhece (LEVINE, DRANG, EDELSON,
1988).
Regra H1: SE existe uma fábrica ao longo do rio a uma distância de 1 quilômetro da
localização calculada do derramamento, ENTÃO assuma que esta é a fábrica que causou o
derramamento.
Regra H2: SE existe mais de uma fábrica a uma distância de 1 quilômetro da localização
calculada do derramamento, ENTÃO assuma como primeira opção a fábrica que usa mais óleo
em suas operações.
37
Em um Sistema Especialista, um mecanismo de poda que utiliza regras heurísticas é
chamado de mecanismo de pesquisa heurística. Quando o mecanismo de pesquisa heurística
tiver concluído qual é a fábrica que mais provavelmente está causando o derramamento, o
Sistema Especialista poderá então aplicar outro conjunto de regras para tentar assegurar que a
fábrica X é a fonte. Por exemplo, pontos vulneráveis do sistema de encanamento de óleo da
fábrica poderiam ser analisados com prioridade. A regra heurística a seguir poderia ser útil para
esta situação (LEVINE, DRANG, EDELSON, 1988):
SE a pressão do óleo na localização 1 da fábrica for menor que a pressão da água do rio
ao redor, ENTÃO examine a localização 32 do encanamento.
Apenas uma pessoa abituada a estes problemas na fábrica saberia esta regra por se tratar
de uma regra heurística (LEVINE, DRANG, EDELSON, 1988).
Figura 7. Como a poda funciona em um Sistema Especialista Fonte: Adaptado de LEVINE, DRANG, EDELSON, 1988.
2.3.9 Quadro-Negro
Não é raridade se deparar a um problema que não possa ser resolvido por apenas um
Sistema Especialista. No problema da mancha de óleo, apenas um Sistema Especialista foi capaz
de encontrar a localização do derramamento, mas para conter o derramamento, outra técnica
deve ser utilizada. O Sistema Especialista chamado para conter o derramamento necessitaria de
informações que o Sistema Especialista que encontrou a origem do derramamento (LEVINE,
DRANG, EDELSON, 1988).
Dado
Mecanismo de pesquisa heurística
SE condição A ENTÃO regras
para A
SE condição B ENTÃO regras
para B
38
Sendo assim, o segundo Sistema Especialista utilizaria seus cálculos e mecanismos de
pesquisa heurística para analisar o problema e poderia recomendar determinado produto químico
que seria o mais adequado para neutralizar o óleo. A comunicação entre estes Sistemas
Especialistas ocorre através de um mecanismo conhecido como quadro-negro (LEVINE,
DRANG, EDELSON, 1988).
O quadro-negro é um espaço compartilhado entre os Sistemas Especialistas na memória
do computador. Então, sempre que um Sistema Especialista precisar das informações lá contidas
para alcançar seus objetivos, o mesmo poderá acessá-las. O quadro-negro é então uma estrutura
que contém informações que podem ser utilizadas por Sistemas Especialistas cooperativos
(LEVINE, DRANG, EDELSON, 1988).
2.3.10 Criando um Sistema Especialista
Para a criação de um Sistema Especialista é necessário ter um grupo formado por um
especialista e um engenheiro de conhecimentos para a coleta dos dados, das regras e das regras
heurísticas, para então, criar um sistema de IA (LEVINE, DRANG, EDELSON, 1988).
2.3.11 Conclusões
Optou-se pelo uso de Sistema Especialista pelo fato de não se ter histórico das enchentes,
tornando-se inviável o uso de RNAs (que é uma técnica bastante usada para previsão de
enchentes), e também, os modelos matemáticos existentes serem complexos de compreender e
aplicar em Itajaí. Além de complexos, os modelos encontrados não levam em consideração todas
as variáveis que influenciam na ocorrência de uma enchente em Itajaí, como: nível da água do
rio Itajaí-Açú em outras cidades como Blumenau e Brusque, as barragens estarem abertas ou
não, condições do solo podendo este estar encharcado e receber mais água ainda que escoasse
das cidades do médio e alto Vale do Itajaí, nível da maré, etc. Sendo assim, um Sistema
Especialista foi aplicado e suas regras foram obtidas com os profissionais da Defesa Civil, afim
de que se possa simular o estado dos setores de Itajaí, onde cada setor pode estar em situação
normal, atenção, alerta ou emergência.
39
2.4 CARACTERIZAÇÃO DA ÁREA DE ESTUDO
2.4.1 O Município
A área de estudo localiza-se no município de Itajaí – Santa Catarina, que está localizado
pelas coordenadas Latitude Sul – 27°50’ e Longitude Oeste 48°39', na região do Vale do Itajaí
(MAPS OF WORLD, 2012). Na Figura 8 pode-se verificar a posição do município.
Figura 8. Localização de Itajaí no Brasil
Fonte: Adaptado de TRANSPI (2012).
De acordo com o censo do IBGE (2012), o município de Itajaí possui uma população de
183.373 habitantes, em uma área de 289 km².
A cidade possui 37 bairros limitando-se, ao norte, com o rio Itajaí-Açú (município de
Navegantes); ao Sul, Balneário Camboriú e Camboriú; a Oeste, Gaspar; a Leste pelo Oceano
Atlântico; a Sudoeste, Brusque e a Noroeste com Ilhota (WIKIPÉDIA, 2012).
O estuário do rio Itajaí-Açú recebe o aporte de uma bacia de drenagem de 15.500 km²
(Figura 9), sendo a maior bacia da Vertente Atlântica (VA) catarinense. A bacia do Itajaí-Açú
está entre as duas maiores bacias da VA que são a bacia do rio Itapocu ao norte, com 2.930 km²
e a bacia do rio Tijucas ao sul, tendo 2.420 km² (SCHETTINI, 2001).
2.4.2 O Rio Itajaí-Açú
O estuário1 do rio Itajaí-Açú localiza-se no litoral norte de Santa Catarina, 80 km ao norte
da capital Florianópolis, desaguando no Oceano Atlântico. Este sistema possui uma grande
1 Estuários: são corpos de águas restritos onde ocorre o encontro da água marinha com a água doce oriundo da drenagem continental, tendo uma conexão com o mar aberto Cameron & Pritchard (1963 apud Schettini 2001), e com o seu limite continental sendo o limite dos efeitos da maré (FAIRBRIDGE, 1980 apud Schettini 2001).
40
importância econômica para o município de Itajaí bem como a região do Vale do Itajaí, pois nele
está localizado o porto de Itajaí e também o porto de Navegantes, além de diversas indústrias
pesqueiras instaladas em ambas as margens das cidades de Itajaí e Navegantes, sendo a região de
maior desembarque pesqueiro do Brasil (SCHETTINI, 2001).
Figura 9. A bacia hidrográfica do rio Itajaí-Açú no contexto da linha da costa de Santa Catarina, com indicação das principais cidades costeiras e do Vale do Itajaí, e localização na América Latina no detalhe Fonte: Schettini (2002).
O rio Itajaí-Açú é constituído pela confluência dos rios Itajaí do Sul e Itajaí do Oeste, na
cidade de Rio do Sul, recebendo aporte do Itajaí do Norte ou Hercílio um pouco a jusante. Os
três tributários citados apresentam dimensões similares. Na altura em que o rio Itajaí-Açú recebe
o aporte do Itajaí-Mirim, ele passa a ser chamado apenas de rio Itajaí. Algumas das cidades que
compõem o Vale do Itajaí são: Itajaí, Blumenau e Rio do Sul. No Médio e Baixo Vale as
atividades industriais são as que mais predominam, já no Alto Vale, pratica-se as atividades
agropecuárias (SCHETTINI, 2001).
Além da importância econômica, o sistema apresenta grande importância ecológica para
a costeira regional sendo o maior sistema fluvial entre o sistema lagunar Patos-Mirim no Rio
Grande do Sul, 700 km ao sul, e o rio Ribeira do Iguape em São Paulo, 300 km ao norte.
2.5 HISTÓRICO DAS INUNDAÇÕES NO VALE DO ITAJAÍ
2.5.1 As Enchentes de 1983 e 1984
As enchentes de 1983 e 1984 marcaram a história de Santa Catarina pela gravidade.
Como acontecimentos periódicos, elas tendem a cair no esquecimento pela população pouco
41
tempo depois que os rios voltam ao seu curso normal. Porém, estas enchentes foram
consideradas atípicas, permanecendo inéditas e inesquecíveis para quem habita o estado e
principalmente o Vale do Itajaí, uma das regiões mais castigadas de Santa Catarina sofrendo
profundas mudanças econômicas, políticas e sociais. Na Figura 10 é possível verificar uma das
áreas mais castigadas, a região central de Blumenau invadida pelas águas do rio Itajaí-Açú em
1983 e a mesma área em junho de 2008 (FRAGA, 2009).
(a)
(b)
Figura 10. (a) Blumenau em 1983; (b) Blumenau em 2008
Fonte: Fraga (2009) apud Arquivo Público de Blumenau e Diário Catarinense (2008).
As chuvas vinham sendo intensas desde fevereiro de 1983. Já em 4 de março do mesmo
ano, o rio Itajaí-Açú ultrapassou o seu nível crítico pela primeira vez atingindo a marca de 9,95
metros no centro de Blumenau. No dia 20 de maio, o rio novamente transbordou, desta vez
alcançando 12,06 metros, causando prejuízos maiores (FRAGA, 2009).
No início de junho de 1983 os rios começaram a avolumar-se atingindo 15,37 metros
durante a madrugada do dia 8 para 9, em Blumenau. Noventa por cento da área urbana já estava
alagada com exceção de bairros mais afastados e mais altos em relação aos rios (FRAGA, 2009).
A preocupação com enchentes no Vale do Itajaí já existe há décadas devido à frequência
das inundações e os grandes prejuízos causados por estas. Com base na enchente de 1957, foram
criados projetos para conter as cheias e controlar o volume de água no rio Itajaí-Açú. Nestes
estudos foi definida a construção de cinco barragens, mas apenas três foram concretizadas: a de
José Boiteux (Norte), de Ituporanga (Sul) e a de Taió (Oeste) (FRAGA, 2009).
42
Só existiam duas concluídas e em funcionamento na enchente de 1983 e não puderam
suportar o volume de água ultrapassando dois metros acima das suas capacidades, afetando as
cidades a jusante como Rio do Sul, Ituporanga, Taió, Blumenau, entre outras (FRAGA, 2009).
Foram atingidos 162 municípios em todo estado numa área de 84.000 km². Na época,
Santa Catarina possuía 199 municípios, com pouco mais de 95.000 km² de área.
Aproximadamente 88% do território catarinense ficou alagado e a maioria das cidades em estado
de emergência e/ou calamidade pública (FRAGA, 2009).
Em 1984, o fenômeno aconteceu a partir de 6 de agosto deixando a área da bacia do
Itajaí-Açú submersa por 3 dias. Oitenta e dois municípios dos 199 do estado foram castigados
pelas enchentes, equivalendo à área de 36.500 km², 38% do território do estado de Santa
Catarina. Ocorreram 19 mortes e 255.885 pessoas ficaram desabrigadas (FRAGA, 2009).
Na bacia do Itajaí, 158.000 pessoas ficaram desabrigadas em 1983, sendo que só em
Blumenau foram 50.000 (FRAGA, 2009).
2.5.2 A Enchente de Novembro de 2008
Após 25 anos das grandes enchentes de 1983 e 1984, o Vale do Itajaí volta a ser
castigado com mais uma enchente de grande porte em novembro de 2008 com proporções e
ações naturais diferenciadas, porque além do aumento do nível da água, os morros
desmoronaram sobre ruas, casas e pessoas, causando um número de mortos e atingidos não
vividos na década de 80, conforme a Figura 11 fotografada em Blumenau (FRAGA, 2009).
(a)
(b)
Figura 11. (a) Enchente de 2008 em Blumenau; (b) Deslizamentos de 2008 em Blumenau
Fonte: Fraga (2009) apud Arquivo Público de Blumenau e Diário Catarinense (2008).
43
Em novembro de 2008, os acidentes ambientais não só atingiram o Vale do Itajaí, bem
como mais da metade da costa de Santa Catarina, desde Florianópolis até Joinville. Mais de 1,5
milhões de pessoas foram afetadas direta e indiretamente em 63 cidades em situação de
calamidade pública e emergência. Em 16 destas cidades ocorreram mortes: 133 até dezembro de
2008 e mais de 10 desaparecidos, tendo mais de 300 pessoas com leptospirose, principalmente
em Blumenau, Gaspar, Ilhota, Jaraguá do Sul e Luiz Alves (FRAGA, 2009).
Itajaí teve maiores prejuízos financeiros pelo fato da destruição dos berços de atracação
do porto devido ao volume excessivo de água. O porto vinha perdendo 35 milhões de dólares
norte-americanos diariamente desde novembro, sendo que antes das enchentes o porto chegava a
arrecadar 40 milhões por dia. O porto de Itajaí emprega 14.000 pessoas. O setor turístico
catarinense também foi prejudicado e estima-se ter um prejuízo por volta de 120 milhões de
reais (FRAGA, 2009).
Entre os principais fatores que influenciam as enchentes em Itajaí, destacam-se, JICA
(2011):
Altitudes de alguns bairros são extremamente baixas (entre 1.0 – 3.0m). Estes
bairros inundam mesmo com pequenas enchentes ou ressacas;
Altitude da região do canal retificado do rio Itajaí Mirim é alta (3.0 – 5.0m);
Elevação do nível da água do rio Itajaí-Açú e a vazão;
Enchente que vem da montante do rio Itajaí Mirim, ou seja, mais próximo da
nascente, e também, a enchente que vem a montante do próprio rio Itajaí-Açú e os
afluentes.
2.5.3 A Enchente de Setembro de 2011
As fortes chuvas no estado de Santa Catarina fizeram com que o rio Itajaí-Açú atingisse a
marca de 12,60 metros, alagando cidades e desabrigando diversos moradores (VEJA, 2012).
A cidade de Itajaí chegou a ficar com 60% de sua área tomada pelas águas dos rios Itajaí-
Mirim e Itajaí-Açú relembrando a enchente de 2008, há três anos, onde a água invadiu 80% da
cidade. A enchente de 2011 teve uma menor intensidade em relação à de 2008, porém bairros
inteiros chegaram a ficar submersos e, em algumas localidades, a altura da água superou os três
metros (VEJA, 2012).
Os abrigos preparados pela Defesa Civil foram lotados por uma multidão. Foram
disponibilizados pela prefeitura 18 locais, entre ginásios de esportes, escolas públicas e salões
44
paroquiais. Até a noite de sábado, 10 de setembro, 3.202 pessoas estavam instaladas nos abrigos
e outras 30.000 tiveram que deixar suas casas (VEJA, 2012).
De acordo com a Polícia Militar, ainda no sábado, porém à tarde, foi registrada uma
morte em Itajaí. Antônio José Mendonça, de 50 anos, caiu e se afogou quando caminhava por
uma rua inundada no bairro São Vicente. Em Navegantes, na outra margem do rio Itajaí-Açú, o
impacto foi menor, com cerca de 100 pessoas desabrigadas (VEJA, 2012).
De acordo com a Defesa Civil de Santa Catarina, nove municípios decretaram estado de
calamidade pública devido as fortes chuvas, entre eles: Agronômica, Rio do Sul, Lontras,
Brusque, Ituporanga, Aurora, Presidente Getúlio, Laurentino e Taió. Além destes, 36 decretaram
situação de emergência (VEJA, 2012).
Ao todo 91 cidades foram atingidas afetando 935.932 pessoas. Destas, 159.490 ficaram
desalojadas e outras 15.020 desabrigadas. Houve 3 mortes (VEJA, 2012).
2.6 SOFTWARES SIMILARES
O objetivo deste capítulo é apresentar algumas ferramentas existentes que abordam a
simulação de estados hidrológicos, comparando-as, mas dando ênfase no sistema proposto neste
TTC.
2.6.1 Alerta Rio
De acordo com RIO Prefeitura (2012), o Alerta Rio foi criado em 25 de setembro de
1996 com o intuito de emitir boletins de alerta à população através de estações de rádio e
televisão sempre que houver previsões de chuvas intensas que possam gerar inundações de vias
públicas e/ou deslizamentos.
O sistema utiliza informações em tempo real de 32 estações pluviométricas automáticas
instaladas no município do Rio de Janeiro, imagens de radares meteorológicos, detector de raios,
dados climáticos de duas estações meteorológicas, imagens de satélite e informações disponíveis
na Internet. Os dados são analisados em uma estação central computadorizada situada na sede da
Fundação Instituto de Geotécnica (Geo-Rio), por geotécnicos e meteorologistas, em esquema de
plantão 24 horas por dia (RIO PREFEITURA, 2012).
O sistema emite 4 estágios possíveis de alerta representados por cores. Quando as
condições meteorológicas indicam a probabilidade de chuvas intensas sobre a cidade, é emitido
um aviso em função da intensidade da chuva esperada. Os estágios são (ALERTA RIO, 2012):
45
1. Estágio de vigilância (Verde): situação em que não há previsão de chuva, nem mesmo
previsão de chuva baixa para as próximas horas. Neste estágio, os operadores
realizam apenas monitoramento das condições meteorológicas (ALERTA RIO,
2012);
2. Estágio de atenção (Amarelo): previsão de chuva moderada, ocasionalmente forte nas
próximas horas. Neste estágio os operadores do Alerta Rio estão em constante
comunicação com os órgãos municipais que atuam nas situações de chuva (ALERTA
RIO, 2012);
3. Estágio de alerta (Vermelho): previsão de chuva forte para as próximas horas
podendo causar alagamentos e deslizamentos isolados. Nesta situação já são enviados
alertas à população através da imprensa e site do Alerta Rio (ALERTA RIO, 2012);
4. Estágio de alerta máximo (Preto): previsão de chuva muito forte para as próximas
horas causando alagamentos e deslizamentos generalizados. Este estágio é acionado
quando o sistema já se encontra em estágio de alerta e existe a previsão de
intensificação da chuva (ALERTA RIO, 2012).
46
Figura 12. Exemplo de situação atual apresentada pelo sistema Alerta Rio
Fonte: Adaptado de ALERTA RIO, 2012.
2.6.2 Centro de Operação do Sistema de Alerta da Bacia do Itajaí (CEOPS)
Em virtude dos desastres ocasionados pelas cheias de 1983 e 1984, foram desenvolvidas
ações frente à problemática das enchentes visando pesquisar e propor medidas não-estruturais
para sanar os impactos (CEOPS, 2012).
Em 1984, por meio do Departamento Nacional de Águas e Energia Elétrica (DNAEE), o
CEOPS veio sendo gerenciado pelo Projeto Crise, coordenado pela Universidade Regional de
Blumenau. O Crise visava medidas não-estruturais, ou seja, todos os tipos de intervenções que
poderiam ser tomadas de maneira a proporcionar um convívio com as enchentes, reduzindo o
impacto e suas consequências. O CEOPS seria a contrapartida, atuando com as medidas
estruturais e os planos de ação e estratégias (CEOPS, 2012).
47
O CEOPS apresenta o estado hidrológico das últimas 24 horas de várias cidades do Vale
do Itajaí. O sistema mostra os valores em um intervalo de 15 minutos, basta selecionar a cidade e
clicar em buscar, conforme a Figura 13 (CEOPS, 2012).
Figura 13. Amostra dos estados hidrológicos para a cidade de Blumenau nas últimas 24 horas no CEOPS
Fonte: Adaptado de CEOPS, 2012.
2.6.3 Sistema de Alerta contra Enchentes da Bacia do Rio Doce
A bacia do rio Doce, que está localizada nos estados de Espírito Santo e Minas Gerais,
sofre com problemas de inundação o que acarreta em danos materiais e perdas humanas ao longo
do rio. Com a agravação dos prejuízos causados pelas enchentes devido à expansão urbana em
áreas de ocupação natural do rio, iniciou-se em 1997 o alerta contra enchentes, operado pelo
Serviço Geológico do Brasil em parceria com o Instituto Mineiro de Gestão das Águas (IGAM)
e com a Agência Nacional de Águas (ANA) (CPRM, 2012).
48
Este sistema atende 16 municípios localizados nos estados de Espírito Santo e Minas
Gerais, às margens dos rios Piranga, Piracicaba e Doce. A operação é realizada 24 horas por dia
e consiste nas seguintes etapas: coleta, armazenamento e análise de dados hidrometeorológicos
de cerca de 30 pontos de observação na bacia, elaboração de previsões meteorológica e
hidrológica e transmissão das informações para os municípios através de fax, e-mail e pela
Internet (CPRM, 2012).
Na primeira quinzena de janeiro de 2004 foram registrados alguns eventos importantes de
cheia na bacia. Em Ponte Nova, o rio Piranga ultrapassou sua cota de inundação, o mesmo
ocorreu com o rio Doce nas cidades de Governador Valadares, Colatina e Linhares. Porém,
todos estes eventos foram previstos com sucesso e os órgãos responsáveis comunicados com
antecedência, facilitando a tomada de decisões e a mobilização dos agentes públicos para a
retirada das famílias das áreas de risco (CPRM, 2012).
2.6.4 Comparativo
Nesta seção, apresenta-se uma tabela comparativa entre três ferramentas similares que
realizam a simulação de estados hidrológicos.
Tabela 1. Comparativo das Ferramentas Similares
Software On-line? Coleta informações automaticamente?
É possível realizar diferentes projeções?
Alerta Rio Sim Sim Não CEOPS Sim Sim Não Sistema de Alerta contra Enchentes da Bacia do Rio Doce
Sim Sim Não
Em relação ao sistema proposto neste trabalho, os softwares similares possuem algumas
características relevantes que ajudaram no estudo.
Os softwares similares selecionados são todos online, tendo assim a desvantagem de o
sistema proposto não ser. Porém, assim como os sistemas pesquisados, o sistema desenvolvido
também é capaz de apresentar os estados hidrológicos por si só, ou seja, coletando as
informações automaticamente e apresentando as saídas. O principal diferencial está na
possibilidade de se realizar diferentes projeções, onde o usuário pode realizar simulações futuras
49
e não apenas do dia atual. É possível que se realize simulações de até dois dias com
antecedência, funcionalidade esta que os softwares similares não contêm.
O sistema desenvolvido visou atender a necessidade da Defesa Civil de Itajaí,
automatizando parte do trabalho deles que é o de buscar informações na Internet e traduzí-las em
qual pode ser o estado de algumas partes da cidade, como: normal, atenção, alerta ou
emergência.
50
3 DESENVOLVIMENTO
Neste capítulo é apresentado o projeto do sistema contendo os requisitos funcionais,
requisitos não-funcionais, regras de negócio, casos de uso, diagrama de sequência e o
diagrama de estados. A parte de projeto visa compreender melhor a ideia do trabalho, suas
funcionalidades e regras de negócio, prevendo as ações do usuário e as reações do sistema.
Também serão apresentadas todas as funcionalidades para a implementação do sistema
para previsão dos estados dos setores da cidade de Itajaí, incluindo edição das variáveis de
entrada, visualização da simulação através do mapa de Itajaí e a visualização de gráficos das
estações de telemetria da cidade.
3.1 ANÁLISE DE REQUISITOS
Os requisitos foram levantados para estabelecer as funções indispensáveis ao sistema
proposto. Os seguintes itens apresentam uma descrição detalhada do projeto.
3.1.1 Requisitos Funcionais
Os requisitos funcionais especificam as funcionalidades que o sistema proposto
contém e como o sistema deve responder a determinadas situações. Os requisitos funcionais
são:
RF01. O sistema deve permitir ao usuário simular o estado de dois dos setores
de Itajaí;
RF02. O sistema deve permitir que o usuário possa editar o valor as variáveis
de entrada para simulação;
RF03. O sistema deve permitir que o usuário realize simulações futuras e em
tempo real. As simulações futuras estão limitadas pelos dados disponibilizados
pelas fontes que publicam as previsões do tempo. Como o site da UNIVALI
realiza a previsão para até dois dias, então o sistema realiza previsões para no
máximo dois dias mesmo o Climatempo realizando previsões até quatro dias,
sendo que estas são as duas fontes que o sistema busca as informações;
51
RF04. O sistema deve permitir a visualização de gráficos do sistema de
telemetria de Itajaí. Gráficos estes que indicam a tendência do estado de cada
setor, melhorando ou piorando;
RF05. O sistema deve informar ao usuário se as variáveis coletadas da Internet
são atuais ou não.
3.1.2 Requisitos Não Funcionais
Os requisitos não funcionais podem restringir os requisitos funcionais além de estar
relacionados ao uso da aplicação considerando desempenho, usabilidade, segurança,
tecnologias envolvidas, etc. Os requisitos não funcionais do projeto são os seguintes:
RNF01. O sistema deve ser implementado em linguagem Java;
RNF02. Os gráficos do sistema devem ser implementados em JFreeChart;
RNF03. A coleta automática dos dados deve ser realizada com HtmlUnit;
RNF04. A implementação do Sistema Especialista deve ser realizada através
do framework JEOPS.
3.2 DIAGRAMAS DE CASOS DE USO
A Figura 14 apresenta os Casos de Uso que podem ser realizados pelo usuário do
sistema.
52
Figura 14. Diagrama de Casos de Uso
3.2.1 UC01.01 Efetuar Simulação
Permite ao usuário visualizar uma simulação, caso o sistema esteja para atualizar o
valor das variáveis automaticamente (configuração padrão), a simulação ocorre no momento
da atualização, caso contrário, a cada variável que o usuário edita a simulação é realizada
automaticamente sem a necessidade de pressionar algum botão.
A Tabela 2 apresenta todos os cenários do Caso de Uso UC01.01.
53
Tabela 2. UC01.01 Efetuar Simulação
Cenário Comentários
Efetuar Simulação
{Principal}
1. O sistema realiza a simulação
automaticamente por padrão e
apresenta a tela com o mapa de Itajaí
mostrando seus setores com o estado
em que se encontram.
Editar Variáveis de Entrada
{Alternativo}
1.1. Caso o usuário opte por editar as
variáveis de entrada.
3.2.2 UC01.02 Visualizar os Gráficos do Sistema de Telemetria
Permite ao usuário visualizar os gráficos de simulação. A Tabela 3 apresenta o cenário
do Caso de Uso UC01.02.
Tabela 3. UC01.02 Visualizar Gráficos do Sistema de Telemetria
Cenário Comentários
Solicitar a Visualização de
Gráficos
{Principal}
1. O usuário clica no menu para
visualizar os gráficos do sistema de
telemetria.
3.2.3 UC01.03 Selecionar para Atualizar Variáveis Automaticamente
Permite ao usuário poder configurar o sistema para atualizar o valor das variáveis
automaticamente.
Tabela 4. UC01.03 Selecionar para Atualizar Variáveis Automaticamente
Cenário Comentários
Configurar para Atualizar
Variáveis Automaticamente
{Principal}
1. O usuário clica caixa de seleção para
que o sistema atualize as variáveis
automaticamente ou não.
54
3.2.4 UC01.04 Escolher o Dia em que Deseja Simular
Permite ao usuário poder configurar o dia em que deseja simular.
Tabela 5. UC01.04 Escolher o Dia em que Deseja Simular
Cenário Comentários
Escolher o Dia em que Deseja
Simular
{Principal}
1. O usuário seleciona na tela junto as
variáveis de entrada, o dia em que
deseja ter uma previsão do estado dos
setores de Itajaí.
3.3 DIAGRAMA DE SEQUÊNCIA
O Diagrama de Sequência representa a sequência dos processos, a troca das
mensagens entre os objetos de um sistema. A Figura 15 apresenta o Diagrama de Sequência
do sistema proposto.
Figura 15. Diagrama de sequência
A tela principal e a tela final (a tela que apresenta os resultados) são as mesmas. As
variáveis de entrada são representadas por outro componente para enfatizar a saída que o
sistema apresenta que são os estados hidrológicos do Imaruí e da Murta.
No primeiro componente o usuário informa os valores para as variáveis de entrada,
solicita ao sistema que atualize as variáveis automaticamente clicando no botão ou o sistema
55
realiza a atualização das variáveis a cada 10 minutos caso o usuário tenha configurado esta
opção.
Após os valores para as variáveis de entrada terem sido preenchidos, o sistema chama
o método que realiza a simulação, representado pelo componente chamado de
“VariaveisEntrada”. Porém, quando o usuário entra com os valores manualmente, a simulação
não é realizada enquanto o usuário não entra com um valor válido, diferente de vazio, para a
chuva em milímetros em Blumenau, Brusque e Itajaí e também para a maré.
Por fim, o sistema chama os métodos que irão executar as regras do Sistema
Especialista dos dois setores: Imaruí e Murta, passando os valores das variáveis e então,
mostra os estados hidrológicos destes dois setores na “TelaPrincipal”.
3.4 DIAGRAMA DE ESTADOS
O Diagrama de Estados representa o estado ou situação em que um objeto se encontra
ao longo da execução de um sistema. Um Diagrama de Estados mostra de forma mais
simplificada o fluxo principal de um software. A Figura 16 apresenta o Diagrama de Estados
deste trabalho.
56
Figura 16. Diagrama de estados Primeiramente, os valores para as variáveis de entrada são informados, podendo estes
ser digitados manualmente pelo usuário ou coletados automaticamente pelo sistema. Após ter
os valores preenchidos, o sistema realiza a simulação executando as regras do Sistema
Especialista do Imaruí e da Murta. E por fim, mostra os estados hidrológicos destes dois
setores e finaliza o ciclo.
4 IMPLEMENTAÇÃO
Neste capítulo são apresentados os detalhes da implementação do sistema.
Inicialmente, será demonstrado como funciona o processo da busca das variáveis e o
tratamento dos valores faltantes, em seguida o uso da árvore de decisão como forma para
representar os fatos, as características do framework JEOPS e a extração das regras a partir da
árvore, ou seja, a conversão para regras SE-ENTÃO.
Em seguida é demonstrada a utilização do framework HtmlUnit para capturar as
previsões de chuva e maré na Internet, a utilização do framework JFreeChart para a criação
dos gráficos do sistema de telemetria de Itajaí, e por fim, a utilização do JavaScript Object
Notation (JSON) que é um formato para criação de objetos utilizado no site do Comitê do
57
Itajaí para a criação dos objetos que contêm os estados hidrológicos das cidades do Vale do
Itajaí. Estes dados são recuperados através do JSON. Porém, o site do Comitê se encontra em
manutenção no momento impossibilitando a busca dos estados hidrológicos de Blumenau e
Brusque.
4.1 A BUSCA DAS VARIÁVEIS DE ENTRADA
O sistema é capaz de buscar automaticamente os valores para as variáveis de entrada
do Sistema Especialista e realizar a simulação com previsão de até dois dias (Figura 17) e
também, possibilita que o usuário digite os valores para as variáveis de forma manual. Para
simular os estados hidrológicos do Imaruí e da Murta são consideradas as seguintes variáveis:
estado hidrológico de Blumenau e Brusque, chuva em milímetros em Itajaí, Blumenau e
Brusque, saturação do solo e o nível da maré.
Figura 17. A busca automática dos valores das variáveis de entrada
Os estados hidrológicos de Blumenau e Brusque e a saturação do solo devem ser
preenchidos manualmente pelo fato de não haver informações disponíveis na Internet para
58
serem capturadas pelo sistema. O site do Comitê do Itajaí disponibiliza dados sobre os estados
hidrológicos de Blumenau e Brusque e também sobre a chuva acumulada. Baseando-se pela
chuva acumulada poderia-se chegar a um valor aproximado em relação à saturação do solo,
porém o site do Comitê se encontra em manutenção.
Todos os dados para as variáveis de entrada são armazenados localmente em arquivos
texto para prever que eventuais problemas não interrompam o funcionamento do sistema,
como perda de acesso à Internet ou mesmo pelos sites ficarem “fora do ar” por tempo
indeterminado. Sempre que é realizada a busca pelos dados, os arquivos texto são atualizados
ao mesmo tempo. Quando o sistema não consegue realizar a busca por dados mais recentes, o
sistema informa ao usuário que os dados estão desatualizados (Figura 18) e realiza a
simulação com os dados que foram salvos localmente na última atualização realizada. Caso o
sistema não consiga realizar a atualização dos dados por vários dias e não existirem mais
dados referentes ao dia em que se deseja simular, o sistema informa que não existem dados
para realizar a simulação, ou seja, só é possível simular com dados informados manualmente
pelo usuário.
Figura 18. Sistema informando que não pode realizar a busca das variáveis
Já os dados referentes à chuva em milímetros e o nível da maré são possíveis de se
capturar automaticamente pelo sistema. A chuva é capturada de duas fontes: o site da
59
UNIVALI e o do Climatempo. O sistema captura a chuva em milímetros, além do dia atual,
de mais quatro dias à frente. Como o site da UNIVALI só realiza previsão para dois dias (não
contando o dia atual), os outros dois dias são armazenadas apenas as previsões do
Climatempo. Quando se tem previsões das duas fontes, o sistema sempre considera o maior
valor para a chuva em milímetros para se ter sempre uma projeção do pior caso. Por exemplo,
se a UNIVALI prever a chuva em Itajaí em 50 milímetros e o Climatempo em 45, então o
sistema considera o valor 50. Porém, isto só ocorre para a previsão de chuva da cidade de
Itajaí, pois o site da UNIVALI somente realiza previsão para esta cidade, as previsões de
Blumenau e Brusque são feitas apenas pelo site do Climatempo.
E por fim, a previsão da maré, que é realizada da seguinte maneira: os valores
referentes ao nível da maré são armazenados localmente além do dia atual, mais sete dias à
frente. O mesmo tratamento feito pelo sistema em relação à indisponibilidade de dados sobre
a previsão de chuva (seja por perda de acesso a Internet ou pelo fato de já ter passado muitos
dias em que o sistema não consegue atualizar os dados e não haver dados armazenados
localmente correspondentes ao dia selecionado para realizar a simulação) é utilizado para os
valores da maré.
Existem duas situações que o sistema considera referente à maré quando está
configurado para realizar a busca dos valores e a simulação automaticamente que são: quando
se deseja realizar a simulação para o dia atual e quando se deseja simular para outro dia
diferente do dia atual.
Para ambos os casos é realizada a interpolação para os valores faltantes utilizando-se
regra de três. O site de previsão de maré disponibiliza o nível da maré apenas em algumas
horas do dia, por essa razão, decidiu-se utilizar regra de três. Por exemplo, se às 14 horas de
hoje a maré está em 1,2 metros e às 18 horas em 0,4 metros, qual é o nível da maré às 15
horas? (Tabela 6).
Tabela 6. Valor faltante da maré
Hora Nível
14 1,2
60
15 x
18 0,4
Pode-se calcular o resultado traçando uma linha reta entre os dois pontos, conforme a
Figura 19.
Figura 19. Gráfico mostrando o valor que se deseja descobrir, no caso, o nível da maré para as 15 horas
Sendo que, das 14 horas às 18, o nível da maré variou de 1,2 metros para 0,4 metros,
ou seja, em 4 horas desceu 80 centímetros ou 0,8 metros, qual seria o nível da maré às 15
horas, ou daqui à 1 hora?
A resposta por tanto é 1 metro. Porque das 14 às 15 horas o nível da maré variou 0,2
metros, portanto deve-se subtrair do 0,2 do valor inicial 1,2, sendo assim, a maré as 15 horas
estaria em 1 metro. Através dos valores conhecidos, pode-se então descobrir o valor faltante
através da regra de 3.
A diferença entre a simulação da maré atual e a de um próximo dia é que no dia atual
o sistema recupera o valor da maré que representa o horário em que a simulação está sendo
realizada. Por exemplo, se a simulação estiver sendo realizada às 14 horas então o valor da
maré será de 1,2, se for às 15 horas, 1, etc.
61
E por fim, quando a simulação é realizada para um dia diferente do dia atual, depois de
ter os valores do nível da maré para todas as horas daquele dia (através da interpolação para as
horas faltantes, baseadas nas horas que o site de previsão de maré apresenta os valores), o
sistema percorre esses valores e caso a maior parte do dia (mais do que 12 horas a maré esteve
acima de 1 metro) a maré estiver alta, ou seja, maior ou igual a 1 metro, a saída dada pelo
sistema para a variável maré será o valor 1, caso contrário, será o valor 0. Qualquer valor
maior ou igual a 1 é indiferente, pois o sistema considera como maré alta, se não, como maré
baixa. A tabela 7 mostra um dia em que a maré permaneceu alta a maior parte do tempo.
Tabela 7. Exemplo do nível da maré em cada hora do dia
Hora Nível
0 0.2 1 0.9 2 1.1 3 1.2 4 1.1 5 1.0 6 0.8 7 1.2 8 1.0 9 0.4 10 0.6 11 0.7 12 1.1 13 0.6 14 1.1 15 0.6 16 1.1 17 1.0 18 1.1 19 1.2 20 1.0 21 0.4 22 0.1 23 0.5
Conforme a Tabela 7, pode-se perceber que o nível da maré maior ou igual a 1 aparece
13 vezes, ou seja, na maior parte do dia a maré esteve em um nível considerado alto. Então, a
busca automática para o nível de maré neste caso retornaria 1. Todavia, esta abordagem de
interpolação para os valores da maré é simplista, assumindo que a variação da maré é linear.
62
4.2 A ÁRVORE DE DECISÃO
A primeira coisa a ser feita é definir o problema em que o Sistema Especialista irá
resolver. Uma vez definido o problema, a próxima etapa é esquematizá-lo de uma maneira em
que seus aspectos sejam ilustrados o mais simples possível. Um dos diagramas mais comuns e
utilizados para a resolução deste tipo de problema é a árvore de decisão. É um diagrama útil e
eficaz por permitir a visualização de todos os fatores que devem ser considerados para se
chegar a uma conclusão e ver como uma análise leva a outras, que então levam a outras ainda
e assim por diante (LEVINE, DRANG, EDELSON, 1988).
A árvore de decisão leva esse nome pelo fato de se ramificar exatamente como uma
árvore e no final de cada ramificação existir uma conclusão. Como muitos problemas são
complexos e difíceis de serem conceituados, o uso da árvore de decisão torna o problema
mais claro (LEVINE, DRANG, EDELSON, 1988).
Para o sistema desenvolvido foram criadas duas árvores de decisão, uma para cada um
dos setores que foram estudados que são o Imaruí e a Murta. A Figura 20 apresenta alguns
dos nós da árvore de decisão criada para a Murta. Ver a árvore da Murta no APÊNDICE B.
Árvore de Decisão da Murta.
Neste trecho da ávore são mostradas as seguintes variáveis: solo saturado, chuva em
milímetros em Blumenau, estado hidrológico de Blumenau e nível da maré. Onde os valores
que as variáveis podem assumir são: solo saturado, sim ou não; chuva em milímetros,
qualquer valor maior ou igual a zero; estado hidrológico de Blumenau, normal, atenção, alerta
ou emergência e o nível da maré que acima de 1 metro já é considerada maré alta. Segundo o
coordenador da Defesa Civil, o maior valor que se tem registro do nível da maré foi de 1,65
metros.
63
Figura 20. Alguns dos nós da árvore de decisão da Murta
Cada nó, ou seja, cada retângulo possui uma variável, e os percursos são condições
colocadas sobre os valores daquela variável. Quando se estabelece as regras, essas condições
se tornam as cláusulas da parte SE de uma regra SE-ENTÃO (LEVINE, DRANG,
EDELSON, 1988).
4.3 CONVERSÃO PARA REGRAS SE-ENTÃO As regras são compostas por duas partes, SE e ENTÃO. A parte SE contém as
condições chamadas de cláusulas conectadas por palavras conhecidas por operadores lógicos
como E, OU e NÃO. A parte ENTÃO é avaliada somente se a parte SE for verdadeira. Sendo
assim, a combinação de nós de conclusão representa uma regra SE-ENTÃO. A parte SE
possui todos os nós de decisão que leva a um nó de conclusão; cada nó de decisão que leva à
conclusão acrescenta uma cláusula para a parte SE. A conclusão em si forma a parte ENTÃO
(LEVINE, DRANG, EDELSON, 1988).
Por exemplo, para saber se um dos setores de Itajaí estará em estado de emergência,
como a Murta, as variáveis devem possuir valores que façam com que o Sistema Especialista
percorra uma regra que retorne este estado, como acontece com a regra a seguir:
SE chuva Blumenau = 55 E estado hidrológico de Blumenau = alerta E maré = 1.2
ENTÃO estado hidrológico da Murta = emergência
Os nós que são percorridos na árvore de decisão para se chegar a esta conclusão são
representados pela cor cinza na Figura 21. Ver a base de regras completa do Imaruí no
64
APÊNDICE C. Arquivo da Base de Regras do Imaruí no APÊNDICE D. Arquivo da Base de
Regras da Murta.
Figura 21. Os nós que são percorridos na árvore de decisão para uma das regras da Murta
4.4 CARACTERÍSTICAS DO FRAMEWORK JEOPS
O framework JEOPS foi desenvolvido como um projeto para a disciplina de IA na
Universidade Federal de Pernambuco. Aproveitando que o JEOPS já estava bem
desenvolvido, mas ainda não estava pronto para ser utilizado em aplicações de grande porte é
que o autor do projeto resolveu dar continuidade ao trabalho mesmo após a conclusão do
curso de graduação (FIGUEIRA FILHO, 2000).
As principais características do JEOPS são a facilidade de uso e a utilização do
paradigma orientado a objetos, integrando as regras e a linguagem hospedeira (FIGUEIRA
FILHO, 2000).
O JEOPS faz parte da classe de sistemas Embedded Object-Oriented Production
Systems (EOOPS), ou seja, representa os fatos na memória de trabalho sob a forma de objetos
65
e traz vantagens no que diz respeito à reusabilidade, modularidade, legibilidade e
manutenibilidade (FIGUEIRA FILHO, 2000).
O JEOPS funciona como um pré-compilador, pois traduz um arquivo de regras em
uma classe Java implementando o motor de inferência de acordo com o arquivo original.
Como as regras representam objetos, suas classes devem estar definidas no momento da
definição das regras e devem ser implementadas como classe Java para a execução das
mesmas (FIGUEIRA FILHO, 2000).
As regras do JEOPS são compostas por três seções: declarações, condições e ações. A
seção de declarações possui os objetos a serem utilizados nas condições e ações. As condições
são expressões Java que retornem valores booleanos. E na seção de ações pode ser inserido
qualquer comando em Java, porém, só será executado se todas as condições forem verdadeiras
(FIGUEIRA FILHO, 2000).
O Quadro 1 apresenta uma das regras de um dos setores de Itajaí que é a Murta. A
regra apresenta como saída o número 1, que representa o estado de atenção. A escala vai de 0
a 4 onde 0 representa o estado normal, 1 o estado de atenção, 2 o estado de alerta e 3 o estado
de emergência.
O nome da regra é “r29”, o objeto de nome “f” do tipo “VariaveisSimulacao” contém
os valores para as variáveis que são testadas na parte de conditions. Em conditions é
verificado se a chuva local é menor que 50 milímetros; se solo não está saturado, ou seja, se o
valor é zero; se a chuva em Blumenau é maior ou igual a 50 milímetros e se o estado
hidrológico em que Blumenau se encontra é igual a 1, ou seja, atenção. Se todas estas
condições forem verdadeiras, então a regra “r29” será disparada e saída será que a Murta está
em estado de atenção.
66
rule r29 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); }
Quadro 1. Uma das regras da base de regras para a Murta
4.5 UTILIZANDO O FRAMEWORK HTMLUNIT
O HtmlUnit possibilita que se navegue em diversos websites via programação e se
busque as informações desejadas, informações estas que podem estar em elementos HTML
como div’s, tabelas, etc. É possível também realizar requisições de formulários como se fosse
um usuário clicando em botões, ou seja, é possível que se realize diversas ações que o usuário
faria em um navegador, porém através do HtmlUnit. Com isso, é possível realizar uma busca
pelos valores referentes as variáveis de entrada que o sistema necessita para realizar a
simulação do estado hidrológico dos setores. No Quadro 2 tem-se um exemplo de busca de
informações contidas em uma div no site de previsão da UNIVALI.
final WebClient webClient = new WebClient(); final HtmlPage page = webClient.getPage("http://univali.br/tempo"); final HtmlDivision div = page.getHtmlElementById("general"); String conteudoDiv = div.asText(); Pattern p = Pattern.compile("\\d+[º]"); Matcher m = p.matcher(conteudoDiv); while (m.find()) { System.out.println(m.group()); }
Quadro 2. Código em Java mostrando a utilização do framework HtmlUnit
4.6 UTILIZANDO O FRAMEWORK JFREECHART
Os gráficos que o sistema gera foram criados pelo framework em Java chamado de
JFreeChart. O JFreeChart permite a criação de diversos gráficos, tanto interativos como não
interativos.
67
O JFreeChart possibilita a criação de diversos tipos de gráficos. E para a
implementação deste sistema foi utilizado o gráfico de linhas. O Quadro 3 apresenta um
gráfico de linha semelhantes aos que são gerados pelo sistema proposto.
final XYSeries xySeries = new XYSeries("Nível do Rio Itajaí-Açú"); XYDataset xyDataset = new XYSeriesCollection(xySeries); //Create the chart JFreeChart chart = ChartFactory.createXYLineChart( " ", "", "Nível do Rio Itajaí-Açú", xyDataset, PlotOrientation.VERTICAL, true, true, false); ChartFrame chartFrame = new ChartFrame("Gráficos", chart); int valor = 1; for(int i = 1; i <= 8; i++) { xySeries.add(i, valor++); } chartFrame.add(graph.estacoes); chartFrame.setSize(900, 700); chartFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); chartFrame.setVisible(true);
Quadro 3. Código em JFreeChart capaz de criar um gráfico de linhas
A Figura 22 mostra um gráfico gerado pelo sistema evidenciando o uso do framework
JFreeChart. O gráfico apresenta uma linha representando a variação do nível do rio em um
intervalo de tempo em uma das estações de telemetria de Itajaí.
Figura 22. Gráfico gerado pelo sistema criado neste trabalho através do framework
JFreeChart
68
4.7 UTILIZANDO O JSON
O JSON é utilizado para a troca de informações entre sistemas e possui a vantagem da
facilidade de leitura e escrita de códigos e de fácil interpretação pelas linguagens de
programação (JSON, 2012).
O sistema criado neste trabalho utiliza o JSON para capturar os dados referentes aos
estados hidrológicos das cidades de Blumenau e Brusque do site do Comitê do Itajaí, porém o
site entrou em manutenção e no momento não está sendo possível recuperar estas
informações. No Quadro 4 é apresentado um objeto JSON recuperado do site do Comitê do
Itajaí contendo algumas das cidades do Vale do Itajaí.
[ { "cd_estacao":"7316","ds_estacao":"Pouso Redondo",”status”:”Normal”, "cd_estacao":"7318","ds_estacao":"Vidal Ramos",”status”:”Normal”, "cd_estacao":"7319","ds_estacao":"Indaial",”status”:”Normal”, "cd_estacao":"7320","ds_estacao":"Timbo",”status”:”Normal”, "cd_estacao":"7321","ds_estacao":"Alfredo Wagner",”status”:”Normal”, "cd_estacao":"7322","ds_estacao":"Ituporanga",”status”:”Normal”, "cd_estacao":"7324","ds_estacao":"Brusque",”status”:”Normal”, "cd_estacao":"7325","ds_estacao":"Apiuna",”status”:”Normal”, "cd_estacao":"7328","ds_estacao":"Taio",”status”:”Normal”, "cd_estacao":"7329","ds_estacao":"Rio do Sul",”status”:”Normal”, "cd_estacao":"7331","ds_estacao":"Ibirama",”status”:”Normal”, "cd_estacao":"7332","ds_estacao":"Blumenau",”status”:”Normal”, "cd_estacao":"7334","ds_estacao":"Rio do Oeste"”status”:”Normal”, } ]
Quadro 4. Objeto JSON contendo informações de algumas cidades do Vale do Itajaí
5 TESTES E VALIDAÇÃO
Neste capítulo são apresentadas às formas de testes e validação para o sistema
implementado. Estes testes e validação tiveram como objetivo avaliar o funcionamento do
sistema para que problemas inesperados fossem solucionados.
Depois de criadas as regras junto com a Defesa Civil, as mesmas foram testadas
isoladamente e foram corrigidas até que todas as regras foram executadas corretamente.
Foram digitadas entradas diversas vezes para que todas as regras fossem executadas. Após
isso, o Sistema Especialista foi compilado e novos testes foram realizados a fim de detectar
69
eventuais problemas com a interface do sistema. Porém, nenhum problema foi detectado, ou
seja, a base de regras está funcionando corretamente.
Após a simulação do estado dos setores de Itajaí ter sido validada, também foi
necessário validar a geração dos gráficos do sistema de telemetria instalado em Itajaí nos rios
Itajaí-Açú e Itajaí-Mirim. Estes gráficos são gerados captando-se o nível dos rios a cada 10
minutos, que é o intervalo em que o sistema de telemetria atualiza seus dados. Os resultados
foram satisfatórios. Os gráficos são utilizados pela Defesa Civil para se analisar a curva de
tendência, se o gráfico está em uma situação em que a curva tende a baixar, significa que o
pior já passou, ou seja, determinada enchente já atingiu seu auge, caso contrário, pode-se
concluir que o pior ainda está por vir.
A Figura 23 mostra uma simulação sendo realizada pelo sistema para testar a regra
“r29” da base de regras do Sistema Especialista criada para a Murta. Para que a regra “r29”
seja executada é necessário que a chuva local esteja menor que 50 milímetros, que o solo não
esteja saturado, que a chuva em Blumenau esteja maior ou igual a 50 milímetros e o estado
hidrológico de Blumenau têm que estar em atenção, então, a saída esperada é a Murta estando
em estado de atenção.
Figura 23. A Murta e o Imaruí estão em estado de atenção por estarem com a cor amarela
A Figura 24 evidencia que a regra “r29” foi realmente executada conforme o esperado.
O JEOPS permite visualizar qual regra foi executada após executar a base de regras.
70
Figura 24. A regra "r29" da Murta sendo executada
A Figura 25 apresenta a curva do gráfico de um dos pontos do sistema de telemetria de
Itajaí analisado em um intervalo de 8 horas, que é por padrão o intervalo máximo que o
sistema mostra os gráficos, ou seja, o sistema depois de inicializado começa a coletar os dados
do sistema de telemetria que são atualizados a cada 10 minutos e mostra no máximo o gráfico
da curva das oito últimas horas.
Figura 25. A curva do gráfico de um dos pontos do sistema de telemetria do rio Itajaí-Açú em Itajaí mostrada em um intervalo de 6 horas
O sistema desenvolvido foi executado juntamente com o coordenador da Defesa Civil
a fim de validá-lo, porém não foi possível realizar a validação pelo fato de não se ter os dados
históricos das enchentes ocorridas em Itajaí. Tendo estes dados seria possível preenchê-los no
sistema e verificar se a saída apresentada é a mesma contida nos dados históricos.
6 CONCLUSÃO Quando acontece uma enchente em Itajaí é possível verificar a falta de instrumentos
que auxiliem informando sobre o que está por vir, se a enchente irá piorar ou não, ferramentas
que possam ajudar na tomada de decisões de órgãos como a Defesa Civil. Existe uma carência
de sistemas que possam simular a situação de Itajaí e passar a população informações
71
confiáveis, fazendo com que todos tomem medidas mais coerentes tentando minimizar o
impacto social e econômico na cidade.
A ideia inicial foi de um simulador que pudesse mostrar o nível da água nos diferentes
pontos da cidade, bem como a mancha de inundação, ou seja, o alcance da água pelos bairros.
Porém, pode-se observar a complexidade necessária para implementar algum modelo em
previsão de enchente (existem diversos modelos) e também, a dificuldade em encontrar um
modelo que se adeque perfeitamente a situação de Itajaí ou o mais perto possível por causa
das diversas variáveis que deveriam ser levadas em consideração no modelo. Outra
possibilidade seria o uso de Redes Neurais Artificiais, porém não é possível utilizar-se desta
técnica pelo fato de não existirem dados históricos de Itajaí para se treinar uma rede segundo
o próprio coordenador da Defesa Civil.
Sendo assim, decidiu-se seguir outro foco que é de interesse da Defesa Civil que seria
simular o estado hidrológico dos setores de Itajaí. Para isto, optou-se por utilizar Sistemas
Especialistas por parecer mais viável para a situação. Sistemas Especialistas utilizam regras
que resultam em um valor qualitativo, diferentemente do que tinha sido proposto em
princípio, de obter valores quantitativos como nível de água, mancha de enchente, etc. Estas
regras foram utilizadas para que o simulador informe o estado de cada setor, podendo estar
em situação normal, em situação de atenção, em situação de alerta ou em situação de
emergência.
Nesta etapa final de trabalho, foram esclarecidos os fatores que influenciam as
enchentes em Itajaí e todo o contexto em relação à cidade junto à Defesa Civil. Foram criadas
e validadas as regras para o Sistema Especialista e implementado o sistema em si, além do
estudo de ferramentas para se criar um Sistema Especialista, foi estudado o framework
chamado HtmlUnit para recuperar o conteúdo de páginas HTML de forma automática pelo
sistema via programação. Foi estudado também o framework JFreeChart para gerar os
gráficos que o sistema apresenta referente ao sistema de telemetria de Itajaí que atualiza o
nível do rio Itajaí-Açú em diferentes pontos da cidade a cada 10 minutos. Por fim, foi
estudado o formato para troca de informações conhecido por JSON, pois os estados de
Blumenau e Brusque podem ser capturados no site do CEOPS através deste formato, todavia,
o site do CEOPS se encontra em manutenção há algum tempo. Após todas as etapas, foram
realizados testes para a validação das saídas apresentadas pelo sistema, ou seja, se o sistema
retorna a saída esperada de acordo com as entradas inseridas.
72
Com o término deste trabalho, espera-se que o mesmo possa ser utilizado na Defesa
Civil de Itajaí em épocas que antecedem as enchentes auxiliando na tomada de decisões. O
sistema pode ajudar apresentando resultados de forma muito mais rápida do que a forma atual
de trabalho da Defesa Civil pesquisando sites na Internet de forma manual, relacionando as
informações e tirando as conclusões. Boa parte deste trabalho será automatizada pelo sistema
proposto e com isso, a Defesa Civil teria mais tempo para tomar as decisões certas e com mais
tempo para agir, por exemplo, numa possível remoção das pessoas de um bairro ameaçado
por uma enchente que está por vir.
6.1 TRABALHOS FUTUROS
Algumas sugestões para continuar este trabalho e também melhorias do que foi feito
são descritas a seguir:
1. Poderia-se desenvolver uma versão online do sistema para que todos tenham
acesso de uma forma mais eficaz, acessando-o de qualquer navegador da Internet,
e até mesmo uma versão para celular. A população tendo acesso ao sistema
poderia ficar mais informada sobre a situação de Itajaí e tomar providências com
antecedência, exceto em situações em que não se tem mais acesso a Internet,
energia elétrica e até mesmo os celulares estarem sem área;
2. O uso do JEOPS é bom pelo fato de ser fácil de entendê-lo e implementá-lo,
cumprindo assim o que promete, porém não possui flexibilidade no que diz
respeito a criação de regras onde estas precisam ser compiladas cada vez que se
deseja realizar alguma alteração. Seria necessário estudar frameworks em que suas
bases de regras possam ser alimentadas de uma forma mais flexível, através de um
arquivo texto, por exemplo, onde as regras poderiam ser editadas pelo usuário. No
caso de o sistema ser online, o acesso à base de regras poderia ser restrido a
algumas pessoas, o coordenador da Defesa Civil poderia ser uma das poucas
pessoas que teria acesso;
3. A maior parte da cidade não possui uma base de regras ainda, somente o Imaruí e a
Murta. Uma vez que se tem o domínio de um framework para implementação de
um Sistema Especialista, a criação da base de regras se torna um processo simples.
Sendo assim, deve-se discutir com os especialistas os fatos, ou seja, as variáveis
que afetam determinada parte da cidade, elaborar as regras e codificar o arquivo de
73
regras correspondente ao setor da cidade estudado. Após isso, resta verificar as
fontes que disponibilizam as variáveis levantadas e implementar a busca
automática através do framework chamado HtmlUnit;
4. O uso do framework HtmlUnit tem uma desvantagem que é se os sites utilizados
para capturar os dados das variáveis mudarem sua estrutura, ou seja, seu código
fonte e alguns elementos HTML deixarem de existir ou forem substituídos por
outros, o sistema se torna impossibilitado de buscar os dados. Uma maneira melhor
para se resolver isto seria o uso de Webservices. Se existir algum site de previsão
do tempo que possibilite a busca dos dados através de um Webservice, o sistema
não sofreria com estes tipos de mudança que podem acontecer em uma
manutenção dos sites, por exemplo;
5. O sistema sendo online poderia haver uma opção para os usuários cadastrem seus
números de telefone celular para que mensagens SMS possam ser enviadas com
novidades relacionadas aos estados hidrológicos de Itajaí. O usuário poderia
inclusive selecionar qual setor deseja receber mensagens, escolhendo assim o setor
que engloba seu bairro;
6. A busca pelas informações de maré deve ser refinada, pois o método utilizado não
é o mais eficiente. Está sendo utilizada a regra de três que é uma abordagem
simplista, considerando que a maré possui uma variação linear.
74
REFERÊNCIAS
Alerta Rio. Alertas de Chuvas. Disponível em: <http://www0.rio.rj.gov.br/alertario/?page_id=144>. Acesso em: 10 outubro 2012.
CEOPS. Estatísticas. Disponível em: <http://ceops.furb.br/restrito/SisCeops/views_pub/tabela_nivel.html>. Acesso em: 10 outubro 2012.
CEOPS. Histórico das Obras de Contenção e o Sistema de Alerta de Cheia na Bacia do Itajaí. Disponível em: <http://ceops.furb.br/index.php?option=com_content&view=article&id=15:antecedentes&catid=2:historico&Itemid=11>. Acesso em: 10 outubro 2012.
COUTINHO, Ronaldo. Influências das enchentes em Itajaí. (49) 3233-0349 em 22 fevereiro 2012.
CPRM. Sistema de Alerta contra Enchentes da Bacia do Rio Doce. Disponível em: <http://www.cprm.gov.br/publique/cgi/cgilua.exe/sys/start.htm?infoid=311&sid=36>. Acesso em: 10 outubro 2012.
Equipe de Estudos da JICA. Características de enchentes do Rio Itajaí Mirim e medidas de prevenção. 2011.
FAYAL, Marcelo Alfredo de Assis. Previsão de Vazão por Redes Neurais Artificiais e Transformada Wavelet. Rio de Janeiro, 2008. Departamento de Engenharia Elétrica da PUC-Rio, Pontifícia Universidade Católica do Rio de Janeiro.
FERNANDES, Anita Maria da Rocha. Inteligência Artificial – Noções Gerais. 2003.
Fernando Antônio Silva Cruz Blogspot. Enchentes em Santa Catarina / ILHOTA. Disponível em: <http://fernandoantoniosilvacruz.blogspot.com.br/2009_01_05_archive.html>. Acesso em: 23 junho 2012.
FIGUEIRA FILHO, Carlos Santos da. JEOPS – Integração entre Objetos e Regras de Produção em Java. Recife, 2000. Centro de Informática, Universidade Federal de Pernambuco.
FRAGA, Nilson Cesar. Enchentes Urbanas no Vale do Itajaí, Brasil. 25 anos da Enchente Catástrofe de 1983 – Reflexos Socioambientais e Culturais no Século XXI. Curitiba. FAE-UFPRUNICURITIBA.
IBGE. Itajaí-SC. Disponível em: <http://www.ibge.gov.br/cidadesat/painel/painel.php?codmun=420820#>. Acesso em: 20 abril 2012.
JSON. Introdução ao JSON. Disponível em: <http://www.json.org/json-pt.html>. Acesso em: 10 outubro 2012.
75
KOBIYAMA, Masato; MENDONÇA, Magaly; MORENO, Davis Anderson; MARCELINO, Isabela P. V. de Oliveira; MARCELINO, Emerson V.; GONÇALVES, Edson F.; BRAZETTI, Leticia Luiza Penteado; GOERL, Roberto Fabris, MOLLERI, Gustavo S. Fontes; RUDORFF, Frederico de Moraes. Prevenção de Desastres Naturais. Curitiba, 2006. Engenharia de Energia, Universidade Federal de Itajubá.
LEVINE, Robert I.; DRANG, Diane E.; EDELSON, Barry. Inteligência Artificial e Sistemas Especialistas. 1988.
Maps of World. Brazil Latitude and Longitude Map. Disponível em: <http://www.mapsofworld.com/lat_long/brazil-lat-long.html>. Acesso em: 20 abril 2012.
OLIVEIRA, Guilherme Garcia de. Modelos para Previsão, Espacialização e Análise das Áreas Inundáveis na Bacia Hidrográfica do Rio Caí, RS. Porto Alegre, 2010. Centro Estadual de Pesquisas em Sensoriamento Remoto e Meteorologia, Universidade Federal do Rio Grande do Sul.
RIO Prefeitura. Alerta Rio – Meteorologia, Escorregamentos e Estatísticas. Disponível em: <http://obras.rio.rj.gov.br/index.cfm?sqncl_publicacao=1082>. Acesso em: 10 outubro 2012.
SANTOS, Cristina Cláudia dos; FILHO, Augusto José Pereira. Modelagem Hidrológica Urbana por Meio de Redes Neurais Artificiais: Uma Aplicação para a Bacia do Rio Tamanduateí em São Paulo, SP. Revista Brasileira de Meteorologia, São Paulo, v. 18, n. 2, p. 149-159, mar. 2003.
SCHETTINI, Carlos A. F.. Caracterização Física do Estuário do Rio Itajaí-açu, SC. RBRH – Revista Brasileira de Recursos Hídricos, Itajaí, v. 7, n. 1, p. 123-142, mar. 2012.
Scielo. Sba: Controle & Automação Sociedade Brasileira de Automatica. Disponível em: <http://www.scielo.br/scielo.php?pid=S0103-17592004000200010&script=sci_arttext>. Acesso em: 08 julho 2012.
SILVA, Ana Paula Moni. Elaboração de Manchas de Inundação para o Município de Itajubá, Utilizando SIG. Itajubá, 2006. Engenharia de Energia, Universidade Federal de Itajubá.
TRANSPI. Transportes Pesados Itajaí. Disponível em: <http://www.transpi.com.br/localizacao.html>. Acesso em: 30 abril 2012.
Veja. Itajaí tem mais da metade de sua área cobeta pela água. Disponível em: < http://veja.abril.com.br/noticia/brasil/itajai-tem-mais-da-metade-de-sua-area-coberta-pelas-aguas>. Acesso em: 25 junho 2012.
VICTOR, Valcí Ferreira. Sistema Especialista para Detecção de Falhas em Comandos Elétricos. Natal, 2005. Centro de Tecnologia, Universidade Federal do Rio Grande do Norte.
Wikipédia, a enciclopédia livre. Itajaí. Disponível em: <http://pt.wikipedia.org/wiki/Itajai>. Acesso em: 20 abril 2012.
Wikipédia, a enciclopédia livre. Regime Fluvial. Disponível em: <http://pt.wikipedia.org/wiki/Regime_fluvial>. Acesso em: 28 fevereiro 2012.
76
APÊNDICE A. RELATO SOBRE AS REUNIÕES REALIZADAS COM O COORDENADOR DA DEFESA CIVIL DE ITAJAÍ
Em épocas de enchente é notório que existe uma falta de informações disponíveis para
a população. Até mesmo a imprensa local sofre com este problema. Algumas fontes
disponibilizam informações divergentes, websites que disponibilizam a previsão de chuva,
por exemplo, onde alguns dizem que irá chover e outros não. Este problema é notado quando
os apresentadores de televisão e radialistas ficam sem saber o que passar para a população,
pelo fato de encontrarem informações diferentes sobre a mesma coisa.
Através de algumas reuniões realizadas na Defesa Civil de Itajaí com o coordenador,
foi relatada a falta de informações durante épocas de crise, como uma enchente. O processo
de tomada de decisão é realizado acessando-se sites de previsão de tempo, o site da própria
Defesa Civil de Itajaí que apresenta o nível da água em 8 pontos da cidade (está para ser
instalado mais um ponto de medição), o site da DEINFRA que mostra a situação das
barragens ao longo do rio Itajaí-Açú, previsões de maré, o nível do rio em Blumenau, o nível
do rio em Brusque, etc.
Segundo o coordenador da Defesa Civil, as decisões geralmente são tomadas sobre
pressão da prefeitura, da imprensa e da população em geral, decisões estas que devem ser
acertadas na maioria das vezes, pois este é o papel da Defesa Civil, garantir a segurança de
todos tendo que evacuar as pessoas de alguns bairros com antecedência o suficiente para que
os prejuízos sejam os mínimos possíveis.
Durante as enchentes, muitos dos sites que a Defesa Civil utiliza para extrair
informações que ajudem na tomada de decisão ficam inacessíveis devido aos múltiplos
acessos simultâneos. As pessoas vão para a Internet a fim de saber se serão afetadas ou não
pela enchente ou mesmo saber a situação de outras localidades a respeito de familiares. E com
isso, a saída é ligar para os meios de comunicação para tentar saber o que está por vir. Nessas
épocas de crise, muitas pessoas ligam para a Defesa Civil esperando por informações
confiáveis e que passem instruções sobre o que devem fazer.
Este processo de busca por informações na Internet é feito de forma manual pelo
coordenador da Defesa Civil. É necessário buscar as informações, associá-las e tomar as
decisões cabíveis. O coordenador ainda menciona a necessidade de um sistema que possa
77
coletar de forma automática as informações necessárias, associá-las e apresentar os resultados.
Baseando-se nos resultados, torna-se mais fácil tomar decisões, pois o sistema realizaria o
raciocínio automaticamente.
Um sistema que realiza previsões em alguns dias pode ajudar muito a Defesa Civil
minimizando prejuízos, quanto maior a antencedência que a Defesa Civil tiver para agir,
maiores serão as chances de terem tomado as decisões certas.
Porém, para que se concretize um sistema capaz de automatizar este processo é
necessário discutir as influências que as diferentes regiões da cidade de Itajaí recebem. A
chuva local e a chuva em cidades como Blumenau e Brusque influenciam em boa parte da
cidade. A maré influencia somente nas regiões ribeirinhas ao rio Itajaí-Açú.
Segundo o coordenador da Defesa Civil de Itajaí, a chuva é preocupante a partir dos
50 milímetros. Já a maré começa a ameaçar as regiões mais baixas quanto chega em 1 metro
de altura. O máximo que a maré já atingiu que se tem registrado foi de 1,65 m.
As duas regiões que foram estudadas neste trabalho que são o Imaruí e a Murta
recebem influências similares. A região do Imaruí sofre influência da chuva local e da chuva
em Blumenau e também da maré. Já a Murta além de receber influência da chuva local e de
Blumenau e da maré, recebe também influências de Brusque por causa do canal retificado do
rio Itajaí-Mirim que desemboca no rio Itajaí-Açú na parte da Murta.
A chuva é preocupante após os 50 milímetros, porém em situações críticas qualquer
contribuição por mínima que for pode alterar o estado de determinada região da cidade de
alerta para emergência. Imaginando o caso em que não há chuva em Itajaí, porém algumas
regiões já estão em alerta em consequência do grande volume de chuva nas cidades mais altas
e pelo grande volume de água que vem descendo para Itajaí. Sendo assim, uma chuva fraca já
poderia agravar a situação alterando o estado destas regiões que estavam em alerta para
emergência.
79
APÊNDICE C. ARQUIVO DA BASE DE REGRAS DO IMARUÍ
public ruleBase Imaruí { rule r1 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r2 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r3 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r4 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r5 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); }
80
rule r6 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r7 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; f.getMare() >= 1.0; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r8 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r9 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r10 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; actions f.setSituacaoResultante(3); retract(f); modified(f); }
81
rule r11 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r12 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r13 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r14 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r15 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(2); retract(f);
82
modified(f); } rule r16 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r17 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r18 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r19 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r20 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f);
83
} rule r21 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r22 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r23 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r24 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r25 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2); retract(f); modified(f);
84
} rule r26 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r27 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() >= 1.0; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r28 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r29 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r30 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2);
85
retract(f); modified(f); } rule r31 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r32 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r33 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r34 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r35 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2); retract(f);
86
modified(f); } rule r36 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r37 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r38 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r39 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r40 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions
87
f.setSituacaoResultante(2); retract(f); modified(f); } rule r41 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r42 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r43 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r44 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r45 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50;
88
f.getSituacaoBrusque() == 1; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r46 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r47 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r48 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r49 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r50 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0;
89
f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r51 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r52 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r53 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r54 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r55 { declarations VariaveisSimulacao f;
90
conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r56 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r57 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r58 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r59 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r60 { declarations VariaveisSimulacao f; conditions
91
f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r61 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r62 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r63 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r64 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r65 { declarations
92
VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r66 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r67 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r68 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r69 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r70 { declarations
93
VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r71 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r72 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r73 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r74 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r75 {
94
declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r76 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r77 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r78 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r79 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); }
95
rule r80 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r81 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; f.getMare() >= 1.0; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r82 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r83 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r84 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f);
96
} rule r85 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r86 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r87 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r88 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r89 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; f.getMare() >= 1.0; actions
97
f.setSituacaoResultante(3); retract(f); modified(f); } rule r90 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r91 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r92 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r93 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r94 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; actions
98
f.setSituacaoResultante(2); retract(f); modified(f); } rule r95 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r96 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r97 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r98 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r99 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50;
99
f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r100 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r101 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r102 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r103 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r104 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0;
100
f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r105 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r106 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r107 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r108 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r109 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1;
101
f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r110 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r111 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r112 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r113 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r114 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1;
102
f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r115 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r116 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r117 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r118 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r119 { declarations VariaveisSimulacao f; conditions
103
f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r120 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r121 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r122 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r123 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r124 { declarations VariaveisSimulacao f;
104
conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r125 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r126 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r127 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r128 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r129 { declarations
105
VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r130 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r131 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r132 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r133 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r134 {
106
declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r135 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r136 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r137 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r138 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r139 {
107
declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r140 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r141 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r142 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r143 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r144 {
108
declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r145 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r146 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r147 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r148 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); }
109
rule r149 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r150 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r151 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r152 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r153 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f);
110
modified(f); } rule r154 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r155 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r156 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r157 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r158 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1); retract(f);
111
modified(f); } rule r159 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r160 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r161 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r162 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r163 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions
112
f.setSituacaoResultante(1); retract(f); modified(f); } rule r164 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r165 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() >= 50; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r166 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r167 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r168 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(1);
113
retract(f); modified(f); } rule r169 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r170 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r171 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() >= 50; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r172 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r173 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 3;
114
f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r174 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r175 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r176 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; f.getChuvaBrusque() < 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r177 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r178 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2;
115
f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 3; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r179 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 2; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r180 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 1; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r181 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() >= 50; f.getSituacaoBrusque() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r182 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getChuvaBrusque() < 50; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r183 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1;
116
actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r184 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); }
}
117
APÊNDICE D. ARQUIVO DA BASE DE REGRAS DA MURTA
public ruleBase Murta { rule r1 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r2 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(3); retract(f); modified(f); } rule r3 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r4 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r5 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r6 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(1);
118
retract(f); modified(f); } rule r7 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r8 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r9 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r10 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r11 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; f.getSituacaoBlumenau() == 0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r12 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r13 {
119
declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r14 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r15 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r16 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r17 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r18 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() >= 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r19 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3;
120
actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r20 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r21 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r22 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r23 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r24 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r25 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 1; f.getChuvaBlumenau() < 50; actions f.setSituacaoResultante(0); retract(f); modified(f); }
121
rule r26 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 3; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r27 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getMare() >= 1.0; actions f.setSituacaoResultante(2); retract(f); modified(f); } rule r28 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 2; f.getMare() < 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r29 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 1; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r30 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getMare() >= 1.0; actions f.setSituacaoResultante(1); retract(f); modified(f); } rule r31 { declarations VariaveisSimulacao f; conditions f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() >= 50; f.getSituacaoBlumenau() == 0; f.getMare() < 1.0; actions f.setSituacaoResultante(0); retract(f); modified(f); } rule r32 { declarations VariaveisSimulacao f; conditions
top related