azevedolab.net 2018 Dr. Walter F. de Azevedo Jr.

Tamanho: px
Começar a partir da página:

Download "azevedolab.net 2018 Dr. Walter F. de Azevedo Jr."

Transcrição

1 azevedolab.net 2018 Dr. Walter F. de Azevedo Jr.

2 Reerências No algoritmo genético, a geração aleatória de indivíduos de uma dada população é uma etapa de importância undamental. Esse processo é chamado de inicialização na igura abaixo. Com a biblioteca NumPy, temos a possibilidade de ixarmos uma semente aleatória, para garantir que os números aleatórios iniciais sejam mantidos, para uma dada semente aleatória. Initialização 2

3 Números Pseudo-aleatórios Para deinição da semente aleatória, usamos o comando abaixo. No exemplo abaixo, a semente aleatória é um número inteiro atribuído à variável seed_in. np.random.seed(seed_in) A linha acima deve ser inserida antes da geração do número aleatório. Por exemplo, o código abaixo (random_with_seed.py) gera um número aleatório entre 0 e 9. # Import library import numpy as np # Set up seed np.random.seed(31415) # Generate random number rs = np.random.randint(0,9) print(rs) Veja que a deinição da semente aleatório aparece antes da deinição do número aleatório, que ocorre na linha rs = np.random.randint(0,9). 3

4 Números Pseudo-aleatórios O código random_loop.py repete a geração de número aleatório dentro de um loop or, como mostrado abaixo. # Import library import numpy as np # Loop or generation o random numbers or i in range(10): # Set up seed np.random.seed(31415) # Generate random number rs = np.random.randint(0,9) print(rs) Abaixo temos o resultado obtido com o programa random_loop.py. Anterior a geração do número aleatório em cada iteração, temos a ixação da semente aleatória. O resultado é que temos sempre o mesmo número gerado

5 Números Pseudo-aleatórios Colocando-se a linha da semente aleatória como comentário no código random_loop.py, os números passam a variar. # Import library import numpy as np # Loop or generation o random numbers or i in range(10): # Set up seed # np.random.seed(31415) # Generate random number rs = np.random.randint(0,9) print(rs) Como não temos semente aleatória, o código gera números distintos, como podemos ver no resultado abaixo

6 Números Pseudo-aleatórios Abaixo temos o código do novo método para gerar strings binárias com semente. A principal novidade é que temos um atributo do objeto para a semente, atribuído à variável sel.seed_in. Essa variável é usada na linha np.random.seed(sel.seed_in). de gen_bin_string_seed(sel): """Method to generate binary strings""" # Import library import numpy as np # Set up seed or random number np.random.seed(sel.seed_in) # Set up arrays o zeros sel.max_array = np.zeros(sel.max_iter) sel.mean_array = np.zeros(sel.max_iter) # Set up empty list bin_str_list = [] # Generate binary string or i in range(sel.pop_size): bin1 = np.random.randint(2,size=sel.len_str) bin_str0 = str(bin1) bin_str0 = bin_str0.replace(" ","") bin_str0 = bin_str0.replace("[","") bin_str0 = bin_str0.replace("]","") bin_str_list.append(bin_str0) # Update population sel.current_pop = bin_str_list print("\ninitial Population") # Looping through initial population or bin_string in sel.current_pop: print(bin_string) # Binary (2) strings 6

7 Números Pseudo-aleatórios Uma vez estabelecida a semente, os números aleatórios serão mantidos. No inal do método temos um loop or para exibir a população inicial. O método construtor oi modiicado, de orma a acomodar o atributo sel.seed_in. de gen_bin_string_seed(sel): """Method to generate binary strings""" # Import library import numpy as np # Set up seed or random number np.random.seed(sel.seed_in) # Set up arrays o zeros sel.max_array = np.zeros(sel.max_iter) sel.mean_array = np.zeros(sel.max_iter) # Set up empty list bin_str_list = [] # Generate binary string or i in range(sel.pop_size): bin1 = np.random.randint(2,size=sel.len_str) bin_str0 = str(bin1) bin_str0 = bin_str0.replace(" ","") bin_str0 = bin_str0.replace("[","") bin_str0 = bin_str0.replace("]","") bin_str_list.append(bin_str0) # Update population sel.current_pop = bin_str_list print("\ninitial Population") # Looping through initial population or bin_string in sel.current_pop: print(bin_string) # Binary (2) strings 7

8 Números Pseudo-aleatórios Abaixo temos o trecho inicial da deinição da classe com destaque para o método construtor. Vemos em vermelho o texto que oi adicionado à classe Simple_GA02() para a semente aleatória. Também oram adicionados atributos para os valores mínimo e máximo da aixa de loat (sel._min e sel._max). Outro atributo adicionado reere-se ao ator de conversão para o tamanho das tartarugas. Esses atributos serão discutidos nos próximos slides. class Simple_GA02(object): """A class to implement a simple GA""" # Constructor method de init (sel,pop_size,max_iter,p_cross,len_str,p_mut,_min,_max,conv_,seed_in): # Deine atributes sel.pop_size = pop_size sel.max_iter = max_iter sel.p_cross = p_cross sel.len_str = len_str sel.p_mut = p_mut sel._min = _min sel._max = _max sel.conv_ = conv_ sel.seed_in = seed_in # Population size # Number o iterations # Probability o crossover # String length # Probability o mutation_coley_algo_03 # Minimum loat # Maximum loat # Conversion actor # Seed or generation o random numbers 8

9 Números do Tipo Float Nas últimas aulas implementamos o algoritmo 1 de Colley 1999 que acha o máximo da unção x 2 entre os inteiros 0 e Muitos problemas de otimização não se restringe-se ao conjunto dos inteiros. Para apresentarmos a solução do problema de maximização, vamos considerar que a aixa de números está entre 1,25 e 3,14. Os novos números são chamados de loats mínimo e máximo e são representados pelas variáveis min e max. String binária Integers Floats

10 Números do Tipo Float De uma orma geral, podemos dizer que para cada inteiro temos um equivalente loat, colocando em orma matemática temos: min max i i 1 min max Onde os s representam os loats e os i s representam os inteiros. As constantes s são usadas para convertermos de inteiro para loat. Considerando-se que i min = 0 temos: Calculando-se max min chegamos: min 0 max max min min 0 i 1 i max 1 max 1 0 max i max min 10

11 Números do Tipo Float Assim, o loat equivalente () a um inteiro qualquer i é dado por: 0 1i min 1i min max i max min i Agora temos uma equação geral onde podemos obter qualquer loat, a partir do conhecimento da aixa de inteiros que dispomos e da deinição da aixa de loats que queremos analisar. min max i max min i 11

12 Números do Tipo Float Considerando-se uma string binária de l bits, o número inteiro máximo que pode ser representado é dado por: i max 2 l 1 Assim, substituindo-se esse valor na equação do loat, temos: max min min i l

