Você está na página 1de 38

20/06/2019 Exercício_9.

ipynb - Colaboratory

Exercício 9 - Algoritmos Genéticos


A partir da apresentação sobre o Algoritmo Genético (AG) e do exemplo disponibilizado, implementar
em Python os algoritmos para solucionar os exemplos multimodal da sala de aula para os seguintes
objetivos:
Minimizar Função Objetivo.
Achar os Zeros da Função Objetivo.
Mostrar o desempenho do algoritmo alterando-se as condições iniciais e atualizando os seguintes
parâmetros:
Tamanho da População Inicial
Taxa de Crossover
Taxa de Mutação

Minimizar a Função Objetivo


import numpy as np

import matplotlib.pyplot as plt

from google.colab import drive


import os
from google.colab import files

import matplotlib.pyplot as plt


import numpy as np
import imageio

from mpl_toolkits.mplot3d.axes3d import get_test_data


# This import registers the 3D projection, but is otherwise unused.
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import
from matplotlib import cm

#Montar o Google Drive no Colab com o nome gdrive

drive.mount('/content/gdrive')

# O comando abaixo mostra qual diretório você está trabalhando momento.


print( os.getcwd() )
print( os.listdir('gdrive/My Drive/Exercício_9') )

Drive already mounted at /content/gdrive; to attempt to forcibly remount, call dri


/content
['GIF_GA.gif', 'GIF_zeros.gif', 'GIF_GA_altera.gif', 'GIF_zeros_altera.gif']

Algoritmo Genético
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

def Crossover(Pop, Prob_Crossover):


https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 1/38
20/06/2019 Exercício_9.ipynb - Colaboratory
N = np.size(Pop,0)
Dim = np.size(Pop,1)
Pais = np.round(-0.5 + N * np.random.rand(N, 2))
Filhos = Pop
for i in range(np.size(Pais,0)):

if np.random.rand(1) < Prob_Crossover:


Pai_1 = Pop[int(Pais[i][0])]
Pai_2 = Pop[int(Pais[i][1])]
if len(Filhos) ==0:
Filhos = np.random.rand(1)*(Pai_1-Pai_2)+Pai_2
else:
Filho = np.random.rand(1) * (Pai_1 - Pai_2) + Pai_2
Filhos[i,0] = Filho[0]
Filhos[i,1] = Filho[1]

return Filhos

def Mutacao(Pop,PropMutacao,Desvio):
N = np.size(Pop, 0)
Mutantes = Pop

for i in range(np.size(Mutantes,0)):
if np.random.rand(1)< PropMutacao:
Mutantes[i,0] = Mutantes[i,0] + Desvio*np.random.randn(1)
Mutantes[i,1] = Mutantes[i,1] + Desvio * np.random.randn(1)

return Mutantes

def Fitness(Pop):
Fitness = []
for i in range(len(Pop)):

X = Pop[i,0]
Y = Pop[i,1]

if ((X<-1) or (X> 2)) or ((Y<-1) or (Y> 2)):


Fitness.append(0)
else:
Fitness.append(1/(4+(X*np.sin(4*np.pi*X))-Y*np.sin(4*np.pi*Y+np.pi)+1))

return Fitness

def Selecao(Pop,Num_Selecao,Num_por_Torneio):
N = np.size(Pop, 0)
Torneio = np.round(-0.5 + N * np.random.rand(Num_Selecao, Num_por_Torneio))
Torneio = Torneio.astype(int)
Campeoes = -100*np.ones((Num_Selecao,2))

Fitness_Pop = np.array(Fitness(Pop))

for i in range(len(Torneio)):
Fitness_Candidatos = Fitness_Pop[Torneio[i]]
Aux = np.where(Fitness_Candidatos == np.max(Fitness_Candidatos))
Campeao = Pop[Torneio[i,Aux[0][0]]]
Campeoes[i,0] = Campeao[0]
Campeoes[i,1] = Campeao[1]
return Campeoes

def Plotar(Pop):
from mpl_toolkits.mplot3d.axes3d import get_test_data
# This import registers the 3D projection, but is otherwise unused.
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import

# set up a figure twice as wide as it is tall


#fig = plt.figure(figsize=plt.figaspect(0.5))

