Vous êtes sur la page 1sur 4

IMPLEMENTACIN ALGORITMO DE SELECCIN

WILLIAM ANDRS SALAZAR GMEZ


RODRIGO ANTONIO CASTILLO MURILLO
SEBASTIAN FLOREZ

UNIVERSIDAD TECNOLGICA DE PEREIRA


FACULTAD DE INGENIERAS
PROGRAMA DE INGENIERA EN SISTEMAS Y COMPUTACIN
PEREIRA
2016

INTRODUCCIN
Los algoritmos genticos son mtodos adaptativos para resolver problemas de bsqueda y
optimizacin, estos algoritmos se basan en el comportamiento de los organismos del mundo
real o dicho de otra manera, en la naturaleza, por esta misma razn no poseen la capacidad
de dar un solucin exacta a un problema, si no que dan un conjunto de soluciones que se
aproximan cada vez ms al mejor resultado dependiendo de los criterios que utilicemos
para elegir entre todas, por esta razn son meta heursticos.
En este documento se explicar cmo funciona el algoritmo de seleccin mostrar su
respectiva implementacin.
Este algoritmo se inspira en la evolucin natural para resolver problemas de optimizacin
donde se llama poblacin al conjunto de soluciones e individuo a cada una de las
soluciones.
FUNCIONAMIENTO
El algoritmo es un proceso cclico que tiene 4 etapas:
1. Inicializacin: En esta etapa se define el tamao de la poblacin y cada uno de los
individuos se inicializa de manera random.
2. Evaluacin: Se valoran cada uno de los individuos en la poblacin con nuestra
funcin fitness que nico que hace es medir cuan buena es una solucin.
3. Seleccin y reproduccin: Aqu tendremos que escoger los individuos, lo podemos
hacer respecto a la posicin en que estn, entre los ms idneos segn nuestra
funcin fitness o de forma random, dependiendo de la implementacin elegida.
4. Cruce y mutacin: Se mezclan las caractersticas de los individuos escogidos en
la etapa anterior, se puede hacer de forma random o con un modelo predefinido,
una vez se tenga la nueva poblacin se debe tener en cuenta que cada individuo
tiene una probabilidad de mutar y esto implica cambiar sus caractersticas.
Este proceso se repite una cantidad N de generaciones que deben ser especificadas
inicialmente, cuando el algoritmo termina la etapa de cruce y mutacin se cuenta como
una generacin y vuelve a la etapa de evaluacin.

IMPLEMENTACIN

class Ag(object):
"""docstring for Ag"""
def __init__(self):
self.pressure = 3
# Create individual
def create_individual(self,min,max,width):
return[random.randint(min, max) for i in range(width)]
# Create population
def create_population(self,size,width):
return[self.create_individual(0,1,width) for i in range(size)]
# Calculate fitness
def calculate_fitness(self,individual,model):
fitness = 0
for i in range(len(individual)):
if individual[i] == model[i]:
fitness += 1
return fitness
# Selection the best individuals from population
def selection_and_reproduction(self,population,width,model):
marked = [ (self.calculate_fitness(i,model), i) for i in population]
marked = [i[1] for i in sorted(marked)]
population = marked
selected =

marked[(len(marked)-self.pressure):]

for i in range(len(population)-self.pressure):
point = random.randint(1,width-1)
father = random.sample(selected, 2)
population[i][:point] = father[0][:point]
population[i][point:] = father[1][point:]
return population

# Random mutation
def mutation(self,population,width):
for i in range(len(population)-self.pressure):
if random.random() <= 0.2:
point = random.randint(1,width-1)
new_value = random.randint(0,1)
while new_value == population[i][point]:
new_value = random.randint(0,1)
population[i][point] = new_value
return population

Vous aimerez peut-être aussi