Slide 1

Slide 1 text

Algoritmo Genético com Python “Fruto do acaso ou de um processo evolutivo?!”

Slide 2

Slide 2 text

~$ whoami Ana Paula Mendes Desenvolvedora full stack e pesquisadora em inteligência artificial @anapaulamendes /ananoterminal @ananoterminal

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Base biológica “Fruto do acaso ou de um processo evolutivo?”

Slide 7

Slide 7 text

Achou que era fruto do acaso?

Slide 8

Slide 8 text

Base biológica: “It is not the strongest of the species that survives, nor the most intelligent , but the one most responsive to change.” (Charles Darwin)

Slide 9

Slide 9 text

Base biológica: ● Inspirado em modelos biológicos: ○ Teoria da Evolução de Darwin (1859); ○ Genética de Mendel (1865);

Slide 10

Slide 10 text

Base biológica: ● Muitos termos foram emprestados da Biologia para os Algoritmos Genéticos;

Slide 11

Slide 11 text

O que são técnicas de otimização? De onde vem? É de comer?

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

O que são técnicas de otimização?

Slide 14

Slide 14 text

O que são técnicas de otimização? ● Definição do termo “melhor” em otimização; ● Conjuntos das soluções;

Slide 15

Slide 15 text

O que são técnicas de otimização? ● Um problema de otimização pode ser representado da seguinte forma: ○ Dados: uma função f : A → R de algum conjunto A de números reais; ○ Buscando: um elemento x0 em A tal que f(x0) ≤ f(x) para todo x em A ("minimização") ou tal que f(x0) ≥ f(x) para todo x em A ("maximização").

Slide 16

Slide 16 text

Algoritmo genético Vamo programar uns dna agora é?!

Slide 17

Slide 17 text

Introdução: Algoritmos genéticos ● Problemas np; ● Falha de métodos baseados em gradientes; ● Obter uma boa solução rapidamente.

Slide 18

Slide 18 text

Falha de métodos baseados em gradientes

Slide 19

Slide 19 text

Algoritmo Genético Início Inicia a população Cálculo de aptidão mutação crossover seleção Solução encontrada Fim não sim

Slide 20

Slide 20 text

Algoritmos genéticos ● Inicialização da População: ○ Inicialização randômica; ○ Inicialização heurística.

Slide 21

Slide 21 text

Algoritmos genéticos ● Cálculo de aptidão (Fitness): individuo[i] - modelo[i]

Slide 22

Slide 22 text

Algoritmos genéticos ● Seleção: ○ aleatória; ○ por torneio; ○ usando a roleta.

Slide 23

Slide 23 text

Algoritmos genéticos ● Cruzamento (Crossover): ○ Aleatório; ○ Single Arithmetic Crossover; ○ Simple Arithmetic Crossover; ○ Partially-Matched Crossover.

Slide 24

Slide 24 text

Cruzamento - Algoritmos genéticos ● Aleatório:

Slide 25

Slide 25 text

Cruzamento - Algoritmos genéticos ● Single Arithmetic Crossover: Pai 1={0.5, 1.0, 1.5, 2.0}, Pai 2={0.2, 0.7, 0.2, 0.7} a = 0.4 e k = 3 Filho 1={0.5, 1.0, (0.4)(0.2)+(0.6)(1.5), 2.0} = {0.5, 1.0, 0.98, 2.0} Filho 2={0.2, 0.7, (0.4)(1.5)+(0.6)(0.2), 0.7} = {0.2, 0.7, 0.72, 0.7}

Slide 26

Slide 26 text

Cruzamento - Algoritmos genéticos ● Simple Arithmetic Crossover: Pai 1={0.5, 1.0, 1.5, 2.0}, Pai 2={0.2, 0.7, 0.2, 0.7} a = 0.4 e k = 3 Filho 1={0.5, 1.0, (0.4)(0.2)+(0.6)(1.5), (0.4)(0.7)+(0.6)(0.2)} = {0.5, 1.0, 0.98, 1.48} Filho 2={0.2, 0.7, (0.4)(1.5)+(0.6)(0.2), (0.4)(2.0)+(0.6)(0.7} ={0.2, 0.7, 0.72, 1.22}

Slide 27

Slide 27 text

Cruzamento - Algoritmos genéticos ● Partially-Matched Crossover: Pai 1 = 1 2 4 6 3 7 5 8 -> Substring 463 Pai 2 = 5 4 1 7 2 6 8 3 -> Substring 172 ------------------- 5 4 4 6 3 6 8 3 5 1 4 6 3 7 8 2 -> Números repetidos são substituídos

Slide 28

Slide 28 text

Mutação - Algoritmos genéticos ● Probabilidade de 1%: 010101110001001 010101110101001

Slide 29

Slide 29 text

Implementação com Python Why so pythonic?

Slide 30

Slide 30 text

Criar a População:

Slide 31

Slide 31 text

Função de Aptidão (Fitness)

Slide 32

Slide 32 text

Cruzamento (Crossover):

Slide 33

Slide 33 text

Mutação

Slide 34

Slide 34 text

Bibliotecas de Algoritmo genético ● Pyvolution: Very modular and very extensible evolutionary algorithms framework, with complete documentation, Apache License 2.0; ● deap: Distributed Evolutionary Algorithms in Python, GNU Lesser GPL; ● pySTEP: Python Strongly Typed gEnetic Programming, MIT License; ● Pyevolve: Pyevolve was developed to be a complete genetic algorithm framework written in pure python;

Slide 35

Slide 35 text

Bibliotecas de Algoritmo genético ● PyRobot: Evolutionary Algorithms (GA + GP) Modules, Open Source; ● PonyGEa: small, one source file implementation of GE, with an interactive graphics demo application GNU GPL v3; ● inspyred: Biologically inspired computation encompasses a broad range of algorithms including evolutionary computation, swarm intelligence, and neural networks, GNU GPL v3; ● DRP: Directed Ruby Programming, Genetic Programming & Grammatical Evolution Library, GNU GPL;

Slide 36

Slide 36 text

Já acabou?

Slide 37

Slide 37 text

PESSOAS > TECNOLOGIA

Slide 38

Slide 38 text

Obrigada pela atenção, Galera! @anapaulamendes /ananoterminal @ananoterminal

Slide 39

Slide 39 text

Referências bibliográficas: ● Coppin, ben. Inteligência Artificial. Rio de janeiro: LTC, 2013. ● Artero, Almir Olivette. Inteligência Artificial: teoria e Prática. São Paulo: Editora Livraria da Física, 2009. @anapaulamendes /ananoterminal @ananoterminal