fig = plt.figure(figsize=(20,10))

ax = fig.add_subplot(1, 2, 1, projection='3d')
ax1 = fig.add_subplot(1, 2, 2)

# plot a 3D surface like in the example mplot3d/surface3d_demo


x = np.linspace(-1, 2, 100)

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 2/38
20/06/2019 Exercício_9.ipynb - Colaboratory

X, Y = np.meshgrid(x, x)

Z = 4 + (X * np.sin(4 * np.pi * X)) - Y * np.sin(4 * np.pi * Y + np.pi) + 1

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,


linewidth=0, antialiased=False)
xs = Pop[:, 0]
ys = Pop[:, 1]
zs = np.array(Fitness(Pop))
ax.scatter(xs, ys, zs, 'k+')
fig.colorbar(surf, shrink=0.5, aspect=10)

Fig_2d = ax1.contourf(X, Y, Z, cmap=cm.coolwarm)


fig.colorbar(Fig_2d, shrink=0.5, aspect=10)
ax1.plot(Pop[:, 0], Pop[:, 1], '+k')

fig.canvas.draw() # Comando que desenha o plot anteriormente descrito.


# Pega a imagem que está no plot e converte para um padrão imagem
image = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')
#Reconfigura o tamanho da Imagem
image = image.reshape(fig.canvas.get_width_height()[::-1] + (3,))

return image

#Caracteristicas do Genetico

Num_Pop = 1000
Dim = 2
Prob_Crossover = 0.5
Prob_Mutacao = 0.1
Desvio = 0.1

Num_Gerações = 10

Pop = -1 + 3*np.random.rand(Num_Pop,Dim)
fig = plt.figure(figsize=plt.figaspect(0.5))
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax1 = fig.add_subplot(1, 2, 2)

imagens = []
for i in range(Num_Gerações):

print('Geração:',i+1)
Imagem_plot = Plotar(Pop)
Filhos = Crossover(Pop,Prob_Crossover)

Pop_PaiseFilhos = np.concatenate((Pop,Filhos))

Pop_Mutante = Mutacao(Pop,Prob_Mutacao,Desvio)

Pop = Selecao(Pop_Mutante,Num_Pop,round(Num_Pop/10))

imagens.append(Imagem_plot)

print(len(imagens))
imageio.mimsave('gdrive/My Drive/Exercício_9/GIF_GA.gif', imagens, fps=1)

print( os.listdir('gdrive/My Drive/Exercício_9') )

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 3/38
20/06/2019 Exercício_9.ipynb - Colaboratory

Geração: 1
Geração: 2
Geração: 3
Geração: 4
Geração: 5
Geração: 6
Geração: 7
Geração: 8
Geração: 9
Geração: 10
10
['GIF_GA.gif', 'GIF_zeros.gif', 'GIF_GA_altera.gif', 'GIF_zeros_altera.gif']

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 4/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 5/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 6/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 7/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 8/38
20/06/2019 Exercício_9.ipynb - Colaboratory

Achar os zeros da função Objetivo


# Função Zeros para achar os zeros da função objetivo

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 9/38
20/06/2019 Exercício_9.ipynb - Colaboratory
def Zeros(Pop):
Zeros = []
for i in range(len(Pop)):

X = Pop[i,0]
Y = Pop[i,1]

if ((X<-1) or (X> 2)) or ((Y<-1) or (Y> 2)):


Zeros.append(0)
else:
fob = 4+(X*np.sin(4*np.pi*X))-Y*np.sin(4*np.pi*Y+np.pi)+1
Zeros.append(np.max(fob) - np.abs(fob))

return Zeros

def Selecao(Pop,Num_Selecao,Num_por_Torneio):
N = np.size(Pop, 0)
Torneio = np.round(-0.5 + N * np.random.rand(Num_Selecao, Num_por_Torneio))
Torneio = Torneio.astype(int)
Campeoes = -100*np.ones((Num_Selecao,2))

Fitness_Pop = np.array(Zeros(Pop))

for i in range(len(Torneio)):
Fitness_Candidatos = Fitness_Pop[Torneio[i]]
Aux = np.where(Fitness_Candidatos == np.max(Fitness_Candidatos))
Campeao = Pop[Torneio[i,Aux[0][0]]]
Campeoes[i,0] = Campeao[0]
Campeoes[i,1] = Campeao[1]
return Campeoes

