universidade do vale do itajaÍ centro de ciÊncias ...siaibib01.univali.br/pdf/robson jean de...

122
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

Upload: nguyendat

Post on 16-Nov-2018

212 views

Category:

Documents


0 download

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.

78

APÊNDICE B. ÁRVORE DE DECISÃO DA MURTA

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

122

f.getChuvaLocal() < 50; f.getSoloSatura() == 0; f.getChuvaBlumenau() < 50; actions f.setSituacaoResultante(0); retract(f); modified(f); } }