Upload
nguyentram
View
213
Download
0
Embed Size (px)
Citation preview
INPE-10288-TDI/907
AMBIENTE COMPUTACIONAL PARA MODELAGEM DINÂMICA ESPACIAL
Bianca Maria Pedrosa
Tese de Doutorado do Curso de Pós-Graduação em Computação Aplicada, orientada pelo Dr. Gilberto Câmara, aprovada em 07 de agosto de 2003.
INPE São José dos Campos
2004
681.3.06 PEDROSA, B. M. Ambiente computacional para modelagem dinâmica espacial / B. M. Pedrosa. – São José dos Campos: INPE, 2003. 111p. – (INPE-10288-TDI/907). 1.Sistemas de Informação Geográfica (SIG). 2.Modelos dinâmicos. 3.Autômatos celulares. 4.Simulação ambiental. 5.Simulação de sistemas. I.Título.
AGRADECIMENTOS
Ao Dr. Gilberto Câmara, meu orientador, pelo suporte e inspiração.
Ao Dr. Frederico Fonseca, meu co-orientador na Penn State
University, pela acolhida e amizade.
A Ricardo Cartaxo Modesto, pelas sugestões de implementação.
Aos colegas da equipe TerraLib, em especial Ana Paula Dutra de
Aguiar e Lúbia Vinhas, pela preparação dos dados e suporte em TerraLib.
À CAPES, pela concessão da bolsa de estudos para estágio de
doutorado no exterior.
À UNIMEP, pela concessão da bolsa de capacitação docente.
RESUMO
Esta tese apresenta TerraML, um ambiente computacional para modelagem dinâmica espacial para ser usado em aplicações ambientais. TerraML baseia-se num modelo celular de representação do espaço. TerraML utiliza o paradigma de autômatos híbridos para abstrair os elementos contínuos e discretos de um sistema dinâmico. Para capturar ações a distância, TerraML adota o conceito de vizinhança generalizada, implementada como uma matriz de proximidade, definida a partir de cálculos de distâncias entre as células ou a partir de redes de transporte.
A COMPUTATIONAL ENVIRONMENT FOR SPATIAL DYNAMIC MODELING
ABSTRACT
This thesis introduces TerraML, a computational environment for spatial dynamic modeling, to be used in environmental applications. TerraML represents space as a cellular model. In TerraML the discrete and continuous elements of a dynamic system are translated into control modes, flow and jump conditions, based on the hybrid automata theory. In order to capture action-at-a-distance TerraML adopts a generalized neighborhood concept, implemented as a proximity matrix, which can be defined based on the distance between cells or based on transportation networks.
SUMÁRIO
Pág.
LISTA DE FIGURAS LISTA DE TABELAS CAPÍTULO 1 - INTRODUÇÃO ..................................................................................... 17
1.1 - Objetivos............................................................................................................... 18
1.2 - Organização da Tese ........................................................................................... 19
CAPÍTULO 2 - MODELAGEM DINÂMICA E GIS ......................................................... 21
2.1 - Requisitos para Modelagem Dinâmica em GIS.................................................... 21
2.1.1 - O Espaço........................................................................................................... 23
2.1.2 - O Tempo............................................................................................................ 25
2.1.3 - Modelos ............................................................................................................. 28
2.1.3.1 - Modelos Empíricos ......................................................................................... 29
2.1.3.1.1 - Cadeias de Markov...................................................................................... 29
2.1.3.1.2 - Modelos Logísticos de Difusão.................................................................... 30
2.1.3.1.3 - Modelos de Regressão Linear..................................................................... 31
2.1.3.2 - Modelos Sistêmicos........................................................................................ 33
2.1.3.2.1 - Modelos de Simulação de Ecossistemas ..................................................... 33
2.1.3.2.2 - Modelos de Simulação Dinâmica Espacial.................................................. 33
2.1.3.3 - Resumo dos Modelos..................................................................................... 34
2.2 - Ambientes Computacionais para Modelagem Dinâmica ..................................... 36
2.2.1 - PCRaster ........................................................................................................... 36
2.2.2 - Modelo Integrado Multi-Escala /RIKS................................................................ 39
2.2.3 - Resumo dos Ambientes Computacionais.......................................................... 43
CAPÍTULO 3 - AMBIENTE COMPUTACIONAL PARA MODELAGEM DINÂMICA ESPACIAL .................................................................................................................... 45
3.1 - Aspectos Conceituais ........................................................................................... 46
3.1.1 - Espaço Celular .................................................................................................. 46
3.1.2 - Modelo Temporal............................................................................................... 47
3.1.3 - Modelo de Mudança.......................................................................................... 48
3.1.4 - Vizinhança Generalizada................................................................................... 53
3.2 - Aspectos de Implementação ................................................................................ 55
CAPÍTULO 4 - TERRAML - FORMALIZAÇÃO DA LINGUAGEM ................................ 61
4.1 - Arquitetura ............................................................................................................ 61
4.2 - Especificação da Linguagem................................................................................ 63
4.2.1 - A Seção de Entrada de Dados .......................................................................... 63
4.2.2 - A Seção de Controle ......................................................................................... 68
4.3 - Funcionalidades ................................................................................................... 74
4.3.1 - Média Local ....................................................................................................... 74
4.3.2 - Expander ........................................................................................................... 75
4.3.3 - Lógica Fuzzy ..................................................................................................... 76
CAPÍTULO 5 - UMA APLICAÇÃO EM MUDANÇA NA COBERTURA DO SOLO ....... 77
5.1 - Apresentação do Problema.................................................................................. 77
5.2 - Metodologia .......................................................................................................... 79
5.3 - Entradas ............................................................................................................... 80
5.4 - Modelo.................................................................................................................. 81
5.5 - Restrições ............................................................................................................ 82
5.6 - Especificação em TerraML................................................................................... 82
5.6.1 - Especificação dos dados de entrada................................................................. 82
5.6.2 - Definição dos modos de controle ...................................................................... 86
5.6.3 - Resultados......................................................................................................... 86
CAPÍTULO 6 - CONCLUSÕES E FUTUROS TRABALHOS........................................ 89 6.1 - Resultados Alcançados ........................................................................................ 89
6.2 - Futuros Trabalhos ................................................................................................ 90
REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................93 APÊNDICE A – DTD COMPLETO DA LINGUAGEM TerraML .................................... 97
APENDICE B – CÓDIGO FONTE .............................................................................. 101
LISTA DE FIGURAS
2.1 - Requisitos para modelagem dinâmica em GIS ................................................... 22
2.2 - Um mapa poligonal e sua matriz de proximidade ................................................ 24
2.3 - Mapa do fluxo de pessoas em uma rede de transporte ....................................... 24
2.4 - Exemplo de filtro espacial..................................................................................... 25
2.5 - Estruturas temporais ......................................................................................... 26
2.6 - Tipos de modelos ................................................................................................ 28
2.7 - Redes LDD........................................................................................................... 37
2.8 - Esquema simplificado das entradas e saídas do PcRaster ................................. 38
2.9 - Integração entre o Modelo Multi-Escala/RIKS e GIS ........................................... 40
2.10 - A micro-escala.................................................................................................... 41
2.11 - Vizinhança circular ............................................................................................. 41
3.1 - A estrutura da TerraLib......................................................................................... 45
3.2 - Exemplo de Autômato Celular ............................................................................. 49
3.3 - Dinâmica de sistemas .......................................................................................... 50
3.4 - Esquema geral de um autômato híbrido .............................................................. 51
3.5 - Autômato balanço hídrico..................................................................................... 52
3.6 - Exemplos de vizinhança....................................................................................... 53
3.7 - Ocupação urbana e rede de transporte da Amazônia.......................................... 54
3.8 - A estrutura de dados celular................................................................................. 55
3.9 - Diagrama do TerraML Processor ......................................................................... 56
3.10 - Diagrama de classes do autômato híbrido (TeCellAutomata)............................ 57
3.11 - Diagrama da classe Transition ........................................................................... 58
3.12 - Diagrama da classe BiCell ................................................................................ 59
3.13 - Diagrama de classes da matriz de proximidade (TeProxMatrix) ........................ 59
3.14 - Diagrama de classes da seqüência de tempo (TeTimeSequence).................... 60
4.1 - Arquitetura da linguagem TerraML....................................................................... 62
4.2 - Esquema geral da seção Control ......................................................................... 68
4.3 - Algoritmo da função localMean ............................................................................ 75
4.4 - Algoritmo da função Expander ............................................................................. 76
4.5 - Algoritmo da função FuzzyL ................................................................................. 76
5.1 - A Amazônia e o Estado de Rondônia................................................................... 77
5.2 - Espinha-de-peixe.................................................................................................. 78
5.3 - a) Detalhe da espinha-de-peixe b)zoom da área deste trabalho ......................... 78
5.4 – Metodologia para simular mudanças em Rondônia ............................................ 79
5.5 - Os atributos das células ....................................................................................... 80
5.6 – Entradas do sistema ........................................................................................... 80
5.7 – Matriz de proximidade baseada em distância ..................................................... 81
5.8 – Um exemplo em terraml para mudança no uso e cobertura do solo................... 83
LISTA DE TABELAS
2.1 - Resumo dos tipos de modelos ............................................................................. 35
2.2 - Quadro Comparativo Pcraster X Modelo Multi-Escala/RIKS................................ 44
3.1 - Tabela de um BD temporal utilizando versionamento de objetos ........................ 48
3.2 - Resumo do autômato balanço hídrico.................................................................. 52
4.1 - Especificação da seção CellProcessor ................................................................ 63
4.2 - Especificação da seção Input............................................................................... 64
4.3 - Especificação do elemento database................................................................... 64
4.4 - Especificação do elemento layer.......................................................................... 65
4.5 - Especificação do elemento table.......................................................................... 65
4.6 - Especificação do elemento temporal.................................................................... 66
4.7 - Especificação do elemento global ........................................................................ 67
4.8 - Especificação do elemento neighborhood............................................................ 67
4.9 - Especificação da seção control ............................................................................ 69
4.10 - Especificação do elemento mode....................................................................... 69
4.11 - Especificação do elemento localMean .............................................................. 70
4.12 - Especificação do elemento fuzzyL .................................................................... 71
4.13 - Especificação do elemento product.................................................................... 71
4.14 - Especificação do elemento pair......................................................................... 72
4.15 - Especificação do elemento expander................................................................. 72
4.16 - Especificação do elemento transition ................................................................. 73
4.17 - Especificação do elemento condition ................................................................. 74
4.18 - Operadores relacionais em TerraML.................................................................. 74
5.1 - Layer Células450 do banco Rondônia.mdb ......................................................... 84
5.2 - Atributos da células do banco Rondônia.mdb ..................................................... 84
5.3 - Arquivo de vizinhança .......................................................................................... 84
5.4 - Dicionário de dados dos arquivos do banco de dados rondonia.mdb................. 85
5.5 - Resultado da simulação para uma célula............................................................. 87
5.6 - Comparação entre os resultados da simulação e o real ...................................... 88
17
CAPÍTULO 1 INTRODUÇÃO
Modelos dinâmicos espaciais realizam a simulação de processos do mundo real em
que o estado de um objeto na superfície terrestre muda em resposta às suas forças
direcionadoras (Burough 1998). Tais sistemas têm sido implementados através de
modelos celulares, freqüentemente embutidos em estruturas computacionais
baseadas em autômatos celulares.
Um autômato celular corresponde a uma grade regular em que cada célula pode
assumir um valor discreto, o qual mudará em função dos estados das células em uma
vizinhança adequadamente definida. Portanto, autômatos celulares são eficientes para
representar sistemas em que a ordem global emerge de ações locais e
descentralizadas. Entretanto, em Sistemas de Informações Geográficas, a ordem
global depende também de ações à distância. A fim de superar esta limitação, e
acomodar ações à distância, várias extensões à noção de autômato celular clássico
têm sido propostas.
Além da capacidade de capturar ações à distância, um ambiente de modelagem
dinâmica tem que ser capaz de abstrair os componentes discretos e contínuos de um
sistema dinâmico. Os componentes discretos são os atributos das células que sofrem
mudanças igualmente discretas, em virtude do seu espaço de estados finito. Por
exemplo, uma célula de floresta pode mudar para desmatada e vice-versa (escala
nominal). Os componentes contínuos de um modelo dinâmico são variáveis reais, que
são atualizadas a partir de equacionamentos matemáticos. Nestes componentes, ao
contrário dos componentes discretos, as mudanças de estado não são tão diretas.
Por exemplo, para um modelo hidrológico é calculado a quantidade de água no solo
por célula, em cada passo de tempo da simulação. Desta forma, as células são
sistematicamente atualizadas. Entretanto, nem toda atualização da célula, implica em
uma mudança de estado (escala intervalar).
Esta tese apresenta TerraML, um ambiente para modelagem dinâmica baseado num
modelo celular de representação do espaço. Neste modelo as células possuem vários
atributos e são organizadas sob a noção de um espaço celular (Batty 2000). Nesta
perspectiva, o estado de uma célula é definido em função do estado dos seus
18
atributos. As regras de transição não se restringem a regras locais, podendo ser
definidas em função das propriedades das células.
TerraML usa o paradigma de autômatos híbridos para abstrair os elementos contínuos
e discretos de um sistema dinâmico. Neste paradigma, o sistema é modelado em
modos de controle, condições de fluxo e de mudança, que capturam as dinâmicas
contínua e discreta do sistema.
Para capturar ações à distancia, TerraML adota o conceito de vizinhança
generalizada, implementada como uma matriz de proximidade, que pode ser definida a
partir de cálculos das distâncias entre as células ou a partir de redes de transportes.
Com esta abordagem uma célula pode ter qualquer forma e tamanho de vizinhança,
flexibilizando assim a estacionariedade das vizinhanças presente nos autômatos
celulares clássicos.
Para testar a aplicabilidade de TerraML, foi desenvolvida uma aplicação para simular a
mudança na cobertura do solo de um área do estado de Rondônia, onde o
desmatamento é fortemente determinado pela acessibilidade. Os resultados obtidos
com esta aplicação não são conclusivos, mas são indicativos da capacidade do
ambiente computacional. O ambiente trabalha com uma lógica simplificada, que pode
ser refinada com a ampliação do número de funções disponíveis, a serem
implementadas trabalhos futuros.
1.1 - Objetivos TerraML foi desenvolvida com o objetivo de diminuir algumas das limitações existentes
nos ambientes computacionais para modelagem dinâmica disponíveis atualmente.
Algumas destas limitações são:
1) Especialização dos Sistemas / limitação das aplicações
Sistemas de modelagem dinâmica geralmente são especializados, isto é, são
dedicados a uma classe de aplicações e não podem ser facilmente adaptados
a outras situações de modelagem. Um dos objetivos da TerraML é ser um
ambiente de simulação dinâmica de propósito geral, suportando uma ampla
gama de aplicações. Aplicações potenciais do ambiente TerraML são
processos de desmatamento (Lambin 1994), processos de expansão urbana
19
(Couclelis 1997), (White and Engelen 1997) e de processos ecológicos (Soares
Filho 1998).
2) Nível de Acoplamento Fraco
A maioria dos sistemas de simulação são sistemas fracamente acoplados, isto
é, demandam conversões e um grande trabalho de pré-processamento dos
dados. Um dos objetivos de TerraML é a integração plena com o Sistemas de
Gerenciamento de Banco de Dados de uso geral.
3) Sistemas fechados/ soluções proprietárias
O alto nível de especialização dos sistemas de modelagem dinâmica leva estes
sistemas a apresentarem um alto custo. Além disto, estes sistemas são
fechados, não podendo ser modificados ou estendidos.
TerraML é parte da biblioteca espacial TerraLib (Câmara, Souza et al. 2000).
TerraLib está sendo desenvolvida sobre os fundamentos do software livre, ou
seja, a distribuição do software é gratuita e todo código pode ser copiado e
modificado.
4) Restrição de Modelos
Muitos sistemas de modelagem restringem-se a um modelo matemático,
excluindo a possibilidade do uso combinado deste modelo com outros. Um dos
objetivos deste trabalho é trabalhar com a visão de Lambin (1994) de que os
diferentes modelos matemáticos não são excludentes, mas sim
complementares. Nesta perspectiva, o sistema deve suportar o uso combinado
de diferentes modelos matemáticos e permitir a interação de componentes
discretos e contínuos, independente da solução computacional implementada.
1.2 - Organização da Tese
No Capítulo 2, Modelagem Dinâmica e GIS, é apresentada uma revisão bibliográfica
sobre modelagem dinâmica, focalizando os princípios básicos e requisitos necessários
para representar os principais componentes de um modelo espacial dinâmico. Neste
capítulo também, são descritos dois ambientes computacionais para Modelagem
dinâmica espacial, o PCRaster e o Modelo Multi-Escala do RIKS.
20
No Capítulo 3, Ambiente Computacional para Modelagem Dinâmica Espacial, é
apresentado o ambiente computacional para modelagem ambiental desenvolvido
nesta tese. O capítulo está organizado em duas partes: aspectos conceituais, que
apresenta os fundamentos teóricos sobre os quais este ambiente foi projetado, e
aspectos de implementação, que apresenta as estruturas de dados e tecnologia
utilizada para implementar o ambiente computacional para dar suporte à linguagem
TerraML
No Capítulo 4, TerraML - Formalização da Linguagem, são apresentados os
principais elementos desta linguagem. Este capítulo está organizado em arquitetura,
sintaxe e funcionalidade da linguagem.
No Capítulo 5, Uma Aplicação em Mudança na Cobertura do Solo, apresentamos
uma visão geral da TerraML, através de um exemplo de um processo de mudança no
uso e cobertura do solo relativo à evolução do desmatamento na Amazônia.
No Capítulo 6, Conclusões e Futuros Trabalhos, são apresentadas algumas
considerações finais sobre o trabalho e sugestões de temas de pesquisa para futuros
trabalhos em modelagem dinâmica.
21
CAPÍTULO 2 MODELAGEM DINÂMICA E GIS
2.1 - Requisitos para Modelagem Dinâmica em GIS
A atual geração de Sistemas de Informações Geográficas (GIS) configura uma
tecnologia estabelecida para armazenar, organizar, recuperar e modificar informações
sobre a distribuição espacial de recursos naturais, dados geo-demográficos, redes de
utilidade pública e outros tipos de dados localizados na superfície da terra. Nesta
área, um dos principais desafios atuais é transformar estes sistemas, essencialmente
estáticos, em ferramentas capazes de prover representações realistas de processos
espaço-temporais. A modelagem de grande quantidade de processos físicos, em
aplicações como geomorfologia, estudos climáticos, dinâmica populacional, e impacto
ambiental, requer que os GIS tenham capacidade de representar os tipos de
processos dinâmicos encontrados em estudos de sistemas físicos e sócio-
econômicos.
Neste contexto, a modelagem dinâmica (Burrough, 1998) procura transcender as
limitações atuais da tecnologia de Geoprocessamento, fortemente baseada numa
visão estática, bidimensional do mundo. O objetivo dos modelos dinâmicos em GIS é
realizar a simulação numérica de processos dependentes do tempo, como nos
modelos hidrológicos, que simulam o fluxo e transporte de água. Na definição de
Burrough, “um modelo espacial dinâmico é uma representação matemática de um
processo do mundo real em que uma localização na superfície terrestre muda em
resposta a variações em suas forças direcionadoras”.
Tipicamente, GIS são desenvolvidos a partir de suposições pré-estabelecidas quanto
à homogeneidade, uniformidade e universalidade das propriedades de seus principais
componentes, que incluem o espaço e as relações espaciais, o tempo e o modelo
matemático que descreve o fenômeno. Entretanto, para modelar processos dinâmicos
em GIS com o nível necessário de realismo, estas suposições rígidas têm que ser
flexibilizadas de tal forma que o sistema seja capaz de representar (Couclelis, 1997):
• O espaço como uma entidade não homogênea tanto nas suas propriedades
quanto na sua estrutura.
22
• As vizinhanças como relações não estacionárias.
• As regras de transição como regras não universais.
• A variação do tempo como um processo regular ou irregular.
• O sistema como um ambiente aberto a influências externas.
Estrutura
regular Irregular
Espaço
Propriedades
uniforme
não uniforme
Vizinhança
estacionária
não estacionária
Função de Transição
universal não universal
Tempo
regularidade
Irregularidade
Sistema
fechado aberto
FIGURA 2.1 – Requisitos para modelagem dinâmica em GIS.
FONTE: Couclelis (1997).
Na Figura 2.1 estão representados os requisitos mencionados anteriormente. A
regularidade do espaço diz respeito à forma como ele é distribuído, e pode ser
regular, isto é, dividido em parte iguais, ou irregular, distribuído de forma
diferenciada. As vizinhanças, que geralmente são concebidas como tendo a mesma
configuração para todo ponto no espaço, devem superar esta estacionaridade e
podem ser representadas com diferentes configurações em diferentes pontos do
espaço. Por exemplo, em determinado ponto uma célula pode ter vizinhança 4, e em
outro ponto, vizinhança 8. O sistema deve permitir que mais de uma função de
transição possa ser aplicada, permitir que o tempo seja representado em intervalos
variáveis (meses, anos) e suportar a inclusão de variáveis externas.
Para implementar sistemas espaciais dinâmicos com as características mencionadas
acima, alguns princípios básicos relativos aos principais elementos destes sistemas
δ1 δ2 δ
23
devem ser considerados. Entre estes elementos destaca-se a questão da
representação do espaço e do tempo, o modelo dinâmico a ser utilizado para a
representação do fenômeno espacial e a abordagem computacional para implementar
estes princípios de forma integrada e consistente. Nas seções seguintes, discutiremos
cada um destes elementos.
2.1.1 -O Espaço
O espaço é o conceito chave na geografia e, por extensão, na Ciência da Informação
Espacial. Tradicionalmente, os geógrafos fazem uma distinção entre os conceitos de
espaço absoluto e espaço relativo.
“Espaço absoluto, também chamado Cartesiano ou Newtoniano, é um container de
coisas e eventos, uma estrutura para localizar pontos, trajetórias e objetos. Espaço
relativo, ou Leibnitziano, é o espaço constituído pelas relações espaciais entre coisas
e eventos” (Couclelis, 1997).
(Santos, 1996) refere-se à distinção entre espaço absoluto e espaço relativo como o
“espaço dos fixos” e o “espaço dos fluxos”. Em termos de representações
computacionais pode-se, de forma aproximada, traduzir estes conceitos como a
distinção entre as representações associadas a recobrimentos planares (mapas de
polígonos e matrizes) e representações associadas a conectividade (grafos). Um caso
típico de medida realizada no espaço absoluto são os índices de auto-correlação
espacial. Neste caso, um dos instrumentos básicos é a matriz de proximidade
espacial, cujo cálculo usualmente é feito em função de distância euclidiana entre
objetos ou da existência de uma fronteira entre eles. Na Figura 2.2 está representado
um mapa temático e sua respectiva matriz de proximidade definida com base nas
fronteiras existentes entre os objetos, no caso, estados da federação.
24
FIGURA 2.2 – Um mapa poligonal e sua matriz de proximidade.
Em muitos fenômenos geográficos, os objetos estabelecem relações entre si que
independem das relações espaciais típicas, como as relações topológicas, direcionais
e de distância. Estes fenômenos geralmente incluem relações como fluxo de pessoas
ou materiais, conexões funcionais de influência, comunicação e acessibilidade, entre
outras (Couclelis, 1999). Um exemplo de fenômeno em que a dimensão espacial
requer o conceito de espaço relativo é o caso de fluxo de pessoas pela rede de
transporte metroviário de uma cidade. O fluxo de pessoas a partir de uma mesma
origem tem diferentes destinos, como mostrado na Figura 2.3, e a relação entre a
origem e o destino, é estabelecida com base em relações de conectividade e
acessibilidade.
FIGURA 2.3 – Mapa do fluxo de pessoas em uma rede de transporte.
Couclelis (1997) propõe a idéia de espaço próximo como uma extensão dos conceitos
de espaço absoluto e relativo. No espaço próximo o conceito chave é a vizinhança
associada à noção de proximidade, que conduzem também ao conceito de
proximidade funcional ou influência. O conceito de vizinhança é facilmente visualizado
em representações matriciais do espaço. Algumas operações espaciais disponíveis
25
em GIS como filtros espaciais, por exemplo, utilizam a noção de espaço próximo de
forma limitada. No filtro espacial, o estado de uma célula (um pixel de uma imagem) é
modificado com base nos estados das demais células em sua vizinhança, definida
através de uma máscara. A seguir é apresentado um exemplo de filtro espacial e o
estado de uma célula qualquer, antes (Figura 2.4b) e após (Figura 2.4c) a aplicação do
filtro espacial.
a) Máscara b) estado da célula central antes do filtro c)estado da célula central após o filtro
FIGURA 2.4 – Exemplo de filtro espacial.
A abstração fundamental na maior parte dos GIS atuais é o conceito de mapa,
fortemente relacionado com noções cartográficas e, portanto, do espaço absoluto. Em
processos dinâmicos a noção de espaço relativo e próximo são fundamentais para
estabelecer e representar fluxos e conexões entre entidades do sistema.
2.1.2 O - Tempo
Apesar de ser reconhecida a necessidade de incorporar a dimensão temporal em
muitos processos ambientais, a representação do tempo em sistemas de informações
geográficas não passou de um estágio embrionário (Parent et al., 1999; Zipf e Krüger,
2001). Isto se deve (1) ao paradigma cartográfico sobre o qual GIS foram
construídos, (2) a ênfase dada em soluções orientadas a implementação, e (3) a
ausência de uma teoria espaço-temporal (Peuquet, 2001). A maioria das
implementações de aspectos temporais em GIS tem sido limitada a extensões de
sistemas espaciais para acomodar frágeis conceitos de tempo, ignorando (1) a
semântica dos processos espaço-temporais e (2) os aspectos subjacentes da
mudança (Hornsby e Egenhofer, 1997).
Conceitualmente, pode-se representar o tempo através de diferentes estruturas,
definidas, principalmente, com base em três aspectos da representação temporal:
granularidade, variação e ordem no tempo (Figura 2.5).
0
1 1
1
1
0
0
1
0
26
Ordem no tempo Variação Temporal Granularidade
linear
discreto
instante
ramificado
contínuo intervalo
ciclíco
período
FIGURA 2.5 - Estruturas temporais.
FONTE: Worboys (1998).
A ordem temporal refere-se ao modo como o tempo flui. Neste caso, pode-se assumir
que o tempo flui de forma linear, ramificada ou cíclica. No tempo linear considera-se
que o tempo flui seqüencialmente, ou seja, existe uma ordem de precedência entre os
pontos no tempo, de tal forma que cada ponto tenha apenas um sucessor e um
antecessor. No tempo ramificado, múltiplos pontos podem ser os sucessores ou
antecessores imediatos de um mesmo ponto. O tempo cíclico é utilizado para modelar
eventos e processos recorrentes (Edelweiss e Oliveira, 1994).
Com relação à variação temporal, duas possibilidades podem ser consideradas: tempo
contínuo e discreto. Uma variável temporal contínua é usada em processos que
demandam medidas de tempo com níveis arbitrários de precisão. Por exemplo, a
expansão da área de desmatamento de uma floresta entre dois instantes de tempo
medidos pode ser interpolada. Uma variável temporal discreta é usada quando o
tempo é medido em certos pontos ou intervalos e a variação é descontínua entre estes
pontos. Uma delimitação de lotes de um cadastro imobiliário pode ocupar uma
posição num instante t e outra num instante t’, mas não faz sentido dizer que a
delimitação ocupou alguma posição intermediária entre t e t’.
Associado ao conceito de variação temporal discreta, existe o conceito de Chronon.
Um chronon é a menor duração de tempo suportada por um sistema e pode variar em
diferentes aplicações (Edelweiss e Oliveira, 1994).
A granularidade temporal de um sistema está diretamente relacionada com a duração
de um chronon. As diferentes granularidades de um sistema temporal conduzem à
definição de instante e intervalo de tempo. Um instante de tempo representa um ponto
particular no tempo, um intervalo é o tempo decorrido entre dois instantes e um
período consiste de uma seqüência de intervalos de tempo .
Em sistemas computacionais, representa-se o tempo em pelo menos duas dimensões:
27
• tempo válido (valid time) - corresponde ao tempo em que um evento ocorre no
domínio da aplicação.
• tempo de transação (transaction time) – corresponde ao tempo em que
transações acontecem dentro do sistema de informação (Worboys, 1995).
Adicionalmente, existe o conceito de “tempo definido pelo usuário”, consistindo de
propriedades definidas explicitamente pelos usuários em um domínio temporal e
manipuladas pelo programa de aplicação (Edelweiss e Oliveira, 1994).
A incorporação da dimensão temporal em um sistema de informação não se restringe
apenas à questão da representação do tempo, mas inclui também questões relativas a
sua recuperação. Um GIS temporal deve ser capaz de recuperar informações através
de consultas definidas sobre critérios temporais, como por exemplo:
• Quais rodovias do Brasil foram recuperadas a partir de 1980 e agora permitem
uma velocidade superior a 100km/h?
• Qual rio teve a maior taxa de poluição entre 1970 e 1985?
• Quais as cidades em que a cobertura vegetal aumentou em pelo menos 5%
durante os últimos 5 anos?
A representação do tempo em modelos dinâmicos não se limita a uma simples
questão de estender os GIS para incorporar conceitos de banco de dados temporais.
Na dimensão temporal, assim como na dimensão espacial e do modelo, a dicotomia
entre contínuo e discreto é uma questão desafiante. Eventos tais como relâmpagos e
erupções vulcânicas são discretos tanto no domínio temporal quanto no espacial,
enquanto temperatura e precipitação são processos espaço-temporais contínuos
(Peuquet, 2001). Outro conceito forte em sistemas temporais refere-se à dinâmica de
atualização dos objetos, que pode ser síncrona ou assíncrona. Em sistemas síncronos
todos os elementos do sistema são atualizados simultaneamente (Sipper, 1999). Já
em sistemas assíncronos, os elementos não são atualizados em intervalos de tempo
regulares.
28
2.1.3 -Modelos
Modelos espaciais dinâmicos descrevem a evolução de padrões espaciais de um
sistema ao longo do tempo. Segundo Lambin(1994) o modelo de um fenômeno deve
responder às seguintes questões:
• Quais variáveis ambientais e culturais contribuem para explicar o fenômeno, e
quais são os processos ecológicos e sócio-econômicos existentes por trás do
fenômeno?
• Como o processo evolui?
• Onde ocorrem os fenômenos?
Estas questões chaves podem ser identificadas como as clássicas “Porquê”, “Quando”
e “Onde”. Um modelo que responde a estas questões é capaz de descrever
quantitativamente um fenômeno e prever sua evolução, integrando suas escalas
temporal e espacial.
Um modelo é constituído de pelo menos três elementos variáveis, relacionamentos e
processos. Ao se construir um modelo, dependendo do objetivo, pode-se dar ênfase a
um ou outro destes elementos. Nesta visão, os modelos podem ser classificados em
empíricos e sistêmicos, Figura 2.6. Modelos empíricos focalizam os relacionamentos
entre as variáveis do modelo, a partir da suposição de que os relacionamentos
observados no passado continuarão no futuro. Modelos sistêmicos são descrições
matemáticas de processos complexos que interagem entre si, enfatizando as
interações entre todos os componentes de um sistema (Lambin, 1994).
FIGURA 2.6 – Tipos de modelos. FONTE: adaptada de Lambin (1994).
29
2.1.3.1 - Modelos Empíricos
Os modelos empíricos, em sua dimensão procedimental, possuem três componentes
chaves: uma configuração inicial, uma função de mudança e uma configuração de
saída. A configuração inicial de um modelo dinâmico pode ser obtida através de
dados históricos do fenômeno em estudo, chamados de séries temporais. Neste caso,
equações diferenciais (totais ou parciais) que incluem pelo menos um termo derivado
no tempo podem ser utilizadas para representar o modelo e o processo é classificado
como determinístico. Quando variáveis aleatórias são utilizadas para explicar um
sistema, o processo é classificado como estocástico-probabilístico.
Modelos empíricos são caracterizados pela simplicidade dos modelos matemáticos
empregados e pelo número reduzido de variáveis envolvidas. Estes modelos são
eficientes em fazer predições, embora apresentem limitações em abordar a evolução
espacial e identificar os aspectos causais do sistema. A seguir, serão apresentados
três modelos empíricos: cadeias de markov, modelos logísticos de difusão e modelos
de regressão.
2.1.3.1.1 - Cadeias de Markov
Cadeias de Markov são modelos matemáticos para descrever processos estocásticos
e podem ser denotadas por:
onde Π(t) é o estado do sistema no tempo t, Π(t+1) é o estado do sistema após o
instante t+1 e Pn são os estados passíveis de acontecer, que são representados em
matrizes de possibilidades de transição. Essas matrizes de transição representam a
possibilidade de um determinado estado i permanecer o mesmo ou mudar para o
estado j durante o instante de tempo t->t+1. As probabilidades de transição são
usualmente derivadas de amostras relativas a um certo instante de tempo. Cadeias
de Markov de 1a ordem assumem que o estado futuro do sistema depende apenas do
seu estado presente e das possibilidades de transição, sendo independente da
trajetória que o levou àquele estado (estados em um tempo t-1). Este modelo não
Π(t+1)= Pn.Π(t)
30
ignora o passado, mas assume que toda a informação do passado está concentrada
no presente estado do sistema. Desta forma, as interações são instantâneas, sendo
irrelevante o tempo de permanência das variáveis em cada estado (Soares Filho,
1998).
Outra característica das cadeias de Markov é que as probabilidades de transição não
mudam com o tempo, o que o caracteriza como um processo estacionário.
As principais vantagens das cadeias de Markov são a simplicidade operacional e
matemática do modelo aliadas à facilidade com que podem ser aplicadas a dados
provenientes de sensoriamento remoto e implementadas em GIS. Outra grande
vantagem é o fato de não necessitar de grande quantidade de dados antigos para
prever o futuro.
As principais limitações das cadeias de Markov incluem o fato do modelo não explicar
o fenômeno (Porquê) e ser limitado na resposta espacial (Onde), entretanto o modelo
pode fazer predições (Quando) desde que os processos sejam estacionários. Além
disto, o modelo não suporta de imediato a inclusão de variáveis exógenas como
variáveis sócio-econômicas ou outras forças direcionadoras, embora esta limitação
possa ser superada. Em (Lambin, 1994) são apresentadas várias abordagens para
superar as principais limitações de cadeias de Markov em modelagem dinâmica.
2.1.3.1.2 - Modelos logísticos de Difusão
Modelos logísticos são utilizados para descrever matematicamente fenômenos em
que as variáveis inicialmente apresentam variações em um ritmo lento, depois o ritmo
de variações se intensifica, voltando a reduzir-se até que o nível de saturação seja
atingido. Este modelo leva em conta as interações temporais entre as variáveis do
sistema, podendo ser expresso por:
( )
UP-Ur P
dtdP
=
onde P é a variável de um fenômeno de crescimento ao longo do tempo t, como
aumento da população, por exemplo: r é a taxa de crescimento e U uma função de
crescimento (Lambin, 1994).
31
Dentre os modelos baseados em funções logísticas destacam-se os modelos de
difusão. Tais modelos enfatizam a velocidade do processo e permitem a inclusão de
variáveis relacionadas às causas do fenômeno.
Os principais elementos de um modelo espacial de difusão são (Soares Filho, 1998):
• meio ambiente (isotrópico ou heterogêneo)
• tempo (contínuo ou discretizado)
• item a ser difundido (material, pessoas, informação, doença)
• locais de origem
• locais de destino
• caminhos a serem percorridos
Estes elementos interagem entre si através de um mecanismo em que se pode
identificar quatro estágios:
• Estágio inicial – neste estágio tem início o processo de difusão.
• Estágio de difusão – tem início o processo de espalhamento
• Estágio de condensação – diminui o ritmo do espalhamento.
• Estágio de saturação – ocorre a desaceleração ou encerramento do processo de
difusão.
O processo de espalhamento em modelos de difusão pode se dar por expansão ou
realocação. Nos modelos de difusão por expansão a informação ou material se
espalha de uma região para outra, permanecendo na região original. Nos modelos de
difusão por realocação os objetos se movem para novas regiões, abandonando as
área originais (Soares Filho, 1998).
Modelos de difusão não explicam as causas de um fenômeno, embora possam
integrar variáveis ecológicas e sócio-econômicas. Sua maior contribuição está na
predição do comportamento futuro do fenômeno. Quanto à dimensão espacial, o
modelo em si não a incorpora, mas ela pode ser introduzida através da integração
deste modelo com um GIS (Lambin, 1994).
2.1.3.2.3 - Modelos de Regressão Linear
O objetivo dos modelos de regressão é estabelecer relações estatísticas entre um
fenômeno em estudo e as variáveis independentes envolvidas, chamadas forças
direcionadoras, que exercem influência sobre ele. Sendo assim, o modelo suporta a
32
inclusão de variáveis exógenas como as sócio-econômicas. Isto contribui para o
entendimento do fenômeno em estudo, mas é insuficiente para explicá-lo, pois a
identificação de um relacionamento estatístico entre duas variáveis por si só não
estabelece um relacionamento causal entre elas. Por exemplo, pode-se identificar
através de um modelo de regressão que o crescimento populacional tem relação com
o crescimento do desmatamento de uma determinada região, entretanto, o modelo de
regressão não explica os mecanismos que ligam estas variáveis (Lambin, 1994).
Matematicamente, o modelo estabelece um relacionamento linear entre as variáveis
dependentes e independentes através da expressão:
y= a0 + a1 x1 + a2x2 + ... + aixi + E onde:
y = mudança ocorrida em um determinado tempo xi = variáveis independentes (forças direcionadoras) ai = Coeficientes de regressão dos relacionamentos E = Componente de erro
Em modelos de regressão a dimensão temporal é considerada, mas a distribuição
espacial do fenômeno não é abordada, limitação esta que pode ser superada se o
modelo for combinado com GIS. Outra limitação deste modelo é que ele se aplica
apenas a processos estacionários (Lambin, 1994).
Um exemplo de modelo de regressão é o implementado por (Reis e Margulis, 1991)
para modelar o desmatamento da Amazônia em função da densidade espacial das
atividades econômicas da região. Neste modelo, num primeiro estágio, áreas
desmatadas são relacionadas com a densidade populacional, áreas cultivadas,
distância de centros urbanos e proximidade de rodovias, entre outras variáveis. Num
segundo estágio, o modelo relaciona o crescimento de determinadas atividades
(colonização, cultivo, pecuária) entre 1980 e 1985 com a densidade destas atividades
em 1980, obtendo assim o padrão de crescimento espacial de cada atividade. Então,
partindo da suposição de que este padrão espacial de crescimento irá se manter no
futuro, o modelo faz projeções sobre a tendência de desmatamento para o período de
1985-2000 (Lambin, 1994) .
33
2.1.3.2 - Modelos Sistêmicos
Modelos sistêmicos procuram descrever o sistema como um todo, isto é, tentam
representar as interações entre todos os seus componentes. Uma característica chave
destes modelos é a eficiência com que abordam a dimensão espacial, implementando
conceitos como as relações de vizinhança e suportando o uso combinado de múltiplas
escalas. A seguir, descreveremos as características gerais de duas classes de
modelos sistêmicos: os modelos de simulação de ecossistemas e os modelos de
simulação dinâmica espacial.
2.1.3.2.1 - Modelos de Simulação de Ecossistemas
Modelos de Ecossistemas são projetados para imitar o comportamento de um
sistema, enfatizando as interações entre todos os seus componentes. Estes modelos
são baseados na composição de ecossistemas complexos em um número de
equações diferenciais (Lambin, 1994). A construção de um modelo de simulação
requer que os principais aspectos que afetam o fenômeno estejam bem integrados,
que seus relacionamentos funcionais estejam bem representados e que o modelo
possa predizer os impactos ecológicos e econômicos das mudanças ao longo do
tempo.
Estes modelos são adequados para representar processos não estacionários, mas
apresentam dificuldades para sua expressão espacial , pois tratam o espaço como
uma entidade homogênea (Lambin, 1994).
2.1.3.2.2 - Modelos de Simulação Dinâmica Espacial
Modelos de Simulação Dinâmica Espacial baseiam-se em modelos de ecossistemas
com extensões para acomodar a heterogeneidade espacial e processos humanos de
tomada de decisão.
Uma abordagem para desenvolver modelos de simulação dinâmica espacial é
representar o espaço como uma matriz de células e aplicar as equações matemáticas
a cada uma das células da matriz, simultaneamente. Cada célula do modelo está
conectada com suas células vizinhas, de tal forma que é possível estabelecer um fluxo
34
entre células adjacentes. Isto simplifica sobremaneira o mecanismo de predições do
sistema porque, por exemplo, se uma célula tem três vizinhos com estado x, é
altamente provável que o estado desta célula venha a ser x também. Entretanto, este
raciocínio simplista pode ser aperfeiçoado através do uso de regras de transição.
Outro aperfeiçoamento desse modelo é a possibilidade de incorporar processos de
tomada de decisões. Modelos que incorporam este mecanismo são chamados
modelos baseados em regras. As regras de tomada de decisão são representadas
através de abstrações muito semelhantes àquelas que ocorrem na mente humana.
Um exemplo de modelo com as funcionalidades mencionadas acima é o
implementado no DELTA (Dynamic Ecological Land Tenure Analysis), um sistema
desenvolvido para integrar aspectos sócio-econômicos da colonização amazônica e
aspectos ecológicos do desmatamento e da liberação de carbono na atmosfera no
Estado de Rondônia.
O DELTA utiliza três submodelos integrados que simulam, respectivamente, a difusão
da colonização, mudança do uso do solo e liberação de carbono. Os submodelos são
examinados em diferentes escalas, o que caracteriza o modelo como multi-escala.
Além disto, o modelo é considerado “a playing game tool”, pois não se restringe a
fazer predições, mas sim a servir como instrumento para responder “what if questions”
(Lambin, 1994).
2.1.3.3 - Resumo dos Modelos
Para finalizar, um resumo das características chaves de cada tipo de modelo, segundo
o potencial de cada um deles para responder as perguntas porque, quando e onde é
apresentado na Tabela 2.1.
Cadeias de Markov, modelos logísticos de Difusão e Regressão são eficientes em
modelar processos estacionários. Estes modelos utilizam equações matemáticas
simples e requerem poucos dados, além de serem compatíveis com o formato de
dados oriundos de fontes de sensoriamento remoto e, como conseqüência, facilmente
implementados em GIS.
Modelos Sistêmicos são considerados modelos exploratórios porque fornecem
condições para que várias simulações possam ser investigadas a partir de diferentes
cenários. Entretanto, estes modelos requerem um substancial conhecimento do
35
fenômeno em estudo e acabam por se tornar sistemas altamente especializados, não
podendo ser aplicados a outras classes de fenômenos.
TABELA 2.1 Resumo dos tipos de modelos.
Modelo Porquê Quando Onde
Cadeias de Markov
não pode explicar a razão de um fenômeno por ser processo estocástico e não suportar a inclusão de variáveis exógenas
pode predizer a evolução de processos estacionários
pode predizer distribuições espaciais de elementos do modelo se for combinado com GIS
Logístico de Difusão
permite a inclusão de poucas variáveis exógenas, entretanto é um modelo descritivo, não suportando investigações exploratórias
suporta a dimensão temporal, podendo predizer a evolução de processos não estacionários
pode predizer distribuições espaciais de elementos do modelo se for combinado com GIS
Regressão Linear contribui para identificar forças direcionadoras, entretanto são modelos descritivos, não sendo capaz de estabelecer relações causais entre as variáveis
pode predizer a evolução de processos estacionários
não são modelos espaciais, entretanto podem ser combinados com GIS
Simulação de Ecossistemas
modelo exploratório que requer descrições funcionais dos sistemas ecológicos
pode formular cenários de mudanças futuras no uso do solo, baseado nos parâmetros do modelo
apresenta dificuldades na representação espacial
Simulação Espacial Dinâmica
requer modelos funcionais espacialmente definidos
pode predizer mudanças temporais no uso do solo, baseado nos parâmetros do modelo
pode predizer evolução de padrões espaciais em processos determinísticos
Diferentes modelos servem a diferentes propósitos, logo eles não são excludentes,
mas sim complementares. Nesta perspectiva, Lambin (1994) sugere que, ao se
construir um modelo, deve-se fazê-lo de forma gradual, começando por Cadeias de
Markov, que são os mais simples, e ir incorporando novos elementos (variáveis
exógenas) e funções (determinísticas) ao projeto.
A dimensão espacial deve ser também introduzida de forma gradual, começando com
as relações espaciais mais elementares como as de vizinhança, refinando
continuamente, de forma a contemplar a noção de espaço relativo e suporte a
representações em múltiplas escalas.
Modelos espaciais dinâmicos construídos com esta visão de projeto devem ser
capazes de representar de forma realista os fenômenos dinâmicos encontrados na
natureza, superando as limitações dos modelos atuais, baseados em concepções
limitadas quanto às representações do espaço, do tempo e dos processos.
36
2.2 - Ambientes Computacionais para Modelagem Dinâmica
Os GIS disponíveis atualmente foram implementados segundo diferentes paradigmas
computacionais. A ciência de informação geográfica faz uso intenso das ferramentas
e tecnologias computacionais disponíveis, além de impulsionar o desenvolvimento de
novas abordagens para lidar com a natureza complexa dos dados e fenômenos
espaciais. Esta forte interação entre a Ciência da Computação e a Ciência da
Informação Espacial teve como conseqüência o surgimento do termo
GeoComputação para significar o uso em larga-escala de paradigmas computacionais
como ferramenta para pesquisas geográficas (Openshaw, 2000).
Na seção anterior, foram apresentados os princípios básicos relativos aos principais
componentes de um modelo espacial dinâmico. Nesta seção, dois ambientes de
simulação dinâmica, PCRaster e Modelo Multi-Escala/RIKS, serão analisados segundo
aspectos computacionais como a arquitetura de software, estruturas de dados e de
controle, funcionalidade e interface.
2.2.1 - PCRaster
O PCRaster é um software para modelagem dinâmica de processos físicos. Em
processos físicos, a modelagem dinâmica descreve ou simula a distribuição, fluxo e
transporte de material ou energia no solo (Van Deursen, 1995).
Para simular o transporte de material são necessárias estruturas de dados que
suportem a noção de direção e relações de resistência, acúmulo de material e
movimento. Nesta visão, a complexidade dos modelos dinâmicos depende da
dimensão em que tais modelos operam, 2D ou 3D, e dos modelos matemáticos que
utiliza .
O PCRaster trabalha com dados espaciais no modo matricial (raster). Para modelar
um processo de fluxo/distribuição de material neste software, é utilizada uma estrutura
de dados chamada Local Drain Direction (LDD). A estrutura de dados LDD consiste
em uma matriz, equivalente à dos mapas da área de estudo, com direções para o fluxo
de material. Essas direções consistem em números como os do teclado numérico do
37
a)Teclado numérico b) Representação computacional
computador (Figura 2.7 a). Desta forma, um LDD da forma apresentada na Figura 2.7
b, levaria ao fluxo de material segundo a representação da Figura 2.7 c.
7 8 9 1 1 4
4 5 6 1 1 4
1 2 3 1 4 4
FIGURA 2.7 - Redes LDD.
Além do LDD e dos mapas no modo raster, o PCRaster utiliza séries temporais
(arquivos tss), que são arquivos ASCII, contendo dados armazenados de forma
tabular. Os dados fornecidos nas séries temporais são utilizados para calcular o novo
estado das células.
O PCRaster oferece uma interface de programação baseada em scripts, através dos
quais o usuário pode fazer uso extensivo das funções e operadores oferecidos na
biblioteca de funções, desenvolvida em Linguagem C.
Para descrever o modo como o PCRaster é operado, utilizaremos como exemplo um
caso de escoamento de água da chuva em uma bacia. Para modelar este processo
é necessário fornecer como entradas para o sistema o Modelo Numérico do Terreno
(MNT) e as séries temporais com os dados de precipitação pluviométrica. A partir do
MNT (Figura 2.8 a) é gerada a rede LDD (Figura 2.8 b), que é a rede de drenagem por
onde a água excedente flui. A água excedente é toda a água que não foi infiltrada, por
já ter excedido a capacidade de infiltração da célula. Para determinar o padrão
espacial do processo de infiltração, um mapa de solos da área em estudo (Figura 2.8
d) tem que ser fornecido. A partir destes dados, o programa é executado e gera um
conjunto de mapas resultantes (Figura 2.8 e).
c) Representação conceitual
38
FIGURA 2.8 – Esquema simplificado das entradas e saídas do PCRaster.
Para modelagem dinâmica, o PCRaster oferece um conjunto de funções para o fluxo
de material, tais como:
• fluxo acumulado (accuflux/state)- calcula o novo estado dos atributos de
uma célula, somando o valor original da célula mais a soma acumulada de
todos as células cujo fluxo passa por esta célula (upstream cell);
• capacidade de transporte de uma célula (accucapacity-flux/state) -
limita o fluxo de célula para célula a um atributo de capacidade de transporte
fornecido em valores absolutos;
• fração de transporte ( accufractionflux/state) - limita o fluxo sobre a
rede a um parâmetro que controla a proporção de material que pode fluir em
cada célula.
• valor limite (accuthresholdflux/state) – modifica o acúmulo de fluxo
sobre a rede limitando o transporte de valores superiores a um determinado
limite mínimo por célula.
• valor de disparo (accutriggerflux/state) – permite o fluxo de material
apenas se um valor de disparo for excedido.
c) TSS
rain in two rain areas for 1993, time = 1: november; time = 12: october 3 model time rain (mm/month) in rain area 1, id = 1 rain (mm/month) in rain area 2, id = 2 1 74 75 2 71 71 3 74 76 4 58 59 5 40 40 6 40 42 7 45 47
PROGRAMA PCRASTER
a) MNT
e)mapas resultantes
b) LDD
d) Mapa de solos
39
2.2.2 - Modelo Integrado Multi-Escala / RIKS
Autômatos celulares são geralmente utilizados para modelar processos de mudança
do uso e cobertura do solo. Tradicionalmente, autômatos celulares são
implementados segundo critérios estritamente locais, isto é, a dinâmica de aplicação
das regras de transição baseiam-se principalmente na vizinhança de uma célula.
Entretanto, em muitos casos de processos urbanos, a função de transição deve levar
em conta diferentes fatores, incluindo: os efeitos da vizinhança, a qualidade do solo
(fator ambiental), as taxas demográficas da região (fator social), a demanda por uma
determinada atividade econômica e o comportamento dos agentes econômicos.
Na literatura recente, verifica-se uma tendência de propostas de extensões ao modelo
de autômato celular clássico, visando integrar fatores ambientais e sócio-econômicos,
para representar a dinâmica espacial de fenômenos urbanos.
Entre estas propostas destaca-se a do Research Institute for Knowledge Systems
(RIKS 2001), que apresenta uma estrutura de modelagem dinâmica e de suporte a
decisão capaz de operar em uma variedade de escalas (Engelen, 1995).
A arquitetura do modelo Multi-Escala é constituída de dois sub-sistemas denominados
macro e micro-escalas. Na macro-escala estão representadas as variáveis ecológicas
e sócio-econômicas que afetam o sistema como um todo. A micro-escala representa a
dimensão espacial do modelo. Estas escalas interagem intensamente entre si e com
um Banco de Dados Geográfico, a partir do qual o modelo obtém os dados
necessários para as simulações (Figura 2.9).
A macro-escala possui três componentes representando os subsistemas natural,
econômico e social. Estes subsistemas estão conectados através de uma rede de
influência mútua e recíproca. O subsistema natural representa condições ambientais
tais como temperatura, precipitação e poluição. O subsistema social inclui dados
demográficos como nascimentos, morte e migração. O subsistema econômico é
fortemente determinado pelas mudanças ocorridas no subsistema natural e pelas
demandas sociais. Neste sentido, ele pode gerar demandas como, por exemplo, a
necessidade por mais células residenciais quando a população aumenta.
A micro-escala consiste em um autômato celular sobre o qual são aplicadas regras de
transição para calcular as mudanças no uso do solo.
40
FIGURA 2.9 - Integração entre o Modelo Multi-Escala/RIKS e GIS.
FONTE: Engelen (1995).
Neste autômato, os estados das células representam categorias de uso do solo
(Figura 2.10) e são divididos em duas categorias: funções e feições. Funções são
usos do solo ativos, tais como residencial, floresta, comercial. Em princípio, uma
célula função pode mudar para qualquer um dos estados possíveis. Feições são usos
do solo fixos, tais como rios, parques e aeroportos. Embora as feições não estejam
sujeitas às mudanças geradas pelas regras de transição do autômato celular,
eventualmente elas podem ser convertidas através de um processo especial ou uma
intervenção exógena. Feições aparecem como argumentos das regras e podem afetar
41
a transição de células vizinhas. Assim, por exemplo, a existência de um parque pode
influenciar a transição de células vizinhas em células residenciais (White, 1997).
FIGURA 2.10 - A micro-escala.
A vizinhança de uma célula é uma região circular com um número variável de células,
organizadas em zonas de distâncias. A Figura 2.11 representa uma célula com
vizinhança circular de diâmetro 8, que abrange uma área de 197 células, organizadas
em 30 zonas de distâncias. As zonas de distâncias influenciam o efeito
atração/repulsão que as células vizinhas têm no potencial de transição de uma célula.
30 28 27 25 24 25 27 28 29 26 23 21 20 19 20 21 23 26 29 29 25 22 18 16 15 14 15 16 18 22 25 29 26 22 17 14 13 11 10 11 13 14 17 22 26 28 23 18 14 12 9 8 7 8 9 12 14 18 23 28 27 21 16 13 9 6 5 4 5 6 9 13 16 21 27 25 20 15 11 8 5 3 2 3 5 8 11 15 20 25 30 24 19 14 10 7 4 2 1 2 4 7 10 14 19 24 30 25 20 15 11 8 5 3 2 3 5 8 11 15 20 25 27 21 16 13 9 6 5 4 5 6 9 13 16 21 27 28 23 18 14 12 9 8 7 8 9 12 14 18 23 28 26 22 17 14 13 11 10 11 13 14 17 22 26 29 25 22 18 16 15 14 15 16 18 22 25 29 29 26 23 21 20 19 20 21 23 26 29 28 27 25 24 25 27 28 30
FIGURA 2.11 - Vizinhança circular.
Na macro-escala estão as variáveis ambientais e sócio-econômicas do modelo. Neste
nível, as funções buscam estabelecer relações de causa e efeito entre estas variáveis,
a fim de gerar a demanda por serviços e produtos, que determina uma nova
configuração para uso e cobertura do solo.
O subsistema natural representa condições ambientais tais como temperatura,
precipitação e poluição. Neste subsistema, o usuário define as relações de influência
42
entre as variáveis. Funções que descrevem mudanças na temperatura e no nível do
mar ao longo do tempo, por exemplo, são utilizadas para projetar demandas externas
por produtos da área em estudo.
No subsistema social, dados demográficos como nascimentos, morte e migração são
utilizados para modelar o crescimento populacional. O crescimento populacional,
associado a informações sobre a qualidade de vida e condições de trabalho,
provenientes do subsistema econômico, são parâmetros essenciais para calibrar o
modelo, gerando a demanda por células residenciais e de determinadas atividades e
serviços.
Esta demanda por células, gerada pela macro-escala, é aplicada à micro-escala
(autômato celular) de acordo com um mecanismo baseado em três classes de
prioridades (Engelen et al., 1997):
• Regras de prioridade 1 são intervenções do usuário como, por exemplo, a
inclusão de um aeroporto.
• Regras de prioridade 2 são regidas pelo subsistema natural e geram certas
transições diretamente, sem interferência do autômato celular. Por exemplo, se o
nível do mar sobe, células com baixa elevação são convertidas em praias ou
mangues (White e Engelen, 1997).
• Regras de prioridade 3 se aplicam às células ativas (funções). Para cada
célula ativa é calculado um vetor de potencialidades, em que cada potencialidade
representa o grau de atração de uma célula para um determinado estado (z).
O potencial Pz de uma célula, para uma atividade z, é calculado através da seguinte
expressão (White e Engelen, 1997) :
zzzz NSP ε+= .
onde:
• Sz expressa a adequabilidade da célula para a atividade Z ( )10 ≤≤ zS
• Nz expressa o efeito de vizinhança da célula para a atividade Z ( )10 ≤≤ zN
• zε é uma pertubação estocástica (Gaussiana)
O efeito agregado da vizinhança N para a atividade z é calculado por:
43
dyzid
idz WIN ,,,
,∑=
onde: d = zona de distância i = índice das células na zona de distância d
dyzw ,, = parâmetro de peso aplicado a células no estado y na zona de distância d (0 ≤ d ≤ 30)
idI , = 1, se a célula i na distância d está no estado y; 0, caso contrário.
A adequabilidade de uma célula é uma medida da capacidade desta célula em
suportar a atividade z, calculada a partir de uma combinação linear de suas
características ambientais e físicas, tais como: topografia, qualidade do solo, e
precipitação. Os valores de adequabilidade são normalizados entre zero (totalmente
inadequado) a um (adequado) e são constantes durante a execução do modelo. O
modelo Multi-Escala/RIKS não implementa funções para calcular a adequabilidade.
Assim, para gerar dados de adequabilidade que possam ser utilizados para alimentar
o modelo, deve-se utilizar um GIS, com este tipo de funcionalidade.
Células ativas são convertidas para o estado para o qual seu potencial é maior, mas
só até que a demanda por células deste estado seja atendida. Depois deste ponto,
nenhuma outra célula é convertida para este estado. Para realizar este controle, o
modelo Multi-Escala/RIKS utiliza em suas formulações matemáticas o conceito de
densidade do solo, que é o número de pessoas que podem morar ou trabalhar em
uma célula. Esta medida varia no tempo em função da demanda por uma atividade e
a disponibilidade de solo (células) para esta atividade e está diretamente relacionada
com o parâmetro de adequabilidade da célula (Engelen et al., 1993).
2.2.3 - Resumo dos ambientes computacionais Processos físicos e de uso e cobertura do solo possuem mecanismos distintos para
aplicação de regras de transição. Enquanto os processos físicos podem ser descritos
por modelos determinísticos, os processos de uso e cobertura do solo são
caracterizados como processos estocásticos e são altamente influenciados por
variáveis exógenas.
Nas seções anteriores foram apresentadas as principais características de dois
ambientes computacionais para modelagem dinâmica, PCRaster e Modelo Multi-
44
Escala/RIKS. Para finalizar este capítulo, apresentaremos a seguir um quadro
comparativo dos principais aspectos computacionais destes sistemas:
TABELA 2.2 – Quadro comparativo PCRaster x Modelo Multi-Escala/RIKS.
GIS PCRaster Multi-Escala/RIKS Estrutura de Dados
- mapas (raster) - LDD - séries temporais
- autômato celular - vizinhança circular - dados multi-escala
Estrutura de Controle
- Timer - regras de transição - células feição/função
Funcionalidade
- modelo determinístico - Funções de transporte sobre redes
hidrológicas (accuflux, accucapacity accuthreshold, accufraction)
- Timeinput,lddcreate - cellarea, maptotal
- modelo estocástico - potencialidade de uma célula para uma
atividade - acessibilidade à rede de transporte - demandas externa e interna para um
produto/atividade Interface
- interface de caracteres - ambiente não integrado - entrada de dados e acesso a funções
via scripts
- interface Gráfica - ambiente integrado - interface gráfica para entrada e edição
dos dados e funções
45
CAPÍTULO 3 AMBIENTE COMPUTACIONAL PARA MODELAGEM
DINÂMICA ESPACIAL
TerraML é um acrônimo para TerraLib Modeling Language. TerraLib é uma biblioteca
de código aberto, em desenvolvimento no Instituto Nacional de Pesquisas Espaciais
(INPE). TerraLib fornece no seu núcleo (Figura 3.1) funcionalidade para manipular
dados geográficos e facilidades para conversão de dados, visualização e
gerenciamento de banco de dados espacial (Câmara et al., 2000). Algoritmos que
usam as estruturas do núcleo incluindo análise espacial, linguagens de consulta e de
simulação, e rotinas para conversão de dados, também estão disponíveis.
FIGURA 3.1 - A estrutura da TerraLib.
Neste capítulo será apresentado o ambiente computacional para modelagem
ambiental desenvolvido nesta tese. O capítulo está organizado em duas partes:
aspectos conceituais, que apresenta os fundamentos teóricos sobre os quais este
ambiente foi projetado, e aspectos de implementação, que apresenta as estruturas de
46
dados e tecnologia utilizada para implementar o ambiente computacional para dar
suporte à linguagem TerraML.
3.1 - Aspectos Conceituais
3.1.1 - Espaço Celular
Modelos celulares têm sido largamente utilizados em aplicações de GIS tais como,
dinâmica do uso do solo, ocupação urbana do solo e processos físicos de fluxo e
transporte de material, especialmente em hidrologia, entre outras aplicações. As
motivações para o uso deste modelo de dados são influenciadas pela natureza
“pixelizada” do dado remoto e pela conveniência da programação e implementação de
estruturas baseadas em grades (O´Sullivan, 2000).
A computação celular se baseia em três princípios: simplicidade, paralelismo e
localidade. A célula, unidade fundamental de um sistema celular, possui um conjunto
de atributos extremamente simples e realiza poucas tarefas. Um aspecto poderoso
desta estrutura de dados é o alto grau de conectividade existente entre as células.
Nestes sistemas, uma célula pode se comunicar com suas vizinhas, trocando
informações. Entretanto, nenhuma célula tem uma visão geral do sistema, o que
caracteriza estes sistemas como descentralizado. Portanto, sistemas celulares têm
como aplicações potenciais sistemas em que a ordem global emerge de ações locais,
tais como sistemas biológicos e físicos. O paralelismo é um ponto controverso na
computação celular, assim como em outras áreas da computação. O paralelismo é
desejado, mas dificilmente atingido em um grau satisfatório, devido à falta de
ambientes computacionais estritamente paralelos. Entretanto, mecanismos artificiais
permitem acelerar o desempenho de tais sistemas através da sincronização das ações
(Sipper, 1999).
Num espaço celular as relações espaciais entre as células se dão no espaço próximo,
onde as relações de vizinhança desempenham um papel determinante. O tamanho e
a configuração (forma) de uma vizinhança podem variar de sistema para sistema, de
modelo para modelo, e de variável para variável. Entretanto, na maioria dos sistemas
existentes a vizinhança é tratada de forma estacionária, i.e., os vizinhos de uma célula
47
estão sempre dispostos nas mesmas direções (norte, sul, leste, oeste). Outro ponto
importante no modelo celular é a necessidade de gerenciar uma variedade de escalas.
As operações celulares podem se dar em escala local (por célula), zonal (por região)
e global (por plano de informação). A integração de processos multi-escala pode ser
facilmente implementada com distribuição uniforme dos dados. Entretanto, processos
mais complexos requerem mecanismos não uniformes de distribuição para balancear
demandas e restrições (White, 1997).
Em TerraML o espaço celular é definido como uma estrutura de dados matricial, onde
cada célula contém vários atributos. As células podem ser manipuladas como objetos
geográficos individuais e operações projetadas para objetos podem ser aplicadas a
elas.
3.1.2 - Modelo Temporal
Bancos de dados temporais consistem em aplicações de banco de dados que
representam algum aspecto de tempo ao organizar suas informações. Num banco de
dados temporal, o tempo é considerado como uma seqüência ordenada de pontos em
alguma granularidade, determinada pela aplicação.
Em TerraML, o suporte temporal para banco de dados é implementado através do
versionamento de objetos. Nesta abordagem, os atributos dinâmicos são associados
a atributos temporais de tempo inicial e tempo final. Sempre que é atualizado um
atributo dinâmico, em vez de sobrescrever valores, como ocorre em banco de dados
não temporais, o sistema cria uma nova versão. Esta nova versão é adicionada como
uma nova tupla no banco de dados (Elmasri e Navathe, 2002). Veja na Tabela 3.1 os
diferentes usos do solo em 3 células no período de 01-01-1989 a 31-12-1991. A
primeira célula (C000L000) tem dois usos do solo: uso 0, de 01-01-1989 a 31-12-1989;
uso 1 de 01/01/1990 a 31/12/1991. A célula C000L001 tem apenas um uso do solo,
uso 0, de 01/01/1989 a 31/12/1991. Já a célula C000L002 tem um uso do solo
diferente para cada ano (1989, 1990, 1991) e, portanto, tem três versões de tuplas.
Note que as mudanças no uso do solo são assíncronas, i.e., não ocorre em intervalos
regulares. Num sistema de atualização de dados síncrono, todos os objetos teriam o
mesmo número de versões.
48
TABELA 3.1 Tabela de um BD Temporal utilizando versionamento de objetos.
Object_id Land_use Initial-Time Final_Time
C000L000 0 1989-01-01 1989-12-31
C000L000 1 1990-01-01 1991-12-31
C000L001 0 1989-01-01 1991-12-31
C000L002 1 1989-01-01 1989-12-31
C000L002 2 1990-01-01 1990-12-31
C000L002 0 1991-01-01 1991-12-31
Para manipular as múltiplas versões de um mesmo objeto, um sistema para banco de
dados temporais deve prover operadores temporais que permitam obter a primeira, a
corrente, a próxima e última versão de um objeto. Permitindo assim, percorrer o
banco através de critérios de busca temporais como, por exemplo:
• Obtenha o uso do solo do objeto C000L000 em 1989?
• Obtenha o uso do solo corrente do objeto C000L000?
3.1.3 - Modelo de Mudança
Nos últimos anos, os conceitos de autômatos celulares têm sido utilizados para
modelar fenômenos físicos e urbanos (Batty, 1999; Burrough, 1998; Roy, 1996;
Engelen, 1995; Câmara, 1996). Um autômato celular consiste de uma grade uniforme
e regular, onde cada célula pode assumir um estado discreto. Autômatos celulares
evoluem em passos de tempo discretos, em que as células são atualizadas,
simultaneamente, com base no estado das células em sua vizinhança, no passo de
tempo anterior, e de acordo com um conjunto de regras locais. A vizinhança de uma
célula é definida pela célula em si e todas as células imediatamente adjacentes.
(Wolfram, 1983).
Para ilustrar como se dá o mecanismo de aplicação das regras de transição,
apresentaremos um exemplo simples baseado em (Câmara, 1996). Neste exemplo,
uma célula pode assumir dois estados (branco e preto) e sua vizinhança é definida
sobre duas células adjacentes. As regras de transição especificam que o estado de
uma célula num instante t+1 é igual ao dos seus vizinhos no instante t, se estes
49
vizinhos tiverem os estados iguais; caso contrário, o estado da célula permanece o
mesmo. Para entender o exemplo é necessário identificar os componentes básicos
do autômato celular clássico, que são (Engelen et al., 1997):
• espaço euclidiano, dividido em uma grade de células
• uma vizinhança de tamanho e formato definidos (Figura 3.2a)
• um conjunto de estados discretos (Figura 3.2b)
• um conjunto de regras de transição (Figura 3.2c)
• um conjunto de intervalos de tempo, com atualização simultânea das células
(Figura 3.2d) a) vizinhança
b) estados
c) regras de transição d) exemplo
instante t instante t+1
FIGURA 3.2 - Exemplo de autômato celular.
FONTE: Câmara (1966).
A dinâmica de aplicação das regras de transição em um autômato celular é
semelhante à de um filtro espacial. Desta forma, todas as células são avaliadas e,
quando for o caso, modificadas para um novo estado. Na figura 3.2 d, a primeira
célula da segunda linha do autômato tem, no instante t, o estado branco e suas
vizinhas possuem estados diferentes (uma é branca e outra preta). Neste caso o
estado da célula permanece o mesmo (1a regra de transição). Seguindo o mesmo
mecanismo, a segunda célula da segunda linha tem, no instante t, o estado preto e
suas vizinhas têm, ambas, o estado branco, logo o estado desta célula sofre uma
transição para branco (2a regra de transição). O processo segue este mecanismo para
as demais células até que todas tenham sido avaliadas.
No exemplo acima, pode-se observar que as mudanças geradas por autômatos
celulares são estritamente locais, isto é, baseadas nas vizinhanças de cada célula.
Nesta perspectiva, pode-se dizer que sua aplicação é eficiente em processos em que
a ordem global emerge de ações locais e descentralizadas. Entretanto, em Sistemas
de Informações Geográficas, a ordem global depende tanto de fatores endógenos
(ações locais) como exógenos (ações à distância). Uma abordagem para modelar
50
tais sistemas é o conceito de espaço celular (cell space), uma variação do autômato
celular clássico (strict cellular automata), que flexibiliza a questão da regularidade do
espaço e localidade das vizinhanças (Batty, 2000).
Autômatos celulares, na sua forma tradicional ou em versões estendidas, têm sido
utilizados para implementar modelagem dinâmica ambiental na maioria dos sistemas
disponíveis atualmente (White e Engelen, 1997; Sipper, 1999; Soares Filho e
Cerqueira, 2002). Entretanto, a limitação deste modelo computacional tem sido
reconhecida em várias publicações (Couclelis, 1997; O'Sullivan, 2002), que identificam
os seguintes fatores como os pontos limitantes deste modelo:
• A estacionariedade da sua vizinhança. Nestes modelos todas as células têm a
mesma configuração de vizinhança. Assume-se a isotropia espacial.
• O espaço de estados é finito. Apenas mudanças discretas, determinadas por
atributos igualmente discretos podem ser representadas.
• Ações locais. As transições de estados das células ocorrem fundamentalmente
como conseqüência do estado das suas células vizinhas.
Um dos maiores desafios para o desenvolvimento de uma linguagem para suportar
modelagem ambiental é a necessidade de representar um sistema de transição com
componentes discretos e contínuos. Para este propósito, o paradigma de autômato
celular clássico não é suficiente. Entretanto, existe uma solução baseada em
autômatos chamada de autômatos híbridos. Um autômato híbrido é um modelo formal
para representar sistemas dinâmicos com componentes discretos e contínuos, Figura
3.3, que são atualizados em uma seqüência de passos (Henzinger, 1996).
a) Discreto b) Contínuo c) Híbrido
FIGURA 3.3 - Dinâmica de sistemas.
Autômatos celulares híbridos são autômatos finitos com variáveis reais, que são
atualizadas através de uma dinâmica contínua, dentro de um espaço de estados
51
infinito. Um autômato híbrido H consiste dos seguintes componentes (Henzinger,
1996):
• Variáveis: um conjunto finito X = {x1,..., xn} de variáveis reais, onde n é a dimensão do H. Escrevemos X para o conjunto {x1,..., xn} de variáveis reais (que representam derivadas de primeira ordem durante mudanças contínuas), e escrevemos X’ para o conjunto { x’1, ..., x’n} de variáveis iniciais(que representam valores na conclusão da mudança discreta)
• Grafo de Controle: um multi-grafo direcionado finito (V,E). Os vértices em V são chamados modos de controle e as arestas E são chamadas de interruptores de controles (control switches).
• Condição Inicial: um predicado cujas variáveis livres pertencem a X.
• Condições Invariantes: um predicado cujas variáveis livres pertencem a X.
• Condições de fluxo: um predicado cujas variáveis livres pertencem a X U X’
• Condições de mudança: uma aresta rotulada que atribui a cada interruptor de controle e Є E um predicado. Cada condição de mudança é um predicado cujas variáveis livres pertencem a X U X’
• Eventos: um conjunto finito Σ de eventos; e uma aresta rotulada E→Σ que atribui a cada interruptor de controle um evento.
Na Figura 3.4 estão representados alguns dos componentes do autômato Híbrido. A
condição inicial representa uma condição para entrar em um dos modos de controle de
controle do autômato, no início do sistema. Condições invariantes são condições que
mantém um modo de controle ativo. As Condições de fluxo expressam os predicados
que são executados em cada modo de controle. Condições de mudança são utilizadas
para representar mudanças discretas entre os modos de controle. Cada condição de
mudança é ligada a uma aresta do grafo.
FIGURA 3.4 – Esquema geral de um autômato híbrido.
Para explicar o conceito de autômato híbrido no domínio das aplicações geográficas
vamos considerar um caso de balanço hídrico do solo. Neste sistema, séries
temporais de precipitação são utilizadas para preencher as células com água da chuva
52
até que a capacidade de infiltração da célula seja atingida, quando então ocorre o
fluxo da água excedente. Na Figura 3.5, um grafo de controle ilustra o mecanismo
pelo qual o autômato de balanço hídrico evolui.
FIGURA 3.5 – Autômato balanço hídrico.
O autômato de balanço hídrico tem uma condição inicial (aguaSolo=0). Quando uma
série temporal é lida, através do evento entrada, o valor da água no solo é
calculado. Em seguida, é verificado se a água no solo atingiu a capacidade de
infiltração da célula. Se a água no solo for maior que a capacidade de infiltração da
célula, a água excedente é calculada e transportada para outra célula. Esta trajetória
é repetida em todos os passos da simulação. Os principais elementos do autômato de
balanço hídrico estão resumidos na Tabela 3.2.
TABELA 3.2 Resumo do autômato balanço hídrico. Modos de Controle
Condições de Fluxo
Condições de Mudança
eventos
Transição para
SECO aguaSolo(t+1)=aguaSolo(t)+precip+evap aguaSolo>infiltracao MOLHADO
MOLHADO excesso=aguasolo-infiltracao excesso>0 ESCOANDO
ESCOANDO MOVE(LDD,excesso, infiltracao) excesso>0 entrada SECO
Na teoria de autômatos híbridos, eventos são ações dependentes do contexto da
aplicação. No caso deste autômato de balanço hídrico, em particular, o evento
entrada representa a ação de ler uma série temporal de precipitação (precip). É a
53
partir deste evento que o valor de água no solo (aguaSolo), de uma célula, pode ser
atualizado. Move é uma função que transporta a água excedente (excesso) através
de uma rede de drenagem (LDD), tendo como parâmetro a capacidade de infiltração
das células (infiltração).
3.1.4 - Vizinhança Generalizada
Em autômatos celulares clássicos, as transições de estado são realizadas tendo como
base o estado das células em uma vizinhança pré-determinada. Em tais sistemas,
prevalece a estacionariedade das vizinhanças, i.e., todas as células tem a mesma
configuração de vizinhança, e as ações são essencialmente locais. Exemplos
clássicos de vizinhanças são: Moore, von Neumann e assimétrica, representadas
abaixo na Figura 3.6.
a) von Neumann b) Moore c) Assimétrica
FIGURA 3.6 - Exemplos de vizinhança.
Entretanto, em muitos fenômenos do mundo real, relações de influência se
estabelecem com base em redes de transporte. Como exemplo, considere o processo
de mudança no uso do solo da Amazônia. Este processo é condicionado pela
ocupação urbana, que por sua vez, é fortemente determinada pela rede de transporte
(rios e rodovias) da região, como mostra a Figura 3.7 (rede de transporte esta
marcada em vermelha e os assentamentos urbanos em branco). Neste caso, um
modelo realista para mudança no uso do solo tem que considerar definições flexíveis
de proximidade para capturar ações à distância.
Em um modelo celular, uma matriz de proximidade para representar as relações de
vizinhança entre as células mostra-se uma solução apropriada para dar ao modelo a
flexibilidade necessária para capturar ações à distância.
54
FIGURA 3.7 - Ocupação urbana e rede de transporte da Amazônia.
A matriz de vizinhança generalizada é uma variação da matriz de proximidade (spatial
weights matrix) onde os pesos são calculados a partir de relações espaciais no espaço
absoluto, tais como distância euclidiana e adjacência, ou com base em relações
espaciais no espaço relativo, que levam em conta a conectividade de objetos em uma
rede de transporte ou de comunicação, por exemplo. Nesta visão, a combinação dos
conceitos de espaço absoluto e relativo conduz à implementação do conceito de
espaço próximo (Couclelis, 1997), onde a informação espacial é geo-referenciada no
espaço absoluto, mas está também associada a uma representação do espaço
relativo do qual é parte.
Uma Matriz de Vizinhança Generalizada (MVG) é composta de um conjunto de objetos
espaciais O, um grafo G e uma matriz de proximidade V.
Objetos espaciais representados por células, de formatos e tamanhos regulares,
dispostas em uma grade, no caso do ambiente computacional TerraML.
Grafo conjunto nós e arcos, em que cada nó representa um objeto (célula, no caso do
autômato) e os arcos representam relacionamentos de vizinhança entre dois nós.
Matriz de proximidade composta de um conjunto de elementos Wij que servem para
indicar o quanto dois objetos Oi e Oj estão próximos. Geralmente é representada em
termos de adjacência ou distância euclidiana. As opções mais comuns para definir Wij
são:
a) Wij = 1, se Oi é vizinho de Oj; caso contrário Wij = 0.
b) Wij = 1, se a distância(Oi, Oj) < maximum; caso contrário Wij = 0.
c) Wij = 1/distance (Oi, Oj)2; se i=j, Wij = 0.
55
3.2 - Aspectos de Implementação
Em termos de implementação, o espaço celular da TerraML pode ser dividido em duas
partes chamadas (1) estrutura básica e (2) estrutura estendida (Figura 3.8). A estrutura
básica é estática e representa o conjunto de atributos que toda célula tem
independente do modelo . A estrutura estendida é dinâmica, i.e., definida em tempo
de execução para acomodar os dados fornecidos por um documento TerraML.
FIGURA 3.8 - A estrutura de dados celular.
A estrutura básica é essencialmente espacial. Cada célula tem seu retângulo
envolvente, seu endereço no espaço celular (linha, coluna), e outros atributos
tais como os identificadores de objeto (identificador objeto) e de geometria
(identificador geometria).
A estrutura estendida contém atributos que variam de acordo com a aplicação. Por
esta razão, estes atributos são criados e ligados à estrutura da célula via um
mecanismo de alocação dinâmica de memória. Estes atributos referem-se às
características físicas, ambientais e sócio-econômicas das células, podendo ser
temporais. Atributos temporais são aqueles que têm múltipla ocorrência na célula tais
como os diferentes usos do solo ao longo do tempo, por exemplo. Eles são
implementados com um suporte de banco de dados temporal para gerenciar suas
múltiplas versões. Na Figura 3.8, os atributos temporais, precipitação e evapo-
transpiração, e os atributos do modelo, usoSolo, população e cobertura, são
apenas ilustrativos. Como estes atributos são definidos em tempo de execução, não
Estrutura Básica
Atributos Espaciais retângulo
envolvente identificador geometria
identificador objeto
linha coluna
Atributos do Modelo usoSolo população cobertura
Atributos Temporais precipitação evapo-
transpiração tempoInicial tempoFinal
Estrutura Estendida
Célulai,j
56
há como deixar definidos a priori os seus nomes. Estes atributos só são conhecidos
quando o banco de dados é lido, durante a execução do processador TerraML, que
será descrito a seguir.
Um documento TerraML é compilado para um programa com chamadas de funções
TerraLib. Para isto foi desenvolvido um compilador chamado Processador TerraML. O
Processador TerraML lê um documento TerraML, analisa a correção sintática deste
programa e gera um conjunto de funções a partir da Terralib (Figura 3.9).
FIGURA 3.9 - Diagrama do TerraML Processor.
TerraLib está sendo implementada em linguagem C++ com uma abordagem orientada
a objetos. Desta forma, a estrutura celular é implementada como uma hierarquia de
classes, onde cada classe representa os principais componentes do espaço celular.
Na Figura 3.10 está representada a hierarquia de classes da representação da noção
de espaço celular, seguindo a notação UML (Booch et al., 1998). Nesta figura, a
classe principal é o espaço celular (TeCellAutomata) que é composto por uma
grade celular (BiCellSet), que é um conjunto de células. A vizinhança de uma célula
refere-se ao conjunto de células que influenciam o estado de uma célula. Este
conjunto de células pode ter qualquer configuração, ser contíguo ou não, bem com ter
qualquer número de células. Por isto, em TerraML, a vizinhança é implementada
como uma matriz de proximidade (TeProxMatrix).
57
FIGURA 3.10 - Diagrama de classes do autômato híbrido (TeCellAutomata).
Em TerraML, usamos a abstração de um autômato híbrido para modelar as transições
e modos de controle do sistema. Desta forma, além da vizinhança e de conjunto de
células, um autômato híbrido possui um conjunto de modos de controle (ModeSet) e
um conjunto de transições (TransitionSet).
Uma transição consiste na mudança de um modo de controle para outro, portanto,
possui um modo de controle origem (fromode_) e destino (toMode_) (Figura 3.11).
Cada transição é definida a partir de um conjunto de condições (Conditions) que
têm que ser satisfeitas. Na abstração do autômato híbrido, estas condições são
chamadas de condições de mudança. Os modos de controle (ControlMode) são
constituídos de um conjunto de condições de fluxo. As condições de fluxo são
equações matemáticas necessárias para representar o modelo, tais como média
ponderada, lógica fuzzy e equações diferenciais, entre outras. Neste componente,
TerraML estende a teoria de autômatos híbridos, não se restringindo às equações
diferenciais expressar condições de fluxo.
BiCellSet
ControlMode
ModeSet
Transition
TransitionSet
TeProxMatrix TeCellAutomata 1
1 -cells_
1
1
1
1
-modes_ 1
1
1
1
-transitions_1
11 1
-neighborhood_
1 1
TeTimeSequence
-timeseq_
0..1
1
0..1
1
58
FIGURA 3.11 – Diagrama da classe Transition.
Como as equações das condições de fluxo variam bastante nos seus parâmetros
(operandos de uma equação), a classe Flow é uma classe abstrata que pode assumir
a forma de qualquer uma das suas classes derivadas.
Toda condição de fluxo (flow) tem um atributo (attribute), que corresponde ao
nome do atributo da célula que receberá o resultado da equação. Este atributo é
geralmente chamado de lado esquerdo da equação (left hand side).
Na Figura 3.12, está representada a implementação da célula do TerraML. Como já
mencionado, a célula tem uma estrutura básica que corresponde aos seus atributos
espaciais. Estes atributos incluem a são a identificação do objeto (object_Id) e
Identificação da Geometria (geomId_), e suas coordenadas X (column_) e Y
(line_) no espaço celular. Estas características das células são herdadas da classe
TeCell e TeGeometry, implementadas na biblioteca TerraLib. A parte estendida da
célula, inclui seus atributos dinâmicos (dynAttribute_) e atributos do modelo
(attribute_), que variam de simulação para simulação, e são definidos na classe
BiCell. Os atributos dinâmicos têm múltiplas versões, uma para cada intervalo da
simulação.
Condition
Conditions
Flow FlowSet
Transition
1
1
-jumps_
1
1
ControlMode
1
1
-flows_1
1
11-fromode_
1
-tomode_111
59
FIGURA 3.12- Diagrama da classe Bicell.
A vizinhança do autômato é implementada como uma matriz de proximidade, que por
sua vez é implementada em uma estrutura de dados de matriz esparsa. Esta
abordagem de implementação confere flexibilidade ao modelo, de tal forma que uma
célula pode ter qualquer número de vizinhos. Cada célula da matriz de proximidade
possui, além das identificações das células vizinhas (object_id), informações sobre
a zona de distância (slice_) , peso de influência (weight_), distância dos
centróides das células (d1_), distância das células à rede de transporte (d2_) e
distância mínima entre as células vizinhas pela rede de transporte (d3_), como mostra
a Figura 3.13. Os atributos d2_ e d3_ são utilizados apenas em casos de vizinhanças
geradas a partir de redes de transportes (seção 3.1.4).
ProxMatrixInfoweight_ : floatslice_ : intd1_ : floatd2_ : floatd3_ : float
TeCell*ProxMatrixInfo
stringRow
stringstringRow
sparceMatrix
TeProxMatrix
insertNeighbour()getNeighborhood()getANeighbor()
11
#matrix_
11
FIGURA 3.13 - Diagrama de classes da matriz de proximidade (TeProxMatrix).
O diagrama de classes da Figura 3.14 apresenta as estruturas de dados temporais do
TerraML. Estas classes foram implementadas segundo os conceitos de granularidade
60
(TeChronon), intervalo (TeTimeSpan) e Seqüência (TeTimeSequence) que, no
TerraML, serve para gerenciar as múltiplas versões de dados geradas durante a
simulação, bem como controlar as estruturas de repetição das condições de fluxo do
sistema.
TeChrononTeTime
11
-chronon_
TeTimeSpan
1
1
-t1_
1
1
-t2_
TeTimeSpan
TimeSeq
TeTimeSequencenum_steps_ : int
1
1
+timeseq_
11
1
1
1
1
1
1
FIGURA 3.14 - Diagrama de classes da seqüência de tempo (TeTimeSequence).
61
CAPÍTULO 4 TERRAML - FORMALIZAÇÃO DA LINGUAGEM
TerraML é uma linguagem para descrever modelos dinâmicos espaciais, que tem
como arcabouço os três conceitos chaves descritos no capítulo anterior: a) a teoria de
autômatos híbridos, (b) a vizinhança generalizada e (c) o modelo celular.
A seguir serão descritos os principais elementos desta linguagem, através das suas
especificações em DTD, e de suas funcionalidades, demonstradas através de
algoritmos.
4.1 - Arquitetura
TerraML é uma linguagem baseada em XML, que é um acrônimo para eXtensible
Markup Language. Markup Languages são linguagens para marcação de textos. A
sintaxe destas linguagens é caracterizada pela utilização de tags (palavras
encapsuladas por sinais '<' e '>'). XML é uma meta-linguagem, i.e., uma linguagem de
sintaxe aberta que pode ser utilizada para definir outras linguagens. As vantagens da
criação de novas linguagens a partir da XML são:
1) obter independência de plataforma, e
2) usufruir da disponibilidade de uma família de ferramentas, que oferecem serviços
úteis para a realização de tarefas de desenvolvimento importantes tais como parsers e
ambientes de desenvolvimento (IDE).
TerraML é organizada hierarquicamente em seções. Um programa escrito em TerraML
é composto de uma seção principal chamada Cell Processor, que é subdividida em 2
sub-seções: input e control (Figura 4.1). Cada sub-seção da linguagem TerraML inclui
um conjunto de elementos com significado especial para o processador. A seção input
especifica o conjunto dos dados a serem recuperados a partir de um banco de dados e
atribuídos às células como atributos. Funciona como um binding, um programa para
ler dados e ligá-los às variáveis do programa. Na seção control são definidos os
modos de controle do autômato e as regras de transições para o sistema alternar entre
estes modos de controle.
62
Neste capítulo todas as seções e elementos da linguagem TerraML serão descritos
através de um diagrama (quando o elemento for composto por outros elementos), um
DTD, um dicionário de dados e um exemplo de uso. DTDs, definições do tipo
documento, são a forma básica e mais amplamente utilizada para especificações de
tipo para documentos XML. Através de um DTD pode-se especificar os tipos de
elementos que podem aparecer em um documento, a sua ordem e atributos, e seu
conteúdo.
FIGURA 4.1 - Arquitetura da linguagem TerraML (notação W3C Schema/XMLSPY).
Na Tabela 4.1 é especificada a seção CellProcessor. Esta seção é composta de
duas sub-seções input e control. A seção CellProcessor tem alguns atributos
para identificação do usuário e da aplicação para a qual o programa Terra. Estes
atributos devem ser preenchidos com o propósito de documentar o documento.
63
TABELA 4.1 Especificação da seção CellProcessor.
Diagrama
Dicionário de Dados
Nome Tipo Uso Descrição
author string obrigatório Autor do programa TerraML
date string obrigatório Data do programa
model string obrigatório Modelo da Simulação
DTD <!ELEMENT cellprocessor (input, control)> <!ATTLIST cellprocessor author CDATA #IMPLIED date CDATA #IMPLIED model CDATA #IMPLIED >
4.2 - Especificação da Linguagem
4.2.1 - A Seção de Entrada de Dados
Em TerraML as variáveis que serão lidas, a partir de um dispositivo de
armazenamento, e associadas às células são definidas na seção input e podem ser:
mapas ou imagens, séries temporais, tabelas, variáveis escalares e matrizes de
proximidade.
A Tabela 4.2 apresenta o diagrama (notação W3C do software XMLSPY) e o DTD da
seção input.
Banco de Dados Em TerraML, os atributos das células são preenchidos a partir de um banco de dados.
Como conseqüência, na seção input, o primeiro elemento a ser especificado deve
ser o banco de dados. Para isto, devem ser fornecidos os atributos apresentados na
Tabela 4.3.
64
TABELA 4.2 – Especificação da seção Input.
Diagrama
DTD <!ELEMENT input (database, layer, table, neighborhood, global+)>
Dicionário de Dados
Veja a definição dos elementos da seção input nas tabelas: database Tabela 4.3 layer Tabela 4.4 table Tabela 4.5 neighborhood Tabela 4.6 temporal Tabela 4.7 global Tabela 4.8
TABELA 4.3 - Especificação do elemento database.
DTD <!ELEMENT database EMPTY> <!ATTLIST database host CDATA #REQUIRED path CDATA #REQUIRED name CDATA #REQUIRED user CDATA #IMPLIED pass CDATA #IMPLIED >
Dicionário de Dados
Nome Tipo Uso Descrição host string obrigatório nome do servidor de arquivos path string obrigatório caminho de navegação pela estrutura de
arquivos name string obrigatório nome completo (nome.extensão) do arquivo user string opcional Identificação do usuário pass string opcional Senha do usuário
Exemplo < database host="localhost" path="c:/tese/" name="rondonia.mdb" user="" pass=" />
65
Layer No modelo de dados TerraLib os atributos geométricos das células estão
armazenados no banco de dados como um layer, uma tabela com atributos
geográficos. Para que TerraML possa recuperar os atributos espaciais das células,
têm que ser especificados o nome (name) e identificação (layerid) desta tabela,
seguindo a sintaxe apresentada na Tabela 4.4, a seguir:
TABELA 4.4 Especificação do elemento layer.
DTD <!ELEMENT layer EMPTY> <!ATTLIST layer name CDATA #REQUIRED layerid CDATA #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição name string obrigatório nome da tabela layerid inteiro obrigatório identificação da tabela
Exemplo <layer name="celulas450" layerid="46" />
Tabelas No modelo de dados TerraLib os atributos não-espaciais das células estão
armazenados no Banco de dados em uma tabela, que tem que vir especificada na
seção input, para que TerraML possa recuperar estes atributos.
TABELA 4.5 Especificação do elemento table.
DTD <!ELEMENT table EMPTY> <!ATTLIST table name CDATA #REQUIRED columns CDATA #REQUIRED lines CDATA #REQUIRED
>
Dicionário de dados
Nome Tipo Uso Descrição name string obrigatório nome da tabela columns inteiro obrigatório número de colunas do espaço celular lines ineiro obrigatório número de linhas do espaço celular
Exemplo < table name="celulas450" columns="35" lines="70" />
66
Séries Temporais Séries temporais são dados para os quais podem existir vários valores em diferentes
instantes de tempo. Estes dados são associados às células como atributos temporais,
aqueles que tem múltiplas ocorrências e, como conseqüência, requerem mecanismos
especiais para controle de versões. Para que as séries temporais possam ser
recuperadas e associadas às células, devem ser fornecidas as seguintes informações:
TABELA 4.6 – Especificação do elemento temporal.
DTD <!ELEMENT temporal EMPTY> <!ATTLIST temporal name CDATA #REQUIRED attribute CDATA #REQUIRED period CDATA #REQUIRED timeunit (YEAR | MONTH | DAY | HOUR) #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição name string obrigatório nome completo (nome.extensão) do arquivo attribute string obrigatório nome da coluna period inteiro obrigatório número de períodos da série (ex: 12 meses) timeunit string obrigatório granularidade temporal (mês, ano, dia)
Exemplo <temporal name=”precip99” attribute=”precip” period=”3” time=”month” />
No exemplo da tabela acima é especificado que a tabela precip99 contém dados
pluviométricos de 3 meses. O atributo temporal da célula se chama precip.
Variáveis Globais Variáveis escalares representam valores numéricos ou alfanuméricos. A principal
característica de uma variável escalar em TerraML é a sua generalidade. Ela tem o
mesmo valor em qualquer ponto do espaço, isto é, o mesmo valor para qualquer
célula. Devido a esta propriedade, a declaração de uma variável escalar é precedida
pelo tag <global>. No exemplo da Tabela 4.7 é definida a variável global altitude.
Isto significa que todas as células têm altitude 500.
67
TABELA 4.7 – Especificação do elemento global.
DTD <!ELEMENT global EMPTY> <!ATTLIST global name CDATA #REQUIRED value CDATA #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição name string obrigatório nome pelo qual a variável será
referenciada no programa value real obrigatório constante numérica (real)
Exemplo <global name=”altitude” value=”500” />
Vizinhança Em TerraML os dados de vizinhança de uma célula correspondem a uma matriz
generalizada de proximidade. Esta matriz tem que ser gerada externamente e
importada pelo ambiente TerraML. Para realizar a importação dos dados de
vizinhança e ligá-los às células na forma de atributo, o dado de vizinhança deve ser
informado de acordo com a especificação da Tabela 4.8.
TABELA 4.8 Especificação do elemento neighborhood.
DTD <!ELEMENT neighborhood EMPTY> <!ATTLIST neighborhood name CDATA #REQUIRED zones CDATA #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição name string obrigatório nome do arquivo de vizinhança (ascii) zones int obrigatório número de zonas de distância
Exemplo <neighborhood name="c:/tese/vizinho3.txt" zones="3" />
No exemplo da tabela acima é especificado que a vizinhança das células deve ser lida
a partir do arquivo c:/tese/vizinho3.txt, e que devem ser consideradas apenas
3 zonas de distâncias para os vizinhos de uma célula.
68
4.2.2 - A seção de controle
A seção de controle da TerraML encapsula as dinâmicas discreta e contínua de um
autômato híbrido. Desta forma, os principais elementos desta seção são os modos de
controle e as transições. A Figura 4.2 apresenta o diagrama W3C schema da seção
control.
FIGURA 4.2 - Esquema geral da seção Control.
Parâmetros de tempo
A seção control tem início com a declaração das variáveis temporais do modelo,
que estão detalhadas na tabela 4.9. Estes parâmetros são fundamentais para controlar
o início, final e passo de tempo das simulações.
No exemplo da tabela acima está sendo especificado que a simulação tem início no
dia (timeunit) de 01 de maio de 2003 (initime), e será realizada por 30
(intervals) dias, variando dia a dia (step).
Condições de fluxo Os modos de controle encapsulam as condições de fluxo, que são equações
executadas para todas as células em cada passo da simulação. Em TerraML, cada
modo de controle (mode) tem um nome (name), e um conjunto de condições de fluxo
conforme mostrado na Tabela 4.10. As condições de fluxo podem assumir diferentes
formatos e ter diferentes formas de implementação (algoritmos). TerraML oferece um
conjunto de funções muito utilizadas em modelagem dinâmica espacial, tais como
média local, função fuzzy e média ponderada, entre outras.
69
TABELA 4.9 – Especificação da seção control.
Diagrama
Dicionário de dados
Nome Tipo Uso Descrição initime string obrigatório tempo inicial da simulação intervals inteiro obrigatório número de intervalos de tempo da
simulação step inteiro obrigatório intervalo de tempo entre cada simulção timeUnit string obrigatório granularidade temporal ( ano , mês, dia,
hora)
DTD <!ELEMENT control (mode)> <!ATTLIST control initime CDATA #REQUIRED intervals CDATA #REQUIRED step CDATA #REQUIRED timeUnit (YEAR | MONTH | DAY | HOUR) #REQUIRED >
Exemplo <control initime="05/01/03" intervals="30" step="1" timeUnit="DAY" />
TABELA 4.10 - Especificação do elemento mode.
Diagrama
Dicionário de dados
Nome Tipo Uso Descrição name string obrigatório nome do modo de controle fuzzyL fuzzyL opcional ver Tabela 4.12 localMean localMean opcional ver Tabela 4.11
DTD <!ELEMENT mode (fuzzyL+, localMean+, product+, expander+)> <!ATTLIST mode name CDATA #REQUIRED
>
Exemplo < mode name=”Global”
70
Média Local A equação média local é utilizada para calcular a influência dos vizinhos de uma
célula. Sua equação e algoritmo de implementação estão apresentados na seção 4.3.
Na Tabela 4.11, a seguir, estão especificada a sintaxe desta equação em TerraML.
TABELA 4.11 – Especificação do elemento localMean.
DTD <!ELEMENT localMean EMPTY> <!ATTLIST localMean attribute CDATA #REQUIRED column CDATA #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição attribute string obrigatório atributo da célula que receberá o
resultado da expressão column string obrigatório atributo da célula sobre o qual será
calculada a média
Exemplo <localMean attribute = "atratividade" column = "cobertura_solo" />
Neste exemplo é especificado que a atratividade de uma célula é calculada
através de uma média local sobre o atributo cobertura_solo das células vizinhas. O
endereço das células vizinhas e o peso de influência de cada uma delas estão na
matriz de proximidade especificada na seção input.
Funções fuzzy Funções fuzzy são utilizadas para caracterização de classes que não apresentam
limites bem definidos entre si (Burrough e McDonnel, 1998). Funções fuzzy podem ser
expressas de várias formas. A função FuzzyL implementada em TerraML tem a
seguinte formulação:
( )( )( )211
βα −+=
xxf )0( Px ≤≤ e ( )1)(0 ≤≤ xf
onde:
• x é um atributo da célula • α é um parâmetro que governa a forma da função (senoidal, linear) • β é um parâmetro que indica o valor do ponto central da função
71
A Tabela 4.12 apresenta a sintaxe para expressar uma equação fuzzy em TerraML.
TABELA 4.12 – Especificação do elemento fuzzyL.
DTD <!ELEMENT fuzzyL EMPTY> <!ATTLIST fuzzyL attribute CDATA #REQUIRED column CDATA #REQUIRED alpha CDATA #REQUIRED beta CDATA #REQUIRED
>
Dicionário de dados
Nome Tipo Uso Descrição attribute string obrigatório atributo da célula que receberá o resultado
da expressão column string obrigatório atributo da célula sobre o qual será
processada a função fuzzy alpha real obrigatório parâmetro que governa a forma da função beta real obrigatório valor central do resultado da função
Exemplo <fuzzyL attribute="acessibilidade" column="distancia_rodovia" alpha="0.001" beta="500" />
Produto A equação produto é utilizada para calcular a média ponderada de um conjunto de
atributos das células. A Tabela 4.13 apresenta desta equação.
TABELA 4.13 – Especificação do elemento product.
Diagrama
DTD <!ELEMENT product (pair+)> <!ATTLIST product attribute CDATA #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição attribute string obrigatório nome do atributo que recebe o
resultado pair pair obrigatório ver Tabela 4.14
Exemplo <product attribute="potencial"> <pair attribute="acessibilidade" weight="0.4"/> <pair attribute="atratividade" weight="0.2"/> </product>
Um par (pair) é uma combinação de um atributo da célula e seu respectivo peso, na
média ponderada. Num produto pode aparecer qualquer número de pares. A sintaxe
72
do elemento pair é especificada na Tabela 4.14. O exemplo fornecido na tabela abaixo
corresponde à expressão: ( ) )2.0*(4.0* deatratividadadeacessibilipotencial += .
TABELA 4.14 – Especificação do elemento pair.
DTD <!ELEMENT pair EMPTY> <!ATTLIST pair attribute CDATA #REQUIRED weight CDATA #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição attribute string obrigatório atributo da célula sobre o qual
será calculada a média ponderada
weight real obrigatório parâmetro de peso
Exemplo <product attribute="potencial"> <pair attribute="acessibilidade" weight="0.4"/> <pair attribute="atratividade" weight="0.2"/> </product>
Expander Expander é uma função para alocar ou modificar o atributo de uma célula segundo um
determinado parâmetro e uma demanda definida. A Tabela 4.15 apresenta a sintaxe
do expander. Nesta tabela é mostrado um exemplo em que o uso do solo de uma
célula poder ser modificado de acordo com o seu potencial, respeitada a demanda
(expressa em número de células) por mudanças. O algoritmo de implementação do
expander é apresentado na seção 4.3.
TABELA 4.15 – Especificação do elemento expander.
DTD <!ELEMENT expander EMPTY> <!ATTLIST expander attribute CDATA #REQUIRED column CDATA #REQUIRED demand CDATA #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição attribute string obrigatório atributo da célula que será alocado/modificado column string obrigatório atributo da célula usado como parâmetro para
a alocação/modificação demand string obrigatório nome da variável global que expressa o
número de células que podem ser alocadas/modificadas
Exemplo <expander attribute="uso_solo" column="potencial" demand="demanda" />
73
Transições As transições são mudanças de um modo de controle para outro, que são disparadas
a partir da ocorrência de um evento. Portanto, cada transição é constituída de um
modo de controle destino e um modo de controle de origem. Uma transição pode ser
disparada a partir de uma ou mais condições.
TABELA 4.16 – Especificação do elemento transition.
Diagrama
DTD <!ELEMENT transition (condition+ , event )>
<!ATTLIST transition from CDATA #REQUIRED to CDATA #REQUIRED >
Dicionário de dados
Nome Tipo Uso Descrição from string obrigatório modo de controle origem
to string obrigatório modo de controle destino condition condition opcional ver Tabela 4.17
Exemplo <transition from="GLOBAL" to="LOCAL"> <condition attribute="demanda" op="GT" value="0" /> </transition>
No exemplo da Tabela 4.16 ocorre uma transição do modo de controle “GLOBAL” para
“LOCAL” se a demanda for maior (GT) que zero.
Condição As condições expressam o critério para que o autômato passe do modo de controle
“from” para o modo de controle “to”. Em TerraML, condições são expressões
relacionais do tipo apresentado na Tabela 17.
74
TABELA 4.17 - Especificação do elemento condition.
DTD <!ELEMENT condition EMPTY> <!ATTLIST condition attribute CDATA #REQUIRED op CDATA #REQUIRED value CDATA #REQUIRED >
dicionário de dados
Nome Tipo Uso Descrição attribute string obrigatório nome do attributo da célula sobre o qual
será avaliada a condição op string obrigatório operador relacional ( ver Tabela 4.18) value string obrigatório critério de comparação
Exemplo <transition from="GLOBAL" to="LOCAL"> <condition attribute="demanda" op="GT" value="0" /> </transition>
No exemplo da Tabela 4.17 é especificada a condição de que a demanda seja maior
do que zero para que ocorra a transição do modo de controle “GLOBAL” para
“LOCAL”.
TABELA 4.18 – Operadores relacionais em TerraML.
Operador Significado GE GT EQ LE LT NE
maior igual maior que igual menor igual menor que diferente
4.3 - Funcionalidades
Nesta seção são apresentados algoritmos que implementam algumas das funções do
TerraML, cujas sintaxes foram descritas na seção anterior.
4.3.1 - Média Local
A função média local calcula a atratividade da célula para uma determinado “estado”
com base nos seus vizinhos. Os parâmetros desta função são: 1) o atributo da célula
que receberá o resultado deste cálculo, e 2) o atributo sobre o qual será calculada a
75
influência dos vizinhos. Por exemplo: para calcular a atratividade da célula para
desmatamento (um valor de uso do solo) devem ser passados os parâmetros
“atratividade” (atributo da célula que receberá o resultado do localmean) e “uso do
solo”, atributo que terá seu valor avaliado para as células vizinhas.
FIGURA 4.3 - Algoritmo da função LocalMean. TeCellAutomata::localMean(Flow f,int t) { string atributo1=f.attribute(); string atributo2=f.column(); float resultado=0.00; Para cada celula cel do automato { Para cada celula vizinha de cel { peso = Matriz_Proximidade (cel,vizinha).peso(); resultado =peso * vizinha.atributo(atributo2,t-1); vizinha++; } cel.attributo(atributo1,t)=resultado; cel++; } }
No algoritmo acima, para cada célula cel do autômato, obtém-se as suas células
vizinhas. Para cada célula vizinha obtém-se na matriz de proximidade o peso de
influência desta célula vizinha sobre cel. O resultado é calculado multiplicando-se o
peso pelo valor do atributo2 (uso do solo,por exemplo) da célula vizinha no
instante de tempo t-1. O atributo1 (atratividade, por exemplo) da célula, no
instante de tempo t, é a somatória dos resultados (peso * atributo2) de todos os
seus vizinhos no instante de tempo t-1.
4.3.2 - Expander A função expander calcula o potencial global, que é a somatória de todas as células
que tem potencial maior do que zero. Se o potencial global for maior que a demanda
para aquele instante de tempo t, é calculado o limiar (threshold), que corresponde
ao valor mínimo de potencial que uma célula tem que ter para ser modificada. Para
calcular o limiar (threshold), as células são ordenadas (sort) por potencial. Desta
ordenação, são selecionadas para transição as células de potencial mais alto. O
número de células selecionadas é igual à demanda.
76
TeCellAutomata::expander(string attribute, double demand, int t) { int globalPotential =0; Para cada celula cel do automato Se cell.dynAttribute(attribute))>0) globalPotential++; cel++; double threshold = 0.00; Se (globalPotential>demand) threshold = sort(attribute, demand, t); transit(attribute, threshold, t); }
FIGURA 4.4 - Algoritmo da função Expander.
4.3.3 - Funções Fuzzy
Como já mencionada na seção anterior, Tabela 4.12, uma função fuzzy em TerraML
requer a definição de 4 parâmetros: alpha, beta, atributo (attribute) que recebe o
resultado do processamento da função, e o atributo (column) sobre o qual a função é
processada. O algoritmo da função FuzzyL, demonstrado na Figura 4.5, consiste em
extrair da condição de fluxo (f) os parâmetros attribute, alpha e beta. Depois,
para cada célula cel, calcular a expressão fuzzy e guardar o resultado deste cálculo
value no atributo column da célula.
void TeCellAutomata::fuzzyL(fuzzyL f,int t) { int attcol =cells_.attribute(f.column()); float alpha =f.alpha(); float beta =f.beta(); double value; Para cada celula cel { value = (1 / (1 + alpha * pow (cell.attribute(attCol) - beta,2))); cel.dynAtt(t, cells_.dynAttribute(f.attr()), value); cel++; } }
FIGURA 4.5 - Algoritmo da função FuzzyL.
77
CAPÍTULO 5 UMA APLICAÇÃO EM MUDANÇA NA COBERTURA DO SOLO
Neste capítulo, apresentaremos uma visão geral da TerraML através de um exemplo
de um processo de mudança no uso e cobertura do solo relativo à evolução do
desmatamento na Amazônia.
5.1 - Apresentação do Problema
O processo de desflorestamento e colonização da Amazônia Brasileira (Figura 5.1 a)
tem sido associado às mudanças climáticas globais, à alteração dos ciclos
biogeoquímicos, à dinâmica de uso e cobertura da terra e à diminuição da
biodiversidade. Esta diversidade de fatores produz padrões heterogêneos de
ocupação, o que torna complexa a modelagem de uma área extensa da floresta. Por
esta razão, neste exemplo estaremos nos restringindo à uma pequena área do estado
de Rondônia (Figura 5.1 b).
a)
b)
FIGURA 5.1 A Amazônia (a) e o Estado de Rondônia (b).
Em Rondônia cerca de 90% do desflorestamento tem-se concentrado nos limites de
100 km da malha rodoviária principal, ao redor dos eixos e pólos de desenvolvimento
dos anos 70 e 80 (Alves, 2002). Assim, as áreas mais desmatadas ocorrem ao redor
das estradas principais e secundárias provocando o fenômeno conhecido como
“espinha-de-peixe”, que pode ser observado na figura 5.2. Nesta figura, as áreas em
verde correspondem a floresta e as áreas em rosa correspondem a desmatamento.
78
As estradas são representadas por linhas vermelhas. Note que as áreas desmatadas
se desenvolvem em sentido ortogonal à estrada principal.
FIGURA 5.2 Espinha-de-peixe.
Nesta aplicação consideraremos a área em destaque na Figura 5.3 b, que
corresponde à uma área de 496.125 km, mapeados em 2.450 células, distribuídas em
70 colunas por 35 linhas. Cada célula representa uma área de 450m x 450m.
a)
b)
FIGURA 5.3 a) Detalhe da espinha-de-peixe b)zoom da área deste trabalho.
79
Neste exemplo, dois tipos de cobertura do solo são possíveis :
• Floresta (preto)
• Desmatado (colorido, cada cor representa o desmatamento em um ano)
5.2 - Metodologia
Na Figura 5.4, estão representadas as várias etapas seguidas desde a concepção do
modelo até a sua execução. Algumas dessas etapas são repetidas ao longo das
simulações e podem gerar dados que servem para realimentar o sistema.
Concepção domodelo
Pré-processamento
dos dados
calibração domodelo
Execução domodelo
Validação domodelo
FIGURA 5.4 – Metodologia para simular mudanças em Rondônia.
Na concepção do modelo, são definidas as equações que determinam o
comportamento do modelo. Nesta aplicação, o estado de uma célula pode mudar em
função da seguinte combinação de fatores uma demanda global fornecida,
propriedades da célula (acessibilidade), e a influência de sua vizinhança (atratividade).
Em seguida, ocorre o pré-processamento dos dados, dados são recuperados e
convertidos para um formato adequado para o processamento do modelo.
Durante a calibração do modelo são calculadas as variáveis utilizadas como
parâmetros para a realização de ajustes. Essas variáveis expressam a demanda por
ou restrições a determinadas mudanças. O Potencial de uma célula para mudança é
um atributo dinâmico, i.e., que muda ao longo das várias simulações, por isto, tem que
ser recalculado a cada iteração. Além disto, a demanda tem que ser atualizada
sempre que ocorrem transições. A etapa execução do modelo consiste no
processamento dos dados em si.
A validação do modelo é uma etapa complementar, consiste na comparação dos
resultados gerados com dados reais.
80
5.3 - Entradas
Para este modelo foram utilizadas as seguintes informações como entradas do
sistema:
• Imagem do uso do solo em 1985 (Figura 5.5 a) • Mapa da rede de transporte 1985 e 1988 (rodovias principais e secundárias)
(Figura 5.5 b) • Mapa das unidades de conservação em 1985 (Figura 5.5 c) • Vizinhança (matriz generalizada de vizinhança)
a) Cobertura do solo 1985
B) Estradas
c) Unidades de Conservação
FIGURA 5.5 – Os atributos das células.
A imagem do uso do solo é utilizada para gerar as células e, juntamente com as
demais entradas, preencher os atributos das células (Figura 5.6).
Uso85
Estrada85
Conservação85
Geração decélulas
Preenchimento das células
ProgramaTerraML
demanda restrições transições
FIGURA 5.6 – Entradas do sistema.
A vizinhança da célula em TerraML é definida a partir de uma matriz de proximidade,
como discutido no capítulo 4. Desta forma, é possível capturar o fenômeno espinha-
de-peixe pois pode-se definir como vizinhos de uma célula outras células ligadas à
81
rede de transporte. Na Figura 5.7 é apresentado um esquema simplificado das
vizinhanças de uma célula deste exemplo. Zonas de distâncias, representadas em
cores diferentes, mostram os diferentes pesos de influência de cada célula vizinha.
FIGURA 5.7 – Matriz de proximidade baseada em distância.
5.4 - Modelo
Nesta aplicação do TerraML definimos um modelo matemático baseado no modelo
multi-escala desenvolvido pelo RIKS e apresentado no capítulo 2, seção 2.2.2. Neste
modelo, o potencial de uma célula para o desflorestamento é calculado através da
seguinte expressão:
Potencial = Acessibilidade . Atratividade
A acessibilidade de uma célula é uma medida da proximidade de uma célula em
relação a uma rede de transporte e é expressa pela função fuzzy:
( )( )211
βα −+=
ddadeAcessibili
para 0 ≤ d ≤ P
onde:
• d é a distância euclidiana da célula à rodovia mais próxima • α é um parâmetro que governa a forma da função (senoidal, nesta aplicação) • β é um parâmetro que indica o valor do ponto central da Acessibilidade
A atratividade de uma célula para o desmatamento é calculada por:
82
∑=
kusopesodeAtrativida *
0 ≤ Atratividade ≤ 1
onde:
peso = parâmetro de peso aplicado a célula vizinha não desmatada k = número de vizinhos da célula
uso = 1, se a célula vizinha está desmatada; 0, caso contrário. 5.5 - Restrições As restrições entram no modelo como um instrumento de controle. Nesta aplicação
temos como restrição a demanda pelo desmatamento. Deixado a si mesmo, o sistema
poderia expandir o desmatamento a níveis exagerados, o que não corresponderia à
realidade. A demanda por células desmatadas é um valor pré-determinado, uma
entrada que deve ser informada no documento TerraML. Esta informação é útil para
controlar o número de transições por passos. A variável dinâmica atratividade é um
mecanismo auxiliar de controle, pois serve de parâmetro para selecionar as células a
serem alteradas. Neste exemplo foi utilizada uma imagem obtida no ano 2000 para
determinar a demanda.
5.6 - Especificação em TerraML
A Figura 5.8 apresenta o código TerraML para esta simulação. A explicação detalhada
de cada uma das seções deste código é apresentadas nas próximas seções.
5.6.1 - Especificação dos dados de entrada
Na seção input estão relacionados os principais dados a serem recuperados do
banco de dados e o arquivo de vizinhança.
<cellprocessor author="bianca" date="11/06/03" model="LUCC Rondonia" > <input> <database host="localhost" path="c:/tese_dados/" name="rondonia.mdb" user="" pass=""/> <layer name="celulas450" layerid="46"/> <table name="celulas450_dinamica" columns="35" lines="70"/>
83
<neighborhood name="c:/tese_dados/vizinho1.txt" zones="1"/> <global name="demanda_total" value="700"/> <global name="demanda" value="0"/> </input> <control initime="1985" intervals="16" step="1" timeUnit="year"> <mode name="global"> <product attribute="demanda"> <pair attribute="demanda" weight="0.0625"/> </product> </mode> <mode name="local"> <fuzzyL attribute="acessibilidade1" column=”distancia_rod_princ” alpha="0.001" beta="500"/> <fuzzyL attribute="acessibilidade2" column=”distancia_rod_secund” alpha="0.001" beta="500"/> <localMean attribute="atratividade" column="cobertura_solo"/> <product attribute="potential"> <pair attribute="acessibilidade1" weight="0.4"/> <pair attribute="acessibilidade2” weight="0.4"/> <pair attribute="atratividade" weight="0.2"/> </product> <expander attribute="cobertura_solo" column="potencial" demand="demanda"/> </mode> <transition from="global" to="local"> <condition attribute="demanda" op="GT" value="0"/> </transition> </control> </cellprocessor>
FIGURA 5.8 – Um exemplo em TerraML para mudança no uso e cobertura do solo.
Neste exemplo, o banco de dados onde estão armazenadas as células é o arquivo
rondonia.mdb, um banco Access. Neste banco a tabela celulas450 é o layer a
partir do qual pode ser obtida a geometria das células (Tabela 5.1), e a tabela
celulas450_dinamica é a tabela a partir da qual podem ser obtidos os atributos
das células, tais como cobertura do solo (cobertura_solo), distância da célula à
rodovia principal (distancia_principal), entre outros (Tabela 5.2). O arquivo de
vizinhanças é um arquivo texto (Tabela 5.3), gerado por outro programa, que será
utilizado para gerar a matriz de proximidade, cuja estrutura foi apresentada no
Capítulo 4. No caso desta aplicação, em particular, foi desenvolvido um programa em
linguagem C++, utilizando as estruturas de dados de matriz de proximidade
disponíveis no TerraLib. Entretanto, qualquer outro programa pode ser utilizado desde
que gere um arquivo texto com o conteúdo especificado no dicionário de dados
apresentado na Tabela 5.4.
A demanda global e inicial são variáveis globais, isto é, valores absolutos para o
autômato como um todo. TABELA 5.1 Layer Células450 do banco Rondônia.mdb.
85
TABELA 5.4 Dicionário de dados dos arquivos do banco de dados rondonia.mdb.
Tabela: Células450Teste3Células 46
Atributo Descrição Tipo / Domínio
geom_id_ Identificador da geometria do objeto Número inteiro
object_id Identificador do objeto String
lower_x Coordenada x do canto inferior esquerdo Número inteiro
lower_y Coordenada y do canto inferior esquerdo Número inteiro
upper_x Coordenada x do canto superior direito Número inteiro
upper_y Coordenada y do canto superior direito Número inteiro
col_number Identficação da coluna da célula Número inteiro
row_number Indentificação da linha da célula Número inteiro
Tabela: Células450Dinâmica
Atributo Descrição Tipo / Domínio
attr_id Identificador do atributo
object_id Identificador do objeto String
initial_time Tempo inicial Data
final_time Tempo final Data
cobertura_solo Cobertura do solo Número inteiro / 0 ou 1
unidade_ conservação
Unidade de conservação Número inteiro / 0 ou 1
distancia_ rod_princip
Distância da célula à rodovia principal Número real
distancia_ rod_secund
Distância da célula à rodovia secundária Número real
Arquivo: Vizinho1.txt
Atributo Descrição Tipo / Domínio
object_id Identificador do objeto string
s Zona de distância Número inteiro
w Peso Número real
d1 Distância entre as duas células vizinhas Número real d2 Distância das células vizinhas à rede de
transporte (matriz de proximidade gerada pela rede de transporte)
Número real
d3 Distância das células vizinhas através da rede de transporte (matriz de proximidade gerada pela rede de transporte)
Número real
86
5.6.2 - Definição dos modos de controle
No início da seção CONTROL são especificados os parâmetros temporais desta
simulação. Neste exemplo, serão feitas 10 simulações a partir de “1985”, ano a ano
(step).
Neste sistema existem dois modos de controle. O modo LOCAL e GLOBAL. No modo
LOCAL estão especificadas as condições de fluxo, que têm que ser executadas para
cada célula, em cada passo (step) da simulação. No modo global estão as equações
que calibram o modelo, atualizam a demanda global e determinam a demanda para o
próximo passo.
Neste exemplo o sistema transita do modo GLOBAL para o modo LOCAL enquanto
houver demanda.
Os resultados gerados são gravados no mesmo banco rondonia.mdb. É gerada uma
tabela para cada ano da simulação.
5.6.3 - Resultados
Os resultados das simulações são armazenados na tabela de atributos dinâmicos das
células. Por se tratar de um banco de dados temporal, para cada resultado gerado, é
registrado o intervalo de tempo (initial_time e final_time). A Tabela 5.5 ilustra
o caso da célula C0057L0016 (object_id). No período de 1986 a 1993 a célula
não sofreu alteração no atributo cobertura_solo ( 0 = floresta). Em 1994, a
célula tem seu valor de cobertura_solo alterado para 1 (desmatado) e permanece
com este valor até o fim das simulações.
87
TABELA 5.5 Resultado da simulação para uma célula.
Na Tabela 5.6 são apresentados os resultados da simulação em TerraML (Figura 5.8).
Estes resultados foram visualizados através do TerraView, uma ferramenta de
visualização geográfica desenvolvida a partir da biblioteca TerraLib (TerraLib 2003).
Através da comparação dos resultados pode-se concluir que o processador TerraML
valoriza mais o efeito da vizinhança, do que a acessibilidade (proximidade de
rodovias). Na Figura 5.8 pode-se verificar que, para esta simulação, foi atribuído o
peso de 0.4 para acessibilidade1, e 0.4 para acessibilidade2, totalizando 0.8
para acessibilidade de uma forma geral, contra 0.2 para atratividade, que
incorpora o efeito dos vizinhos. Um dos motivos para as diferenças entre os resultados
simulados e a evolução real do desmatamento é o fato da vizinhança das células, para
esta aplicação, ter sido construída com base na distância entre as células. O mais
adequado, neste caso, seria construir a vizinhança das células com base na rede de
transporte. Outro motivo para as diferenças, entre o real e o simulado, está na
simplicidade das equações introduzidas nesta aplicação. Um aperfeiçoamento
necessário é a definição de novas equações que capturem de forma mais realista a
evolução do desmatamento.
88
TABELA 5.6 Comparação entre os resultados da simulação e o real.
Ano Real Simulação
1985
1988
1991
1994
1997
2000
Em suma, os resultados dos experimentos realizados com TerraML não são
conclusivos, mas são indicativos da capacidade do ambiente computacional. O
ambiente trabalha com uma lógica simplificada, que pode ser refinada com a
ampliação, em trabalhos futuros, do número de funções disponíveis.
89
CAPÍTULO 6 CONCLUSÕES
6.1 - Resultados Alcançados
TerraML foi desenvolvida com o objetivo de diminuir algumas das limitações existentes
nos ambientes computacionais para modelagem dinâmica. Algumas destas limitações
referem-se à estacionariedade das vizinhanças e à discretização do modelo de
mudanças num espaço de estados finito, em função do paradigma de autômato celular
clássico. Nestes dois aspectos, TerraML conseguiu avanços.
A primeira contribuição de TerraML é suportar qualquer vizinhança que possa ser
representada por uma matriz de proximidade. Numa matriz de proximidade, uma
célula pode ter qualquer número de vizinhos. E estes vizinhos podem variar não só
em número, mas também em direção, ou seja, podem variar também na sua
configuração espacial, isto é, podem apresentar formas diferentes de célula para
célula. De uma forma geral, aplicações de geoprocessamento baseadas em
autômatos celulares definem vizinhanças de configuração fixas, dos tipos Moore ou
Von Neumman, com algumas variações no número de zonas de distâncias.
A segunda contribuição está em suportar um modelo de mudanças híbrido, com
elementos contínuos e discretos, num espaço de estados infinito. TerraML utiliza os
conceitos de autômatos celulares híbridos para representar o espaço e as transições
de estado que nele ocorrem. Uma das vantagens desta abordagem de
implementação está na flexibilidade para combinar elementos discretos e contínuos de
forma integrada. Outra vantagem é a facilidade de implementação computacional,
uma vez que existe uma relação direta entre os elementos do autômato híbrido, como
as condições de fluxo e de mudança, e as estruturas de controle de repetição (loops) e
comandos de seleção (ifs), existentes em qualquer ambiente de desenvolvimento de
software.
Por fim, o fato de TerraML fazer parte da TerraLib traz, pelo menos, dois benefícios
imediatos . O primeiro deles é o fato de contar com o respaldo de uma equipe de
desenvolvimento com mais de 20 anos de experiência no desenvolvimento de
aplicações geográficas. A segunda, é que um software com o “padrão de qualidade”
90
TerraLib tem que atender requisitos rigorosos de eficiência e interoperabilidade devido
ao ambiente colaborativo da biblioteca. Algumas das aplicações TerraLib são:
conversor de formatos, analisador de dados em saúde publica, gerenciamento
municipal (TerraCrime, TerraEmTransito) e modelagem dinâmica (TerraML).
6.2 - Futuros Trabalhos
Uma tendência em sistemas sofisticados de computação é o uso de agentes. Agentes
são componentes de software que podem ser dotados de conhecimentos e se adaptar
a diferentes ambientes. O uso de agentes é uma das possibilidades de
aperfeiçoamento do TerraML. Para isto, devem ser investigadas as arquiteturas de
agentes, plataformas e "ferramentas" computacionais para a implementação de
Sistemas Multi-Agentes, definir de estratégias de interação e negociação para a
cooperação e a resolução de conflitos, manutenção de coerência em ambientes
abertos e domínios de aplicação.
Uma questão crucial para sistemas de modelagem dinâmica é o modelo matemático
em si. Em geral, os modelos são representações simplificadas da realidade,
construídas muito mais sob as restrições do domínio da solução, do que sob as
características das variáveis e leis que governam o comportamento do fenômeno que
o modelo descreve. A evolução da computação tem propiciado o surgimento de
tecnologias que permitem introduzir aperfeiçoamentos nas formas de tratar e embutir
modelos em software. Um trabalho de investigação ou até mesmo a proposta de um
"novo" modelo para mudança de uso do solo impulsionaria o desenvolvimento de
novas funcionalidades e estruturas de dados e processos para o ambiente TerraML.
Um outro aperfeiçoamento, não para o ambiente TerraML em particular, mas para
sistemas de “vida artificial” em geral, é a exploração de técnicas e arquiteturas de
processamento paralelo. O modelo celular é o ambiente ideal para que o paralelismo
seja implementado, uma vez que células guardam poucas informações, estão
altamente conectadas e realizam tarefas muito simples. Entretanto, as células são
sempre em grande número, o que degrada o desempenho destes sistemas. Neste
aspecto, o processamento paralelo pode ser a solução para tornar estes sistemas
mais eficientes. Como no caso dos agentes, mencionado anteriormente, técnicas e
91
arquiteturas de computação paralela devem ser estudas para se verificar qual a
solução ideal para um sistema de modelagem dinâmica.
93
REFERÊNCIAS BIBLIOGRÁFICAS
Alves, D. S. Space-time dynamics of deforestation in Brazilian Amazônia. International Journal of Remote Sensing, v. 23, n. 14, p. 2903-2908, 2002.
Batty, M. Modeling urban dynamics through GIS-based cellular automata. Computers, Environment and Urban Systems, v.23, p. 205-233, 1999.
Batty, M. Geocomputation using cellular automata. In: Openshaw, S.; Abrahart, R. J.(ed.) Geocomputation. London: Taylor&Francis, 2000. p. 95-126.
Booch, G.; Rumbaugh, J.; Jacobson, I. The unified modeling language user guide. New York: Addison Wesley, 1998. 478 p.
Burrough, P. Dynamic modelling and geocomputation. In: Longley, P.A.; Brooks, S.M.; McDonnel, R.; MacMillan, B. (ed.). Geocomputation: a primer. London: John Wiley & Sons, 1998. p. 165-190.
Burrough, P.; McDonnel, R. Principles of geographical information systems. Oxford: Oxford University Press,1998. 320 p.
Câmara, A. S. Spatial simulation modelling. In: Fisher, M. (ed.).Spatial analytical perspectives on GIS. London: Taylor & Francis, 1996. p. 213-218.
Câmara, G.; Souza, R.C.M.; Pedrosa, B. M.; Vinhas, L.; Monteiro, A.M.V.; Paiva, J.A.; Carvalho, M.T.; Gatass, M. TerraLib: Technology in Support of GIS Inovation. In: GEOINFO 2000 - Workshop Brasileiro de Geoinformação, 2., 2000, São Paulo. Anais… São Paulo, [s.n], 2000. p. 126-133.
Couclelis, H. From cellular automata to urban models: new principles for model development and implementation. Environment and Planning B: Planning and Design, v. 24, n. 2, p. 165-174,1997.
Couclelis, H. Space, time, geography. In: Longley, P.; Goodchild, M.; Maguire, D.; Rhind, D. (ed.). Geographical information systems. New York: John Wiley & Sons, 1999. p. 29-38.
Edelweiss, N.; Oliveira, J. P. M. Modelagem de aspectos temporais de sistemas de Informação. In: IX Escola de computação, Recife: Universidade Federal de Pernambuco, 1994.
Elmasri, R.; Navathe, S. B. Fundamentals of database systems. Redwood, CA: Addison-Wesley. 2000. 873 p.
Engelen, G.; White, R.; Uljee, I. Exploratory Modelling of Socio-Economic Impacts of Climatic Change. In: Maul, G.A. (ed.). Climate Change in the Intra-America's Sea, London: Edward Arnold, 1993. p. 306-324.
Engelen, G.; White, R.; Uljee, I.; Drazan, P. Using cellular automata for integrated modelling of socio-environmental systems. Environmental Monitoring and Assessment, v. 34, n.2, p. 203-214, 1995.
Engelen, G., Uljee, I.; White, R. Vulnerability assessment of low-lying coastal areas and small islands to climate change and sea level rise - fhase 2: case study St. Lucia. Maastricht: The Netherlands: UNEP - CAR/RCU, RIKS Publication. Report & SimLucia user manual.
94
GNU's Not Unix. The GNU Project and the Free Software Foundation (FSF).Boston: Free Software Foundation. Disponível em: <www.gnu.org>. Acesso em: 23 May 2002.
Henzinger, T. A. The Theory of Hybrid Automata. In: Symposium on Logic in Computer Science, 11.,1996, New Brunswick, NJ . Proceedings...New Brunswick: IEEE Computer Society Press, 1996, p. 278-292.
Hornsby, K.; Egenhofer, M. J. Qualitative Representation of Change. Spatial Information Theory: A Theoretical Basis for GIS. In: International Conference on Spatial Information Theory, 3.,1997, Berlim. Proceedings… Berlim: Lecture Notes in Computer Science, Springer-Verlag. 1997. p.15-33.
Lambin, E. F. Modeling deforestation processes - a review, . Luxembourg: European Commission. 1994. Trees series B: Research Report.
Openshaw, S. GeoComputation. In: Openshaw, S.; Abrahart, R. J.(ed.). Geocomputation. London: Taylor&Francis, 2000. p. 1-31.
O'Sullivan, D. Toward micro-scale spatial modeling of gentrification. Journal of Geographical Systems, v. 4, n. 3, p. 251-74, 2002.
Parent, C.; Spaccapietra, S.; Zimányi, E. Spatio-temporal conceptual models: data structures + space + time. In: ACM Symposium on Advances in Geographic Information Systems, 7., Kansas City - MO,.Proceedings... Kansas: ACM, 1999. p. 26-33.
Peuquet, D. Making space for time: issues in space-time data representation. GeoInformatica, v. 5, n. 1, p. 11-32, 2001.
Reis, E. J.; Margulis, S. Options for slowing Amazon jungle clearing. In: Dornbusch, R.; Poterba, J. M.(ed.). Global warming: economic policy responses. Cambridge: The MIT Press, 1991, p. 335-375.
Research Institute for Knowledge Systems. RIKS - faculty of spatial science. Utrecht: University of Utrecht. Disponível em: <www.riks.nl>. Acesso em: May 2001.
Roy, G. G.; Snickars, F. Citylife: a study of cellular automata in urban dynamics. In: Fisher, M. Spatial analytical perspectives on GIS. London: Taylor & Francis, 1996, p. 213-218.
Santos, M. A natureza do espaço: técnica e tempo, razão e emoção. São Paulo: EDUSP.2002. 392 p.
Sipper, M. The emergence of cellular computing. IEEE Computer, v. 32, n. 7, 1999, p.18-26.
Soares Filho, B. S.; Cerqueira, G. C.; Pennachin, C. L. DINAMICA: a stochastic cellular automata model designed to simulate the landscape dynamics in an Amazonian colonization frontier. Ecological Modelling, v. 154, n. 3, 2002, p.217-235.
Soares Filho, B. S. Modelagem dinâmica de paisagem de uma região de fronteira de colonização amazônica. Tese de doutorado. Escola Politécnica - Universidade de São Paulo, São Paulo, 1998.
Instituto Nacional de Pesquisas Espaciais.Divisão de Processamento de Imagens (INPE/DPI). TerraLib. Disponível em : <http://terralib.dpi.inpe.br>. Acesso em: julho 2003.
95
van Deursen, W. P. A. Geographical information systems and dynamic models. Tese de doutorado. Faculty of Spatial Sciences, Rotterdan - The Netherlands: University of Utrecht, 1995.
van Gurp, J., Bosch, J. On the implementation of finite state machines. In: Annual Iasted International Conference on Software Engineering and Applications, 3.,1999, Scottsdale. Proceedings… Scottsdale - Arizona: 1999. p. 172-178.
Wolfran, S. Statistical mechanics of cellular automata. Reviews of Modern Physics, v.55, p. 601-644. July 1983.
World Wide Web Consortium. W3C. Disponível em <www.w3.org>. Acesso em: May 2003.
White, R.; Engelen,G. Cellular automata as the basis of integrated dynamic regional modelling. Environment and Planning B: Planning and Design, v. 24, p.165-174.1997.
Worboys, M. F. GIS - a computing perspective. Bristol - PA: Taylor & Francis Inc, 1995. 376 p.
Zipf, A.; Krüger, S. TGML - Extending GML by temporal constructs - a proposal for a spatiotemporal framework in XML. In: . ACM International Symposium on Advances in Geographic Information Systems, 7. Atlanta. Procedings…. Atlanta: ACM, 2001. p. 94-99.
98
<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by Bianca Pedrosa (Particular) --> <!--DTD generated by XMLSPY v2004 rel. 2 U (http://www.xmlspy.com)--> <!ELEMENT cellprocessor (input, control)> <!ATTLIST cellprocessor author CDATA #REQUIRED date CDATA #REQUIRED model CDATA #REQUIRED > <!ELEMENT condition EMPTY> <!ATTLIST condition attribute CDATA #REQUIRED op CDATA #REQUIRED value CDATA #REQUIRED > <!ELEMENT control (mode+, transition)> <!ATTLIST control initime CDATA #REQUIRED intervals CDATA #REQUIRED step CDATA #REQUIRED timeUnit (YEAR | MONTH | DAY | HOUR ) #REQUIRED > <!ELEMENT database EMPTY> <!ATTLIST database host CDATA #REQUIRED path CDATA #REQUIRED name CDATA #REQUIRED user CDATA #IMPLIED pass CDATA #IMPLIED > <!ELEMENT expander EMPTY> <!ATTLIST expander attribute CDATA #REQUIRED column CDATA #REQUIRED demand CDATA #REQUIRED > <!ELEMENT fuzzyL EMPTY> <!ATTLIST fuzzyL attribute CDATA #REQUIRED column CDATA #REQUIRED alpha CDATA #REQUIRED beta CDATA #REQUIRED > <!ELEMENT global EMPTY> <!ATTLIST global name CDATA #REQUIRED value CDATA #REQUIRED > <!ELEMENT input (database, layer, table, neighborhood, temporal, global+)> <!ELEMENT layer EMPTY> <!ATTLIST layer name CDATA #REQUIRED layerid CDATA #REQUIRED > <!ELEMENT localMean EMPTY> <!ATTLIST localMean attribute CDATA #REQUIRED column CDATA #REQUIRED > <!ELEMENT mode (fuzzyL*, localMean?, product, expander?)> <!ATTLIST mode name CDATA #REQUIRED > <!ELEMENT neighborhood EMPTY> <!ATTLIST neighborhood name CDATA #REQUIRED zones CDATA #REQUIRED > <!ELEMENT pair EMPTY> <!ATTLIST pair attribute CDATA #REQUIRED weight CDATA #REQUIRED > <!ELEMENT product (pair+)> <!ATTLIST product
99
attribute CDATA #REQUIRED > <!ELEMENT table EMPTY> <!ATTLIST table name CDATA #REQUIRED columns CDATA #REQUIRED lines CDATA #REQUIRED > <!ELEMENT temporal EMPTY> <!ATTLIST temporal name CDATA #REQUIRED attribute CDATA #REQUIRED period CDATA #REQUIRED timeunit (YEAR | MONTH | DAY | HOUR ) #REQUIRED > <!ELEMENT transition (condition)> <!ATTLIST transition from CDATA #REQUIRED to CDATA #REQUIRED >
101
APÊNDICE B
Código Fonte
Obs: Esta documentação destina-se a fornecer uma visão geral da abordagem de implementação. Os arquivos de cabecalho (.h) estão completos. Dos arquivos fonte (.cpp) foram selecionadas as funções mais significativas do sistema.
102
CellAutomata.h #ifndef TeCellA_H #define TeCellA_H //Includes //---------------------------TerraLib #include <TeCellAlgorithms.h> #include <TeAdoDB.h> #include <TeLayer.h> #include <TeGeometry.h> #include <TeSelectedObject.h> #include <TeImportExport.h> #include <TeTime.h> #include <TeInitRasterDecoders.h> #include <TeDecoderDatabase.h> #include <TeRasterRemap.h> #include <AuxiliarAlgorithms.h> //-----------------------------Parser #include <dom/DOM_Node.hpp> #include <dom/DOM_Element.hpp> //-----------------------------TerraML #include "TeProxMtx.h" #include "controlmode.h" #include "bicell.h" class TeCellAutomata { public: TeCellAutomata(char *x); void builder (DOM_Node& aNode); void buildsection (DOM_Node& aNode); int init( string, string , string , string , string, int, string, char *, int); void inputdata (DOM_Node& aNode); void inputcontrol (DOM_Node& aNode); void inputtime (DOM_Node& aNode); void printcells(); void printDynCells(); void print_neighbors(); void printcontrols(); bool createneighbors(char *arquivo, int zonas); bool createDynAttribute(); bool execute(); bool process(ControlMode, int t); void calculate (Flow *f, int t); void fuzzyL(FuzzyL *f, int t); void localMean(LocalMean *f,int t); void sum (Product *f,int t) ; void expander(Expander *f, int t); double sort(string attribute, double demand, int t); void transit(string attribute, string column, double threshold, int t); ControlMode *getMode(string s);
private: BiCellSet cells_; TeProxMatrix neighborhood_; TeTimeSequence *timeseq_; ModeSet modes_; TransitionSet transitions_; }; #endif
103
BiCell.h #ifndef BICELL_H #define BICELL_H #include <vector> #include <map> #include <TeGeometry.h> #include <TeAttribute.h> typedef vector<double> doubleRow; typedef vector<doubleRow> doubleTable; class BiCell : public TeCell { private: TeTableRow attribute_; // Modeling Attributes - TerraML doubleTable dynAttribute_; // Dynamic Attributes - TerraML public: BiCell(string o) {objectId_=o;} BiCell (string o, int c, int l) { objectId_=o; this->column(c); this->line(l); } //! Adds modeling attribbutes to the cell void setAttributes(TeTableRow s) { attribute_ = s;} //! Gets modeling attributes (the entire row) TeTableRow getAttributes () {return attribute_;} //! Adds modeling attribbutes to the cell void attribute(string s) { attribute_.push_back(s);} //! Return the i-th attribute of the cell string attribute(int i) {return attribute_[i];} //! Adds new line of dynamic attributes to the cell void dynAttribute(doubleRow s) { dynAttribute_.push_back(s);} //! Return the dynamic attributes of the cell doubleRow dynAttribute(int i) {return dynAttribute_[i];} //da void dynAtt(int l, int c, double value) { dynAttribute_[l][c]=value; } double dynAtt(int l, int c) {return dynAttribute_[l][c];} };
104
BiCell.h //! A class for handling sets of BiCells class BiCellSet: public TeGeomComposite<BiCell> { double resX_; //!< the X resolution of a set of cells double resY_; //!< the Y resolution of a set of cells TeAttributeList attributes_; TeAttributeList dynAttributes_; public: //! operador de copia from TeCell operator = ( TeCellSet cells) { cout << "copiando TeCell em BiCell..."<< endl; TeCellSet::iterator cells_it=cells.begin(); while (cells_it != cells.end()) { BiCell bcell((*cells_it).objectId(),(*cells_it).column(),(*cells_it).line()); this->add(bcell); cells_it++; } } //! Returns the X resolution of a cell set double resX () { return resX_; } //! Returns the Y resolution of a cell set double resY () { return resY_; } //! Sets the X resolution of a cell set void resX (double reX) { resX_ = reX; } //! Sets the Y resolution of a cell set void resY (double reY) { resY_ = reY; }
//! Sets the attribute list of a cell set void attributes(TeAttributeList t) {attributes_=t;} void dynattributes(TeAttributeList t) {dynAttributes_=t;} string attributes(int n) {return attributes_[n].rep_.name_;} string dynAttributes(int n) {return dynAttributes_[n].rep_.name_;} int attribute(string s) //! retorna o nro da coluna do atributo s { int j = 0; TeAttribute attr; TeAttributeList::iterator att_it = attributes_.begin(); while ( att_it != attributes_.end()) { if ((*att_it).rep_.name_ == s) { return j; } j++; att_it++; } return -1; }
105
BiCell.h int dynAttribute(string s) //! retorna o nro da coluna do atributo s { int j = 0; TeAttribute attr; TeAttributeList::iterator att_it = dynAttributes_.begin(); while ( att_it != dynAttributes_.end()) { if ((*att_it).rep_.name_ == s) { return j; } j++; att_it++; } return -1; } //! Sets the dynamic attribute list of a cell set void dynAttributes(TeAttributeList t) {dynAttributes_=t;} //! Returns the attribute list of a cell set TeAttributeList attributes() {return attributes_;} //! Returns the dynamic attribute list of a cell set TeAttributeList dynAttributes() { return dynAttributes_;} }; #endif
106
TeProxMtx.h #ifndef TEPROXMTX_H #define TEPROXMTX_H #include <map> struct ProxMatrixInfo { float weight_; int slice_; float d1_,d2_,d3_; //d1=centroidDistance, d2=NetDistance, d3=NetMinPath ProxMatrixInfo (): weight_(0.00), slice_(0), d1_(0.00), d2_(0.00), d3_(0.00){} ProxMatrixInfo (float w,int s,float d1,float d2,float d3): weight_(w), slice_(s), d1_(d1), d2_(d2), d3_(d3){} ProxMatrixInfo (const ProxMatrixInfo& c): weight_(c.weight_), slice_(c.slice_), d1_(c.d1_), d2_(c.d2_), d3_(c.d3_){} ProxMatrixInfo& operator = (const ProxMatrixInfo& x) { weight_= x.weight_; slice_= x.slice_; d1_=x.d1_; d2_=x.d2_; d3_=x.d3_; return *this; } void getProxMatrixInfo() { cout << " weight = " <<weight_ << " slice = "<< slice_ << " d1 =" << d1_ << endl; } bool empty() { if (slice_>=0) return true; return false; } float weight() { return weight_;} }; typedef map<TeCell*, ProxMatrixInfo> stringRow; typedef map<string, stringRow> sparceMatrix; class TeProxMatrix: public TeSingleton<TeProxMatrix> { public: void insertNeighbour ( const string& o1, TeCell* o2, int slice, float weight, float d1, float d2, float d3) { ProxMatrixInfo pm ( weight, slice, d1, d2, d3); matrix_ [o1] [o2] = pm; }
stringRow getNeighborhood ( string o1 ) { return matrix_ [o1]; } ProxMatrixInfo getANeighbor ( string o1, TeCell* o2 ) { return matrix_ [o1] [o2]; } protected: sparceMatrix matrix_; }; #endif
107
ControlMode.h #ifndef CTRLMODE_H #define CTRLMODE_H #include <string> using namespace std; class Flow { string attr_; string math_; public: Flow(string a, string m): attr_(a), math_(m){} string attr() { return attr_;} string math() { return math_;} }; typedef vector <Flow*> FlowSet; class Condition { string attr_, value_, oper_; public: Condition(string a, string v, string o): attr_(a), value_(v), oper_(o){} string attr() { return attr_;} string oper() { return oper_;} string value() { return value_;} }; class ControlMode { string name_; FlowSet flows_; public: //ControlMode(); ControlMode():name_(""){} ControlMode(string s) {name_=s;} string name() {return name_;} FlowSet flows() {return flows_;} void add(Flow *aFlow) { flows_.push_back(aFlow); } void print() { cout << name_ << endl; int n=flows_.size(); for (int i=0;i<n;i++) cout << (*flows_[i]).attr() <<endl; } }; typedef vector<ControlMode> ModeSet; class Transition { ControlMode *fromode_,*tomode_; vector<Condition > jumps_; public: Transition (ControlMode* f, ControlMode* t): fromode_(f),tomode_(t){} void add (Condition aCondition) {jumps_.push_back(aCondition);} void print() { cout << (*fromode_).name() << ' ' << (*tomode_).name() << endl; for (int i=0;i<jumps_.size();i++)
cout << jumps_[i].attr() << ' ' << jumps_[i].oper()<< ' ' <<jumps_[i].value()<<endl;
} }; typedef vector <Transition> TransitionSet;
108
ControlMode.h class FuzzyL : public Flow { string column_; double alpha_; double beta_; public: FuzzyL (string a, string m,string c, double aa, double b):Flow(a,m), column_(c), alpha_(aa), beta_(b){} string column() { return column_; } double alpha() { return alpha_; } double beta() { return beta_; } }; class LocalMean : public Flow { string column_; public: LocalMean (string a, string m, string c):Flow(a,m), column_(c){} string column() { return column_; } }; class Expander : public Flow { string column_; double demand_; public: Expander (string a, string m, string c, double d):Flow(a,m), column_(c), demand_(d){} string column() { return column_; } double demand() { return demand_; } };
#endif
109
cellularAutomata.cpp TeCellAutomata :: TeCellAutomata (char *xmlFile) { DOM_Node doc_ = xmlParser(xmlFile); builder(doc_); } void TeCellAutomata::builder(DOM_Node& aNode) { if (is_section( aNode.getNodeName().transcode() )) { buildsection(aNode); aNode = aNode.getNextSibling(); } else { // Test for the presence of children DOM_Node child = aNode.getFirstChild(); while( child != 0) { builder(child); child = child.getNextSibling(); } } } void TeCellAutomata::buildsection (DOM_Node& aNode) { // Test for the presence of children if (!strcmp(aNode.getNodeName().transcode(),"input")) inputdata(aNode); if (!strcmp(aNode.getNodeName().transcode(),"control")) inputcontrol(aNode); if (!strcmp(aNode.getNodeName().transcode(),"simulation")) inputtime(aNode); else { DOM_Node child = aNode.getFirstChild(); while( child != 0) { child = child.getNextSibling(); } } } int TeCellAutomata::init( string host, string dbname, string user, string pass, string layername, int layerid, string tablename, char *neighborsname,int zonas) { cout << "lendo banco " << host << ' ' << dbname << "...." <<endl ; // Opens a connection to a database accessible though ADO TeDatabase* ado_db = new TeAdo(); if (!ado_db->connect(host,user,pass,dbname,0)) { cout << "Error: " << ado_db->errorMessage() << endl; exit(0); } TeCellSet cells; if (!ado_db->loadCellSet (layerid, layername, "", cells)) { cout << "\tLayer de entrada inexistente: " << layername << endl; ado_db->close(); exit(0); } cells_ = cells; TeTable cellstable; if (!ado_db->loadTable (tablename, cellstable)) { cout << "\tTable de entrada inexistente: " << tablename << endl; ado_db->close(); exit(0); } assignAttr(cells_,cellstable); //adiciona atributos nas celulas createneighbors(neighborsname,zonas); //gera matriz de proximidade return 1; }
110
cellularAutomata.cpp bool TeCellAutomata::execute() { createDynAttribute(); for (int t=0; t<(*timeseq_).num_steps(); t++) { cout << "T " << t<< endl; process((*modes_.begin()),t); //generalizar - assumi 1o modo local result(cells_,t); } return true; } bool TeCellAutomata::process (ControlMode Local, int t) { FlowSet flows= Local.flows(); int n=flows.size(); for (int i=0;i<n;i++) //calcula todos os flows deste ControlMode { cout << "flow "<< i << endl; calculate(flows[i],t); } return true; } void TeCellAutomata::fuzzyL(FuzzyL *f,int t) { cout << "calculating a fuzzyLow...\n"; int attcol=cells_.attribute((*f).column()); double alpha=(*f).alpha(); double beta=(*f).beta(); BiCellSet::iterator cells_it=cells_.begin(); while (cells_it != cells_.end()) { double x=atof((*cells_it).attribute(attcol).c_str()); double value = (1 / (1 + ( alpha * pow( x - beta,2)))) ; (*cells_it).dynAtt(t, cells_.dynAttribute((*f).attr()), value); cells_it++; } } void TeCellAutomata::localMean(LocalMean *f,int t) { cout << "calculating a local mean...\n"; BiCellSet::iterator cells_it=cells_.begin(); while (cells_it != cells_.end()) { string attribute = (*f).column(); double result=0.00; string o1 = (*cells_it).objectId(); for (BiCellSet::iterator it=cells_.begin(); it!= cells_.end(); it++) { ProxMatrixInfo pmi =TeProxMatrix::instance().getANeighbor(o1,it); if (pmi.empty()) { if (t==0) { if (atof((*it).attribute(cells_.attribute(attribute)).c_str()) > 0) result+=pmi.weight(); } else { if ((*it).dynAtt(t-1,cells_.dynAttribute(attribute)) > 0) result+=pmi.weight(); } } } (*cells_it).dynAtt(t, cells_.dynAttribute((*f).attr()), result); cells_it++; } }
111
cellularAutomata.cpp void TeCellAutomata::expander(Expander *f, int t) { int globalPotential =0; string attribute=(*f).attr(); double demand=(*f).demand(); string column=(*f).column(); BiCellSet::iterator cells_it=cells_.begin(); while (cells_it != cells_.end()) { if ((*cells_it).dynAtt(t, cells_.dynAttribute(column))>0) globalPotential++; cells_it++; } cout << "total de celulas com potencialpara mudanca: " << globalPotential << endl; double threshold = 0.00; if (globalPotential>demand) threshold = sort(column, demand, t); transit(attribute, column, threshold, t); } double TeCellAutomata::sort(string attribute, double demand, int t) { cout << "expanding..." << endl; //gera uma lista de potenciais para poder ordenar list<double> myList; BiCellSet::iterator cells_it=cells_.begin(); while (cells_it != cells_.end()) { double value = (*cells_it).dynAtt(t, cells_.dynAttribute(attribute)); myList.push_back(value); cells_it++; } // ordena potenciais e obtem limiar myList.sort(); double threshold; list<double> :: iterator it=myList.end(); for(int i=0;i<demand;i++) { threshold=(*it); it--; } return threshold; } void TeCellAutomata:: transit(string attribute, string column, double threshold, int t) { double value; BiCellSet::iterator cells_it=cells_.begin(); cells_it=cells_.begin(); while (cells_it != cells_.end()) { if ((*cells_it).dynAtt(t, cells_.dynAttribute(column))>=threshold) value=1; else value=atof( (*cells_it).attribute(cells_.attribute(attribute)).c_str() ); (*cells_it).dynAtt(t, cells_.dynAttribute(attribute), value); cells_it++; } }
main.cpp
int main( int argc, char ** argv ) { TeCellAutomata ca(argv[1]); ca.execute(); return 1; }