apresentação do powerpoint - · pdf fileresultado da divisão...

48
© 2016 Dr. Walter F. de Azevedo Jr. 1 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000 000000000111111111111111111111111000000 000000000011111111111111111111100000000 000000001111111111111111111111111000000 000011111111111111111111111111111000000 001111111111111111111111111111110000000 111111111111111111111111111110000000000 111111111111111111111111111110000000000 000011111111111111111111111111111110000 001111111111111111111111111111111111000 011111111111111111111111111111111111000 001111111111111111111111111111111111100 000000011111111111111111111111111111110 000000001111111111111111111111111111110 000000000001111111111111111111111111110 000000000000011111111111111111111111110 000000000000000111111111111111111111000 000000000000000000000000001111000000000 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000000000000000000000000000000 www.python.org

Upload: truongnguyet

Post on 03-Feb-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

© 2

01

6 D

r. W

alter

F.

de

Aze

ve

do

Jr.

1

000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000 000000000111111111111111111111111000000 000000000011111111111111111111100000000 000000001111111111111111111111111000000 000011111111111111111111111111111000000 001111111111111111111111111111110000000 111111111111111111111111111110000000000 111111111111111111111111111110000000000 000011111111111111111111111111111110000 001111111111111111111111111111111111000 011111111111111111111111111111111111000 001111111111111111111111111111111111100 000000011111111111111111111111111111110 000000001111111111111111111111111111110 000000000001111111111111111111111111110 000000000000011111111111111111111111110 000000000000000111111111111111111111000 000000000000000000000000001111000000000 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000000000000000000000000000000

www.python.org

Page 2: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

As ideias da evolução têm sido usadas em problemas de otimização. Entendemos por otimização um método computacional (algoritmo), que procura achar as condições ótimas para um dado problema. Para evitar uma abordagem matemática, vamos ilustrar a otimização com um exemplo, chamado problema do caixeiro viajante (travelling salesman problem). Neste problema temos um vendedor (caixeiro viajante), que tem que passar por diversas cidades, digamos 4 cidades. O objetivo do problema é achar o menor caminho possível, que leva o caixeiro viajante a passar pelas quatro cidades, sem repetir nenhuma cidade. Sabemos as distâncias entre todos os pares de cidades, assim a solução ótima (otimizada) é aquela que leva a um menor percurso total. Este é o típico problema de otimização.

C

D

A

B dAC

dAD

dAB

dBD

dBC

dCD

2

Otimização

www.python.org

Page 3: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Apresentaremos alguns conceitos da evolução, usados como inspiração para os algoritmos evolucionários. Vamos considerar um ambiente que pode sustentar só um número restrito de indivíduos (joaninhas nas figuras aqui), a natureza seleciona aquelas joaninhas que lutam pelos os recursos limitados de forma mais eficiente, em outras palavras, a seleção dos indivíduos mais adaptados da população (as joaninhas mais adaptadas). Outro conceito básico da teoria de Darwin é a variação do fenótipo entre indivíduos da população. Traços do fenótipo são aqueles aspectos físicos e de comportamento de um indivíduo, que estão relacionados com sua reação ao ambiente, por exemplo a cor da joaninha. Os traços do fenótipo determinam seu ajuste (fitness) ao ambiente.

3

Indivíduo

População

A cor aqui é um traço biológico

Conceitos básicos sobre evolução

www.python.org

Page 4: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Numa população, cada indivíduo mostra um conjunto de traços do fenótipo exclusivo, que estão continuamente sendo testados pelo ambiente. O ajuste de cada indivíduo pode ser quantificado numa análise matemática do sistema, os indivíduos com maior sucesso apresentam um ajuste mais alto, ou seja, uma função ajuste (fitness function) mais alta.

4

Indivíduo

População

A cor aqui é um traço biológico

Conceitos básicos sobre evolução

www.python.org

Page 5: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

População da primeira geração

População da segunda geração