13 Números do Tipo Float Um aspecto importante na aplicação de algoritmos genéticos é a acurácia. Por exemplo, quando consideramos a equivalência entre a aixa de 0 a 4095 com a aixa de 1,25 a 3,14. Vemos que entre dois números consecutivos em decimal, por exemplo, 1000 e 1001, temos os equivalentes em loat: 3,14 1,25 1, , ,14 1,25 1, , Assim, entre 1,7115 e 1,7120 não temos representação loat. Ou seja, temos aproximadamente 0,0005 de acurácia. Uma orma de aumentarmos a acurácia, é aumentando-se o tamanho das strings binárias. Uma orma de calcularmos a acurácia é dividirmos a aixa de loats ( max min ) pela quantidade de inteiros (i max ). 13

14 Números do Tipo Float No novo código, criamos um método para implementar a equação de conversão de inteiro para loat. O novo método é chamado int2loat(). O código está destacado abaixo. Os parâmetros do método trazem o loat mínimo (_min), o loat máximo (_max) e o inteiro a ser convertido (i). Esses valores são usados para o cálculo do que retorna para onde o método oi invocado, dentro do método coley_algo_03(). de int2loat(sel,i): """Method to convert integer to loat""" = sel._min + i*(sel._max - sel._min)/(2**(sel.len_str) -1) return 14

15 Números do Tipo Float Outra modiicação oi na unção show_pop(), que passa a mostrar os valores loats para o indivíduo e a unção ajuste, além da string binária. de show_pop(sel,string2show,pop2show,_in,unction_in): """Method to show population""" # Show inormation concerning the population print("\n"+string2show) # Looping though the elements o the population or i in range(len(pop2show)): print(pop2show[i]," %.3"%_in[i]," %.3"%unction_in[i]) 15

16 Roleta de Cassino O operador seleção que usamos até o momento é relativamente simples de implementar, mas não é o mais comum no estudo de algoritmos genéticos. Uma abordagem mais robusta do operador seleção leva em conta o valor da unção ajuste na seleção, mas não necessariamente elimina indivíduos com os valores mais baixos. Esta abordagem é chamada roleta de cassino

17 Roleta de Cassino A abordagem de roleta de cassino soma todos os valores da unção ajuste e atribui à variável it sum. Então é gerado um número aleatório (r s ) entre zero e it sum. Em seguida um loop vai somando os valores da unção ajuste de cada indivíduo da população, esses valores são somados à variável it partial. Quando a condição it partial.> r s or satiseita, o loop é encerrado e o último indivíduo somado é considerado selecionado para a próxima geração. Esse processo se repete até que a população atinja o número de indivíduos estabelecido para a população r s = 23,546 it partial = 24,955 17

18 Roleta de Cassino Para ilustrar uma iteração do operador seleção com roleta de cassino, considere os valores da unção ajuste mostrados no gráico abaixo. Foi gerado um número aleatório entre zero e soma de todos os valores da unção ajuste (52,739), por exemplo, r s = 23,546. Em seguida somamos os valores de cada unção ajuste e testamos a condição it partial.> r s, quando or satiseita paramos a soma. O indivíduo que gerou o último valor da unção ajuste (6,777) é selecionado r s = 23,546 it partial = 24,955 18

19 Roleta de Cassino Abaixo temos o luxograma do algoritmo 2 de Coley 1999, que implementa a roleta de cassino para seleção de indivíduos. Soma os valores da unção ajuste de todos os indivíduos e atribui à variável it sum it partial.> r s Não Seleciona um número aleatório entre 0 e it sum e atribui à variável r s Soma o valor da unção ajuste à variável it partial Sim Retorna o último indivíduo somado 19

20 Roleta de Cassino Abaixo temos o método roulette_wheel(). Inicialmente somamos os valores da unção ajuste de todos os indivíduos e atribuímos à variável it_sum. de roulette_wheel(sel): """Method or application o roulette wheel to a population""" # Import library import numpy as np # Sum itness unction vaules it_sum = np.sum(sel.it) # Set up empty list new_pop = [] # Looping through all individuals or j in range(sel.pop_size): # Generate random number rs =np.random.uniorm(0,it_sum) # Set up initial value or it_partial it_partial = 0 # Looping through inidividual until it_partial > rs or i in range(sel.pop_size): it_partial += sel.it[i] # Check i condition is satisied i it_partial > rs: new_pop.append(sel.current_pop[i]) break # Update population sel.current_pop = new_pop 20

21 Roleta de Cassino Agora dentro de um loop or, geramos uma número aleatório entre zero e a soma dos valores da unção ajuste e atribuímos à variável rs. de roulette_wheel(sel): """Method or application o roulette wheel to a population""" # Import library import numpy as np # Sum itness unction vaules it_sum = np.sum(sel.it) # Set up empty list new_pop = [] # Looping through all individuals or j in range(sel.pop_size): # Generate random number rs =np.random.uniorm(0,it_sum) # Set up initial value or it_partial it_partial = 0 # Looping through inidividual until it_partial > rs or i in range(sel.pop_size): it_partial += sel.it[i] # Check i condition is satisied i it_partial > rs: new_pop.append(sel.current_pop[i]) break # Update population sel.current_pop = new_pop 21

22 Roleta de Cassino Esse primeiro loop or varre toda população. Interno ao primeiro loop, temos um segundo loop or para realizarmos a unção da roleta de cassino. de roulette_wheel(sel): """Method or application o roulette wheel to a population""" # Import library import numpy as np # Sum itness unction vaules it_sum = np.sum(sel.it) # Set up empty list new_pop = [] # Looping through all individuals or j in range(sel.pop_size): # Generate random number rs =np.random.uniorm(0,it_sum) # Set up initial value or it_partial it_partial = 0 # Looping through inidividual until it_partial > rs or i in range(sel.pop_size): it_partial += sel.it[i] # Check i condition is satisied i it_partial > rs: new_pop.append(sel.current_pop[i]) break # Update population sel.current_pop = new_pop 22

23 Roleta de Cassino No segundo loop vamos somando os valores da unção ajuste até que este ultrapasse o número aleatório rs. Ao passar, adicionamos o último elemento à nova população. de roulette_wheel(sel): """Method or application o roulette wheel to a population""" # Import library import numpy as np # Sum itness unction vaules it_sum = np.sum(sel.it) # Set up empty list new_pop = [] # Looping through all individuals or j in range(sel.pop_size): # Generate random number rs =np.random.uniorm(0,it_sum) # Set up initial value or it_partial it_partial = 0 # Looping through inidividual until it_partial > rs or i in range(sel.pop_size): it_partial += sel.it[i] # Check i condition is satisied i it_partial > rs: new_pop.append(sel.current_pop[i]) break # Update population sel.current_pop = new_pop 23