def Plotar(Pop):
from mpl_toolkits.mplot3d.axes3d import get_test_data
# This import registers the 3D projection, but is otherwise unused.
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import

# set up a figure twice as wide as it is tall


#fig = plt.figure(figsize=plt.figaspect(0.5))

fig = plt.figure(figsize=(20,10))

ax = fig.add_subplot(1, 2, 1, projection='3d')
ax1 = fig.add_subplot(1, 2, 2)

# plot a 3D surface like in the example mplot3d/surface3d_demo


x = np.linspace(-1, 2, 100)

X, Y = np.meshgrid(x, x)

Z = 4 + (X * np.sin(4 * np.pi * X)) - Y * np.sin(4 * np.pi * Y + np.pi) + 1

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,


linewidth=0, antialiased=False)
xs = Pop[:, 0]
ys = Pop[:, 1]
zs = np.array(Zeros(Pop))
ax.scatter(xs, ys, zs, 'k+')
fig.colorbar(surf, shrink=0.5, aspect=10)

Fig_2d = ax1.contourf(X, Y, Z, cmap=cm.coolwarm)


fig.colorbar(Fig_2d, shrink=0.5, aspect=10)
ax1.plot(Pop[:, 0], Pop[:, 1], '+k')

fig.canvas.draw() # Comando que desenha o plot anteriormente descrito.


# Pega a imagem que está no plot e converte para um padrão imagem.
image = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')
#Reconfigura o tamanho da Imagem
image = image.reshape(fig.canvas.get_width_height()[::-1] + (3,))

return image
Pop = -1 + 3*np.random.rand(Num_Pop,Dim)
fig = plt.figure(figsize=plt.figaspect(0.5))

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 10/38
20/06/2019 Exercício_9.ipynb - Colaboratory
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax1 = fig.add_subplot(1, 2, 2)

imagens = []
for i in range(Num_Gerações):

Imagem_plot = Plotar(Pop)
Filhos = Crossover(Pop,Prob_Crossover)

Pop_PaiseFilhos = np.concatenate((Pop,Filhos))

Pop_Mutante = Mutacao(Pop,Prob_Mutacao,Desvio)

Pop = Selecao(Pop_Mutante,Num_Pop,round(Num_Pop/10))

imagens.append(Imagem_plot)

imageio.mimsave('gdrive/My Drive/Exercício_9/GIF_zeros.gif', imagens, fps=1)

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 11/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 12/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 13/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 14/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 15/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 16/38
20/06/2019 Exercício_9.ipynb - Colaboratory

Desempenho do algoritmo depois de alterar os


parâmetros
def Crossover(Pop, Prob_Crossover):
N = np.size(Pop,0)
Dim = np.size(Pop,1)
Pais = np.round(-0.5 + N * np.random.rand(N, 2))
Filhos = Pop
for i in range(np.size(Pais,0)):

if np.random.rand(1) < Prob_Crossover:


Pai_1 = Pop[int(Pais[i][0])]
Pai_2 = Pop[int(Pais[i][1])]
if len(Filhos) ==0:
Filhos = np.random.rand(1)*(Pai_1-Pai_2)+Pai_2
else:
Filho = np.random.rand(1) * (Pai_1 - Pai_2) + Pai_2
Filhos[i,0] = Filho[0]
Filhos[i,1] = Filho[1]

return Filhos

def Mutacao(Pop,PropMutacao,Desvio):
N = np.size(Pop, 0)
Mutantes = Pop

for i in range(np.size(Mutantes,0)):
if np.random.rand(1)< PropMutacao:
Mutantes[i,0] = Mutantes[i,0] + Desvio*np.random.randn(1)
Mutantes[i,1] = Mutantes[i,1] + Desvio * np.random.randn(1)

return Mutantes

def Fitness(Pop):
Fitness = []
for i in range(len(Pop)):

X = Pop[i,0]
Y = Pop[i,1]

if ((X<-1) or (X> 2)) or ((Y<-1) or (Y> 2)):


Fitness.append(0)
else:
Fitness.append(1/(4+(X*np.sin(4*np.pi*X))-Y*np.sin(4*np.pi*Y+np.pi)+1))