Resumindo os conceitos básicos, uma população é um conjunto de indivíduos, cada um sendo considerado um “unidade de seleção”, seu sucesso depende de o quão bem adaptado ao ambiente eles estão. Indivíduos mais bem adaptados apresentam probabilidade mais alta de gerar descendentes, e, mutações ocasionais, dão origem a novos indivíduos que serão testados pelo ambiente. Desta forma, de uma geração para outra, há variação no genótipo (conjunto de genes) da população. Cada gene codifica uma proteína, e pode ser responsável por uma característica do indivíduo, ou um conjunto de genes ser o responsável por uma característica. Na figura vemos claramente diferenças nos padrões de cores, embora alguns indivíduos tenham sobrevivido de uma geração para outra.

5

Conceitos básicos sobre evolução

www.python.org

Page 6: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Fitness

x

y

O processo de evolução pode ser visualizado usando uma superfície adaptativa (adaptive surface). Nesta representação a altura z representa a função ajuste (fitness function). Aqui, quanto maior a altura na superfície, maior o ajuste do indivíduo. Os eixos x-y representam todas as combinações possíveis de traços biológicos. Cada ponto nesta superfície representa um indivíduo, com a combinação de traços biológicos representados pelo valores de x e y. Os picos mais altos na figura representam os indivíduos mais bem adaptados.

6

Conceitos básicos sobre evolução

www.python.org

Page 7: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Os vales indicam indivíduos menos adaptados ao ambiente. Cada pico na superfície indica um ponto ótimo local (ou simplesmente máximo local) e o pico mais alto o ponto de ótimo global (ou máximo global). A partir desta analogia, está clara as implicações da evolução em problemas de otimização, que podemos pensar que é representado pelo ponto de ótimo global. Num problema de otimização, como o do caixeiro viajante, nós podemos ter uma lista de soluções para o problema (diferentes rotas), e tentamos achar a melhor solução. O conjunto de soluções possíveis é chamado de espaço de busca, a superfície da figura ao lado é o espaço de busca.

Fitness

x

y

7

Conceitos básicos sobre evolução

www.python.org

Page 8: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Na abordagem original dos algoritmos genéticos (genetic algorithms) (GAs) foram usados números binários para a representação de cromossomos [GO1989]. Faremos uma introdução (ou revisão) da matemática básica envolvida na conversão de um sistema para outro. Um número binário é um número que usa somente os algarismos “ zero ” e “ um ” , para representar uma quantidade. Por exemplo, 101 em binário representa 5 no decimal. Veremos exemplos para esclarecer o processo. Vamos converter 75 em decimal para sua representação binária. Para isto temos que dividir continuamente “75” por “2” e o resto da divisão é o último algarismo do número binário equivalente ao 75, como mostrado ao lado. O último resultado da divisão “1” é o algarismo mais significativo do número binário.

8

Números binários

www.python.org

Page 9: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Para converter de binário (subscrito 2) de volta para decimal (subscrito 10) é ainda mais fácil. Temos que multiplicar “0” e “1” por 2 elevado à potencia que é a posição do número binário, começando na posição zero no lado direito, até o último número na sequência, como segue: 1.26 + 0.25 +0.24 + 1. 23 + 0.22 + 1.21 + 1.20 =64 + 0 + 0 + 8 + 0 + 2 + 1 = 75

9

Números binários

www.python.org

Page 10: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Binary numbers

Agora que sabemos como operar com números binários, usaremos tais números nos algoritmos genéticos. Em muitos algoritmos genéticos os cromossomos dos indivíduos são representados por números binários, tal método tem o benefício de ser rápido na aplicação dos operadores genéticos, como mutação e crossover. Num número binário a mutação é simplesmente uma mudança de “0” para “1” ou vice-versa.

10

Números binários

www.python.org

Page 11: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Binary numbers

Assim, a implementação de um algoritmo genético usa as ideias da evolução de Darwin, de forma que os indivíduos de uma dada população são submetidos aos princípios da evolução, tais como, seleção natural, recombinação (crossover) e mutação. Veja abaixo, um indivíduo será representado por uma string binária. Uma string binária é uma sequência de “0” e “1”. No algoritmo genético a string binária é convertida num número decimal, usando as operações matemática já vistas.

11

Números binários

011011110001

Representação do cromossomo de um indivíduo na abordagem de algoritmo genéticos

