toolbox algoritmos geneticos

5
Toolbox de Algoritmos genéticos en MATLAB Pequeño manual Para abrir el toolbox haga clic en el Botón de la esquina inferior izquierda de MATLAB y abra genetic algorithm and Direct Search Saldrá un cuadro en el que ingresaremos los datos correspondientes al problema que deseamos optimizar (que por defecto es para minimizar). En él se ingresan los siguientes datos: (R significa que es requerido obligatoriamente) Fitness function (R) es la función objetivo que se desea minimizar. Esta función se especifica de la forma @objfun, donde objfun.m es un M-file que retorna un escalar. Para crear el M-file, en MATLAB, cree un archivo nuevo tipo .m, y ponga, por ejemplo, las siguientes instrucciones: function y = simple_fitness(x) y = 100 * (x(1)^2 - x(2)) ^2 + (1 - x(1))^2; y sálvelo como simple_fitness.m Para el ejemplo, en Fitness function se pondría @ simple_fitness Number of variables (R) es el número de variables de decisión Constraints Las restricciones pueden ser lineales con signo de desigualdad, lineales con signo de igualdad y no lineales: Linear inequalities de la forma A*x b son definidas por la matriz A y el vector b. Por ejemplo 4X(1) +2X(2) 15, sería A 4 2 1

Upload: kevin-ortega

Post on 11-Aug-2015

781 views

Category:

Documents


0 download

DESCRIPTION

ok

TRANSCRIPT

Page 1: Toolbox Algoritmos Geneticos

Toolbox de Algoritmos genéticos en MATLAB

Pequeño manual

Para abrir el toolbox haga clic en el Botón de la esquina inferior izquierda de MATLAB y abra genetic algorithm and Direct Search

Saldrá un cuadro en el que ingresaremos los datos correspondientes al problema que deseamos optimizar (que por defecto es para minimizar).

En él se ingresan los siguientes datos: (R significa que es requerido obligatoriamente)

Fitness function (R) es la función objetivo que se desea minimizar. Esta función se especifica de la forma @objfun, donde objfun.m es un M-file que retorna un escalar.

Para crear el M-file, en MATLAB, cree un archivo nuevo tipo .m, y ponga, por ejemplo, las siguientes instrucciones:

function y = simple_fitness(x)

y = 100 * (x(1)^2 - x(2)) ^2 + (1 - x(1))^2;

y sálvelo como simple_fitness.m

Para el ejemplo, en Fitness function se pondría @ simple_fitness

Number of variables (R) es el número de variables de decisión

 Constraints

Las restricciones pueden ser lineales con signo de desigualdad, lineales con signo de igualdad y no lineales:

Linear inequalities de la forma A*x ≤ b son definidas por la matriz A y el vector b.

Por ejemplo 4X(1) +2X(2) ≤ 15, sería

A 4 2

B 15

Linear equalities de la forma Aeq*x = beq son definidas por la matriz Aeq y el vector beq.

Bounds son limites de las variables.

Lower = limite mínimo (en forma de vector). Por ejemplo 0 2 significa que X(1) >= 0 y X(2)>=2

1

Page 2: Toolbox Algoritmos Geneticos

Upper = limite máximo (en forma de vector).

Nonlinear constraint function define las restricciones no lineales. Se debe especificar la function de la forma @nonlcon, donde nonlcon.m es un archivo .m que retorna los vectores c y ceq. Las igualdades no lineales son de la forma ceq = 0, y las desigualdades son de la forma c ≤ 0.

Por ejemplo:

function [C Ceq] = problem_1_RES(x) C = 0.25*x(1)^2 +x(2)^2 - 1; Ceq = x(1) - 2*x(2) + 1;End

y sálvelo como restriccionNL1.m

y luego en Nonlinear constraint function del toolbox se pone:@ restriccionNL1

 Plot Functions

Permite dibujar varias características de los AG a medida que se va ejecutando.

Plot interval especifica el numero de generaciones entre actualizaciones sucesivas de la grafica.

Best fitness dibuja el mejor valor de aptitud versus el numero de iteración.

