Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS SOBRAL CURSO DE ENGENHARIA ELÉTRICA Disciplina: Introdução à Engenharia Elétrica Algoritmos de Inteligência Coletiva EQUIPE: Carlos Henrique Sousa Alencar Carlos Vinicius Fiuza Olivindo João Lucas Gomes Carneiro Laiana Severiano Pereira Natanael de Sousa Neves Nilciany Oliveira de Souza SOBRAL 2019 LISTA DE FIGURAS Figura 1:Diagrama de início e fim ........................................................................................ 11 Figura 2:Formigas a procura de alimento ............................................................................. 12 Figura 3: Transformando o problema do caixeiro viajante em colônia de formigas ............... 13 Figura 4: Fluxograma do algoritmo PSO .............................................................................. 27 Figura 5:Resultados dos valores obtidos pelos dois algoritmos ............................................. 28 Figura 6:Comportamento inicial das partículas no PSO ........................................................ 28 LISTA DE GRÁFICOS Gráfico 1 – Resultados da função objetiva ............................................................................ 21 Gráfico 2 – Resultados para a velocidade de inserção ........................................................... 22 LISTA DE SÍMBOLOS T- Interação em questão; Pxy- probabilidade da formiga ‘k’ saí de um ponto x e ir ao ponto y; α - parâmetro de influência do feromônio; β - parâmetro de influência da distância; Txy- valor do feromônio presente na rota x-y; ηxy- valor do inverso da distância nos pontos x-y = 1/d; Σ [Txy . ηxy] - representa somatório entre todos os produtos do feromônio e inverso da distância percorrida pela formiga ‘k’ de um ponto x e termina em todos os pontos y. ΔTkxy - feromônio depositado na rota x-y; Q - Constante fornecida; dk - distância total percorrida. Tkxy - representa o feromônio depositado entre os pontos x e y; σ = taxa de evaporação do feromônio Tkxy (t-1) - feromônio total da interação anterior entre os pontos x e y; Σ ΔTkxy- somatório do feromônio de todas as formigas que passaram pelos pontos x e y. 𝑤 – Parâmetro de inércia que controla a influência do melhor bando e do melhor individual; 𝑐1 – Ponderação Global (normalmente utiliza-se o valor 2); 𝑐2 – Ponderação Individual (normalmente utiliza-se o valor 2); 𝑃 – Melhor posição dentre as iterações; 𝑟1 e 𝑟2 – números aleatórios entre [0, 1]. RESUMO A inteligência coletiva nada mais é do que a união de diversas informações providas de diferentes fontes, podendo ser elas humanas ou não, como por exemplo, a análise das colônias de formigas e revoada de pássaros. Desta forma, diversas maneiras de melhorar essa inteligência foram surgindo ao longo dos anos, técnicas como a meta-heurística que utiliza de probabilidades e sucessivas tentativas e erros para solucionar um problema, com isso a ideia dos algoritmos de inteligência coletiva tem sido constante desenvolvidas nestes últimos anos, contribuindo assim para a democratização do conhecimento em sua síntese. Palavras-Chave: Algoritmo, Inteligência coletiva, Abelhas, Formigas, Pássaros. ABSTRACT Collective intelligence is nothing more than the Union of various information provided by different sources, which may be human or not, such as the analysis of ant colonies and the bird's flock. Thus, several ways to improve this intelligence have been emerging over the years, techniques such as meta-heuristic that uses probabilities and successive attempts and errors to solve a problem, with this the idea of the algorithms of Collective intelligence has been constantly developed in recent years, thus contributing to the democratization of knowledge in its synthesis. Key words: Algorithm, Collective intelligence, Bees, Ants, Birds. SUMÁRIO 1 INTRODUÇÃO ...................................................................................................... 5 2 ABORDAGEM SOBRE INTELIGÊNCIA ARTIFICIAL .................................... 6 3 DEFINIÇÃO DE INTELIGÊNCIA COLETIVA .................................................. 9 3.1 Evolução ao longo dos anos .................................................................................. 10 4 OTIMIZAÇÃO POR COLÔNIA DE FORMIGAS ............................................ 11 4.1 Colônia De Formigas Aplicado Ao Problema Do Caixeiro Viajante: ................. 12 4.2 Atualizações Do Algoritmo Para Aplicação Em Sistemas Cdma:....................... 14 5 COLOLÔNIA DE ABELHAS ARTIFICIAIS (ARTIFICIAL BEE COLONY). 17 5.1 O que é o Algoritmo? ............................................................................................ 17 5.1.1 Como Funciona o Código. ...................................................................................... 18 5.2 Uma Aplicação do ABC na Engenharia Elétrica ................................................. 22 6 SHUFFLED FROG-LEAPING ........................................................................... 24 6.1 Funcionamento da ideia ....................................................................................... 24 6.2 Procedimento de SLF ........................................................................................... 24 6.3 Aplicação do algoritmo SLF ................................................................................ 25 6.3.1 Transportes de produtos em redes dutoviarias ........................................................ 25 7 PARTICLE SWARM OPTIMIZATION – PSO .................................................. 26 8 CONCLUSÃO ...................................................................................................... 29 REFERÊNCIAS ................................................................................................................. 30 5 1 INTRODUÇÃO No decorrer destes últimos séculos com a revolução digital e o constante crescimento da democratização do conhecimento, outro fenômeno também tem ocorrido em paralelo e este é o surgimento e aprimorando das chamadas inteligências coletivas ou inteligências multifacetárias, que nada mais são que a união de informações através de diversos canais, podendo eles serem pessoas ou não. Porém além deste surgimento, ocorreu simultaneamente, o surgimento dos algoritmos de pesquisa e buscas que tem como objetivo facilitar e simplificar a vida do indivíduo no ciberespaço e com isso diferentes métodos vem sempre empregados para estabelecer esse equilíbrio, entre a constante busca por novas informações e as limitações dos algoritmos de busca e pesquisa que tendem a mantes um padrão social para que o usuário mantenha-se constantemente conectado. No passar dos tempos, antes mesmo do surgimento das redes de comunicação, existia uma certa inclinação humana e até mesmo animal, a entender como funciona o universo ao seu redor e reunir todo o conhecimento possível durantes as etapas da vida para sobrevivências e manutenção da espécie. Os humanos como racionais foram os que conseguiram desenvolver ainda mais essa linha de pensamento e por isso conseguiram certo sucesso até determinado ponto, em que foram limitados pela degradação e perca de muitas obras através da história, porém a solução para este problema foi apresentada recentemente no século 19, em que começaram a surgir outras maneiras mais eficazes de armazenar o conhecimento através dos computadores e outros dispositivos. No decorrer deste, será observado como se comportam essas novasdescobertas tanto nos âmbitos das ciências como no da sociologia e filosofia, que foi quem deu início ao estudo dos comportamentos humanos ligado diretamente a fácil obtenção de informação durante a revolução digital. Assim como, como os atuais algoritmos se comportam e quais suas funções e seus princípios e quais as expectativas para seu uso no futuro, já que suas aplicações são praticamente infinitas e seu avanço é constante com significativas mudanças em pouco tempo, como por exemplo: sites para avaliações de produtos e até mesmo pesquisas cientificas. 6 2 ABORDAGEM SOBRE INTELIGÊNCIA ARTIFICIAL É notório que, há muitos anos, o ser humano alimenta o desejo de criação de máquinas que possam realizar o trabalho de agir e pensar como eles. Com isso, se fez necessário o surgimento da tecnologia e o seu aprimoramento para suprir tal desejo. Sendo assim, durante a segunda guerra mundial, deu-se início a muitos estudos em diversas áreas voltadas para o desenvolvimento da Inteligência Artificial (IA), que consiste em um sistema que cria máquinas inteligentes, capazes de se relacionar entre si. Entretanto observa-se que as ideias que se ligam à inteligência artificial, têm sua origem muito anterior ao surgimento da tecnologia que detém a capacidade mecânica de colocar em prática tais ideias. Somente em 1943, os pesquisadores Warren Mcculloch e Walter Pitts apresentaram o primeiro artigo a citar as redes neurais. Essas redes consistem em estruturas de raciocínio artificial em forma de modelos matemáticos que possuem a capacidade de imitar o sistema nervoso dos seres humanos. Após esse fato, alguns mecanismos foram desenvolvidos. De modo que, em 1950, Claude Shannon apresentou um artigo sobre como programar uma máquina que era capaz de jogar xadrez, através da utilização de cálculos de posição que sejam simples, porém eficientes. Ainda na década de 50, Alan Turing desenvolveu uma maneira de avaliar a capacidade que uma máquina possui de se passar por um humano através de uma conversa escrita que será lida por avaliadores, essa técnica recebeu o nome de Teste de Turing ou Teste da Imitação. Ademais, vale destacar que em 1951, Marvin Minsky, que foi aluno de Warren Mcculloch e Walter Pitts, desenvolveu a Snark, uma calculadora de operações matemáticas simulando as sinapses, que consistem nas ligações entre os neurônios. Já em 1952, Arthur Samuel, foi o inventor de um jogo de damas no IBM701, que possui a capacidade de se melhorar automaticamente e com isso, acaba se tornando um desafio a altura de jogadores amadores. Entretanto, o marco inicial da inteligência artificial só veio em 1956, durante a Conferência de Darthmouth, na qual se reuniram Nathan Rochester, Claude Shannon, Marvin Minsky, John McCarthy, entre outros. Nesta conferência o campo de pesquisa foi batizado de Inteligência Artificial por McCarthy e até a máxima do setor foi definida na ocasião. Tanto os participantes da conferência, quanto os simpatizantes das ideias, se uniram a fim de pôr em pratica as ideias da Inteligência Artificial. As perspectivas eram tão animadoras que a IA 7 contou com investimentos pesados de órgãos privados e governamentais na área. Dentre os avanços desse período, destacam-se o Perceptron, criado em 1957, que consiste em uma rede neural de uma camada, capaz de classificar resultados e que foi iniciada com uma máquina denominada Mark 1. Além disso, em 1958, houve o surgimento da linguagem de programação LISP, que na época virou padrão entre os sistemas de inteligência artificial. Atualmente essa serve de inspiração para uma família inteira de linguagens. Em 1959, o termo Machine Learning é utilizado pela primeira vez para descrever um sistema que concede aos computadores a capacidade de aprender alguma função sem que haja a necessidade de ser previamente programados para tal, ou seja, consiste na alimentação de um algoritmo com dados, a fim de que a máquina aprenda a executar determinada atividade de maneira automática. Posteriormente, em 1964, surgiu o primeiro chatbot, chamado Eliza, que era capaz de conversar de maneira automática, representando uma psicanalista, utilizando respostas que tinham como base palavras-chave e estrutura sintática. Já em 1969, desenvolveram o primeiro robô que unia mobilidade, fala e certa autonomia de ação, apesar de funcionar, apresentava certas falhas e era lento. O campo de processamento natural de linguagem se tratava de um dos mais promissores da época, por se tratar do setor da IA sobre a compreensão da fala humana e por possuir várias aplicações, como tradutores, geração de linguagem de texto, reconhecimento de fala, processamento de voz, entre outros. Entretanto, apesar da alta expectativa e do grande número de pesquisas acadêmicas na área, na prática era bem diferente, visto que os projetos não eram tão concretos e nem tão rápidos quanto se era esperado. Essa situação gerou o chamado Inverno da Inteligência Artificial, que ocorreu entre o final da década de 70 até meados da década de 80. E se tratava de um período de estagnação, no qual havia poucas novidades, corte de investimentos e baixa atenção ao setor. Para que a IA se reerguesse era necessária uma reinvenção da área. Com isso, um dos campos fundamentais para tal, foi o de sistemas especialistas, proposto por Edward Feigenbaum, no início da década de 80. Esses sistemas consistiam em softwares capazes de realizar atividades complexas e específicas de um campo, realizando o papel de humanos, porém com um raciocínio bem mais veloz e com uma base de conhecimento bem mais vasta. Esses sistemas aproximaram a IA do mercado corporativo, dando a ela visibilidade pelos outros setores e mostrando a utilidade de programas computacionais inteligentes e focados. O descontrole dos investimentos e a adoção de uma nova linguagem de programação, que não possuía muita adesão (PROLOG), por apresentar ideias maiores que a 8 capacidade das CPU's da época, acabaram ocasionando um segundo pequeno inverno da Inteligência artificial. Esse ocorreu entre a metade dos anos 90, mas foi superado rapidamente, tendo em vista a explosão da internet. Além disso, as redes aproveitaram a IA para o desenvolvimento de sistemas de navegação e também de indexação, gerando programas capazes de explorar a rede de maneira automática e posteriormente classificar os resultados. No ano de 1997, pela primeira vez uma máquina superou um humano em um jogo de xadrez, isso se deu, pois, essa máquina adotava um método de cálculo por meio de vias de força bruta que analisava as diversas possibilidades de movimentos e as possíveis respostas e indicava aquele movimento que considerava ser o melhor. Desde o início do século 20 até os dias atuais, muitas máquinas já foram desenvolvidas com o intuito de auxiliar a vida das pessoas, como por exemplo, a Roomba, que consiste em uma máquina capaz de realizar a limpeza de locais de maneira autônoma, combinando eficiência em uma especialização, pré-configurações e sensores de posicionamento. Ademais se observam inúmeras conquistas obtidas na área da inteligência artificial, como o chatboard Eugene Goostman que, em 2014, foi capaz de convencer os jurados de que era um humano, isso se deu por meio da vitória do Teste de Turing, durante um diálogo por escrito. Entretanto, mesmo com todos os avanços tecnológicos da Inteligência artificial, viu-se que, pra suprir as necessidades dos humanos em ter uma vida mais fácil através do auxílio de máquinas, seria necessário o desenvolvimento de novos mecanismos. Sendo assim, foram criados os algoritmos de inteligência coletiva, que surgiram com o objetivo de melhorar e aprimorar os avanços tecnológicos da Inteligência artificial. 9 3 DEFINIÇÃO DE INTELIGÊNCIA COLETIVA O conceito de inteligência coletiva é tão recente quanto o adventodas redes de comunicação em tempo real e por esta razão, seu estudo ainda precisa ser explorado tendo em vista que a humanidade está em constante evolução e significativa mudança, logo faz-se necessário repensar diariamente conceitos preestabelecidos ainda mais conceitos tão recentes como este. Um dos mais conhecidos pesquisadores e estudiosos do campo da inteligência coletiva foi Pierre Lévy, um filósofo e sociólogo, professor universitário e pesquisador no campo da ciência da informação que passou a observar como as novas tecnologias impactavam diretamente o cotidiano das sociedades modernas que estavam passando por uma fase de adaptação as novas possibilidades e mesmo neste curto período já demonstravam significativas mudanças comportamentais e isso gerou uma série de indagações nos sociólogos da época que por vezes não conseguiam notar o futuro incerto que essas inovações pairavam trazer. Para compreender melhor o pensamento de Levy acerca do avanço tecnológico no fim do século XX é preciso compreender que existia certa dualidade em seu pensamento, pois no mesmo passo em que considerava de suma importância a constante evolução em todos as áreas do interesse humano, também acreditava que era necessária certa ética nessa evolução ou os humanos voltariam a ser nômades assim como na pré-história, porém desta vez, nômades de conhecimento pois este, iria mudar constantemente até chegar a um ponto em que estaria em todos e em nenhum lugar ao mesmo tempo e por esta razão este é um dos primeiros capítulos de seu livro: A Inteligência coletiva: por uma antropologia do ciberespaço (1994) e teve como temática, “Os justos. Ética da inteligência coletiva”. Neste momento, ele usa de diversos artifícios para fazer com que o leitor entenda que os mecanismos para adquirir conhecimento estão e sempre estiveram em mudança, mas ressalta o quão importante é uma postura ética daqueles que irão compor, ou ao menos uma minoria destes, as redes de comunicação, pois esta será a ferramenta que guiará a humanidade a etapa da comunicação jamais antes vista, pois a transmissão de informações passava por um longo processo até chegar aos destinatários e assim torna-se de conhecimento geral, ou de conhecimento de um público significativo. Estes foram os princípios que levaram a construção do que hoje conhecemos como inteligência coletiva e compreende-los é de fundamental importância para entender como funciona atualmente e porque Levy é tão importante para este campo de 10 pesquisa e porque a leitura de seu livro é indispensável para todos aquele que querem entender o funcionamento e o surgimento do que temos hoje. “O problema da inteligência coletiva é descobrir ou inventar um além da escrita, um além da linguagem tal que o tratamento da informação seja distribuído e coordenado por toda parte, que não seja mais o apanágio de órgãos sociais separados, mas se integre naturalmente, pelo contrário, a todas as atividades humanas, volte às mãos de cada um.” (A Inteligência coletiva: por uma antropologia do ciberespaço (1994) p. 17) 3.1 Evolução ao longo dos anos Nas últimas décadas surgiram diferentes modelos de inteligência coletiva, com diferentes propósitos e funcionalidades, reunir informação é o ponto em comum em todos estes, porém a maneira como eles chegam a este ponto, que tipo de informação é coletada e a utilização desta são os aspectos que diferem os tipos de inteligência coletiva. O trabalho dos algoritmos é categorizar que conteúdo é útil para determinado proposito e por isso tem sido expansivamente utilizado atualmente. Desde que as sociedades se formaram a intenção de mantar um conhecimento preservado foi sempre uma meta, tanto que nas sociedades egípcias e mesopotâmicas foram desenvolvidas diferentes maneiras de registrar todas as experiências vividas e assim surgiu o primeiro conceito de escrita. No mundo moderno, no entanto, começou-se a categorizar esses registros em tópicos para que fosse possível acessa-los dependendo da necessidade de pesquisa ou intenção da busca, até que chega-se ao ponto em que algo precisa surgir para modificar o estado vigente novamente e foi isso que aconteceu com a revolução digital que trouxe um novo modelo social que está presente até os dias atuais com algoritmos controlando e mantendo todo tipo de informação em diversificadas categorias, otimizando assim todo o processo de obtenção de conhecimento e contribuindo para a chamada democratização do conhecimento e assim como Marx e Engels defendiam a respeito do materialismo dialético e constante transformação na obtenção de conhecimento: “Concebe todo o mundo da natureza, da história e do espírito como um processo, isto é, em constante movimento, mudança, transformação e desenvolvimento, intentando, além disso, pôr em relevo a conexão interna deste movimento de desenvolvimento” (apud Triviños, 1987:53) 11 4 OTIMIZAÇÃO POR COLÔNIA DE FORMIGAS Marco Dorigo, pesquisador italiano no ramo da inteligência artificial, ao observar o comportamento das formigas que sempre encontram o menor caminho da fonte de alimento até sua colônia, percebeu que poderia elaborar matematicamente este comportamento na busca de solucionar problemas rotineiros, como o problema do caixeiro viajante semelhante ao do roteamento de uma rede. A ideia surgiu quando Dorigo percebeu que durante o caminho entre a colônia e o alimento, as formigas produziam um feromônio, substância volátil que permite a comunicação entre as formigas e que era depositada ao longo do caminho em maiores quantidades quando se encontrava uma fonte potencial da alimento, mas que, evaporava em determinada taxa ao longo do tempo. Utilizando um problema de roteamento, enfatizado a partir de um gráfico em forma de grafos, percebe-se que existem diversos caminhos do início ao fim, compostos por nós que são representados pelos círculos e arestas que são as retas de comprimento variável que os ligam, ou seja, cada rota possível é um conjunto de nós e arestas que somam distâncias distintas, mas apenas uma apresenta menor distância entre os pontos escolhidos, chamada de rota ótima. Em diversas situações devido a quantidade de cálculos associadas ao custo de processamento e financeiro torna-se impossível encontrar a rota ótima, mas existem métodos para encontrar rotas viáveis, são chamados assim de métodos heurísticos, sendo o algoritmo de colonização de formigas um deles Figura 1:Diagrama de início e fim Fonte: Autoria própria Para entender de forma simplificada o comportamento das formigas, imagina-se em que uma extremidade exista um formigueiro(inicio) e na outra uma fonte qualquer de alimento(fim), entre os dois pontos existem três caminhos com distâncias diferentes que podem ser percorridos pelas formigas, sendo considerado a rota mais rápida a B, daí suponha- 12 se que três formigas saiam ao mesmo tempo do formigueiro em cada uma das rotas com velocidade iguais, percebe-se que a formiga dois que percorreu o caminho B é a primeira a encontrar os alimentos e voltar ao formigueiro, liberando feromônio e influenciando na escolha de outras formigas que saírem do ninho. Figura 2:Formigas a procura de alimento Fonte: Autoria própria A partir do momento em que as formigas saem do ninho, encontram alimento e retornam soltando feromônio as próximas não saíram de maneira aleatória e desordenada, pois existe influência do feromônio liberado. Naturalmente, à medida que o tempo passa, a rota mais curta(B) vai se fortalecendo em relação as demais, isso ocorre porque a concentração de feromônio aumenta de maneira gradativa até o ponto em que todas as formigas estarão fazendo este caminho. 4.1 Colônia De Formigas Aplicado Ao Problema Do Caixeiro Viajante: Antigamente os vendedores ambulantes ou caixeiros viajantescomo eram conhecidos se deslocavam entre diversas cidades e vilarejos, no entanto os meios de transporte eram muito restritos, e eles deveriam encontrar rotas inteligentes devido a dificuldade que enfrentavam, o problema ficou estruturado como: Qual a melhor rota a fazer saindo de uma cidade inicial passando por todas as demais cidades e retornar à cidade de origem. Apesar do problema ter origem antiga ele se aplica perfeitamente nos dias de hoje, como exemplo podemos imaginar uma transportadora que deve efetuar entregar no centro de uma grande cidade. Combinações de ruas pelas quais ela passa forma uma grande quantidade de rotas possíveis, para uma pequena quantidade de pontos de entrega, problemas desse tipo podem ser resolvidos com métodos exatos, porém a partir de uma certa quantidade de pontos 13 isso se torna inviável devido a infinidade de cálculos e o elevado tempo de processamento sendo impossível encontrar o caminho ótimo. Embora não se possa encontrar uma solução ótima, pode se encontrar um conjunto de soluções viáveis em tempo de processamento razoável utilizando métodos heurísticos, como no caso a otimização de colônia de formigas para o problema do caixeiro viajante. Utilizando um exemplo de 5 cidades, sendo que o caixeiro será análogo as formigas e as cidades as fontes, cada ponto possui uma formiga que sai em busca de alimento passando apenas uma vez por cada um dos pontos e retornando ao ponto inicial. Figura 3: Transformando o problema do caixeiro viajante em colônia de formigas Fonte: Autoria própria Os pontos A, B, C, D e E contém as formigas F1, F2, F3, F4 e F5 respectivamente a probabilidade de uma formiga escolher um caminho e determinado por dois fatores: a distância d entre os pontos e a quantidade de feromônio presente, quanto maior for a distância entre o ponto de partida e o próximo ponto de destino menor será a probabilidade da formiga escolher este caminho, visto que ela sempre busca o caminho mais curto o que representa uma relação inversa entre as duas grandezas. Em relação ao feromônio, quanto maior a quantidade presente em uma rota, maior a probabilidade da formiga escolher este caminho representando uma relação direta, isso pode ser representado através da seguinte formula: 𝑃𝑥𝑦(𝑘) = [𝑇𝑥𝑦(𝑡)] 𝛼∙[𝜂𝑥𝑦(𝑡)] 𝛽 ∑[𝑇𝑥𝑦(𝑡)] 𝛼∙[𝜂𝑥𝑦(𝑡)] 𝛽 (1) • T= Interação em questão; • Pxy= probabilidade da formiga ‘k’ saí de um ponto x e ir ao ponto y; 14 • α = parâmetro de influência do feromônio; • β = parâmetro de influência da distância; • Txy= valor do feromônio presente na rota x-y; • ηxy= valor do inverso da distância nos pontos x-y = 1/d; • Σ [Txy . ηxy] = representa somatório entre todos os produtos do feromônio e inverso da distância percorrida pela formiga ‘k’ de um ponto x e termina em todos os pontos y. Agora para calcular o feromônio presente em cada rota utiliza-se a seguinte equação: △ 𝑇𝑥𝑦 𝑘 = 𝑄 𝑑𝑘 (2) • ΔTkxy = feromônio depositado na rota x-y; • Q = constante fornecida; • dk = distância total percorrida. Após cada interação é necessária também a atualização do feromônio que é feito através de outra equação: 𝑇𝑥𝑦 𝑘 (𝑡) = (1 − 𝜎). 𝑇𝑥𝑦 𝑘 (𝑡 − 1) + ∑ △ 𝑇𝑥𝑦 𝑘 (3) • Tkxy = representa o feromônio depositado entre os pontos x e y; • σ = taxa de evaporação do feromônio • Tkxy (t-1) = feromônio total da interação anterior entre os pontos x e y; • Σ ΔTkxy= somatório do feromônio de todas as formigas que passaram pelos pontos x e y. Os coeficientes e paramentos que necessitam de dados para inicio dos cálculos são alterados por via de regra de estudo estatístico do problema tratado. Lembrando, já que este sendo um método heurístico, ou seja, o algoritmo será rodado com as formulas e cada resultado será chamado de interação, a medida que mais interações sejam feitas mais próximo será um resultado viável. 4.2 Atualizações Do Algoritmo Para Aplicação Em Sistemas CDMA: Marques e Angélico (2014) falam que o algoritmo ACO inicialmente foi usado para resolver problemas de otimização combinatória (caixeiro viajante, roteamento, etc.) só que mais a frente, os parâmetros foram otimizados para produzir resultados mais promissores e a 15 partir de geradores de números aleatórios com distribuição normal, o método ACO pode ser aplicado em sistemas CDMA (acesso múltiplo por divisão de código). Dado que as formigas procuram escolher pontos para o seu caminho de forma probabilística, levando em consideração a quantidade de feromônio na aresta, juntamente com a informação descoberta na reta, certo de um conjunto de pontos vizinhos a uma formiga em um ponto i qualquer, o conjunto probabilidades relativos a este ponto forma uma função distribuição discreta de probabilidade chamada a partir de agora de PMF. A ideia do algoritmo é transformar esta PMF em uma função contínua, ou seja, uma função de densidade de probabilidade chamada de PDF – probabilty density funcion. Deste modo ao invés da formiga mostrar um ponto i, irá amostrar um valor para a variável x1(SOCHA; DORIGO, 2008). A função mais utilizada neste exemplo é a integral Gaussiana. O algoritmo utiliza um conjunto de gaussianas unidimensionais para cada dimensão do problema. Cada conjunto é definido por (SOCHA; DORIGO, 2008): 𝐺(𝑥) 𝑖 = ∑ 𝜔𝑙𝑔𝑙 𝑖(𝑥) 𝑘 𝑙=1 = ∑ 𝜔𝑙 1 𝜎𝑙 𝑖√2𝜋 ⅇ − (𝑥−𝜇𝑙 𝑖) 2 2𝜎𝑙 𝑖2 𝑘 𝑙=1 (4) Com i = 1,...,n, sendo n o número de dimensões do problema; ωi é o vetor de pesos, µi é o vetor de médias e σi o vetor de desvio padrão, k é o quantidade de Gaussianas a ser definida no conjunto, sendo que os vetores possuem cardinalidade igual ao conjunto de integrais Gaussianas do conjunto em questão ou seja |ω|=|µ|=|σ|=k. No ACO as informações referentes ao tabelamento de dados de feromônios são feito a partir de um arquivo solução que será preenchido com cada interação, dado que existem infinitos pontos em um intervalo contínuo e infinitos caminhos a serem seguidos, neste mesmo arquivo de solução os vetores ω, µ e σ terão seus dados carregados para resolução do problema para formar o conjunto de Gaussianas, então para cada dimensão do problema é definido um conjunto diferente de (Gi) e para cada um deles um novo valor de i-ésima variável se tornam os elementos do vetor µi. O peso ω do conjunto s de soluções é dado por (MARQUES; ANGÉLICO; ABRÃO, 2014, p.65): 𝜔𝑙 = 1 𝑞𝑘√2𝜋 exp[− ( l−1 qk√2 )] (5) Com uma distribuição normal com média 1 e desvio padrão qk, onde o q é um parâmetro do algoritmo. Assim para valores baixos de q somente as melhores soluções serão 16 aceitas gerando menor diversidade, para valores altos ocorre a geração de maior diversidade pela uniformidade da probabilidade. 17 5 COLÔNIA DE ABELHAS ARTIFICIAIS (ARTIFICIAL BEE COLONY). “Uma colônia de abelhas pode ser vista como um sistema dinâmico que se ajusta de acordo com suas necessidades ainda que seus agentes (abelhas), se observados de forma individual possuam capacidade e conhecimento limitados” (Duarte, Grasiele Regina). Enquanto observavam o comportamento de algumas colônias de abelhas, cientistas descobriram que quando uma abelha descobre uma nova fonte de alimentos, pouco tempo depois outras abelhas chegavam à mesma fonte. Este fato intrigou os cientistas, principalmente pelo fato de as abelhas não se locomoverem em cortiços (coletivo de abelhas). Para estudar melhor esse fenômeno, pesquisadores da universidade de Georgia Tech reproduziram os experimentos do etologista alemão Karl Von Frisch. O experimento consistia nos seguintes procedimentos: os pesquisadores posicionaram estrategicamente duas fontes de alimentação, em cada uma dessas fontes, os pesquisadores marcaram as abelhas visitantescom cores distintas, essa marcação possibilitou que fosse identificado a fonte que cada abelha visitou, eles perceberam, que ao retornar do alimentador, as abelhas começavam a realizar uma espécie de dança. No formato do número 8, antes de distribuir o pólen e o néctar que foram recolhidos. Os cientistas observaram também, que apesar de o formato de “8” fosse o mesmo para as todas as abelhas, aquelas que haviam comido em um mesmo alimentador, vibravam com uma orientação diferente daquelas que haviam se alimentado em outra fonte. Ao analisar os experimentos, os cientistas descobriram, que na realidade, aquela “dança” era uma espécie de comunicação entre as abelhas. O ângulo formado pelas abelhas, surpreendentemente era igual ao ângulo formado pelos alimentadores e a colmeia. Outra habilidade importante possuída pelas abelhas, é a capacidade de visualizar a luz polarizada e ultravioleta, isso faz com que elas consigam determinar com precisão a posição do sol. Observando essas fantásticas habilidades das abelhas, em 2005, Dervis Karaboga desenvolveu o algoritmo de abelhas artificiais (artificial bee colony), um algoritmo de inteligência coletiva que se baseia no comportamento para a obtenção de ótimos em soluções de problemas. Neste capítulo do trabalho iremos dar uma visão introdutória deste algoritmo. 5.1 O que é o Algoritmo? Como já mencionado neste trabalho, o algoritmo baseia-se no comportamento das abelhas na busca por alimentação (forrageamento). Através da observação desse comportamento, o algoritmo utiliza-se de ferramentas de controle relativamente simples, 18 como por exemplo o tamanho da colônia de abelhas e a quantidade máxima de repetições possíveis. Sendo assim, o algoritmo nos proporciona um processo de busca populacional, ou seja, através do estudo realizado sobre a etapa da busca aleatória por alimentos. Quando as abelhas exploradoras localizam uma nova fonte de alimentos, a qual apresenta uma abundância maior com relação a atual, estas memorizam onde se localiza essa nova fonte e deixam de lado a antiga, de menor abundância. Com base nisso, o algoritmo combina métodos normais de procura, realizados pelas abelhas operárias e exploradoras, com métodos globais, realizados por cientistas e exploradores. 5.1.1 Como Funciona o Código. Como já foram apresentados a história por trás do algoritmo e seus objetivos primários, já apresentamos ferramentas bastantes para um entendimento mesmo que introdutório do código utilizado no algoritmo. Primeiramente, deve-se inicializar a quantidade de indivíduos que integram a colmeia, o número de fontes de alimento como sendo igual a metade da quantidade de indivíduos na colmeia, uma fonte de alimentos que não pode ser aperfeiçoada deve ser abandonada pelas abelhas e uma quantidade de ciclos de forrageamento (será nosso critério de parada) Após realizada a inicialização dos parâmetros do ABC, deve-se inserir os parâmetros específicos do problema, como o número de parâmetros do problema a ser utilizado, o limite inferior dos parâmetros, o limite superior dos parâmetros. Após definidas todas essas informações iniciais, já se pode ir de fato à execução do código. Neste trabalho o código será apresentado na forma da linguagem C, quando necessário, serão informadas as utilidades de alguns comandos da linguagem, a fim de facilitar ao máximo o entendimento do algoritmo. Introduz-se vetores e matrizes do tipo double (Para números decimais) para expressar a quantidade de comida, qualidade da fonte de alimentos, soluções que não podem ser melhoradas, probabilidades de fontes a serem escolhidas, novas soluções, parâmetros para uma solução ótima, máximos e mínimos globais e um número aleatório pertencente ao intervalo [0,1). Por se tratar de um código deveras extenso, se tentássemos explicá-lo passo a passo de maneira escrita, acabaríamos por nos estender excessivamente e consequentemente 19 abrindo espaço para uma série de dificuldades na compreensão. Sendo assim, optaremos por explicar o que será feito no código, sem neste momento explicitar como funciona sua sintaxe. A partir da inicialização apresentada anteriormente, abre-se um if (estrutura utilizada para realizar um comando, se uma determinada condição for verdadeira). Neste caso, a ação será mudar de alimentador e a condição, é o novo alimentador possuir uma qualidade melhor que o anterior. Após isso, abre-se uma série de for’s (Estrutura que realiza uma determinada ação, enquanto uma condição é satisfeita) e if’s, para definir se um determinado alimentador é possui uma qualidade maior que o anterior. Sendo assim, o código pode ser descrito como uma série de comandos com o objetivo, de ao localizar uma nova fonte de alimentos, compará-la com as já conhecidas e caso seja melhor, memorizá-la para avisar aos demais integrantes da colmeia. 1.1.1 O código da parte principal do algoritmo int main() { int iter,run,j; double mean; mean=0; srand(time(NULL)); for(run=0;run<runtime;run++) { initial(); MemorizeBestSource(); for (iter=0;iter<maxCycle;iter++) { SendEmployedBees(); CalculateProbabilities(); SendOnlookerBees(); MemorizeBestSource(); SendScoutBees(); } 20 for(j=0;j<D;j++) { printf("GlobalParam[%d]: %f\n",j+1,GlobalParams[j]); } printf("%d. run: %e \n",run+1,GlobalMin); GlobalMins[run]=GlobalMin; mean=mean+GlobalMin; } mean=mean/runtime; printf("Means of %d runs: %e\n",runtime,mean); getch(); } double sphere(double sol[D]) { int j; double top=0; for(j=0;j<D;j++) { top=top+sol[j]*sol[j]; } return top; } double Rosenbrock(double sol[D]) { int j; double top=0; for(j=0;j<D-1;j++) { top=top+100*pow((sol[j+1]-pow((sol[j]),(double)2)),(double)2)+pow((sol[j]- 1),(double)2); } return top; } 21 double Griewank(double sol[D]) { int j; double top1,top2,top; top=0; top1=0; top2=1; for(j=0;j<D;j++) { top1=top1+pow((sol[j]),(double)2); top2=top2*cos((((sol[j])/sqrt((double)(j+1)))*M_PI)/180); } top=(1/(double)4000)*top1-top2+1; return top; } double Rastrigin(double sol[D]) { int j; double top=0; for(j=0;j<D;j++) { top=top+(pow(sol[j],(double)2)-10*cos(2*M_PI*sol[j])+10); } return top; } 22 5.2 Uma Aplicação do ABC na Engenharia Elétrica Neste capítulo, até agora vimos a história de criação, os objetivos primários, o funcionamento, e o código principal do algoritmo das abelhas artificiais, agora veremos uma das muitas possíveis aplicações deste algoritmo. A aplicação que iremos apresentar foi feita com base no artigo de 2011 “Using the bees algorithm to select the optmal speed parameters for Wind turbines generator” (Usando o Algoritmo das Abelhas para Selecionar a velocidade ótima para aerogeradores) de A.A Fahmy da Escola de Engenharia de Cardiff. “Devido às preocupações ambientais e aos custos econômicos associados à produção de energia a partir de combustíveis fósseis e nucleares, o uso de geradores elétricos movidos a vento tem crescido rapidamente nos últimos anos.” (Fahmy, A, A, 2011). A partir da análise das necessidades que se têm na geração da energia eólica, Fahmy fez uso do algoritmo das abelhas artificiais para selecionar parâmetros de velocidade ótimos para aerogeradores. Abaixo exibiremos alguns resultados de Fahmy, obtidos em algumas cidades egípcias, que compara a eficácia do ABC em comparação à outros algoritmos. Gráfico 1 Adaptado pelo autor, de (Fahmy, A, A, 2011) Gráfico 2 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 Sallum Sidi Barrani Dekhaila Alexandria Resultados da Função Objetiva PSO ABC TSI 23 Adaptado pelo autor, de (Fahmy, A, A, 2011) 0 0,5 1 1,5 2 2,5 3 3,54 Sallum Sidi Barrani Dekhaila Alexandria Resultados para a velocidade de inserção PSO ABC TSI 24 6 SHUFFLED FROG-LEAPING O algoritmo Shuffled Flog-leaping surgiu como uma alternativa de melhoria a sistemas de forma metheuristica usando funções heurísticas, como forma de solucionar um problema de otimização combinatorial. Esse sistema é um importante exemplo quando se aborda algoritmos memeticos, ou seja, onde indivíduos interativos realizam troca global de informação entre eles. Algoritmos memeticos foi abordado por Dawkins (1976), originado de meme, que é um padrão de informação contagioso que se propaga nas mentes de animais ou humanos, moldando seus comportamentos e a padronização de suas ações. Esse conceito de meme é análogo aos comportamentos dos genes, uma vez q o gene é uma característica genética que se propaga via reprodução sexual, os memes são ideias de comportamentos que se propagam via interação. 6.1 Funcionamento da ideia O algoritmo SFL representa um grupo de sapos saltando em um pântano. O pântano, metaforicamente, representa o espaço de buscas, existe também um grupo de pedras de localização discreta, posição das possíveis soluções, nas quais os sapos (soluções) podem saltar e encontrar a pedra com a máxima quantidade de comida disponível. Aos sapos é permitido se comunicarem uns com os outros de forma que melhorem seu memes usando as informações uns dos outros. A melhoria se da no aumento do pulo do sapo. Assim o algoritmo é progride, transformando os sapos por meio de uma evolução memética. Além disso, no pântano há uma variedade de comunidade de sapos que são chamados de memeplexes. Os diferentes memeplexes são localizados em diferentes partes do pântano fazendo uma busca profunda em cada memeplexes. Após isso, as ideias são passadas entre as comunidades. Tal processo realça a melhor qualidade nos diferentes espaços do pântano. Depois de determinados passos os locais de melhor solução ficarão melhor definido. 6.2 Procedimento de SLF O procedimento será divido para se obter uma melhor compreensão do processo: a) Determine o número de memeplexes (m) e o numero de sapos (n) em cada 25 memeplexes. O numero total de sapos é F b) Gere um número aleatório de população de sapos F e ordene por ordem decrescente de aptidão. c) Evolua cada memeplex de acordo com o procedimento que desejar. d) Embaralhe os memeplex evoluídos e) Ordene os F sapos em ordem decrescente do valor de aptidão e registre a posição do melhor f) Se o critério for satisfeito, termine. Caso a resposta não seja uma das esperadas, volte ao passo b. 6.3 Aplicação do algoritmo SLF 6.3.1 Transportes de produtos em redes dutoviarias O modal Dutoviário é muito usado no transporte de fluidos e cereais. Nesse viés, uma característica intrínseca a esse modal é a ramificação de seus trajetos se tornando em uma grande rede de sistema. Entretanto, essa rede afeta demasiadamente o tempo de chegada desses produtos e na aplicação de futuros concertos que por ventura possa haver no sistema. Nesse sentido, surge o algoritmo SLF na intenção de otimizar esse sistema complexo, encontrando formas de menor caminho e locação exata de haver a ramificação sem que haja grande prejuízo na tensão que move esse produto. 26 7 PARTICLE SWARM OPTIMIZATION – PSO Esse tipo de algoritmo bio-inspirado baseia-se no comportamento social de revoadas de pássaros. Foi observado que pássaros começavam o voo de forma desordenada e dentre de alguns instantes se ordenavam e continuavam voando juntos, até que o bando encontrasse um bom lugar para pouso. Baseado nesse comportamento em 1995 Kennedy e Eberhard desenvolveram uma técnica estocástica onde a ideia principal consiste na movimentação das partículas a fim de explanar grande parte do espaço de buscar e chegar a soluções mais próximas do ótimo. O algoritmo funciona a partir da geração aleatória de partículas que são responsáveis por percorrer o espaço, de modo que a movimentação de cada partícula é determinada por sua velocidade e posição, obedecendo as equações [1] e [2], mostradas a seguir: 𝑉𝑖, 𝑗(𝑘 + 1) = 𝑤𝑉𝑖, 𝑗(𝑘) + 𝑐1𝑟1(𝑃𝑖, 𝑗 − 𝑋𝑖, 𝑗(𝑘)) + 𝑐2𝑟2(𝑃𝑔, 𝑗 − 𝑋𝑖, 𝑗(𝑘)) (6) 𝑋𝑖, 𝑗(𝑘 + 1) = 𝑋𝑖, 𝑗 + 𝑉𝑖, 𝑗(𝑘 + 1) (7) Onde: 𝑤 – Parâmetro de inércia que controla a influência do melhor bando e do melhor individual; 𝑐1 – Ponderação Global (normalmente utiliza-se o valor 2); 𝑐2 – Ponderação Individual (normalmente utiliza-se o valor 2); 𝑃 – Melhor posição dentre as iterações; 𝑟1 e 𝑟2 – números aleatórios entre [0, 1]. O fluxograma representado na figura 0 a seguir mostra os seguintes passos que são usados para o desenvolvimento dos algoritmos PSO: 1. Geração aleatória das partículas que percorreram o espaço de busca; 2. Cálculo da função-objetivo F(x) para cada partícula; 3. Atualização da posição e da velocidade da partícula utilização por meio das equações citadas anteriormente; 4. Avalias a função F(x) para todas as partículas; 5. Atualizar Pi da k-ésima partícula em relação a melhor função-objetivo; 6. Atualizar Pg quando uma solução global ótima for encontrada; 7. Repetir o passo 3 até que a condição de parada seja satisfeita. 27 Figura 4: Fluxograma do algoritmo PSO Fonte: Algoritmos Genéticos e Particle Swarm Optimization e suas aplicações problemas de Guerra Eletrônica. CC (EN) Alexandre de Vasconcelos Siciliano – sicilian@ita.br, Tel +55-21-2104-5033 Diretoria de Sistemas de Armas da Marinha (DSAM) – Rua Primeiro de Março, 118 Centro – Rio de Janeiro, RJ - CEP 20010-000 Uma das possíveis comparações entre o PSO e o AG (algoritmo genético) é vista claramente pelo número de operadores usados. Enquanto o PSO faz uso de apenas um operador na implementação, no AG usa três operadores, seleção, crossover e mutação. Além disso no PSO não há necessidade de troca de informações explicita, somente a influência na trajetória. Fazendo a comparação entre os dois algoritmos para encontrar o ponto máximo da função a seguir: 𝑓(𝑥, 𝑦) = 1 2 [cos(16𝜋𝑥) + cos(16𝜋𝑦)]ⅇ −7 2 [(𝑥− 1 2 ) 2 +(𝑦− 1 2 ) 2 ] (8) O AG foi implementado com seleção por roleta, taxa de crossover de 80%, taxa de mutação de 1% e com 20 indivíduos. Como a função é mais complexa, a quantidade de gerações (200) necessárias para se obter um resultado com erro da ordem de 10−3 foi muito maior. O PSO, foi implementado com 20 indivíduos, parâmetros de ponderação global e individual c1 e c2 iguais a 2, a inércia da partícula w variando entre 0,4 e 0,9. A figura 0 apresenta os resultados obtidos [1]. 28 Figura 5:Resultados dos valores obtidos pelos dois algoritmos Fonte: Algoritmos Genéticos e Particle Swarm Optimization e suas aplicações problemas de Guerra Eletrônica. CC (EN) Alexandre de Vasconcelos Siciliano. O valor do ponto máximo da função (3) era (0.500, 0.500), assim foi possível observar que com poucas iterações o PSO chegou ao resultado esperado assim se mostrando mais eficiente que o AG. A figura 0 a seguir mostra a disposição inicial das partículas PSO. Figura 6:Comportamento inicial das partículas no PSO Fonte: Algoritmos Genéticos e Particle Swarm Optimization e suas aplicações problemas de Guerra Eletrônica. CC (EN) Alexandre de Vasconcelos Siciliano. 29 8 CONCLUSÃO Nesse trabalho, foi abordado definições básicas para um entendimento melhor de algoritmos e sua função de otimização. Nesse viés, a definição de metheuristica se aplica no conjunto de regras formadas para resolver determinado problema, sobre o qual se tem poucas informações. Além disso, a otimização é um conceito que se resume na escolha de uma solução entre diversas possíveis. Em síntese entende-se que osalgoritmos de inteligência coletiva como uma forma de se obter uma melhoria em algum algoritmo bioinspirado. Nesse sentido, a inteligência coletiva é uma maneira de adquirir conhecimento em que os códigos aprendem com a experiência uns dos outros, agregando informações. Uma forma didática de apresentar isso foi a exemplificação em quatro algoritmos de inteligência coletiva: colônia de formigas, PSO, ABC, SFL. Em primeiro, plano o código de colônia de formigas é uma maneira eficiente de resolver problemas simples de otimização. Para isso, ele busca encontrar a menor rota para uma solução, baseado na experiência dos códigos inseridos a ele. O PSO (Particle Swarm Optimization) é inspirado no comportamento social de pássaros, onde foi observado que os pássaros começavam o voo de forma desordenada e em poucos instantes passavam a voar de maneira ordenada. A partir desse comportamento foi desenvolvida uma técnica estocástica onde a ideia principal consiste na movimentação das partículas no espaço de busca. Posteriormente, ABC (Artifict Bee Colony) é um algoritmo pertencente a classe de otimização que visa encontrar a melhor saída para um problema através de um código desenvolvido a partir da observação das abelhas no seu comportamento de ferrojamento (busca por alimento), observado pelo etologista Karl Vonfricz e desenvolvido pelo Dervis Karabola. Em seguida, o SFL (Shuffled flog-leaping) se baseia no comportamento de sapos. Seu sistema se espelha em uma comunidade de pererecas que pulam em rochas buscando a melhor para se encontrar comida. Uma aplicação de grande importância é no sistema Dutoviário, no qual foi usado para se obter melhor funcionamento logístico. 30 REFERÊNCIAS LÉVY, Pierre. A Inteligência coletiva por uma antropologia do ciberespaço. Edições Loyola. 2ª edição: fevereiro de 1999. BUZZO, André; "A inteligência coletiva"; disponível em < andrebuzzo.com.br/a-inteligencia- coletiva >. Acesso em 27 de maio de 2019 DUARTE, Grasiele Regina Um algoritmo inspirado em colônias de abelhas para otimização numérica com restrições. Programa de Pós-graduação em Modelagem Computacional, da Universidade Federal de Juiz de Fora, 2015. FAHMY, A,A Using the bees algorithm to select the optimal speed parameters for Wind turbine generators. Cardiff University, 2011. SEELEY, Thomas D The wisdom of the hive, the social physiology of honey bees colonies. Harvard College, 2015. SICILIANO, Alexandre de Vasconcelos Algoritmos Genéticos e Particle Swarm Optimization e suas aplicações problemas de Guerra Eletrônica. Instituto Tecnológico da Aeronáutica, 2017. DORIGO, M.; CARO, G. Ant colony optimization: A new meta – heuristic. Evolutionary Computation, v. 2, p.1470-1477, CEC 99, IEEE, 1999. MARQUES, Mateus de P.; ANGÉLICO, Bruno A.; ABRÃO, Taufik. Otimização Heurística por Colônia de formigas com Aplicações em Sistemas de Comunicações. Seminário: Ciências Exatas e Tecnológicas, Londrina, 2014. Trabalho apresentado no Seminário: Ciências Exatas e Tecnológicas, 2014, Londrina. 31
Compartilhar