1777

String binária Decimal relacionado à string binária

www.python.org

Page 12: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Um algoritmo genético típico usa três operadores para manipular os cromossomos de uma população de indivíduos gerados aleatoriamente, são eles: seleção, crossover e mutação. Um diagrama esquemático dá uma visão geral destes passos para uma iteração (geração). A população inicial é formada de strings binárias geradas aleatoriamente.

101101011010 000010000100 000001111111 100111100111 111110011000 000001011010 000010111100 110100111100

Strings binárias (populatção incial)

Operador seleção

Operador crossover

Operador mutação

110100111010 101101011100 100110011000 1111111100111 101101011010 100111100111 111110011000 110100111100

Strings binárias (Nova população)

12

Algoritmo genético

www.python.org

Page 13: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

O operador seleção é uma implementação computacional da “seleção natural”. É uma tentativa de aplicar a pressão evolucionária sobre indivíduos de uma população. Indivíduos com função ajuste baixa serão descartados. Os indivíduos de mais alto valor de função ajuste apresentam maior probabilidade de sobreviver. Os sobreviventes farão parte da população, que começará a nova geração (iteração).

13

101101011010 000010000100 000001111111 100111100111 111110011000 000001011010 000010111100 110100111100

Strings binárias (populatção incial)

Operador seleção

Operador crossover

Operador mutação

110100111010 101101011100 100110011000 1111111100111 101101011010 100111100111 111110011000 110100111100

Strings binárias (Nova população)

Algoritmo genético

www.python.org

Page 14: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

O operador crossover (também conhecido como recombinação) faz com que os indivíduos (strings binárias) troquem sua informação genética, de forma análoga à reprodução sexuada. Uma forma de implementar tal operador, é selecionar pares de indivíduos promovidos após a etapa de seleção (pais). Depois selecionamos aleatoriamente um local único (locus) (indicado pela barra vermelha vertical), dentro da string binária. Por último trocamos todos os dígitos à direita deste locus entre os dois pais, conforme indicado abaixo.

110100111010 101101011100

100110011000 1111111100111

110100111100 101101011010

100111100111 111110011000

Locus

Locus

Pais Descendentes

Crossover

14

Algoritmo genético

www.python.org

Page 15: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

O operador crossover é aplicado a um par de pais, parar gerar um par de novas strings binárias (descendentes). Um par de pais será submetido ao crossover, se e somente se, um número aleatório (Rn) for menor que a probabilidade de crossover (Pc). Rn está no intervalo [0,1], e um típico valor de Pc está no intervalo [0,4, 0,9].

110100111010 101101011100

100110011000 1111111100111

110100111100 101101011010

100111100111 111110011000

Locus

Locus

Pais Descendentes

Crossover

Gera um número aleatório

(Rn)

Rn<=Pc?

Escolha novo par de

pais

Sim

Não

15

Algoritmo genético

www.python.org

Page 16: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Para ilustrar os princípios básicos do GA, vamos resolver o seguinte problema simples, qual o número entre 0 e 4095 maximiza a função quadrática (f(x)=x2)? OK, não precisamos de um GA para saber a resposta deste problema, tal problema é só para ilustrar o GA. Este problema foi discutido em diversos textos de GA [CO1999, GO1989]. Na implementação deste algoritmo temos strings binárias de comprimento 12 (11111111112 = 409510). Assim vamos gerar números aleatórios entre 0 e 4095, como mostrado parcialmente na tabela abaixo. Esta faixa de número é nosso espaço de busca.

String binária Decimal 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 1 1 3 0 0 0 0 0 0 0 0 0 1 0 0 4 0 0 0 0 0 0 0 0 0 1 0 1 5 0 0 0 0 0 0 0 0 0 1 1 0 6 0 0 0 0 0 0 0 0 0 1 1 1 7 0 0 0 0 0 0 0 0 1 0 0 0 8 .......... ..... 1 1 1 1 1 1 1 1 1 1 1 0 4094 1 1 1 1 1 1 1 1 1 1 1 1 4095

16

Algoritmo genético

www.python.org

