When the solution matters*

4D Internacional


| Clientes | Histórias de êxito | Buscador de soluções | Perfis |

Controle difuso (Fuzzy) com 4D Academic

Inteligência artificial e lógica difusa em um projeto de fim de carreira
Por Alejandro Palacios Rodrigo

 

Tradicionalmente, 4D oferece a professores e estudantes versões gratuitas do 4D Standard Edition, sob o marco da academia (Neste próximo mês de março, dará inicio ao novo programa acadêmico com a versão 4D 2004, cujos detalhes vão se expor em nossa Web). A continuação oferecemos-lhe o assunto de uma verdadeira história de êxito acadêmico, que conta como 4D foi envolvido em um projeto de fim de carreira do Engenheiro de Minas, que recebeu a qualificação máxima do tribunal da escola: um 10 sobressalente (O autor é muito modesto para comentar, mais nós podemos!). Como apreciará, o assunto do seu estudo é ao mesmo tempo bastante lógico… e difuso…).

 

Desde o nascimento da lógica difusa até os nossos dias, encontraram e desenvolveram numerosas aplicações da mesma, desde o controle de uma máquina de vapor, até os modernos chips difusos que controlam lavadoras, fornos ou as luzes da casa. Mesmo assim, trata-se de uma tecnologia relativamente recente, que incita a ser investigada e aplicada pelos engenheiros de controle.

Alejandro Palacios Rodrigo

Controle Difuso: Você sabe encher um tanque?

Decidi implementar um software de controle difuso para meu projeto de fim de carreira, com ânimo de demonstrar a mim mesmo, que era capaz de aplicar na vida real, tudo o que aprendi da matéria de Automática de sexto curso de Engenharia Superior de Minas. O sistema que escolhi para aplicar o controle foi um tanque de água com válvulas de entrada e saída. Como não podia dispor do dito sistema fisicamente, o que fiz foi desenvolver um simulador por computador, que se comporta-se de forma idêntica ao sistema a controlar. Dito simulador gera dados que indicam o estado do sistema, quer dizer, ao encher o tanque, a apertura da válvula, etc. Estes dados enviam-se ao controle através do porto série, como se tratasse de um sistema real, cujos sensores de medida enviam os dados da medição ao controle. O controle, toma a decisão em função dos dados recebidos, de abrir ou fechar a válvula de admissão de água, controlando assim, a altura ao encher o tanque.

simuladorSimulador

A implementação do simulador consiste em desenvolver as funções que nos dêem o parâmetro adequado. Por exemplo, no nosso caso, existe uma função que nos dá o caudal de saída da válvula em função do tanto por cento de apertura da mesma. O caudal de água que sai da válvula alimenta-se ao tanque, que armazenará a quantidade que já tinha, mais à quantidade de água que sai a cada instante da válvula. Esta operação realiza-se em cada iteração do programa do simulador.

Controle

A lógica difusa nasce da teoria dos conjuntos difusos do professor Zadeh. O objetivo do professor Zadeh, era expressar em linguajem matemática o modo de razoamento aproximado, característico dos humanos. Contraria à lógica tradicional em às que somente são possíveis dos valores, na lógica difusa tudo é questão de grau. O grau é o conceito fundamental da lógica difusa. As coisas não são mais, brancas ou pretas, agora os tons de cores cinzas estão permitidos.

Os conjuntos difusos, são conjuntos em os que define-se uma função chamada "função de pertença", que atribui a cada elemento do conjunto, um valor que representa o grau em que dito valor pertence ao conjunto. A cada conjunto lhe associa um quantificador lingüístico, como por exemplo, muito, pouco, bastante etc., de forma que relacionamos o modelo matemático com a linguajem humana. A função de pertença, pode ser qualquer um, porém, uma das mais utilizadas é a função triangular pela simplicidade e eficácia da mesma. Por exemplo, se falamos de temperatura, para mim a temperatura da água entre 5 e 22 graus centígrados, a considero fria, entre 20 e 35, morna, e de 33 a 45, quente. Já tenho os intervalos definidos, nas quais as associei um quantificador lingüístico. Agora só falta definir as funções de pertença, para ter os conjuntos difusos. Usando funciones triangulares:

