Pergunta

Eu estou trabalhando com um par de algoritmos de IA na escola e acho que as pessoas usam as palavras Lógica Fuzzy para explicar toda a situação que eles podem resolver com um par de casos. Quando eu voltar para os livros Acabei de ler sobre como, em vez de um estado indo de Ligado para Desligado é uma linha diagonal e algo pode estar em ambos os estados, mas em diferentes "níveis".

Eu li a entrada wikipedia e um par de tutoriais e até mesmo o material programado que "utiliza lógica fuzzy" (um detector de borda e um robô auto-controlado 1-wheel) e ainda acho que é muito confuso indo da Teoria à código ... para você, na definição menos complicado, o que é lógica fuzzy?

Foi útil?

Solução

A lógica fuzzy é a lógica onde a adesão do Estado é, essencialmente, uma bóia com uma gama 0..1 em vez de um int 0 ou 1. A quilometragem que você ganha com isso é que coisas como, por exemplo, as alterações feitas no um sistema de controle são um pouco naturalmente mais afinado do que o que você deseja obter com a lógica binária ingênuo.

Um exemplo pode ser a lógica que manetes apoiar a actividade do sistema baseado em conexões TCP ativas. Digamos que você definir "um pouco demais" conexões TCP em sua máquina até 1000 e "muito também muitos" como 2000. Em um determinado momento, o sistema tem um estado "muitas conexões TCP" de 0 (<= 1000) a 1 (> = 2000), que você pode usar como um coeficiente em aplicar o que quer estrangular mecanismos que você tem disponível. Isso é muito mais flexível e de resposta para o comportamento do sistema de lógica binária ingênuo que só sabe determinar "muitos", e estrangular completamente, ou "não muitos", e não do acelerador em tudo.

Outras dicas

Eu gostaria de acrescentar às respostas (que foram modded up) que, uma boa maneira de visualizar a lógica fuzzy é seguinte:

Tradicionalmente, com lógica binária você teria um gráfico cuja função adesão é verdadeiro ou falso enquanto que em um sistema de lógica fuzzy, a função de membro não é.

1|
 |   /\
 |  /  \
 | /    \
0|/      \
 ------------
   a  b c   d

Suponha por um segundo que a função é "gosta de amendoim"

a. kinda likes peanuts
b. really likes peanuts
c. kinda likes peanuts
d. doesn't like peanuts

A função em si não tem que ser triangular e muitas vezes não é (é apenas mais fácil com a arte ascii).

A difusa sistema provavelmente terá muitos deles, alguns até mesmo sobrepostos (até mesmo opostos) assim:

1|   A    B
 |   /\  /\      A = Likes Peanuts
 |  /  \/  \     B = Doesn't Like Peanuts
 | /   /\   \
0|/   /  \   \
 ------------
  a  b  c d

então agora c é "uma espécie gosta de amendoim, meio que não gosta de amendoim" e d é "realmente não gosta de amendoim"

E você pode programar em conformidade com base nessa informação.

Espero que isso ajude para os aprendizes visuais lá fora.

A melhor definição da lógica fuzzy é dada por seu inventor Lotfi Zadeh :

“meio da lógica fuzzy de representar problemas para os computadores de uma forma semelhante à forma humana resolvê-los e a essência da lógica fuzzy é que tudo é uma questão de grau.”

O significado de resolver problemas com computadores semelhante à maneira humana resolver pode ser facilmente explicado com um exemplo simples de um jogo de basquete; Se um jogador quiser guardar outro jogador em primeiro lugar, ele deve considerar como ele é alto e como suas habilidades de jogo são. Simplesmente se o jogador que quer guarda é alto e desempenha parente muito lento para ele, então ele vai usar seu instinto para determinar a considerar se ele deve guardar esse jogador como há uma incerteza para ele. Neste exemplo, o ponto importante é as propriedades são em relação ao jogador e há um grau para a altura e habilidade de jogo para o jogador rival. lógica fuzzy fornece uma maneira determinista para esta situação incerta.

Existem alguns passos para o processo de lógica fuzzy (Figura-1). Estes passos são; Em primeiro lugar fuzzificação onde as entradas nítidas são convertidos em inputs difusos em segundo lugar essas entradas se processados ??com regras nebulosas para criar uma saída confusa e, por último defuzzificação que resultados com grau de resultado como na lógica fuzzy pode haver mais do que um resultado com diferentes graus.

image004

Figura 1 - Etapas do processo distorcido (David M. Bourg p.192)