Page 17: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Neste algoritmo simples, o operador seleção escolherá a melhor metade da população, usando a função quadrática como função ajuste (fitness function). Inicialmente temos que gerar a população de forma aleatória. Tal população é formada por strings binárias (genótipo), que serão convertidas em números decimais, e então a função quadrática será calculada (fenótipo). Nós classificamos a metade dos melhores indivíduos da população e então aplicamos o operador crossover. Estes novos indivíduos gerados pelo operador crossover serão submetidos ao operador mutação. Na mutação nem todos os indivíduos sofrem mutação, só aqueles que passarem no critério de probabilidade de mutação (Pm). Na implementação do GA usaremos o critério de número de iterações (gerações), como critério de parada. Um típico conjunto de entrada para tal algoritmo é o seguinte: Population size (tamanho da população): Maximum number of iterations (Número máximo de iterações): Probability of crossover (probabilidade de crossover): Length of strings (tamanho das strings): Probability of mutation (probabilidade de mutação):

17

Implementação de um algoritmo genético simples

www.python.org

Page 18: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Gera uma população aleatória de strings

binárias

Converte cada string binária a um número

decimal

Calcula a função ajuste para cada indivíduo

Seleciona parte da população para seguir

(operador seleção)

Seleciona pares de pais seguindo uma ordem

aleatória

Operador Crossover

Mutação dos descendentes

(operador mutação)

Gera uma nova população

Condição de parada

satisfeita?

Retorna os resultados

N

S

Ordena aleatoriamente os melhores pais

18

Implementação de um algoritmo genético simples

www.python.org

Page 19: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Inicialização. Números aleatórios são gerados (genótipo), para representar cromossomos dos indivíduos numa população. Para cada cromossomo uma função ajuste será calculada. Esta função ajuste é o fenótipo de cada indivíduo.

19

Initialização

A B

C D

Page 20: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Operador seleção (A). Agora um dos maiores processos da evolução é aplicado. Os indivíduos gerados aleatoriamente são selecionados usando como critério a função ajuste. Esta função indica o quão adaptado um indivíduo está. Os indivíduos selecionados são chamados “pais”.

20

Initialização

A B

C D

Page 21: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Operador crossover (B). Cada par de indivíduos selecionados (pais) podem gerar descendentes (filhos). Os pais são gerados aleatoriamente e seus cromossomos são combinados para gerar filhos. A posição de corte é chamada locus e é gerada aleatoriamente também.

21

Initialização

A B

C D

Page 22: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Operador mutação (C). É permitido que os descendentes sofram mutação. Em bactéria uma taxa de 2.10-3 mutações por genoma por geração é observada. Aqui o operador mutação possibilita a diversidade genética na simulação da evolução.

22

Initialização

A B

C D

Page 23: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Aqui os indivíduos (pais mais descendentes) tornam-se a população inicial para um novo ciclo, para manter a abordagem biológica, este ciclo é chamado de geração. Em computação um ciclo é chamado de iteração.

23

Initialização

A B

C D

Page 24: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Este ciclo está completo e todo o processo é repetido até que um critério de parada seja satisfeito, como por exemplo, o número de iterações (gerações) máximo.

24

Initialização

A B

C D

Page 25: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Agora temos uma visão geral de como os algoritmos genéticos funcionam. Vamos ver alguns conceitos de como o estes são implementados. Os indivíduos nesta população podem ser representados por “0” e “1”, ou seja, uma string binária.

25

Initialização

A B

C D

Page 26: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Na inicialização números aleatórios são gerados para representar cada cromossomo na população. Cada linha (string binária) é um cromossomo de um indivíduo (equivalentes às joaninhas de cores diferentes).

101101011010 000010000100 000001111111 100111100111 111110011000 000001011010 000010111100 110100111100

Strings binárias

26

Initialização

Page 27: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Initialização

A

Para ilustrar a evolução, vamos considerar que queremos achar o máximo da função quadrática para um inteiro entre 0 e 4095. Agora calculamos a função de ajuste (f=x2) para cada cromossomo. As strings binárias são convertidas para decimal e então calculamos a função. Selecionamos a melhor metade da população, segundo a função ajuste.