24 Roleta de Cassino O processo é repetido até que a nova população, atribuída à variável new_pop, volte a ter o número original de indivíduos. Por último, a população é atualizada. de roulette_wheel(sel): """Method or application o roulette wheel to a population""" # Import library import numpy as np # Sum itness unction vaules it_sum = np.sum(sel.it) # Set up empty list new_pop = [] # Looping through all individuals or j in range(sel.pop_size): # Generate random number rs =np.random.uniorm(0,it_sum) # Set up initial value or it_partial it_partial = 0 # Looping through inidividual until it_partial > rs or i in range(sel.pop_size): it_partial += sel.it[i] # Check i condition is satisied i it_partial > rs: new_pop.append(sel.current_pop[i]) break # Update population sel.current_pop = new_pop 24

25 Elitismo O uso da roleta no operador seleção pode levar a perda do melhor indivíduo de uma dada geração. Assim, é comum usarmos a opção de elitismo no algoritmo genético. Com elitismo o melhor indivíduo do operador seleção é salvo e mantido para próxima geração. Abaixo temos o método elitism(). Nesse método identiicamos o maior valor da unção ajuste na linha max_it = np.max(my_array). de elitism(sel): """Method or elitism""" # Import libraries import numpy as np import test_unction as t # Call bin2dec_array() dec = sel.bin2dec_array(sel.current_pop) # Call int2loat() my_loat = sel.int2loat(dec) # Instantiating an object o the Function() class and assigns it to the variable it0 it0 = t.function(my_loat) # Invoking the itness_unct() method my_it = it0.itness_unc() # Set up an array my_array = np.array(my_it) # Find the maximum or the itness unction and assigns it to max_it max_it = np.max(my_array) # Set up an empty list new_pop = [] # Find the position or the max_it in the my_array pos_array = np.where( my_array == max_it) # Get the integer or index my_index = int(pos_array[0][0]) # Assign elite member to sel.elite sel.elite = sel.current_pop[my_index] # Show elite member print("elite member: ", sel.elite, max_it 25

26 Elitismo O valor atribuído à variável max_it é usado para identiicar o índice do elemento do array que tem o máximo. Isso é eito em pos_array = np.where( my_array == max_it). Como podemos ter mais de um índice com o máximo, é atribuído à variável pos_array um array, onde nos interessa só uma das posições. Na linha my_index = int(pos_array[0][0]) atribuímos o índice do elemento máximo à variável my_index. de elitism(sel): """Method or elitism""" # Import libraries import numpy as np import test_unction as t # Call bin2dec_array() dec = sel.bin2dec_array(sel.current_pop) # Call int2loat() my_loat = sel.int2loat(dec) # Instantiating an object o the Function() class and assigns it to the variable it0 it0 = t.function(my_loat) # Invoking the itness_unct() method my_it = it0.itness_unc() # Set up an array my_array = np.array(my_it) # Find the maximum or the itness unction and assigns it to max_it max_it = np.max(my_array) # Set up an empty list new_pop = [] # Find the position or the max_it in the my_array pos_array = np.where( my_array == max_it) # Get the integer or index my_index = int(pos_array[0][0]) # Assign elite member to sel.elite sel.elite = sel.current_pop[my_index] # Show elite member print("elite member: ", sel.elite, max_it 26

27 Elitismo Agora obtemos elemento elite com a linha sel.elite = sel.current_pop[my_index]. Essa variável será usada no método include_elite. de elitism(sel): """Method or elitism""" # Import libraries import numpy as np import test_unction as t # Call bin2dec_array() dec = sel.bin2dec_array(sel.current_pop) # Call int2loat() my_loat = sel.int2loat(dec) # Instantiating an object o the Function() class and assigns it to the variable it0 it0 = t.function(my_loat) # Invoking the itness_unct() method my_it = it0.itness_unc() # Set up an array my_array = np.array(my_it) # Find the maximum or the itness unction and assigns it to max_it max_it = np.max(my_array) # Set up an empty list new_pop = [] # Find the position or the max_it in the my_array pos_array = np.where( my_array == max_it) # Get the integer or index my_index = int(pos_array[0][0]) # Assign elite member to sel.elite sel.elite = sel.current_pop[my_index] # Show elite member print("elite member: ", sel.elite, max_it 27

28 Elitismo O método include_elite() usa o elemento sel.elite para substituir um elemento aleatório da população. Assim garantimos que o elemento elite está na população ao inal da geração. O método include_elite() será evocado logo após a evocação do método do operador mutação. de include_elite(sel): """Method to include elite member in the current population""" # Import library import numpy as np # Generate random number rs = np.random.randint(0,sel.pop_size) # Set up empty list new_pop = [] # Looping through population and change or elite meber at random position or i in range(sel.pop_size): i i!= rs: new_pop.append(sel.current_pop[i]) else: new_pop.append(sel.elite) # Update current_pop 28 sel.current_pop = new_pop

29 Elitismo Nesse método geramos um número aleatório entre zero e o tamanho da população e atribuímos à variável rs. Em seguida criamos uma lista vazia que é atribuída à variável new_pop. Na sequência, temos um loop or que varre a população e testa se o índice do elemento da população é dierente do número interior aleatório. Se or mantém o elemento, caso contrário o elemento é substituído pelo elemento elite. Por último, a população é atualizada, garantindo-se a presença do elemento elite. de include_elite(sel): """Method to include elite member in the current population""" # Import library import numpy as np # Generate random number rs = np.random.randint(0,sel.pop_size) # Set up empty list new_pop = [] # Looping through population and change or elite meber at random position or i in range(sel.pop_size): i i!= rs: new_pop.append(sel.current_pop[i]) else: new_pop.append(sel.elite) # Update current_pop 29 sel.current_pop = new_pop