Para exemplificar as etapas do processo difusos, a situação jogo de basquete anterior poderia ser usado. Como mencionado no exemplo o jogador rival é de altura com 1,87 metros, que é muito alto em relação ao nosso jogador e pode driblam com 3 m / s, que é lento em relação ao nosso jogador. Além destes dados algumas regras são necessárias para considerar que são chamados de regras nebulosas, tais como;

if player is short but not fast then guard,
if player is fast but not short then don’t guard
If player is tall then don’t guard
If player is average tall and average fast guard

image005

Figura 2 - quão alto

image007

Figura 3 quão rápido

De acordo com as regras e os dados de entrada uma saída serão criados pelo sistema fuzzy, tais como; o grau de guarda é de 0,7, o grau de vezes de guarda é de 0,4 e nunca guarda é 0,2.

image009

Figura 4-saída conjuntos fuzzy

Na última etapa, defuzzication , está usando para criar uma saída nítido que é um número que pode determinar a energia que devemos usar para proteger o jogador durante o jogo. O centro de massa é um método comum para criar a saída. Nesta fase, os pesos para calcular o ponto médio é totalmente depende da aplicação. Nesta aplicação é considerada a dar grande peso para guardar ou não guardar, mas de baixo peso dado às vezes guarda. (David M. Bourg, 2004)

image012

Figura 5- saída distorcido (David M. Bourg p.204)

  Output = [0.7 * (-10) + 0.4 * 1 + 0.2 * 10] / (0.7 + 0.4 + 0.2) ≈ -3.5

Como uma lógica fuzzy resultado está usando sob incerteza para tomar uma decisão e para descobrir o grau de decisão. O problema da lógica fuzzy é como o número de entradas de aumentar o número de regras de aumento exponencial.

Para mais informações e sua possível aplicação em um jogo eu escrevi um pequeno artigo verificar isso

Para construir fora de resposta caos, a lógica formal não é senão um conjunto indutivamente definido que mapeia frases para uma avaliação. Pelo menos, é assim que um modelo teórico pensa da lógica. No caso de uma lógica booleana sentencial:

 (basis clause) For all A, v(A) in {0,1}
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a boolean sentential logic are evaluated per above.

A muda de lógica difusa seria indutivamente definido:

 (basis clause) For all A, v(A) between [0,1]
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a fuzzy sentential logic are evaluated per above.

Observe que a única diferença na lógica subjacente é a permissão para avaliar uma frase como tendo o "valor de verdade" de 0,5. Uma questão importante para um modelo de lógica fuzzy é o limiar que conta para a satisfação verdade. Esta é perguntar:. Para uma avaliação v (A), pelo que o valor D é o caso do v (A)> meios D que A é satisfeito

Se você realmente quer descobrir mais sobre lógicas não clássicas como a lógica fuzzy, eu recomendaria ou uma Introdução à Lógica não-Clássica: From Se a Is ou Possibilidades e Paradox

Colocando o meu chapéu codificador de volta, eu teria cuidado com o uso da lógica fuzzy na programação mundo real, por causa da tendência para uma lógica fuzzy para ser indecidível. Talvez seja muita complexidade para pouco ganho. Por exemplo uma lógica supervaluational pode fazer muito bem para ajudar a um modelo de programa de imprecisão. Ou talvez probabilidade seria bom o suficiente. Em suma, eu preciso estar convencido de que os encaixes modelo de domínio com uma lógica fuzzy.

Talvez um exemplo apura-se que os benefícios podem ser:

Vamos dizer que você quer fazer um termostato e você quer que ele seja de 24 graus.


Esta é a forma como você implementá-lo usando a lógica booleana:

  • Regra1: aquecer na potência máxima quando que é mais frio do que 21 graus.
  • Regra2: esfriar na potência máxima quando é mais quente do que 27 graus.

Tal sistema só de vez em quando ser de 24 graus, e vai ser muito ineficiente.


Agora, usando a lógica fuzzy, como seria algo como isto:

  • Regra1:. Para cada grau que é mais frio do que 24 graus, aumente o entalhe aquecedor um (0 a 24)
  • Regra2:. Para cada grau que é mais quente do que 24 graus, aumente o nível mais frio (0 a 24)

Este sistema será sempre algo em torno de 24 graus, e apenas uma vez e só vai de vez em quando fazer um pequeno ajuste. Também será mais eficiente em termos de energia.