101101011010 000010000100 000001111111 100111100111 111110011000 000001011010 000010111100 110100111100

101101011010 100111100111 111110011000 110100111100

f = x2 2906 132 127

2535 3992

90 188

3388

Converte binário para decimal

2906 2535 3992 3388

Strings binárias Decimals (x) 8444836

17424 16129

6426225 15936064

8100 35344

11478544

Decimais (x) 8444836 6426225 1593606411478544

Strings binárias

Seleção dos melhores resultados

27

Page 28: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Nesta etapa temos o operador crossover. Somente os melhores pais são submetidos ao crossover (também chamado de recombinação). Inicialmente as strings binárias são aleatoriamente posicionadas e então a posição de crossover é escolhida. Esta posição indica onde a troca dos cromossomos acontecerá. Os novos cromossomos agora fazem parte da população, junto como os melhores pais.

101101011010 100111100111 111110011000 110100111100

Strings binárias

110100111010 101101011100 100110011000 1111111100111

110100111100 101101011010 100111100111 111110011000

101101011010 100111100111 111110011000 110100111100

Strings filhas

Strings de posição aleatória

28

Strings pais

Initialização

A B

Page 29: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

110100111010 101101011100 100110011000 1111111100111

101101011010 100111100111 111110011000 110100111100 O operador mutação é usualmente aplicado a um bit da string, mudando-

o de “0” para “1”, ou vice-versa. Na maioria das aplicações é sugerida uma probabilidade de mutação (Pm) de 0,001, ou seja, uma mutação para cada 1000 bits. 29

Strings pais

Strings filhas

Initialização

A B

C D

Page 30: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

110100111010 101101011100 100110011000 1111111100111

101101011010 100111100111 111110011000 110100111100 Há diversas formas de implementarmos o operador mutação, uma forma

é aplicá-lo a um bit (número “0” ou “1” na string) na posição 1/pm e gerar um número aleatório, se o número aleatório é maior que 0,5 muda o bit, caso contrário deixa como está. 30

Strings filhas

Strings pais

Initialização

A B

C D

Page 31: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

110100111010 101101011100 100110011000 1111111100111

101101011010 100111100111 111110011000 110100111100

O operador mutação funciona para aumentar a diversidade genética, evitando que a população fique confinada a um mínimo local.

110100111011 101101011100 100110011000 1111111100111

Strings filhas

101101011011 100111100111 111110011000 110100111100

Mutação

31

Strings pais

Strings filhas

Strings pais

Initialização

A B

C D

Page 32: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Depois da aplicação do operador mutação, os indivíduos tornam-se a população de uma nova iteração. O ciclo é repetido até que uma condição de parada seja satisfeita. Podemos fixar o número de iterações ou outra condição de parada baseada na variação da população, ou seja, se os indivíduos de uma geração não estão variando com relação à geração anterior, atingimos um critério possível de parada.

110100111010 101101011100 100110011000 1111111100111

Strings binárias

101101011010 100111100111 111110011001 110100111100 32

Page 33: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Para o problema descrito de maximização, temos numa simulação típica de algoritmos genéticos, as seguintes entradas: população inicial de 10 indivíduos, probabilidade de mutação de 0,01, probabilidade de crossover de 0,8 e número de iterações igual à 60. Com estes dados de entrada, observamos uma convergência para o valor correto após poucas iterações (gerações). O gráfico ao lado mostra os resultados de tal simulação. O eixo x indica o número de iterações (gerações) e o eixo y o valor máximo da função quadrática, obtido para cada geração. Como o indivíduo com maior valor para uma string binária de 12 algarismos é 1111111111112 , cujo o valor decimal é 4095, temos uma função quadrática de 16769025, que é alcançada na iteração 18. Depois disso não há alteração.

33

Implementação de um algoritmo genético simples

www.python.org

Page 34: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

