SNTool Fuzzy System Demo


Descrição do Exemplo

Para demonstrar a capacidade das redes semeionicas como ferramenta de desenvolvimento de sistemas inteligentes, foi desenvolvido uma rede de demonstração de uma implementação de um sistema nebuloso. Um sistema nebuloso consiste basicamente de 4 etapas: nebulização, inferência das regras, agregação das ativações das regras e desnebulização. Todas estas etapas podem ser observadas no exemplo desenvolvido.

Sistema controlado

O sistema a ser controlado é bastante simples. Trata-se de um tanque de água, que pode receber água de duas fontes diferentes controladas por válvulas. Uma fonte fornece água quente a 60 graus e a outra água fria a 10 graus, e cada uma pode fornecer até 25 litros por iteração. O tanque deve permanecer no nivel de 60 litros com temperatura de 35 graus. As equações que descrevem a dinâmica do tanque foram extremamente simplificadas, uma vez que o objeto de estudo é o controlador nebuloso e não o sistema controlado. Desta forma admite-se que a água quente e a água fria que chegam ao tanque se misturam instantaneamente com a água existente no tanque, também não existe atraso na abertura das válvulas portanto o fluxo de entrada é considerado instantâneo. A cada iteração sai do tanque uma quantidade fixa de 5 litros mais uma quantidade aleatória de 0 a 5 litros, e lém disso a água existente no tanque pode resfriar-se de 0 até 2 graus aleatoriamente. As condições iniciais do tanque foram ajustadas para o nível de 50 litros e temperatura de 50 graus, com condições de referência desejadas de nível de 60 litros e temperatura de 35 graus.

WaterTankVolume (t+1) =  Water Tank volume(t) + flowInHotWater(t+1) + flowInColdWater(t+1)  - flowOutUsedWater(t+1)

WaterTankTemperature(t+1) =  [ WaterTankVolume(t+1) * ( WaterTankTemperature(t) - WaterTankCoolling(t+1) ) + HotWaterTemperature(t+1) * flowInHotWater(t+1)  + ColdWaterTemperature(t+1) * flowInColdWater(t+1)  ] / ( flowInHotWater(t+1) + flowInColdWater(t+1) + WaterTankVolume(t+1) )


Sistema de Controle
Figura 1: Rede Semeionica do Sistema de Controle de um Tanque de Água


Controlado Nebuloso
Figura 2: Rede Semeionica do Controlador Nebuloso

Controlador Nebuloso

O controlador nebuloso tem como entradas o volume e a temperatura atuais do tanque de água, e como saídas a quantidade de água quente e de água fria a serem colocados no tanque de água. As variáveis nebulosas utilizadas estão descritas a seguir:

Volume
Volume
Temperatura
Temperature
Fluxo de Água Quente
Hot Flow
Fluxo de Água Fria
Cold Flow



Foi utilizada a inferência de Mamdani, agregação por união tipo Max, defuzzificação por Momento, e as seguintes regras nebulosas:

Volume
Temperature
HotFlow
ColdFlow
H
H
Z
L
H
OK
Z
Z
H
L
L
Z
OK
H
Z
M
OK
OK
Z
Z
OK
L
M
Z
L
H
L
B
L
OK
M
M
L
L
B
L


Execução do Exemplo

Configuração

O exemplo utiliza a biblioteca NRC FuzzyJ Toolkit (c) by "NATIONAL RESEARCH COUNCIL OF CANADA"'s Institute for Information Technology  (http://www.iit.nrc.ca/). Para executar o exemplo desenvolvido será necessário obter uma cópia da biblioteca e incluí-la no  CLASSPATH de usuário no arquivo de inicialização do SNTool.

Além disso é necessário incluir também no CLASSPATH o package com classes de holders específicos para este exemplo, disponível aqui.

Visualização

A tela seguinte dá uma idéia de visualização do exemplo utilizando Viewers do SNTool:

SNTool visualization

Figure 3: Visualizando o exemplo na tela do debugger do SNTool..


Além disso pode-se ver o disparo das regras e sua agregação na tela de console do SNTool:

Rule Firing 1 Rule Firing 2
Rule Aggregation

Figura 4: Visualizando o disparo e agregação das regras na tela de console.


Exemplo implementado por Angelo Conrado Loula (angelocl@dca.fee.unicamp.br)