return Fitness

def Selecao(Pop,Num_Selecao,Num_por_Torneio):
N = np.size(Pop, 0)
Torneio = np.round(-0.5 + N * np.random.rand(Num_Selecao, Num_por_Torneio))
Torneio = Torneio.astype(int)
Campeoes = -100*np.ones((Num_Selecao,2))

Fitness_Pop = np.array(Fitness(Pop))

for i in range(len(Torneio)):
Fitness_Candidatos = Fitness_Pop[Torneio[i]]
Aux = np.where(Fitness_Candidatos == np.max(Fitness_Candidatos))
Campeao = Pop[Torneio[i,Aux[0][0]]]
Campeoes[i,0] = Campeao[0]
Campeoes[i,1] = Campeao[1]
return Campeoes

def Plotar(Pop):

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 17/38
20/06/2019 Exercício_9.ipynb - Colaboratory
from mpl_toolkits.mplot3d.axes3d import get_test_data
# This import registers the 3D projection, but is otherwise unused.
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import

# set up a figure twice as wide as it is tall


#fig = plt.figure(figsize=plt.figaspect(0.5))

fig = plt.figure(figsize=(20,10))

ax = fig.add_subplot(1, 2, 1, projection='3d')
ax1 = fig.add_subplot(1, 2, 2)

# plot a 3D surface like in the example mplot3d/surface3d_demo


x = np.linspace(-1, 2, 100)

X, Y = np.meshgrid(x, x)

Z = 4 + (X * np.sin(4 * np.pi * X)) - Y * np.sin(4 * np.pi * Y + np.pi) + 1

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,


linewidth=0, antialiased=False)
xs = Pop[:, 0]
ys = Pop[:, 1]
zs = np.array(Fitness(Pop))
ax.scatter(xs, ys, zs, 'k+')
fig.colorbar(surf, shrink=0.5, aspect=10)

Fig_2d = ax1.contourf(X, Y, Z, cmap=cm.coolwarm)


fig.colorbar(Fig_2d, shrink=0.5, aspect=10)
ax1.plot(Pop[:, 0], Pop[:, 1], '+k')

fig.canvas.draw() # Comando que desenha o plot anteriormente descrito.


# Pega a imagem que está no plot e converte para um padrão imagem.
image = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')
#Reconfigura o tamanho da Imagem
image = image.reshape(fig.canvas.get_width_height()[::-1] + (3,))

return image

# Caracteristicas do Genetico

Num_Pop = 10000
Dim = 2
Prob_Crossover = 0.75
Prob_Mutacao = 0.30
Desvio = 0.1

Num_Gerações = 15

Pop = -1 + 3*np.random.rand(Num_Pop,Dim)
fig = plt.figure(figsize=plt.figaspect(0.5))
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax1 = fig.add_subplot(1, 2, 2)

imagens = []
for i in range(Num_Gerações):

print('Geração:',i+1)
Imagem_plot = Plotar(Pop)
Filhos = Crossover(Pop,Prob_Crossover)

Pop_PaiseFilhos = np.concatenate((Pop,Filhos))

Pop_Mutante = Mutacao(Pop,Prob_Mutacao,Desvio)

Pop = Selecao(Pop_Mutante,Num_Pop,round(Num_Pop/10))

imagens.append(Imagem_plot)

print(len(imagens))
imageio.mimsave('gdrive/My Drive/Exercício_9/GIF_GA_altera.gif', imagens, fps=1)

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 18/38
20/06/2019 Exercício_9.ipynb - Colaboratory
print( os.listdir('gdrive/My Drive/Exercício_9') )

# Função Zeros para achar os zeros da função objetivo


def Zeros(Pop):
Zeros = []
for i in range(len(Pop)):

X = Pop[i,0]
Y = Pop[i,1]

if ((X<-1) or (X> 2)) or ((Y<-1) or (Y> 2)):


Zeros.append(0)
else:
fob = 4+(X*np.sin(4*np.pi*X))-Y*np.sin(4*np.pi*Y+np.pi)+1
Zeros.append(np.max(fob) - np.abs(fob))

return Zeros