A simulação de docking é o processo pelo qual localizamos a posição de um ligante (fármaco) no sítio de ligação de uma proteína por meio de computador. Tomando uma enzima como exemplo, mas lembrando que tal abordagem computacional não restringe-se às enzimas, temos que o ligante é um potencial inibidor da enzima. Recorrendo-se à analogia com o modelo “chave-fechadura” o ligante é a chave e o sítio ativo da enzima a fechadura. A simulação de docking visa achar o posicionamento do ligante no sítio ativo da enzima. Vimos que podemos usar a cristalografia de proteínas para achar a posição do ligante, o problema é que a cristalografia é cara e demorada. Assim, com a simulação de docking temos um método rápido e barato de achar a posição do ligante.

34

Simulação de docking molecular

Ligante (chave)

Sítio ativo (fechadura)

www.python.org

Page 35: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Mesmo usando uma abordagem computacional, não estamos livres da informação cristalográfica. A estrutura cristalográfica tem que estar presente como um “padrão ouro”, ou seja, antes de usarmos a simulação de docking, temos que verificar se o nosso algoritmo de docking está funcionando adequadamente. Neste aspecto o trabalho em Boinformática é similar ao trabalho em bancada experimental. Quando vamos testar um novo protocolo experimental, normalmente recorremos ao um padrão, para validarmos o protocolo novo. No caso do docking, o padrão é a estrutura cristalográfica. Assim, visamos achar a posição cristalográfica usando o docking e comparando com a posição cristalográfica, como mostrado ao lado.

35

Simulação de docking molecular

Posição cristalográfica (branca) e posição obtida pela simulação de docking (vermelha).

www.python.org

Page 36: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

A validação da simulação de docking com uma estrutura cristalográfica é o que chamamos de re-docking, onde vamos recolocar o ligante no sítio ativo e comparar com a posição cristalográfica. A comparação se faz por meio do cálculo do desvio médio quadrático, ou RMSD. Podemos pensar no RMSD como uma média das distâncias atômicas entre a posição cristalográfica ( xcristal, ycristal, zcristal) e a posição do ligante obtida pela simulação de docking ( xpose, ypose, zpose). Chamamos esta posição de pose. Abaixo temos em vermelho a posição do ligante obtida pela simulação de docking (pose) e em branco a posição cristalográfica. Vemos que temos uma boa concordância entre as duas posições. A equação para o cálculo do RMSD está mostrada abaixo, onde N indica que a soma é feita para todos os átomos do ligante.

36

Simulação de docking molecular

www.python.org

N

zzyyxx

RMSD

N

j

jposejcristaljposejcristaljposejcristal

1

2

,,

2

,,

2

,,

Page 37: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

As posições dos átomos nas moléculas são representadas por coordenadas atômicas, x, y e z. As coordenadas identificam a posição do centro do átomo no espaço, como as posições dos átomos mostradas ao lado. São estas coordenadas atômicas que são usadas para o cálculo do RMSD. Como as coordenadas atômicas estão na unidade angstrom (Å), o valor calculado para o RMSD é dado também em Å.

37

Simulação de docking molecular

Posição do átomo é indicada pelas coordenadas (x,y,z)

www.python.org

Page 38: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Abaixo temos a captura da tela do programa Molegro Virtual Docker (MVD), com um inibidor de CDK2 na tela gráfica (lado direito). Ao colocarmos o cursor sobre o átomo, vemos as coordenadas atômicas na janela à esquerda (dentro do retângulo vermelho), as unidades em Å.

38

Simulação de docking molecular

Coordenadas atômicas do átomo indicado.

www.python.org

Page 39: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Uma das formas de realizarmos a simulação de docking molecular, é por meio de algoritmos evolucionários. Nas simulações de docking com algoritmos evolucionários, o primeiro passo é gerar posições aleatórias para a molécula do ligante, como no exemplo das joaninhas. Cada joaninha representa uma posição do ligante.

39

Simulação de docking molecular

www.python.org

Page 40: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

No passo seguinte calculamos a função ajuste, que indica a adaptação de cada indivíduo, no caso do docking a energia de ligação de cada posição da molécula. Como a energia de ligação de Gibbs, só que agora usamos as coordenadas atômicas para calcularmos a energia de ligação. No próximo passo selecionamos os melhores indivíduos, as posições de menor energia para a molécula. Depois aplicamos o operador crossover, onde duas posições da molécula (pais) geram uma posição filha, como mostrado ao lado.