O fato de que as funções se solapem significa que a fronteira entre o frio e o morno, e entre o morno e o quente não está claro. Isso reforça mais a idéia de difuso, já que na lógica tradicional, um valor dado de temperatura pertence ao conjunto do frio ou do morno, mais não pode pertencer aos dois. Por exemplo o valor da temperatura de 21 ºC, pertence ao conjunto do frio e do morno. Por outro lado, a eleição dos intervalos da temperatura varia em função da pessoa, a experiência, o sistema a controlar e como você queira controlar...

Esfumar um valor real, consiste em calcular o grau em que dito valor real pertence a cada conjunto difuso:

No exemplo, o valor de 24 graus pertence em um grau de 0,9 ao conjunto do "Morno" e em grau zero o "Frio" e "Quente". Quer dizer, temos traduzido o valor real de 24ºC ao seguinte vector (array em programação): (0, 0.9, 0).

Por outro lado, no modo de razoamento humano, utilizam-se regras do tipo

Se CONDIÇÃO ENTÃO AÇÃO para transmitir instruções e conhecimento.

Relacionando-se com o conceito de grau, na medida ou grau em que se cumpra a condição, será na medida ou grau em que se cumpra a ação.

Um exemplo de regra de controle para o nosso sistema pode ser:

Se o tanque esta Cheio então a apertura da válvula deve ser zero.

Isso quer dizer que, se o grau de pertença ao conjunto do cheio é 1, então a saída que deve dar o controle deve pertencer em grau 1 ao conjunto de apertura zero. No entanto, se a pertença ao encher o tanque é de 0,5 a saída pertencerá também ao conjunto apertura zero em um grau de 0,5. Desta forma toma-se a decisão da™ saída do sistema.

O software difuso deve contemplar os seguintes blocos:

1. Bloco de difuminação.

Como vimos, as regras do trabalho são regras difusas, as quais nos indicam o que fazer se o valor real que envia o simulador pertence a um conjunto ou outro. Para poder comparar o valor da medida com as regras do trabalho, dito valor deve expressar-se em forma de variável difusa. É neste bloco onde uma variável real transforma-se em difusa.

2. Motor de inferência.

É neste bloco onde toma-se a decisão. Compara-se a entrada com as regras do trabalho e se vê em que grau cumpre cada uma delas, avaliando assim o resultado.

3. Concretização

A saída difusa tem que convertê-la em um valor real que possa ser interpretada pelo dispositivo real, no nosso caso a válvula.

Nota: Nota: Pode que a utilização dos términos "difuminação" e "Concretização" não os sejam familiares a aqueles que conhecem algo de lógica difusa, mais me permiti a licença de utilizar os términos castelhanos em lugar dos términos em inglês (fuzzy e defuzzy) reivindicando o uso do idioma castelhano, aí onde existe uma palavra para identificar o conceito, em lugar de assimilar diretamente o término inglês.

Como implementa-se tudo isso em 4D?

Em primeiro lugar tem que definir os intervalos dos conjuntos difusos para cada variável. É aqui onde especificamos que categoria da variável está associado a cada quantificador lingüístico, como por exemplo, pouco cheio, meio cheio, cheio, etc. Também diremos a função de pertença que vamos utilizar, que no nosso caso é a função triangular.

 

particiones

Isso implementa-se com duas tabelas:

Nesta tabela se armazenam os valores de Inicio da Categoria, Ponto médio da categoria, pendente (m) da reta e término independente (n) da reta. Desta forma, dado um valor real, o primeiro que fazemos é um "query" para identificar a que tramo pertence, compondo depois a reta que nos da o grau de pertença, já que disponhamos dos valores de m e n da reta. As tabelas utilizadas foram às seguintes:

 

 

Como se traduzem as regras de trabalho da linguajem humana à linguajem matemática?

As regras de trabalho em lógica difusa recolhem a experiência do operador no controle do sistema. Qualquer um sabe que se o tanque está quase cheio devemos fechar a válvula para que não derrame. Estas regras de trabalho, expressam-se como:

SE CONDIÇÃO ENTÃO AÇÃO e é assim como recolhem-se no software.

particiones

 

 

O que fazemos é traduzir estas regras matematicamente para poder compará-las com o valor que vêm do simulador. Isso se faz mediante as seguintes tabelas:

 

 

 

 