30 Turtle Algoritmo do Programa lga01.py Gera uma população aleatória de strings binárias (sel.gen_bin_strings_seed()) Ordena aleatoriamente os pais (sel.shule()) Converte cada string binária em um número decimal (sel.bin2dec_array()) Aplica cruzamento de um ponto (sel.single_point_crossover() Atingiu o número máximo de iterações? Não Converte de inteiro decimal para loat (sel.int2loat()) Operador mutação (sel. mutation_coley_algo_03) Sim Calcula a unção ajuste para cada indivíduo (it1.itness_unc()) Troca elemento aleatório pelo elemento elite (sel.include_elite()) Retorna os resultados Identiica o elemento elite (sel.elitism()) Seleciona a população usando a roleta de cassino (sel.roulette_wheel() ) 30

31 = sel.x**2 # [1.25,3.14] conv_actor = 0.45 max = return Função Teste Até agora implementamos um algoritmo genético para achar o máximo da unção (x) = x 2, uma unção relativamente simples. Normalmente as unções para os quais estamos interessados em achar o mínimo ou o máximo são mais complexas. A im de padronizar testes de eiciência de algoritmos de otimização, são usadas unções matemáticas que apresentam maiores variações. Há diversas unções que são consideradas padrões para testes, principalmente para unções de mais de uma variável. Iremos aqui parte nos restringir a unções de uma variável. Para acilitar a codiicação, criamos uma classe a parte do código lga01.py onde está implementada a unção ajuste. Abaixo temos o código test_unction.py. A linha em vermelho traz a codiicação da unção (x) = x 2, que é a nossa unção teste. Resumindo, usamos como unção ajuste uma unção teste, como objetivo de avaliar o desempenho do algoritmo. class Function(object): """Class to calculate an one-variable mathematical unction""" de init (sel,x): sel.x = x # Deinition o itness_unc() de itness_unc(sel): """Method to calculate itness unction""" import numpy as np

32 Função Teste Abaixo temos o gráico de algumas unções que podem ser implementadas em test_unction.py. 2 2 ( x) x ( x) 6x x ( x) 7x x 2 12 ( x) x 2.sin( x) 32

33 Turtle lga01.py Usamos os seguintes parâmetros para o programa lga01.py. pop_size = 8 # Population size max_iter = 25 # Number o iterations p_cross = 0.8 # Probability o crossover len_str = 12 # Length o strings p_mut = 0.01 # Probability o mutation_coley_algo_03 seed = # Seed or generation o random number min_ = 0.0 # Minimum loat max_ = # Maximum loat conv_actor = # Conversion actor (itness unction to dimensions) Foi usada a seguinte unção teste, (x) = x 2.sin(x), com intervalo entre 0 e

34 Turtle lga01.py Abaixo temos os resultados obtidos com os parâmetros do slide anterior para o programa lga01.py. Population or generation

35 Turtle lga01.py O melhor resultado é obtido para x = , que é o máximo indicado na unção abaixo. Population or generation x =

36 Projeto 1 Projeto 1 - Algoritmo Genético Programa: lga02.py Data de entrega:

37 Projeto 1 Modiique o código do programa lga01.py, de orma que o programa leia os parâmetros do algoritmo genético a partir de uma arquivo de entrada (lga.in). O arquivo de entrada deve ter as seguintes inormações: pop_size max_iter p_cross len_str p_mut seed min_ max_ conv_actor elitism_in draw_turtle plot_unc Os parâmetros elitism_in, draw_turtle e plot_unc são variáveis booleanas que podem ser True ou False. O parâmetro elitism_in indica se o elitismo será considerado. O parâmetro draw_turtle é uma variável booleana e indica se as tartarugas serão desenhadas ou não. O último parâmetro (plot_unc) indica se será gerado o gráico da unção ajuste. Esses três últimos parâmetros não estão no código lga01.py e devem ser incorporados no novo código. 37

38 Projeto 1 Além disso, o novo código irá gerar um arquivo lga.log com as inormações de cada geração (população, valor em loat e valor da unção ajuste). É similar ao que o programa lga01.py mostra na tela para cada geração, só que agora será gravado num arquivo.log. No inal do arquivo lga.log, deve ser gravada uma linha com as inormações do melhor indivíduo (string binária, valor em loat e valor da unção ajuste). O programa também gera um arquivo CSV, chamado lga.csv, com as seguintes inormações: Generation Elite Member Mean Fitness Function Maximum Fitness Function... O novo programa deve chamar-se lga02.py e tem que ser testado para as seguintes unções: ( x) x 2, no intervalo [1.25, 3.14] e conv_actor = 0.45, ( x) 6x x 2, no intervalo [0, 6], e conv_actor = 0.45, ( x) 7x x 2 12, no intervalo [0, 6] e conv_actor = 0.6, ( x) x 2.sin( x), no intervalo [0, 100] e conv_actor =

39 Projeto 1 O programa deve ser entregue até o dia com um relatório sucinto descrevendo o desempenho do programa com as unções descritas no slide anterior. Devem ser testados diversos valores dos parâmetros de entrada do arquivo lga.in. Procurem o conjunto de parâmetros que gerem os melhores resultados para a localização do máximo das unções descritas no slide anterior. 39

40 Lista de Programas de Aula 05 A seguir temos a lista de programas da presente aula. Lista de programas: hexadec.py lga01.py random_loop.py random_with_seed.py test_unction.py touche.py 40

41 Colophon This text was produced in a HP Pavillon dm4 notebook with 6GB o memory, a 500 GB hard disk, and an Intel Core i7 M GHz running Windows 7 Proessional. Text and layout were generated using PowerPoint Turtles drawings on slides 2 and 34 were generated with Turtle library. Plots on slides 32, 34, and 35 were generated by Matplotlib. The pizza charts on slides 16, 17, and 18 were generated with Excel The image on the irst slide was taken rom on April 11, This text uses Arial ont. 41

42 Reerências -BRESSERT, Eli. SciPy and NumPy. Sebastopol: O Reilly Media, Inc., p. Link -DAWSON, Michael. Python Programming, or the Absolute Beginner. 3ed. Boston: Course Technology, p. -COLEY, David A. An Introduction to Genetic Algorithms or Scientists and Engineers. Singapore: World Scientiic Publishing Co. Pte. Ltd., p. -EIBEN, A. E., SMITH, J. E. Introduction to Evolutionary Computing. Natural Computing Series. 2nd ed. Berlin: Springer- Verlag, p. Link -HACKELING G. Mastering Machine Learning with scikit-learn. Birmingham: Packt Publishing Ltd., p. Link -HETLAND, Magnus Lie. Python Algorithms. Mastering Basic Algorithms in the Python Language. 2ed. Nova York: Springer Science+Business Media LLC, p. Link -IDRIS, Ivan. NumPy 1.5. An action-packed guide dor the easy-to-use, high perormance, Python based ree open source NumPy mathematical library using real-world examples. Beginner s Guide. Birmingham: Packt Publishing Ltd., p. Link -LUTZ, Mark. Programming Python. 4ed. Sebastopol: O Reilly Media, Inc., p. Link -TOSI, Sandro. Matplotlib or Python Developers. Birmingham: Packt Publishing Ltd., p. Link Última atualização: 11 de abril de

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 1 Algoritmo Genético Vimos anteriormente um algoritmo genético simples para resolução de um problema de maximização. O algoritmo visa encontrar o maior

Leia mais

Vimos na aula passada um algoritmo genético simples para resolver o problema do máximo da função x 2. Veremos sua implementação em Python.

Vimos na aula passada um algoritmo genético simples para resolver o problema do máximo da função x 2. Veremos sua implementação em Python. azevedolab.net Implementação de um Algoritmo Genético Simples Vimos na aula passada um algoritmo genético simples para resolver o problema do máimo da função. Veremos sua implementação em Python. Gera

Leia mais

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 1 Programação Orientada a Objeto Iremos ver o uso da abordagem de programação orientada a objeto (object-oriented programming (OOP)). Nosso objetivo é usar

Leia mais

2016 Dr. Walter F. de Azevedo Jr.

2016 Dr. Walter F. de Azevedo Jr. 2016 Dr. Walter F. de Azevedo Jr. > 1 Download do pyzo A partir do pyzo (disponível em http:///), o processo de instalação do Python fica facilitado. A instalação integra, além do Python, um conjunto de

Leia mais

2016 Dr. Walter F. de Azevedo Jr.

2016 Dr. Walter F. de Azevedo Jr. 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

2016 Dr. Walter F. de Azevedo Jr. > >

2016 Dr. Walter F. de Azevedo Jr. > > 2016 Dr. Walter F. de Azevedo Jr. > > 1 Download do eclipse www.eclipse.org Antes de fazer o download do eclipse, certifique-se que você tem o Java (JDK) instalado no seu computador. Vá ao site www.eclipse.org.

Leia mais

2016 Dr. Walter F. de Azevedo Jr.

2016 Dr. Walter F. de Azevedo Jr. 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

2017 Dr. Walter F. de Azevedo Jr.

2017 Dr. Walter F. de Azevedo Jr. 2017 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 1 Turtle A biblioteca Turtle permite a partir de poucos comandos realizarmos desenhos de formas geométricas simples na tela. Não é objetivo da presente

Leia mais

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Arrays

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Arrays azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Arrays 1 Programa: flying_saucer0.pde FlyingSaucer mysaucer; float speed; float score; // Declares an object // speed of flying saucer // score void setup()

Leia mais

Bioinformática Aplicada

Bioinformática Aplicada 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000 000000000111111111111111111111111000000

Leia mais

2017 Dr. Walter F. de Azevedo Jr.

2017 Dr. Walter F. de Azevedo Jr. 01 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Programação Orientada a Objetos em Processing

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Programação Orientada a Objetos em Processing azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Programação Orientada a Objetos em Processing 1 Programação Orientada a Objeto O uso de programação orientada a objeto (POO) não irá introduzir necessariamente

Leia mais

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 1 Introdução às Expressões Booleanas Circuitos digitais encontrados nos processadores são baseados num formalismo matemático chamado Álgebra de Boole. Não

Leia mais

2016 Dr. Walter F. de Azevedo Jr. azevedolab.net

2016 Dr. Walter F. de Azevedo Jr. azevedolab.net 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000000000000000010000000000000 000000000000000000000111111111100000000 000000000000000000001111110000000000110

Leia mais

1. Computação Evolutiva

1. Computação Evolutiva Computação Bioinspirada - 5955010-1 1. Computação Evolutiva Prof. Renato Tinós Programa de Pós-Graduação Em Computação Aplicada Depto. de Computação e Matemática (FFCLRP/USP) 2 Computação Bioinspirada

Leia mais

Exemplo de Aplicação de Algoritmos Genéticos. Prof. Juan Moisés Mauricio Villanueva cear.ufpb.br/juan

Exemplo de Aplicação de Algoritmos Genéticos. Prof. Juan Moisés Mauricio Villanueva cear.ufpb.br/juan Exemplo de Aplicação de Algoritmos Genéticos Prof. Juan Moisés Mauricio Villanueva jmauricio@cear.ufpb.br cear.ufpb.br/juan Estrutura do Algoritmo Genético Algoritmo genético Inicio t = 0 inicializar P(t)

Leia mais

2015 Dr. Walter F. de Azevedo Jr.

2015 Dr. Walter F. de Azevedo Jr. 2015 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:

Leia mais

2016 Dr. Walter F. de Azevedo Jr. azevedolab.net

2016 Dr. Walter F. de Azevedo Jr. azevedolab.net 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000000000000000010000000000000 000000000000000000000111111111100000000 000000000000000000001111110000000000110

Leia mais

Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28

Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28 Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28 Tipos de Dados Dados Numéricos Números Inteiros: Int/Long Ponto Flutuante: Float Números Complexos: Complex

Leia mais

Integração numérica. Prof. Luiz T. F. Eleno. Departamento de Engenharia de Materiais Escola de Engenharia de Lorena Universidade de São Paulo

Integração numérica. Prof. Luiz T. F. Eleno. Departamento de Engenharia de Materiais Escola de Engenharia de Lorena Universidade de São Paulo Integração numérica Prof. Luiz T. F. Eleno Departamento de Engenharia de Materiais Escola de Engenharia de Lorena Universidade de São Paulo 2018 LOM3260 (EEL-USP, 2018) Integração numérica Prof. Luiz T.

Leia mais

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 09 Strings, Leitura e Escrita de Arquivos (continuação)

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 09 Strings, Leitura e Escrita de Arquivos (continuação) azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 09 Strings, Leitura e Escrita de Arquivos (continuação) 1 Programa read_fasta_01.pde Exercício de programação: Elabore um programa que leia um arquivo

Leia mais

GAs são indicados em problemas complexos de otimização- onde se busca uma solução melhor:

GAs são indicados em problemas complexos de otimização- onde se busca uma solução melhor: Componentes de um Algoritmo Genético 1. Problema 2. Representação 3. Decodificação 4. Avaliação 5. Operadores 6. Técnicas 7. Parâmetros 1. PROBLEMA GAs são indicados em problemas complexos de otimização-

Leia mais

COMPUTAÇÃO E PROGRAMAÇÃO

COMPUTAÇÃO E PROGRAMAÇÃO COMPUTAÇÃO E PROGRAMAÇÃO º Semestre 205/206 MEMec, LEAN Ficha da Aula Prática 3: Estruturas de repetição. Sumário das tarefas e objectivos da aula:. Estruturas de repetição controladas por contador 2.

Leia mais

ACH5531 Introdução à Computação Estruturas de repetição

ACH5531 Introdução à Computação Estruturas de repetição ACH5531 Introdução à Computação Estruturas de repetição Prof. Dr. Grzegorz Kowal grzegorz.kowal@usp.br https://sites.google.com/usp.br/ach5531 1 o sem 2019 sexta-feira, 14h00-15h45 CB, Bloco 3, 2 o andar,

Leia mais

Python - Comandos de Repetição

Python - Comandos de Repetição Python - Comandos de Repetição Prof. Paulo H R Gabriel (com base no material do Prof. André Backes) Um conjunto de comandos de um algoritmo pode ser repetido quando subordinado a uma condição: enquanto

Leia mais

Um sistema de numeração posicional utiliza um conjunto de símbolos. O valor que cada

Um sistema de numeração posicional utiliza um conjunto de símbolos. O valor que cada APÊNDICE B Sistema de Numeração Posicional Um sistema de numeração posicional utiliza um conjunto de símbolos O valor que cada símbolo representa, no entanto, depende do seu valor nominal e do valor posicional,

Leia mais

ESTUDO DO EFEITO DOS PARÂMETROS GENÉTICOS DE UM ALGORITMO GENÉTICO NA SOLUÇÃO OTIMIZADA E NO TEMPO DE CONVERGÊNCIA EM UMA FUNÇÃO DE DUAS VARIÁVEIS

ESTUDO DO EFEITO DOS PARÂMETROS GENÉTICOS DE UM ALGORITMO GENÉTICO NA SOLUÇÃO OTIMIZADA E NO TEMPO DE CONVERGÊNCIA EM UMA FUNÇÃO DE DUAS VARIÁVEIS ESTUDO DO EFEITO DOS PARÂMETROS GENÉTICOS DE UM ALGORITMO GENÉTICO NA SOLUÇÃO OTIMIZADA E NO TEMPO DE CONVERGÊNCIA EM UMA FUNÇÃO DE DUAS VARIÁVEIS Marcelo Henrique dos Santos Universidade de Uberaba, Engenharia

Leia mais

1. Computação Evolutiva

1. Computação Evolutiva Computação Bioinspirada - 5955010-1 1. Computação Evolutiva Prof. Renato Tinós Programa de Pós-Graduação Em Computação Aplicada Depto. de Computação e Matemática (FFCLRP/USP) 2 Computação Bioinspirada

Leia mais

GAs são indicados em problemas complexos de otimização- onde se busca uma solução melhor:

GAs são indicados em problemas complexos de otimização- onde se busca uma solução melhor: Componentes de um Algoritmo Genético 1. Problema 2. Representação 3. Decodificação 4. Avaliação 5. Operadores 6. Técnicas 7. Parâmetros 1. PROBLEMA GAs são indicados em problemas complexos de otimização-

Leia mais

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 08 Strings, Leitura e Escrita de Arquivos

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 08 Strings, Leitura e Escrita de Arquivos azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 08 Strings, Leitura e Escrita de Arquivos 1 Classe String Em Python não precisamos definir o tipo da variável, já em Processing temos que definir os

Leia mais

Cursos: Análise, Ciência da Computação e Sistemas de Informação Laboratório I - Prof. Aníbal Notas de aula 2 SISTEMAS NUMÉRICOS

Cursos: Análise, Ciência da Computação e Sistemas de Informação Laboratório I - Prof. Aníbal Notas de aula 2 SISTEMAS NUMÉRICOS Cursos: Análise, Ciência da Computação e Sistemas de Informação Laboratório I - Prof. Aníbal Notas de aula 2 SISTEMAS NUMÉRICOS Para entender como o computador armazena as informações, é importante conhecer

Leia mais

Algoritmos Genéticos

Algoritmos Genéticos Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Algoritmos Genéticos Aluno: Fabricio Aparecido Breve Prof.: Dr. André Ponce de Leon F. de Carvalho São Carlos São Paulo Maio

Leia mais

2016 Dr. Walter F. de Azevedo Jr.

2016 Dr. Walter F. de Azevedo Jr. 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

Computação e Programação 2009 / 2010

Computação e Programação 2009 / 2010 Computação e Programação 2ª Aula de Problemas Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Exercícios Resolvidos [Livro 1] (Ver referências no slide 20) 3.3 Write a program to convert

Leia mais

Aula 7 Estruturas de Repetição Cleverton Hentz

Aula 7 Estruturas de Repetição Cleverton Hentz Aula 7 Estruturas de Repetição Cleverton Hentz Sumário de Aula Estruturas de Repetições while do for 2 Introdução Nesta aula iremos introduzir outra tipo de estrutura importante na descrição de um algoritmos,

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 2: Revisão dos itens básicos O objetivo desta aula é revisar os conceitos envolvidos na abordagem da Programação Estruturada. Representações

Leia mais

Prof. Marco Aurélio C. Pacheco. 1. Problema 2. Representação 3. Decodificação 4. Avaliação 5. Operadores 6. Técnicas 7. Parâmetros

Prof. Marco Aurélio C. Pacheco. 1. Problema 2. Representação 3. Decodificação 4. Avaliação 5. Operadores 6. Técnicas 7. Parâmetros Desenvolvimento de um Algoritmo Genético Prof. Marco Aurélio C. Pacheco 1 Componentes de um Algoritmo Genético 1. Problema 2. Representação 3. Decodificação 4. Avaliação 5. Operadores 6. Técnicas 7. Parâmetros

Leia mais

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ ALGORITMOS GENÉTICOS. Metaheurísticas de Buscas

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ ALGORITMOS GENÉTICOS. Metaheurísticas de Buscas PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ ALGORITMOS GENÉTICOS Metaheurísticas de Buscas ALGORITMOS GENÉTICOS (AG) Popularizados por John Holland podem ser considerados os primeiros modelos algorítmicos

Leia mais

1. Computação Evolutiva

1. Computação Evolutiva Computação Bioinspirada - 5955010-1 1. Computação Evolutiva Prof. Renato Tinós Programa de Pós-Graduação Em Computação plicada Depto. de Computação e Matemática (FFCLRP/USP) 2 Computação Bioinspirada -

Leia mais

Relatório de pesquisa sobre o procedimento de otimização de modelos no Activate

Relatório de pesquisa sobre o procedimento de otimização de modelos no Activate Relatório de pesquisa sobre o procedimento de otimização de modelos no Activate 1 Introdução Esse trabalho tem por objetivo apresentar o bloco de otimização BobyqaOpt, suas funcionalidades, parâmetros

Leia mais

Computação 1 - Python Aula 7 - Teórica: Estrutura de Repetição com teste de parada: while 1/ 23

Computação 1 - Python Aula 7 - Teórica: Estrutura de Repetição com teste de parada: while 1/ 23 Computação 1 - Python Aula 7 - Teórica: Estrutura de Repetição com teste de parada: while 1/ 23 Permite que o programador especifique que o programa deve repetir um conjunto de comandos enquanto uma dada

Leia mais

Fundamentos Programação

Fundamentos Programação Fundamentos Programação A programação de computadores não é difícil. Realmente só requer algo como: Aprender alguns conceitos gerais Ser cuidadoso, organizado e lógico Praticar até aprender a dominar a

Leia mais

LOM3260 Computação científica em Python Informações sobre o curso

LOM3260 Computação científica em Python Informações sobre o curso LOM3260 Computação científica em Python Informações sobre o curso Prof. Luiz T. F. Eleno Departamento de Engenharia de Materiais Escola de Engenharia de Lorena Universidade de São Paulo 2018 LOM3260 (EEL-USP,

Leia mais

2019 Dr. Walter F. de Azevedo Jr.

2019 Dr. Walter F. de Azevedo Jr. 2019 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

Codificação das variáveis: binária Iniciação da população: aleatória Avaliação: função aptidão Operadores. Critério de parada: número de gerações

Codificação das variáveis: binária Iniciação da população: aleatória Avaliação: função aptidão Operadores. Critério de parada: número de gerações AG Simples/Canônico (AGS) AG introduzido por Holland Funciona bem para problemas de otimização simples e/ou de pequenas dimensões A maior parte da teoria dos AGs está baseada no AGS Utilidade didática

Leia mais

IF-705 Automação Inteligente Algoritmos Evolucionários

IF-705 Automação Inteligente Algoritmos Evolucionários IF-705 Automação Inteligente Algoritmos Evolucionários Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática - CIn Departamento de Sistemas da Computação aluizioa@cin.ufpe.br

Leia mais

Computação e Programação

Computação e Programação Computação e Programação 10ª Aula de Problemas Tópicos Avançados sobre Funções Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Problema 1 3. The velocity of sound in air is 49.02xT^(1/2)

Leia mais

PHP INTRODUÇÃO DELIMITADORES DE CÓDIGO EXTENSÃO DE ARQUIVOS

PHP INTRODUÇÃO DELIMITADORES DE CÓDIGO EXTENSÃO DE ARQUIVOS INTRODUÇÃO PHP Aula 1 Introdução, Saída e Variáveis Leonardo Pereira facebook.com/leongamerti PHP significa PHP: Hypertext Preprocessor. Código PHP é executado no servidor, e o resultado é retornado para

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para

Leia mais

Informática II Cap. 4-2

Informática II Cap. 4-2 Cap. 4-2 1 Estruturas de Controlo O VBA tem diversas estruturas de controlo que podemos utilizar para controlar o fluxo de execução dos programas (procedimento ou conjunto de procedimentos que participam

Leia mais

Otimização com Algoritmos Evolutivos

Otimização com Algoritmos Evolutivos Otimização com Algoritmos Evolutivos Francisco Pereira (xico@dei.uc.pt) ELBCE 2016 (Setembro 2016) Resumo Problem Optimization Method Solution } Algoritmos Evolutivos } Propriedades e funcionamento } Exemplos

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 09 Programação Funcional (Haskell) Edirlei Soares de Lima Programação Funcional A programação funcional modela um problema computacional

Leia mais

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva Computação Evolutiva Algoritmos Genéticos A computação evolutiva (CE) é uma área da ciência da computação que abrange modelos computacionais inspirados na Teoria da Evolução das Espécies, essencialmente

Leia mais

4. Constantes. Constantes pré-definidas

4. Constantes. Constantes pré-definidas 4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.

Leia mais

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015 PRIMEIROS PASSOS COM PYTHON Prof. Msc. Luis Filipe Alves Pereira 2015 PRIMEIROS PASSOS COM PYTHON 02/47 O QUE É PYTHON? Python é uma linguagem de propósito geral, de alto nível e interpretada Python será

Leia mais

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc. O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO Prof. Angelo Augusto Frozza, M.Sc. ROTEIRO 1. A linguagem de programação Object Pascal a) Palavras reservadas b) Tipos de dados, variáveis e constantes