40

Simulação de docking molecular

Pai 1 Pai 2

crossover

Filha

www.python.org

Page 41: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Por último aplicamos a mutação, onde uma das posições filha é modificada. Terminamos um ciclo da evolução, ou iteração. O processo se repete um número finito de vezes.

41

Simulação de docking molecular

Filha

Filha mutada

Mutação

www.python.org

Page 42: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Ao final temos a posição obtida da simulação de docking (pose) comparada com a cristalográfica, como mostrada ao lado. Consideramos que a simulação de docking está funcionando bem, se o RMSD da sobreposição for menor que 2,00 Å, no exemplo ao lado o RMSD foi de 1,68 Å. O programa AutoDock é uma implementação do algoritmo genético para docking.

42

Simulação de docking molecular

www.python.org

Page 43: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Vimos um tipo de algoritmo evolucionário chamado de algoritmo genético. Há outros algoritmos que usam as ideias de evolução, mas são baseados em métodos computacionais distintos. Todos usam como inspiração a evolução, mas sua implementação computacional varia de algoritmo para algoritmo. Um dos algoritmos evolucionários de maior sucesso é o algoritmo de evolução diferencial. Na evolução diferencial temos os operadores clássicos dos algoritmos genéticos: seleção, crossover e mutação, como mostrados abaixo. Como uma implementação distinta do crossover.

43

Algoritmos Evolucionários (Evolução Diferencial)

Operador seleção

Operador crossover

Operador mutação

Critério de

parada satisfeito

?

Mostra resultados

Sim

Não

www.python.org

Page 44: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

O algoritmo de evolução diferencial executa a parte inicial de geração aleatória de uma população com N cromossomos, em seguida avalia a função ajuste de cada cromossomo. A novidade está na formação cromossomos filhos. O filhos são gerados da seguinte forma, para cada cromossomo pai na população, chamado aqui cromossomo j, são escolhidos aleatoriamente três outros cromossomos pais distintos, cromossomos k, l e m. Calcula-se um novo cromossomo, chamado aqui de n, da seguinte forma: cromossomo(n) = cromossomo(m) + peso.[cromossomo(k) - cromossomo(l)] o peso varia entre 0 e 2. O cromossomo novo (n) será incorporado à população se ao gerarmos um número aleatório entre 0 e 1, este for menor que a probabilidade de crossover, caso não seja, o cromossomo filho não é considerado. Um último teste é realizado no cromossomo filho n, se este apresenta função escore maior que o cromossomo pai j, caso seja, o cromossomo j é deletado e substituído pelo cromossomo n. As etapas seguintes são idênticas ao algoritmo genético original. Estamos considerando aqui que a função ajuste de maior valor é a que representa um indivíduo mais bem adaptado. Veja, este critério depende do tipo de problema a ser resolvido pelo algoritmo evolucionário.

44

Algoritmos Evolucionários (Evolução Diferencial)

www.python.org

Page 45: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Na implementação do algoritmo de evolução diferencial, como nos algoritmos genéticos, o primeiro passo é gerar indivíduos de forma aleatória, como no exemplo das joaninhas.

45

Algoritmos Evolucionários (Evolução Diferencial)

www.python.org

Page 46: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

No passo seguinte, calculamos a função ajuste, que indica a adaptação de cada indivíduo. Depois aplicamos o operador crossover, descrito anteriormente, onde três joaninhas pais (joaninhas cinza, branca e amarela) geram uma joaninha filha, para cada cromossomo pai (joaninha verde), como mostrado ao lado.

46

Cromossomo k Cromossomo l

Cromossomo m

cromossomo(n) = cromossomo(m) + peso.[cromossomo(k) - cromossomo(l)]

Algoritmos Evolucionários (Evolução Diferencial)

Cromossomo n

Cromossomo j

www.python.org

Page 47: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