A tabela Regras recolhe as mesmas escritas em linguajem humana. A tabela MatrizRegras, se compõe a partir da primeira. Os campos C1 a C10 representam os códigos de cada um dos dez intervalos em que permite-se dividir uma variável. Todos os valores se recheiam a zero com exceção daquele que cumpre a condição da regra, que se recheia com um 1. Por exemplo, suponhamos que C1 representa ao intervalo de "pouco cheio" do tanque e C2, ao intervalo “Meio cheio”, ambos para a variável de encher o tanque. Com respeito à variável de apertura da válvula, C1 representa fechada ao tope e C2 aberta ao tope. Suponhamos também a seguinte regra do trabalho:

Se o tanque está pouco cheio ENTÃO abre a válvula ao tope.

Podemos representá-lo na seguinte tabela:

C1

C2

C3

C4

C5

C6

C7

C8

C9

C10

Encher Tanque

1

0

0

0

0

0

0

0

0

0

Apertura Válvula

0

1

0

0

0

0

0

0

0

0

 

Quer dizer, temos traduzido as regras a um array de duas dimensões. Porém, acima explicávamos como traduzíamos a um array difuso um valor real. Agora temos feito o mesmo com as regras. O temos tudo expressado em forma de arrays numéricos que são fáceis de comparar.

Protocolo

O simulador e o controle executam-se em duas equipes diferentes, simulando uma situação da vida real. Para comunicá-los utiliza-se o porto série, definindo um protocolo para o trasfego de dados. O controle pode enviar ao simulador dois tipos de tramas:

As tramas constam de uma cabeceira, um emissor, um receptor, um corpo da mensagem e um CRC (código de redundância cíclica). Este CRC, também foi desenhado por mim, para fazer um check-up à correta transmissão das tramas de dados.

O software incorpora um controle de erros, emitindo sinais de alarme se não recebe resposta do simulador em três tentativas de comunicação.

O ciclo completo de pergunta, resposta, ordem e aceitação da ordem que tem lugar entre o controle e o simulador, completa-se cada dos segundos.

4D no projeto

Existem duas partes diferenciadas na indústria: o controle, propriamente dito e a gestão da informação. Os dispositivos da medida geram grandes quantidades de informação que é armazenada em bancos de dados, e que utiliza-se depois para avaliar o rendimento do nosso processo de controle. Neste sentido, 4D cumpre perfeitamente a sua função, ao integrar o meio de desenvolvimento e o motor de banco de dados.

Por outro lado, o projeto baza-se no manejo de arrays, pelo que utilizei muito o jogo de instruções que 4D tem para o seu manejo, assim como a possibilidade de passar ponteiros a arrays, com objeto de construir métodos especializados em uma tarefa, que dedicam-se a carregar os valores adequados nas posições correspondentes.

Como crítica construtiva para os responsáveis do produto direi que o manejo do porto paralelo é bastante complexo. O uso deste porto em lugar de série permitiria a aplicação direta do software sobre um dispositivo real, utilizando unicamente um convertedor digital / analógico, já que possui 8 bits de dados utilizáveis para transmitir diretamente o valor que deve tomar o atuador da válvula.

Resultado final

O software configurou-se para que funcionasse como um controle P.I (Proporcional Integral). Estes tipos de controles são muito conhecidos na indústria. O controle PI difuso comparou-se com um PI clássico, obtendo uns resultados muito parecidos no comportamento.

Como opção do futuro e ainda que a priori, não pensei neles, já que tratava-se de um desenvolvimento simples e mono posto, me ocorreu utilizar a tecnologia do 4D Client para o seguinte: já que software admite armazenar as configurações que permitem o controle de sistemas diferentes, o fato de montar o software sobre um 4D Server implica o controle simultâneo de tantos sistemas diferentes como clientes 4D tenhamos, comportando-se cada controle como ó encontramos definido previamente na configuração e utilizando o mesmo programa de controle.

 

Alejandro Palacios Rodrigo
Madrid - Fevereiro de 2005

 

 

 

Descarregar a versão PDF desta história

 

 

 

software de control borroso

Internacional | Empresa | Contatar 4D | Mapa do Site | © 4D, S.A. 2009 | Tamanho da fonte: [A] [A] [A] *Quando a solução é o que importa