Por ejemplo para la representación de un cromosoma que utiliza una cadena binaria de
| index | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|
| chromosome | 1 | 0 | 0 | 1 | 1 |
nos da un fenotipo
donde
En este ejmplo utilizaremos los siguientes parámetros:
Aquí tienes unas instrucciones para implementar un algoritmo genético simple utilizando una hoja de cálculo:
=RANDBETWEEN(0,1) para simular la selección de padres basada en la probabilidad.=SI(ALEATORIO()<0.5, GenPadre1, GenPadre2) para cada gen.=SI(ALEATORIO()<0.01, 1-GenOriginal, GenOriginal) para invertir el valor de un gen.Al diseñar una estrategia de evolución (ES), Rechenberg y Schwefel utilizan números reales para representar alelos de genes y hacen de la mutación de distribución normal la técnica de exploración más importante en un panorama de soluciones.
Usaremos el mismo ejemplo del ejercicio para explicar esta estrategia.
Supongamos que tenemos
Este operador de cruce se llama cruce intermedio.
En ES, a menudo queremos hacer cambios para cada variable en función de su valor actual. Por lo tanto, solo usamos
donde
import math
import statistics
import random
from pprint import pprint
import numpy as np
import scipy.stats as st
import matplotlib.pyplot as plt
POPULATION_SIZE = 10
SIGMA = 0.15
INTERVAL = (-1, 2)
NUM_CROSSOVER = POPULATION_SIZE * 2
MAXGEN = 10
TRIALS = 20
Algoritmos Evolutivos