def Selecao(Pop,Num_Selecao,Num_por_Torneio):
N = np.size(Pop, 0)
Torneio = np.round(-0.5 + N * np.random.rand(Num_Selecao, Num_por_Torneio))
Torneio = Torneio.astype(int)
Campeoes = -100*np.ones((Num_Selecao,2))

Fitness_Pop = np.array(Zeros(Pop))

for i in range(len(Torneio)):
Fitness_Candidatos = Fitness_Pop[Torneio[i]]
Aux = np.where(Fitness_Candidatos == np.max(Fitness_Candidatos))
Campeao = Pop[Torneio[i,Aux[0][0]]]
Campeoes[i,0] = Campeao[0]
Campeoes[i,1] = Campeao[1]
return Campeoes

def Plotar(Pop):
from mpl_toolkits.mplot3d.axes3d import get_test_data
# This import registers the 3D projection, but is otherwise unused.
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import

# set up a figure twice as wide as it is tall


#fig = plt.figure(figsize=plt.figaspect(0.5))

fig = plt.figure(figsize=(20,10))

ax = fig.add_subplot(1, 2, 1, projection='3d')
ax1 = fig.add_subplot(1, 2, 2)

# plot a 3D surface like in the example mplot3d/surface3d_demo


x = np.linspace(-1, 2, 100)

X, Y = np.meshgrid(x, x)

Z = 4 + (X * np.sin(4 * np.pi * X)) - Y * np.sin(4 * np.pi * Y + np.pi) + 1

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,


linewidth=0, antialiased=False)
xs = Pop[:, 0]
ys = Pop[:, 1]
zs = np.array(Zeros(Pop))
ax.scatter(xs, ys, zs, 'k+')
fig.colorbar(surf, shrink=0.5, aspect=10)

Fig_2d = ax1.contourf(X, Y, Z, cmap=cm.coolwarm)


fig.colorbar(Fig_2d, shrink=0.5, aspect=10)
ax1.plot(Pop[:, 0], Pop[:, 1], '+k')

fig.canvas.draw() # Comando que desenha o plot anteriormente descrito.


# Pega a imagem que está no plot e converte para um padrão imagem.
image = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')
#Reconfigura o tamanho da Imagem
image = image.reshape(fig.canvas.get_width_height()[::-1] + (3,))

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 19/38
20/06/2019 Exercício_9.ipynb - Colaboratory
return image
Pop = -1 + 3*np.random.rand(Num_Pop,Dim)
fig = plt.figure(figsize=plt.figaspect(0.5))
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax1 = fig.add_subplot(1, 2, 2)

imagens = []
for i in range(Num_Gerações):

Imagem_plot = Plotar(Pop)
Filhos = Crossover(Pop,Prob_Crossover)

Pop_PaiseFilhos = np.concatenate((Pop,Filhos))

Pop_Mutante = Mutacao(Pop,Prob_Mutacao,Desvio)

Pop = Selecao(Pop_Mutante,Num_Pop,round(Num_Pop/10))

imagens.append(Imagem_plot)

imageio.mimsave('gdrive/My Drive/Exercício_9/GIF_zeros_altera.gif', imagens, fps=1)

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 20/38
20/06/2019 Exercício_9.ipynb - Colaboratory

Geração: 1
Geração: 2
Geração: 3
Geração: 4
Geração: 5
Geração: 6
Geração: 7
Geração: 8
Geração: 9
Geração: 10
Geração: 11
Geração: 12
Geração: 13
Geração: 14
Geração: 15
15
['GIF_GA.gif', 'GIF_zeros.gif', 'GIF_GA_altera.gif', 'GIF_zeros_altera.gif']
/usr/local/lib/python3.6/dist-packages/matplotlib/pyplot.py:514: RuntimeWarning: M
max_open_warning, RuntimeWarning)

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 21/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 22/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 23/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 24/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 25/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 26/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 27/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 28/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 29/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 30/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 31/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 32/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 33/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 34/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 35/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 36/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 37/38
20/06/2019 Exercício_9.ipynb - Colaboratory

https://colab.research.google.com/drive/1i4ezWLNM3lNRPsHSlBhgWPJ3sarLwUPA#scrollTo=-2RG9AFn7o2t&printMode=true 38/38

Você também pode gostar