Considerando que o cromossomo n passou no teste da probabilidade de crossover, e que tem função ajuste maior que a do pai (cromossomo j), este ocupa o lugar do pai, ou seja, o cromossomo j é deletado e substituído pelo cromossomo n. Por último, aplicamos a mutação, onde selecionamos aleatoriamente cromossomos filhos. O critério para escolher se um cromossomo filho sofrerá mutação, é a probabilidade de mutação (Pm). Geramos um número aleatório entre 0 e 1, se este número for menor ou igual à probabilidade de mutação, a mutação ocorre, caso contrário não. Testamos a condição de mutação para todos os cromossomos filhos. Terminamos um ciclo da evolução, ou iteração. O processo se repete um número finito de vezes.

47

Cromossomo n

Cromossomo n mutado

Mutação

Algoritmos Evolucionários (Evolução Diferencial)

Cromossomo j é deletado e substituído pelo n

www.python.org

Page 48: Apresentação do PowerPoint - · PDF fileresultado da divisão “1” é o algarismo mais ... que serão convertidas em números decimais, e então a função quadrática será calculada

-BRESSERT, Eli. SciPy and NumPy. Sebastopol: O’Reilly Media, Inc., 2013. 56 p.

-COLEY DA. An Introduction to Genetic Algorithms for Scientist and Engineers. World Scientific Publishing Co. Pte. Ltd. Toh Tuck Link, Singapore, 1999.

-DAWSON, Michael. Python Programming, for the absolute beginner. 3ed. Boston: Course Technology, 2010. 455 p.

-EIBEN AE, SMITH SJ. Introduction to Evolutionary Computing. Springer-Verlag, Berlin, 2007.

-FOGEL DB. Evolutionary Computation: Toward a New Philosophy of Machine Intelligence, IEEE Press, 1995.

-GOLDBERG DE. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison Wesley Longman, Ins.,Indiana, USA, 1989.

-HETLAND, Magnus Lie. Python Algorithms. Mastering Basic Algorithms in the Python Language. Nova York: Springer Science+Business Media LLC, 2010. 316 p.

-HOLLAND JH. Adaptation in Natural and Artificial Systems. MIR Press. Cambridge MA, 1992.

-IDRIS, Ivan. NumPy 1.5. An action-packed guide dor the easy-to-use, high performance, Python based free open source NumPy mathematical library using real-world examples.

Beginner’s Guide. Birmingham: Packt Publishing Ltd., 2011. 212 p.

-KIUSALAAS, Jaan. Numerical Methods in Engineering with Python. 2ed. Nova York: Cambridge University Press, 2010. 422 p.

-LANDAU, Rubin H. A First Course in Scientific Computing: Symbolic, Graphic, and Numeric Modeling Using Maple, Java, Mathematica, and Fortran90. Princeton: Princeton University

Press, 2005. 481p.

-LANDAU, Rubin H., PÁEZ, Manuel José, BORDEIANU, Cristian C. A Survey of Computational Physics. Introductory Computational Physics. Princeton: Princeton University Press, 2008.

658 p.

-LUTZ, Mark. Programming Python. 4ed. Sebastopol: O’Reilly Media, Inc., 2010. 1584 p.

-MICHALEWICZ Z.Genetic Algorithms + Data Structures = Evolution Programs, Springer-Verlag, 3rd, revised and extended edition, 1999.

-MODEL, Mitchell L. Bioinformatics Programming Using Python. Sebastopol: O’Reilly Media, Inc., 2011. 1584 p.

-SCHWEFEL H-P. Evolution and Optimum Seeking, Wiley Inter-Science, 1995.

-STORN R,PRICE K. Differential evolution – A simple and efficient adaptive scheme for global optimization over continuous spaces. Technical Report TR-95-012, International Computer Science

Institute, Berkeley, CA, 1995.

-TOSI, Sandro. Matplotlib for Python Developers. Birmingham: Packt Publishing Ltd., 2009. 293 p.

- XAVIER MM, HECK GS, DE AVILA MB, LEVIN NM, PINTRO VO, CARVALHO NL, AZEVEDO WF Jr. SAnDReS a Computational Tool for Statistical Analysis of Docking Results and

Development of Scoring Functions. Comb Chem High Throughput Screen; 2016; 19(9), 1-12.

Última atualização: 21 de novembro de 2016.

48

Referências

www.python.org