Bem, você pode ler as obras de Bart Kosko , um dos 'pais fundadores '. ' Pensamento Fuzzy: The New Science of Fuzzy Logic' a partir de 1994 é legível ( e disponíveis muito mais barato de segunda mão através de Amazon). Aparentemente, ele tem um livro mais recente ' Noise ' de 2006, que também é bastante acessível.

Basicamente embora (na minha paráfrase - não tendo lido por vários anos o primeiro desses livros agora), a lógica fuzzy é sobre como lidar com o mundo em que algo é talvez 10% fresco, 50% quente, e 10% quente , onde diferentes decisões podem ser feitas sobre o grau em que os diferentes estados são verdadeiros (e não, não era inteiramente um acidente que esses percentuais não somam 100% - apesar de eu aceitar a correção, se necessário).

Uma explicação muito boa, com uma ajuda de distorcido Machines Logic lavagem .

Eu sei o que dizer sobre ele ser difícil ir do conceito à código. Eu estou escrevendo um sistema de pontuação que olha para os valores de sysinfo e / proc em sistemas Linux e vem com um número entre 0 e 10, sendo 10 a pior absoluta. Um exemplo simples:

Você tem 3 médias de carga (1, 5, 15 minutos), com (pelo menos) três estados possíveis, bom, ficando ruim, ruim. Em expansão que, você poderia ter seis estados possíveis por média, adicionando 'sobre a' para os três que eu apenas observou. No entanto, o resultado de todas as 18 possibilidades só podem deduzir 1 da pontuação. Repita isso com permuta consumida, real VM memória alocada (comprometido) e outras coisas .. e você tem uma grande tigela de espaguete condicionais:)

Seu como definição um tanto quanto é uma arte, como você implementar o processo de tomada de decisão é sempre mais interessante do que o próprio paradigma .. enquanto que em um mundo boolean, a sua vez cortada e seca.

Seria muito fácil para mim dizer se CARREG1 <2 deduzir 1, mas não muito preciso em tudo.

Se você pode ensinar um programa para fazer o que você faria quando se avalia um conjunto de circunstâncias e manter a leitura de código, você implementou um bom exemplo da lógica fuzzy.

Fuzzy Logic é uma metodologia de resolução de problemas que se presta a implementação em sistemas que vão desde simples e pequenos, embutidos micro-controladores a grande, em rede, PC multi-canal ou sistemas de aquisição de dados e controle baseados em estação de trabalho. Ele pode ser implementado em hardware, software, ou uma combinação de ambos. Fuzzy Logic fornece uma maneira simples de chegar a uma conclusão definitiva com base em vagas, ambíguas, imprecisas, barulhento, ou faltando informações de entrada. abordagem Fuzzy Logic para os problemas de controle imita como uma pessoa iria tomar decisões, só que muito mais rápido.

A lógica fuzzy provou ser particularmente útil em sistemas especialistas e outras aplicações de inteligência artificial. Ele também é usado em alguns corretores ortográficos para sugerir uma lista de palavras prováveis ??para substituir um mal escrito.

Para saber mais, basta verificar: http://en.wikipedia.org/wiki/Fuzzy_logic .

O seguinte é uma espécie de resposta empírica.

Um simples (resposta possivelmente simplista) é que "lógica fuzzy" é qualquer lógica que retorna valores que não seja verdadeiro / falso em linha reta, ou 1 / 0. Há uma série de variações sobre isso e eles tendem a ser altamente específica de domínio .

Por exemplo, na minha vida anterior eu fiz motores que utilizavam "a busca de similaridade de conteúdo" em oposição a "pesquisa booleana" então comum procurar. O nosso sistema de co-seno similaridade utilizado o Coeficiente de vectores de atributos de ponderação representa a consulta e os documentos e os valores produzidos na gama 0..1. Usuários iria fornecer "feedback de relevância", que foi usado para deslocar o vetor de consulta no sentido de documentos desejáveis. Isso é algo relacionado ao treinamento feito em certos sistemas de inteligência artificial onde a lógica fica "recompensados" ou "punidos" para os resultados de pistas de julgamento.

Agora Netflix está executando um concurso para encontrar um algoritmo de sugestão melhor para sua empresa. Consulte http://www.netflixprize.com/ . Eficazmente todos os algoritmos poderia ser caracterizado como "lógica fuzzy"

A lógica fuzzy está calculando algoritmo baseado no ser humano como forma de pensar. É particularmente útil quando existe um grande número de variáveis ??de entrada. Uma calculadora de lógica fuzzy on-line para entrada de duas variáveis ??é dada:

http://www.cirvirlab.com/simulation/fuzzy_logic_calculator.php

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top