Leia mais

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um

Leia mais

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes CI208 - Programação de Computadores Aula 12: Funções Prof. MSc. Diego Roberto Antunes diegor@inf.ufpr.br www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas Departamento de Informática

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Algoritmos de busca Basicamente podem ser citadas duas estratégias para procurar (ou buscar) algo em uma coleção de dados: Busca

Leia mais

Simulação: Pseudoaleatoriedade, um estudo sobre o método do meio do quadrado

Simulação: Pseudoaleatoriedade, um estudo sobre o método do meio do quadrado Simulação: Pseudoaleatoriedade, um estudo sobre o método do meio do quadrado João Ferreira da Silva Júnior 1, Sérgio Francisco Tavares de Oliveira Mendonça 1, Edson Alves de Carvalho Júnior 2 1 Unidade

Leia mais

Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO

Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO AULA 06 Algoritmos Genéticos Sumário Introdução Inteligência Artificial (IA) Algoritmos Genéticos Aplicações de

Leia mais

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Definição de Funções em Processing

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Definição de Funções em Processing azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Definição de Funções em Processing 1 Programa flying_saucer01.pde O programa flying_saucer01.pde traz um jogo simples que simula a queda de um disco voador.

Leia mais

NESSES SLIDES, VOCÊ VAI APRENDER: Configuração de ambiente Variáveis Operadores Ambiguidade Condições e Laços

