6 MODELO E PROTÓTIPO DIFUSO
6.2 PROJETO E IMPLEMENTAÇÃO
6.2.5 Processamento Difuso
Através dos conjuntos difusos é possível utilizar a técnica de raciocínio aproximado e aperfeiçoar os resultados obtidos considerando os aspectos imprecisos nos limites entre um conjunto e outro. A utilização de regras de inferência através dos operadores lógicos (E e OU) e condicionais (SE e ENTAO) possibilita a criação de uma base fundamentada no conhecimento tácito ou explícito. Zadeh (1994) acrescenta que para cenários e sistemas complexos, é necessário empregar o uso de técnicas que sejam tolerantes para imprecisão, incerteza e verdade parcial. A tomada de decisão quando envolta por multi-critérios, alternativas e aspectos incertos, pode ser conceituada como uma ação complexa. O emprego da lógica difusa contribui de forma significante para o processo decisório por possibilitar um modelo sistêmico que reduz a incerteza do tomador de decisão. O MPD foi desenvolvido com base nos princípios mais utilizados pela lógica difusa na literatura contemplando as etapas de Fuzificação, Regras de Inferência e Defuzificação.
6.2.5.1 Fuzificação
Fuzificação é o processo de transformação dos valores reais (crisp) em valores difusos. O MPD utiliza o método Múltipla Entrada e Única Saída (MISO) para classificação das variáveis. Nesse método é possível inserir diversas variáveis de entrada, mas somente
uma variável de saída. As variáveis podem possuir até cinco termos linguísticos, que são os limites entre as classificações linguísticas possíveis. Cada um desses termos se torna um conjunto difuso no MPD. O processo de fuzificação consiste em atribuir o grau de pertinência de cada elemento a esses conjuntos difusos. Para todo modelo de decisão é necessário informar uma variável de saída, por meio da qual, é calculado o valor difuso final. No MPD, para operação dos termos, foi desenvolvido suporte às funções de pertinência Triangular (3 valores de referência) e Trapezoide (4 valores de referência). De acordo com os trabalhos correlatos apresentados no capítulo 4 esses dois tipos são adequados ao meio acadêmico. A diferença entre os tipos Trapezoide e a Triangular é que no tipo primeiro existe um intervalo maior onde o elemento adquire grau de pertinência 1. A figura 18 exemplifica um gráfico de fuzificação considerando os termos linguísticos Curta, Média e Longa com seus respectivos valores referência e funções de pertinência descritas a seguir:
Curta - Trapezoide: 0, 7, 13, 20 – Significa que qualquer elemento x>= 0 e x <= 20 possui pertinência nesse termo, sendo que entre 7 e 13, qualquer elemento possui pertinência igual a 1.
Média – Triangular: 11, 22, 44 – Significa que qualquer elemento x >= 11 e x<= 44 possui pertinência nesse termo, sendo que se for 22 possui pertinência 1.
Longa – Trapezoide: 33, 44, 50, 55 - Significa que qualquer elemento x>= 33 e x <= 55 possui pertinência nesse termo, sendo que entre 44 e 50, qualquer elemento possui pertinência igual a 1.
Figura 18 Gráfico de fuzificação dos termos acima
No MPD, os intervalos não são exibidos de forma gráfica. O usuário precisa entrar com cada valor referência do termo e identificar sua função de pertinência (Trapezoide ou Triangular). O exemplo anterior seria expresso no MPD conforme a figura 19:
Figura 19 Representação do exemplo anterior no MPD
Fonte: Elaborado pelo autor.
6.2.5.2 Regras de Inferência
No MPD, o método de Mamdani é utilizado para avaliação das regras de inferência. Esse método permite expressar quantitativamente valor difuso final. O usuário pode manipular as variáveis de entrada através de operadores de disjunção (OU) ou operadores de interseção (E) e compor a base de conhecimento da lógica difusa. O protótipo utiliza as regras do tipo (SE - ENTÃO) para realizar a agregação das variáveis de entrada e a saída difusa correspondente. No MPD foi implementado o método Modus Ponens (MP) que consiste em gerar o consequente com base nos antecedentes respeitando a característica do modelo MISO. A figura 20 exemplifica a utilização do método Mamdani:
Figura 20 Modelo de inferência de Mamdani
Fonte: FILHO, 2004, p.80.
No exemplo acima, após receber os valores difusos gerados pela etapa de fuzificação (conversão escalar->fuzzy), o MPD processa as regras de inferência existentes na base de
conhecimento e gera, a partir da composição de todas as regras existentes, um conjunto difuso de saída para o processo de defuzificação (conversão fuzzy->escalar).
Para cada regra, o usuário pode informar até oito variáveis de entrada com suas respectivas classificações (termos linguísticos) e uma variável de saída com sua respectiva classificação (termo linguístico). O usuário também pode escolher o operador de disjunção (OU) ou o operador de interseção (E). Se for escolhido o operador OU, o sistema utiliza o valor máximo das funções de pertinência de cada regra, já o operador E utiliza o valor mínimo das funções de pertinência da regra. As variáveis de entrada são classificadas em um grupo chamado antecedentes, já a variável de saída é agrupada no grupo consequente. A figura 21 exibe a tela para inserção das regras de inferência do modelo de tomada de decisão no MPD:
Figura 21 Cadastro de Regras de Inferência MPD
Fonte: Elaborado pelo autor. 6.2.5.3 Defuzificação
O método utilizado pelo MPD para Defuzificação é o método Centroide. Conforme exibido na seção 2.4.6.3, esse método calcula o centro da área do conjunto difuso final. Esse método foi escolhido por ser aplicado em boa parte da literatura que aborda a utilização da lógica difusa em processo decisório. No MPD, não foram implementados outros métodos de defuzificação, entretanto, essa implementação pode vir em trabalhos futuros. Com base no conjunto difuso gerado pelo método de Mamdani, o MPD calcula para cada alternativa de decisão o seu resultado correspondente.
O ranking final com o resultado de cada alternativa é apresentado em ordem decrescente de valor, sendo que o maior valor representa a melhor opção para o modelo de decisão. Conforme é exibido na figura 22, o sistema permite que o usuário faça buscas na tela
de resultado através da função Pesquisa. O usuário também pode paginar os resultados e mudar a forma de ordená-los.
Figura 22 Resultado de cada Alternativa
Fonte: Elaborado pelo autor. 6.2.5.4 Algoritmo da Lógica Difusa
O algoritmo usado para o processamento que utiliza a lógica difusa foi criado por Wojtek Jarzecki, desenvolvido em 2011 sob os termos da licença BSD, livre sem fins comerciais. O autor desenvolveu uma classe de programação10 em linguagem PHP para implementar o seu algoritmo. O algoritmo está disponível no endereço http://www.phpclasses.org/package/6898-PHP-Simulate-controllers-that-work-by-fuzzy- logic.html. Após baixar a classe, foi constatado que existiam erros de programação que impediam seu correto funcionamento. Sua estrutura estava bem montada com métodos separados para as principais funções da lógica difusa (Fuzificação, Processamento de Regras de inferência e Defuzificação). Os erros de programação foram corrigidos e outras mudanças também foram realizadas para adequar a classe às necessidades do MPD. O fato de a classe estar documentada contribuiu positivamente para seu uso e adequação; caso contrário certamente haveria dificuldades em sua alteração.
Esse algoritmo é totalmente aderente à arquitetura da lógica difusa apresentada anteriormente. O algoritmo utiliza o método de Mamdani como base em seu processamento para a fase de Inferência. As funções de pertinência podem ser trapezoides e triangulares e para a fase de Defuzificação é utilizado o método Centroide.
10 Classe de programação: Estrutura que abstrai um conjunto de objetos com características similares. Constitui