Best individual dibuja los valores de x del mejor individuo la generación.

Scores grafica los valores de los individuos en cada generación.

Max constraint grafica la máxima violación de la restricción no lineal.

Range grafica los valores de aptitud mínima, máximo y medio en cada generación.

Selection grafica un histograma de los padres.

 Run solver(R)

Para correr el solver haga clic en Start

Options

Permite especificar opciones especiales:

 Population

Population options

2

Page 3: Toolbox Algoritmos Geneticos

Population type especifica el tipo de individuos. Puede ser Double vector, o Bit string, o custom.

Population size especifica cuántos individuos habrá en cada generación

Creation function especifica la función de distribución para crear la población inicial: por defecto crea la población aleatoriamente siguiendo una función uniforme.

 Fitness scaling

Convierte valores de aptitud puros a valores en un rango, que es usado luego por la función de selección.

Scaling function especifica la función que hace el reescalamiento:

Rank reescala con base en el orden (rank) de cada individuo. El orden de cada individuo es su posición en la lista ordenada de aptitudes

Proportional reescala proporcionalmente a los valores de aptitud.

 Selection

Elige padres para la próxima generación con base en sus aptitudes reescaladas:

Roulette simula una ruleta circular con el área de cada segmento proporcional a su aptitud reescalada. Luego usa un número aleatorio para seleccionar una de las secciones con una probabilidad igual a su área.

Tournament selecciona cada padre eligiendo “Tournament size” individuos aleatoriamente y luego eligiendo el mejor individuo de ellos como padre.

 Reproduction

Determina como el AG crea hijos en cada nueva generación

Elite count especifica el numero de individuos que se garantizan para sobrevivir a la próxima generación.

Crossover fraction especifica qué fracción de la próxima generación, aparte de los elitistas, serán producidos por cruzamiento.

 Mutation

Especifica la función que hace la mutación:

Gaussian adiciona un número aleatorio a cada término de un individuo. Este número es tomado de una distribución Gaussiana con media cero y varianza definida en Scale en la primera generación. El parámetro Shrink controla la forma en que la varianza disminuye de generación en generación. Si Shrink =0, la varianza es constante.

3

Page 4: Toolbox Algoritmos Geneticos

Uniform es un proceso de dos pasos. Primero, el algoritmo selecciona una fracción de los genes del vector de un individuo para ser mutados, en la que cada gen tiene la misma probabilidad de ser mutado (según la probabilidad de mutación). En el segundo paso, el algoritmo reemplaza cada gen seleccionado por un número aleatorio seleccionado uniformemente de un rango de entrada.

Adaptive feasible aleatoriamente genera direcciones que se adaptan respecto a los éxitos o fracasos de la ultima generación.

 Crossover

Combina 2 individuos padres para formar un Nuevo hijo para la próxima generación Aquí se especifica la función a usar:

Scattered crea aleatoriamente un vector binario: para cada gen selecciona de cuál padre va a formarse el hijo: si es 1 es del primer padre y si es 0 del Segundo. Por ejemplo,

p1 = [a b c d e f g h] p2 = [1 2 3 4 5 6 7 8] el vector binario = [1 1 0 0 1 0 0 0]

hijo = [a b 3 4 e 6 7 8]

Single point elige aleatoriamente un entero n entre 1 y Number of variables para hacer el corte, y selecciona los genes enumerados menor que o igual a n del primer padre y los demás del segundo padre. Por ejemplo:

p1 = [a b c d e f g h] p2 = [1 2 3 4 5 6 7 8] punto de corte = 3

hijo = [a b c 4 5 6 7 8]

   Stopping criteria

Determina la causa por la que para el algoritmo

Generations especifica el número máximo de iteraciones.

Time limit específica el tiempo máximo de corrida en segundos.

Fitness limit — Si el mejor valor de aptitud es menor que o igual a un valor limite, el algoritmo para.

Stall time limit — Si no hay mejoras en el mejor valor de aptitud por un intervalo de tiempo en segundos, definido por Stall time limit, el algoritmo para.

4