NESSES SLIDES, VOCÊ VAI APRENDER: Configuração de ambiente Variáveis Operadores Ambiguidade Condições e Laços MÓDULO II NESSES SLIDES, VOCÊ VAI APRENDER: Configuração de ambiente Variáveis Operadores Ambiguidade Condições e Laços SIGA OS PRÓXIMOS PASSOS: 1. INSTALAÇÃO PYTHON : ESCOLHA A VERSÃO MAIS ATUAL E ESTÁVEL

Leia mais

Otimização. Algoritmos Genéticos. Teoria da Evolução. Otimização

Otimização. Algoritmos Genéticos. Teoria da Evolução. Otimização Algoritmos Genéticos Otimização São técnicas de busca e otimização. É a metáfora da teoria da evolução das espécies iniciada pelo Fisiologista e Naturalista inglês Charles Darwin. Desenvolvido por John

Leia mais

Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10

Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10 Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10 Estrutura de Repetição while Estrutura que permite a repetição de um conjunto de comandos. Até o momento vimos o while: while

Leia mais

2019 Dr. Walter F. de Azevedo Jr.

2019 Dr. Walter F. de Azevedo Jr. 2019 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

Aula 7. Aula de hoje. Aula passada

Aula 7. Aula de hoje. Aula passada Aula 7 Aula passada Método de Monte Carlo Estimando somatórios Calculando erro Estimando Erro de Integração de Monte Carlo Monte Carlo Ray Tracing Aula de hoje Gerando amostras de v.a. discretas Gerando

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for

