You are on page 1of 5

ESCUELA POLITCNICA DEL EJRCITO CTEDRA DE CONTROL INTELIGENTE ALGORITMOS GENTICOS: INTRODUCCIN, Y EJERCICIOS DE CREACIN (Realizado por David

Espinosa) Consideraciones previas En cuanto al estudio de la teora del Control Inteligente, los Algoritmos Genticos se constituyen en un captulo aparte. Entendindose como Algoritmo Gentico al proceso de optimizacin de un determinado problema, emulando el proceso de evolucin natural, es evidente que en tanto ms veces se ejecute este algoritmo, la probabilidad de que un determinado individuo sea la solucin ms ptima tiende a ser del 100%. En este punto, se generalizarn los problemas de optimizacin en problemas de optimizacin de calidad y costo. Es evidente que un producto de mayor calidad (producto cualquiera) es mejor, y por ello, se busca su mximo valor. En contraposicin, un producto de menor costo es muy deseable, y por ello, se busca minimizar este valor. En consecuencia, cualquier problema que busque maximizar un valor se conocer como un problema de optimizacin de calidad, y el problema que busque la minimizacin de otro valor se conocer como un problema de optimizacin de costo. Por correspondencia directa, todas aquellas variables que sea necesario aumentar se conocern como variables de calidad, y las variables que se deseen reducir se conocern como variables de costo.

Funcionamiento de un algoritmo gentico bsico A lo largo del proceso evolutivo cada individuo se caracteriza un cdigo gentico. A cada cdigo gentico se conoce como genotipo. En cuanto a los algoritmos genticos, cada individuo se convierte en una solucin potencial al problema de optimizacin pendiente. La funcin que expresa al problema de optimizacin se le conoce como funcin objetivo. Para emular al problema de evolucin, se presentan varios pasos a completarse, donde cada uno de ellos tiene un algoritmo propio. Estos pasos son: Creacin: Se genera aleatoriamente la poblacin inicial, que est constituida por un conjunto de cromosomas los cuales representan las posibles soluciones del problema. Generalmente se hace de forma aleatoria, pero de no hacerlo, se debe garantizar que no exista convergencia prematura, de manera que la optimizacin sea adecuada. Seleccin: Cada uno de los individuos son evaluados, y solo los ms aptos sobreviven. Reproduccin: Comprende la transmisin de las caractersticas de padres a hijos, garantizando la aptitud del individuo ante condiciones que sus engendradores ya pasaron antes. Mutacin: Modifica al azar parte del cromosoma de los individuos, y permite alcanzar zonas del espacio de bsqueda que no estaban cubiertas por los individuos de la poblacin actual. Normalmente los individuos no estn tan bien adaptados, aunque eventualmente se producen individuos mucho mejor adaptados.
# GENERACIONES POB POB SI

CREACIN

SELECCIN

REPRODUCCIN

MUTACIN
NO

PTIMO?

FIN

GENERACIN++

Primeros pasos: Ejercicios de creacin Para comenzar a tomar prctica en cuanto a la manipulacin de algoritmos genticos, se proponen tres ejercicios bsicos. El primer ejercicio, consiste en la creacin de un programa que sirva para codificar una posible solucin a un cdigo binario, donde 0.1<x<1.0. Este cdigo tiene una longitud de n bits, ingresada por el usuario.

El cdigo propuesto es el que se muestra a continuacin.

xinicial=0.1;xfinal=1.0;fin=[]; nbit=input('ingrese numero de bits ='); aux=0;opc='y'; incremento=((xfinal-xinicial)/(2^nbit-1)); for y=xinicial:incremento:xfinal aux=aux+1; if(aux==1) xmin1=xinicial; xmax1=xinicial+incremento; else xmin1=xmax1; xmax1=xmin1+incremento; end

% # bits de la conversion % Variables auxiliares

divd=aux-1; % Segmento de conversion a binario mat=zeros(1,nbit); if(divd==0) % Excepcion: conversion del 0 mat(1,1)=0; end if(divd==1) % Excepcion: conversion del 1 mat(1,1)=1; end if(divd>1) % Conversion normal en otro caso res=0;cont=0; while(divd>=2) cont=cont+1; res=rem(divd,2); mat(1,cont)=res; divd=floor(divd/2); if(divd<2) mat(1,cont+1)=rem(divd,2); break; end end end mat=fliplr(mat) xmn(aux,1)=xmin1; xmx(aux,1)=xmax1; if(xmx(aux,1)>xfinal) xmx(aux,1)=xfinal; end auxi(aux,1)=aux; fin=[fin mat'];

% Invierte al arreglo % Establece minimo para esta iteracion % Establece maximo para esta iteracion

% Matriz de "vectores binarios" % Matriz final de "vectores binarios" % Verificacion automatica

end fin=fin'; [xmn xmx fin]

Hasta este punto, se tienen los siguientes resultados:

Pero es necesario confirmar que en efecto funciona el cdigo, ingresando un valor cualquiera de x, dentro del rango 0.1<x<1.0, y comprobando que en efecto, le asigna un cdigo binario diferente para cada caso. Se aade al cdigo:
while(opc=='y') % Ingreso de "x" para verificacion manual x=input('Inserte el valor de x que desea convertir a decimal: '); if(x<xfinal) for t=1:aux if((x>=xmn(t,1))&&(x<xmx(t,1))) r=fin(t,:) end end else r=fin(aux,:) end opc=input('\nPresione "y" para continuar consultando, "n" para terminar: ','s'); end

Y se tienen los siguientes resultados:

Y si observamos la tabla inicial, se observa que en efecto, la asignacin del cdigo es correcta:

Se presiona n para terminar el programa. El segundo ejercicio consiste en lo contrario al ejercicio 1, el usuario ingresar un vector fila de 0 y 1, y el programa detectar una correspondencia de este cdigo en el intervalo comprendido entre 0.1<x<1.0.

Se plantea para el efecto, el siguiente cdigo:


xinicial=0.1;xfinal=1.0;fin=[]; xb=input('codigo binario =') nbits=length(xb); pesos=nbits-1:-1:0; mpesos=2.^pesos; aux=xb.*mpesos; xa=sum(aux); x=xinicial+(xfinal-xinicial)/(2^nbits-1)*xa

% Equivalente binario % Valor en 0.1<x<1.0

Y se tienen los siguientes resultados:

Y el tercer ejercicio consiste en la generacin de una matriz de 5 filas, donde cada una de ellas se compone de: ( Donde )

Se plantea para el efecto, el siguiente cdigo:


for i=1:5 for j=1:8 num(j)=round(rand(1)); end nbits=length(num); pesos=nbits-1:-1:0; mpesos=2.^pesos; aux=num.*mpesos; xa=sum(aux); x=xinicial+(xfinal-xinicial)/(2^nbits-1)*xa; fx=(sin(10*x))^2/(1+x); num(9)=x;num(10)=fx; fin=[fin num']; end fin=fin'

La matriz solucin es fin. Las primeras 8 columnas consisten en el cdigo binario generado aleatoriamente en el programa (se ha escogido 8 digitos para la generacin de los nmeros binarios). La novena columna es el valor resultante de la conversin del cdigo binario, al valor entre 0.1 y 1.0, y la dcima columna es el valor f(x). Los resultados que se obtienen son:

Se observa que los ejercicios han funcionado de la forma esperada.

You might also like