Leia mais

Computação 1 - Python Aula 7 - Teórica Estrutura de Repetição com Teste de Parada: while. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Computação 1 - Python Aula 7 - Teórica Estrutura de Repetição com Teste de Parada: while. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18 Computação 1 - Python Aula 7 - Teórica Estrutura de Repetição com Teste de Parada: while 1/ 18 Permite que o programador especifique que a função deve repetir um conjunto de comandos enquanto uma dada

Leia mais

Estudo da influência de elitismo e mutação em algoritmos genéticos

Estudo da influência de elitismo e mutação em algoritmos genéticos https://eventos.utfpr.edu.br//sicite/sicite2017/index Estudo da influência de elitismo e mutação em algoritmos genéticos RESUMO Amanda Gabriele Mello amanda.mello1030@gmail.com Universidade Tecnológica

Leia mais

VHDL Circuitos Combinacionais

VHDL Circuitos Combinacionais VHDL Circuitos Combinacionais Neste módulo será feita uma revisão de circuitos combinacionais introduzindose alternativas representações em VHDL Uma descrição VHDL, de forma geral, pode seguir uma das

Leia mais

PROBLEMAS DE OPTIMIZAÇÃO

PROBLEMAS DE OPTIMIZAÇÃO PROBLEMAS DE OPTIMIZAÇÃO EXTREMOS: MÁXIMOS E MÍ IMOS As questões de optimização estão relacionados com a escolha da melhor alternativa para a resolução de um problema com base em critérios particulares.

Leia mais

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são: Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.

Leia mais

Aula 7 Oficina de Programação Estruturas de Repetição no C. Profa. Elaine Faria UFU

Aula 7 Oficina de Programação Estruturas de Repetição no C. Profa. Elaine Faria UFU Aula 7 Oficina de Programação Estruturas de Repetição no C Profa. Elaine Faria UFU - 2017 Aula de Hoje Estruturas de repetição: do while while for Introdução Apresentar as estruturas de repetição do while,

Leia mais

INTRODUÇÃO À INTELIGÊNCIA COMPUTACIONAL. Aula 06 Prof. Vitor Hugo Ferreira

INTRODUÇÃO À INTELIGÊNCIA COMPUTACIONAL. Aula 06 Prof. Vitor Hugo Ferreira Universidade Federal Fluminense Escola de Engenharia Departamento de Engenharia Elétrica INTRODUÇÃO À INTELIGÊNCIA COMPUTACIONAL Aula 06 Prof. Vitor Hugo Ferreira Representação por cromossomos Codificação

Leia mais

SISEE. Genetic Algorithms MEE

SISEE. Genetic Algorithms MEE Genetic Algorithms MEE Algoritmos Genéticos Os Algoritmos Genéticos trabalham com populações de soluções que são combinadas para obter novas soluções, e assim sucessivamente até obter uma solução satisfatória.

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 5 Estruturas de Repetição Profa. Marina Gomes marinagomes@unipampa.edu.br 26/04/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje Estrutura de repetição Comando for

Leia mais

Técnicas de Inteligência Artificial

Técnicas de Inteligência Artificial Universidade do Sul de Santa Catarina Ciência da Computação Técnicas de Inteligência Artificial Aula 9 Algoritmos Genéticos Max Pereira Algoritmos Genéticos Algoritmos Genéticos São técnicas de busca e

Leia mais

Simples Experimentos com Algoritmos Genéticos

Simples Experimentos com Algoritmos Genéticos Simples Experimentos com Algoritmos Genéticos Ronie Miguel Uliana Universidade Presbiteriana Mackenzie, ronie.uliana@gmail.com Resumo Esse trabalho analisa o efeito da aplicacão de diferentes valores nos

Leia mais

Programando em Ada95

Programando em Ada95 Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Telecomunicações Programando em Ada95 Lucas Cordeiro lucascordeiro@ufam.edu.br Instalação do compilador Ada95 Verifique

Leia mais

Programação de Computadores II Aula 03. Linguagem C I

Programação de Computadores II Aula 03. Linguagem C I Programação de Computadores II Slides cedidos por Karina Mochetti 2018.1 C vs Python Python é uma linguagem muito mais nova, de 1991. C é muito mais eciente, os programas rodam mais rápido. Seu objetivo

Leia mais

Refinamentos sucessivos

Refinamentos sucessivos Refinamentos sucessivos Objetivos: Estudar a técnica de refinamentos sucessivos Jogo: 2048 Implementaremos o jogo 2048, com o objetivo de estudar a manipulação dos elementos de uma matriz Utilizaremos

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 14 de Junho de 2018 1 λ-cálculo 2 Computabilidade Computabilidade é uma área de estudo central da Ciência da Computação. Ela estuda a possibilidade

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

MCG126 Programação de Computadores II

MCG126 Programação de Computadores II MCG126 Programação de Computadores II Turmas: A e B Professor: Isac Mendes Lacerda (Material original cedido gentilmente pela professora Janaína Gomide) 1 Bibliografia 2 Bibliografia Introdução à Programação

Leia mais

PHP: Arrays na prática

PHP: Arrays na prática PHP: Arrays na prática Função count() Essa função conta os valores do Array. Não é soma dos valores, mas sim a quantidade de elementos contidos no array. 1 2 3 4 5

Leia mais

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Variáveis e Entrada de Dados Marco André Lopes Mendes  marcoandre.googlepages. Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre@ifc-araquari.edu.br marcoandre@gmail.com marcoandre.googlepages.com Algoritmos é a base Primeiro programa Este programa possui apenas uma

Leia mais

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes CIV 2802 Sistemas Gráficos para Engenharia 2011.1 4º Trabalho: Programação básica em C++: Classes Implementação de uma calculadora RPN (Reversed Polish Notation) Entrega: 05/abril/2011 Pede-se complementar

Leia mais

Estruturas de controle no nível de sentença

Estruturas de controle no nível de sentença Estruturas de controle no nível de sentença Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Aula 6 Algoritmos Genéticos M.e Guylerme Velasco Roteiro Introdução Otimização Algoritmos Genéticos Representação Seleção Operadores Geneticos Aplicação Caixeiro Viajante Introdução

Leia mais

Course Review for Midterm Exam 1. Cpt S 223 Fall 2010

Course Review for Midterm Exam 1. Cpt S 223 Fall 2010 Course Review for Midterm Exam 1 Cpt S 223 Fall 2010 1 Midterm Exam 1 When: Friday (10/15) 10:10-11am Where: in class Closed book, closed notes Comprehensive Material for preparation: Lecture slides &

Leia mais

Aula 10 Introdução ao NumPy

Aula 10 Introdução ao NumPy Aula 10 Introdução ao NumPy Gilberto Ribeiro de Queiroz Thales Sehn Körting Fabiano Morelli 16 de Abril de 2018 NumPy - descrição http://www.numpy.org/ NumPy is the fundamental package for scientific computing

Leia mais

Classes e Objetos POO

Classes e Objetos POO Classes e Objetos POO Prof. Marcio Delamaro 1/40 POO (wikipedia) Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which are data structures that contain data,

Leia mais

Kanade-Lucas-Tomasi Tracker

Kanade-Lucas-Tomasi Tracker COPPE-UFRJ Kanade-Lucas-Tomasi Tracker Ricardo Marroquim data entrega: pós-graduação: 18/05/2016 graduação: 27/05/2016 1 NOTAÇÕES Uma imagem é definida como uma função f (x, y), x, y Z, onde f (x, y) :

Leia mais

Funções. Prof. Alberto Costa Neto Programação em Python

Funções. Prof. Alberto Costa Neto Programação em Python Funções Prof. Alberto Costa Neto Programação em Python Passos armazenados (e reusados) def imprimir(): Programa: imprimir() print 'Zip' imprimir() print 'Hello' print 'Fun' def imprimir(): print 'Hello'

Leia mais

IN-1131 Computação Evolucionária. Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática

IN-1131 Computação Evolucionária. Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática IN-1131 Computação Evolucionária Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática aluizioa@cin.ufpe.br Objetivos Este curso visa oferecer introdução abrangente em

Leia mais