Trabajo de Aplicacion de AG
-
Upload
alvaro-daniel-castillo-carrera -
Category
Documents
-
view
740 -
download
0
description
Transcript of Trabajo de Aplicacion de AG
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 0
UNIVERSIDAD CATOLICA DE SANTIAGO DEL ESTEROFACULTAD DE MATEMATICA APLICADA
INGENIERIA EN COMPUTACIONINTELIGENCIA ARTIFICIAL
Dra. Rosanna CostagutaIng. Mariela Gola
Trabajo de Aplicaci�n:Algoritmos Gen�ticos
Dutto, Evelina
- Noviembre 2008 -
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 1
1. IntroducciÄn
Los Algoritmos Gen�ticos son m�todos adaptativos que pueden usarse
para resolver problemas de b�squeda y optimizaci�n. Est�n basados en el
proceso gen�tico de los organismos vivos. A lo largo de las generaciones, las
poblaciones evolucionan en la naturaleza de acorde con los principios de la
selecci�n natural y la supervivencia de los m�s fuertes, postulados por Darwin
(1859). Por imitaci�n de este proceso, los Algoritmos Gen�ticos son capaces de
ir creando soluciones para problemas del mundo real. La evoluci�n de dichas
soluciones hacia valores �ptimos del problema depende en buena medida de
una adecuada codificaci�n de las mismas.
En la naturaleza los individuos de una poblaci�n compiten entre s� en la
b�squeda de recursos tales como comida, agua y refugio. Incluso los miembros
de una misma especie compiten a menudo en la b�squeda de un compa�ero.
Aquellos individuos que tienen m�s �xito en sobrevivir y en atraer compa�eros
tienen mayor probabilidad de generar un gran n�mero de descendientes. Por el
contrario individuos poco dotados producir�n un menor n�mero de
descendientes. Esto significa que los genes de los individuos mejor adaptados
se propagaran en sucesivas generaciones hacia un n�mero de individuos
creciente. La combinaci�n de buenas caracter�sticas provenientes de diferentes
ancestros, puede a veces producir descendientes “s�per individuos", cuya
adaptaci�n es mucho mayor que la de cualquiera de sus ancestros. De esta
manera, las especies evolucionan logrando unas caracter�sticas cada vez mejor
adaptadas al entorno en el que viven.
Los Algoritmos Gen�ticos usan una analog�a directa con el
comportamiento natural. Trabajan con una poblaci�n de individuos, cada uno
de los cuales representa una soluci�n factible a un problema dado. A cada
individuo se le asigna un valor o puntuaci�n, relacionado con la bondad de
dicha soluci�n. En la naturaleza esto equivaldr�a al gradote efectividad de un
organismo para competir por determinados recursos. Cuanto mayor sea la
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 2
adaptaci�n de un organismo al problema, mayor ser� la probabilidad de que el
mismo sea seleccionado para reproducirse, cruzando su material gen�tico con
otro individuo seleccionado de igual forma. Este cruce producir� nuevos
individuos, los cuales comparten algunas caracter�sticas de sus padres. Cuanto
menor sea la adaptaci�n de un individuo, menor ser� la probabilidad de que
dicho individuo sea seleccionado para la reproducci�n, y por lo tanto de que su
material gen�tico se propague en sucesivas generaciones.
De esta manera se produce una nueva poblaci�n de posibles soluciones,
la cual reemplaza a la anterior y verifica la interesante propiedad de que
contiene una mayor proporci�n de buenas caracter�sticas en comparaci�n con la
poblaci�n anterior. As� a lo largo de las generaciones las buenas caracter�sticas
se propagan a trav�s de la poblaci�n. Favoreciendo el cruce de los individuos
mejor adaptados, van siendo exploradas las �reas m�s prometedoras del
espacio de b�squeda. Si el Algoritmo Gen�tico ha sido bien dise�ado, la
poblaci�n converger� hacia una soluci�n �ptima del problema.
El poder de los Algoritmos Gen�ticos proviene del hecho de que se trata
de una t�cnica robusta, y pueden tratar con �xito una gran variedad de
problemas provenientes de diferentes �reas, incluyendo aquellos en los que
otros m�todos encuentran dificultades. Si bien no se garantiza que el Algoritmo
Gen�tico encuentre la soluci�n �ptima del problema, existe evidencia emp�rica
de que se encuentran soluciones de un nivel aceptable, en un tiempo
competitivo con el resto de algoritmos de optimizaci�n combinatoria. El gran
campo de aplicaci�n de los Algoritmos Gen�ticos se relaciona con aquellos
problemas para los cuales no existen t�cnicas especializadas. Incluso en el caso
en que dichas t�cnicas existan, y funcionen bien, pueden efectuarse mejoras de
las mismas combin�ndolas con los Algoritmos Gen�ticos.
La estructura de este trabajo es como sigue: en la siguiente secci�n se
introduce por medio de pseudoc�digo, el denominado Algoritmo Gen�tico
Simple, tambi�n conocido como Algoritmo Gen�tico Can�nico.
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 3
En la posterior secci�n nos preguntamos como saber si es posible la
utilizaci�n de algoritmos gen�ticos frente a determinadas situaciones. A
continuaci�n se redacta la aplicaci�n dise�ada, la problem�tica de origen, la
descripci�n de los elementos utilizados en el desarrollo del algoritmo, se
presentan las diferentes pantallas dise�adas. Finalizo el trabajo con la
demostraci�n del c�digo fuente.
2. Algoritmo GenÅtico Simple
BEGIN
Generar Poblaci�n Inicial
Computar Funci�n de evaluaci�n (Fitness) para cada individuo
WHILE NOT Fin DO
Seleccionar dos individuos de la anterior generaci�n, para el cruce
(probabilidad de selecci�n proporcional a la funci�n de
evaluaci�n del individuo).
Reproducir con cierta probabilidad los dos individuos obteniendo
dos descendientes.
Mutar los descendientes con cierta probabilidad.
Definir nueva generaci�n
Computar Fitness para cada individuo
IF Poblaci�n convergi� THEN Fin IS TRUE
ENDWHILE
END
3. ÇCÄmo saber si es posible usar el Algoritmo GenÅtico?
La aplicaci�n m�s com�n de los algoritmos gen�ticos ha sido la soluci�n
de problemas de optimizaci�n, en donde han mostrado ser muy eficientes y
confiables. Sin embargo, no todos los problemas pueden ser apropiados para la
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 4
t�cnica, y se recomienda en general tomar en cuenta las siguientes
caracter�sticas del mismo antes de intentar usarla:
Su espacio de b�squeda debe estar delimitado dentro de un
cierto rango. Lo m�s recomendable es intentar resolver problemas que tengan
espacios de b�squeda discretos -aunque �stos sean muy grandes-.
Debe poderse definir una funci�n de aptitud que nos indique
qu� tan buena o mala es una cierta respuesta. La funci�n de aptitud no es m�s
que la funci�n objetivo de nuestro problema de optimizaci�n.
Las soluciones deben codificarse de una forma que resulte
relativamente f�cil de implementar en la computadora. La codificaci�n m�s
com�n de las respuestas es a trav�s de cadenas binarias, aunque se han
utilizado tambi�n n�meros reales y letras. El primero de estos esquemas ha
gozado de mucha popularidad debido a que es el que se propuso
originalmente, y adem�s porque resulta muy sencillo de implementar.
4. AplicaciÄn
4.1 ProblemÉtica
La realidad en la que nos vemos inmersos, esta totalmente tecnificada y
demanda a diario nuevas tecnolog�as de desarrollo. As� la inform�tica, en todos
sus �mbitos tanto de dise�o, desarrollo y programaci�n de software, como de
dise�o e implementaci�n de hardware y redes, se abre camino y se vuelve cada
vez m�s indispensable para el �ptimo crecimiento y funcionamiento de las
distintas organizaciones de la comunidad.
Frente a esta situaci�n, hay numerosas personas que se han dedicado al
estudio de esta rama de la ciencia y han adquirido seg�n sus preferencias,
diferentes perfeccionamientos en diversas �reas de la misma,
perfeccionamientos que les permiten el acceso a niveles de vida mas exitosos,
ya que es una actividad por que la que se reciben importantes remuneraciones.
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 5
Al mismo tiempo, la creciente demanda de aplicaciones de software, exige la
creaci�n de organizaciones o empresas dedicadas al dise�o, desarrollo e
implementaci�n de aplicaciones de escritorio y de aplicaciones web.
En base a esta situaci�n, surge la necesidad de la creaci�n de esta
aplicaci�n respaldada por las bondades de los Algoritmos Gen�ticos.
La aplicaci�n mencionada, viene a ayudar a las distintas organizaciones,
en la selecci�n del mejor programador, seg�n las aptitudes que de �l se
requieran, por ejemplo, dise�o de interfaces, capacidad anal�tica, capacidad de
observaci�n, esp�ritu autodidacta, creatividad, originalidad, entre otras.
Adem�s, el algoritmo, a partir del sueldo base que se le asigna al programador
que tenga todas las aptitudes consideradas para esta aplicaci�n, mostrar� el
porcentaje de ese sueldo base a resarcirle al programador seleccionado, y el
correspondiente importe.
4.2 DescripciÄn
A continuaci�n se describen cada uno de los elementos usados en la
construcci�n del algoritmo:
SelecciÄn de la variable de entrada.
En este caso la variable de entrada o cromosoma est� conformada por
diez caracter�sticas (ci) consideradas en un programador tipo, estas son:
Experiencia con el uso de la herramienta
Conocimientos en Bases de Datos
Dise�o de Interfaz
Capacidad Anal�tica
Capacidad de Comprensi�n
Creatividad
Originalidad
Conocimiento de Servidores
Ingl�s T�cnico
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 6
Autodidacta
Al iniciar el algoritmo el usuario deber� asignar una prioridad a estas
caracter�sticas seg�n el puesto en el que ese desarrollar�, as�, la que se encuentre
en la parte superior de la lista obtendr� un ponderador (wi) de valor mayor (10),
y la que se encuentre al final de la lista, tendr� el ponderador de menor valor
(1).
Un programador que re�na la totalidad de las caracter�sticas en el
mercado laboral actual recibe $4000 mensuales. Por cada caracter�stica, se paga
un determinado porcentaje de los $4000 antes mencionados, de esta manera:
Experiencia con el uso de la herramienta 20 %
Conocimientos en Bases de Datos 15 %
Dise�o de Interfaz 13 %
Capacidad Anal�tica 11 %
Capacidad de Comprensi�n 6 %
Creatividad 8 %
Originalidad 6 %
Conocimiento de Servidores 8 %
Ingl�s T�cnico 8 %
Autodidacta 5 %
Al finalizar la ejecuci�n, el algoritmo devolver� las caracter�sticas que
posee el programador seleccionado, el porcentaje del sueldo que le corresponde
recibir por las caracter�sticas que posee, y el importe del mismo.
Por lo tanto, el cromosoma es un vector fila con diez elementos:
Cromosoma= [c1, c2, c3, c4, c5, c6, c7, c8, c9, c10]
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 7
CodificaciÄn de la variable de entrada.
El cromosoma de entrada se inicializa aleatoriamente, mediante
codificaci�n binaria. El valor representa la existencia o no de la caracter�stica,
as�, 1 – posee caracter�stica, 0 – no posee caracter�stica.
TamaÑo de la poblaciÄn.
Una cuesti�n que uno puede plantearse es la relacionada con el tama�o
id�neo de la poblaci�n. Parece intuitivo que las poblaciones peque�as corren el
riesgo de no cubrir adecuadamente el espacio de b�squeda, mientras que el
trabajar con poblaciones de gran tama�o puede acarrear problemas
relacionados con el excesivo costo computacional. Se efectuaron estudios
te�ricos, y se obtuvo como conclusi�n que el tama�o �ptimo de la poblaci�n
para cromosomas de longitud l, con codificaci�n binaria, crece
exponencialmente con el tama�o del cromosoma. Posteriormente, bas�ndose en
evidencia emp�rica se sugiri� que un tama�o de poblaci�n comprendida entre l
y 2l es suficiente para la definici�n del problema.
En base a esto, decid� inicializar la poblaci�n con un a valor de veinte
individuos, para el caso, veinte programadores aspirantes al puesto. Dado que
la longitud del cromosoma utilizado es diez.
FunciÄn de aptitud o de adaptaciÄn (Fitness).
Debe ser dise�ada para cada problema de manera espec�fica. Dado un
cromosoma particular, la funci�n de adaptaci�n le asigna un n�mero real, que
se supone refleja el nivel de adaptaci�n al problema del individuo representado
por el cromosoma.
La funci�n de aptitud utilizada es:
F(x) = ∑ ci * wi ,
… donde wi 1 ≤ i ≤ 10, para i=1 toma valor 10, para i=10 toma valor 1 y ci
representa el valor de la caracter�stica (0/1).
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 8
SelecciÄn.
Una vez calificados todos los individuos de una generaci�n, el algoritmo
debe, al igual que lo hacen la naturaleza y el hombre, seleccionar a los
individuos m�s calificados, mejor adaptados al medio, para que tengan mayor
oportunidad de re-producci�n. De esta forma se incrementa la probabilidad de
tener individuos “buenos” (con alta calificaci�n) en el futuro.
En esta aplicaci�n, los individuos se reproducen mediante la estrategia
de selecci�n directa, despu�s de la calificaci�n se ordenan los individuos de
mayor a menor, seg�n el fitness obtenido, y se reproducir�n de a pares, el de
mayor valor, con el de valor inmediatamente inferior.
Cruce.
El c�digo gen�tico de los padres de un individuo se mezcla para
producir hijos con caracter�sticas de ambos padres, as� la operaci�n de cruce en
esta aplicaci�n se realiza mediante la estrategia destructiva, es decir, los hijos se
insertan en la nueva poblaci�n aunque tengan un fitness menor que el de sus
padres. Los bits elegidos para el cruce son el bits 2 y el bits 7…
Padres
Hijos
Puntos de CruceBits 2 Bits 7
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 9
MutaciÄn.
Ocasionalmente algunos elementos del c�digo de ciertos individuos de
un algoritmo gen�tico se alteran a prop�sito. �stos se seleccionan
aleatoriamente en lo que constituye el s�mil de una mutaci�n. El objetivo es
generar nuevos individuos, que exploren regiones del dominio del problema
que probablemente no se han visitado a�n.
La mutaci�n, produce una variaci�n en la informaci�n gen�tica
contenida en un cromosoma. Generalmente se efect�a a trav�s del cambio de
valor de un gen de 1 por 0, o viceversa, luego de la operaci�n de reproducci�n,
y con una probabilidad de ocurrencia muy baja.
Para esta aplicaci�n especifica, la probabilidad de ocurrencia es de 0.03,
solo mutar� un bit del primer hijo, y el bit a mutar ser� seleccionado
aleatoriamente.
Criterio de fin.
La condici�n de fin establecida para este algoritmo gen�tico, esta
especificada en diez generaciones.
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 10
4.3 PresentaciÄn de Pantallas
Pantalla Principal
Pantalla Acerca De
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 11
Pantalla Algoritmo Gen�tico
Pantalla de Resultados
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 12
4.4 CÄdigo Fuente
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;
namespace WindowsApplication1{
public partial class Form1 : Form{
//TamaÄo de poblacionprivate int POP = 20;//habilidadesprivate int LEN = 10;//Probabilidad de mutacion
//Generacionesprivate double END = 10;
//vector de porcentajes p/c caracteristicaprivate int[] porcentajes = new int[10] { 20, 15, 13, 11, 6, 8, 6, 8, 8, 5 };//genes de 20 programadores por 10 habilidadesprivate int[,] genes = new int[20, 11];
//ramdom para seleccionar los genesRandom rnd = new Random();
//Constructor del programaArray myArr = Array.CreateInstance(typeof(Int32), 2, 3);
private string[] arre = new String[10] { "Experiencia con el Uso de la Herramienta", "Conocimiento en Bases de Datos", "DiseÄo de Interfaz", "Capacidad Analitica", "Capacidad de Compresion", "Creatividad", "Originalidad", "Conocimiento de Servidores", "Ingles Tecnico", "Autodidacta" };
public Form1(){
InitializeComponent();}
private void Form1_Load(object sender, EventArgs e){
enlazarlist(); }
private void enlazarlist(){
this.listBox1.DataSource = arre;}
private void button3_Click(object sender, EventArgs e){
run();}
public void run(){
//******comienza el algoritmo********//inicializamos la poblacioninit_pop();
//comienzan las generacionesfor (int generaciones = 0; generaciones < END; generaciones++){
//tomamos dos miembro de la poblacion, los dos mayoresfitness();reproduccion();
}fitness();
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 13
verfinal();//******Termina el algoritmo********
}
//*****FITNESS*****private void fitness(){
for (byte i = 0; i < POP; i++){
for (byte j = 0; j < LEN; j++){
genes[i, 10] += genes[i, j] * (10 - j);
}
}//terminamos de calcular el fitnes de cada programador//ordenamos segun fitness mayorint arre = 0;for (byte i = 0; i < POP; i++){
for (int k = i + 1; k < POP; k++){
//int k = (i + 1);if (genes[i, 10] < genes[k, 10]){
for (byte j = 0; j < LEN + 1; j++){
arre = genes[i, j];genes[i, j] = genes[k, j];genes[k, j] = arre;
}}
}}
}
private void reproduccion(){
// bits 2 y 7 de cruceint a, b, k;int arre;for (int i = 0; i < POP; i = i + 2){
k = i + 1;//genero los hijosfor (int j = 2; j < LEN - 2 + 1; j++){
arre = genes[i, j];genes[i, j] = genes[k, j];genes[k, j] = arre;
}mutacion(i);
}}
private void mutacion(int hijo1){
int genmuta;double a;genmuta = rnd.Next(9);a = rnd.NextDouble();if (a <= 0.03){
genes[hijo1, genmuta] = 1 - genes[hijo1, genmuta];}
}
private void init_pop(){
//Recorro los programadores - filasfor (int i = 0; i < POP; i++){
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 14
//recorro las habilidades - columnasfor (int j = 0; j < LEN; j++){
//creo valores 0 1 para las habilideesif (rnd.NextDouble() < 0.5){
genes[i, j] = 0;}else{
genes[i, j] = 1;}
}}
}
private void button1_Click(object sender, EventArgs e){
if (this.listBox1.SelectedIndex != 0){
string aux = this.listBox1.Text ;arre[this.listBox1.SelectedIndex] = arre[listBox1.SelectedIndex - 1];arre[listBox1.SelectedIndex - 1]= aux;int aux2 = porcentajes[listBox1.SelectedIndex];porcentajes[listBox1.SelectedIndex] = porcentajes[listBox1.SelectedIndex
- 1];porcentajes[listBox1.SelectedIndex - 1]= aux2;listBox1.DataSource = null;enlazarlist();listBox1.SetSelected(listBox1.SelectedIndex - 1, true);listBox1.Refresh();
}}
private void button2_Click(object sender, EventArgs e){
if (this.listBox1.SelectedIndex < 9){
string aux = this.listBox1.Text;arre[this.listBox1.SelectedIndex] = arre[listBox1.SelectedIndex + 1];arre[listBox1.SelectedIndex + 1] = aux;int aux2 = porcentajes[listBox1.SelectedIndex];porcentajes[listBox1.SelectedIndex] = porcentajes[listBox1.SelectedIndex
+ 1];porcentajes[listBox1.SelectedIndex + 1] = aux2;listBox1.DataSource = null;enlazarlist();listBox1.SetSelected(listBox1.SelectedIndex + 1,true);
}}
private void verfinal(){
LimpiarCheck();int sueldo = 0;for (byte j = 0; j < LEN ; j++)
{if (genes[0, j] ==1){
switch(arre[j]){
case "Experiencia con el Uso de la Herramienta":chkExperiencia.Checked = true; break;
case "Conocimiento en Bases de Datos":chkBaseDatos.Checked=true; break;
case "DiseÄo de Interfaz":chkDiseÄoInterfaz.Checked = true; break;
case "Capacidad Analitica":chkCapacAnalitica.Checked = true; break;
case "Capacidad de Compresion":chkCapacComp.Checked = true; break;
case "Creatividad":
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 15
this.chkCreatividad.Checked = true;break;
case "Originalidad":this.chkOriginalidad.Checked = true;break;
case "Conocimiento de Servidores":this.chkServidores.Checked = true;break;
case "Ingles Tecnico":chkIngles.Checked = true;break;
case "Autodidacta":this.chkAutodidacta.Checked = true;break;
}sueldo += porcentajes[j];
}}this.txtporcentaje.Text = sueldo.ToString() + " %";sueldo = (int)Math.Ceiling( 4000 * sueldo * 0.01);this.txtSueldo.Text = "$ " + sueldo.ToString();MessageBox.Show("El Algoritmo ha finalizado", "Resultados Listos",
MessageBoxButtons.OK, MessageBoxIcon.Information);}
private void LimpiarCheck(){
chkCreatividad.Checked = false;chkAutodidacta.Checked = false;chkBaseDatos.Checked = false;chkCapacAnalitica.Checked = false;chkCapacComp.Checked = false;chkDiseÄoInterfaz.Checked = false;chkExperiencia.Checked = false;chkIngles.Checked = false;chkOriginalidad.Checked = false;chkServidores.Checked = false;
}
private void button1_MouseMove(object sender, MouseEventArgs e){
this.button1.Size = new System.Drawing.Size(61, 56);}
private void button1_MouseLeave(object sender, EventArgs e){
this.button1.Size = new System.Drawing.Size(51, 46);}
private void button2_MouseLeave(object sender, EventArgs e){
this.button2.Size = new System.Drawing.Size(51, 46);}
private void button2_MouseMove(object sender, MouseEventArgs e){
this.button2.Size = new System.Drawing.Size(61, 56);}
private void button3_MouseLeave(object sender, EventArgs e){
this.button3.Size = new System.Drawing.Size(59, 53);}
private void button3_MouseMove(object sender, MouseEventArgs e){
this.button3.Size = new System.Drawing.Size(69, 63);}
private void panel1_Paint(object sender, PaintEventArgs e){
Algoritmos Gen�ticos
Evelina E. Dutto P�gina 16
}
private void acercaDeToolStripMenuItem_Click(object sender, EventArgs e){
Form acerca = new FrmAcerca();acerca.ShowDialog();
}
private void algoritmoToolStripMenuItem_Click(object sender, EventArgs e){
Form algoritmo = new FrmAlgoritmo();algoritmo.ShowDialog();
}}
}
5. Conclusiones
Los Algoritmos Gen�ticos son t�cnicas de gran utilidad en la
optimizaci�n de funciones que son dif�ciles de tratar haciendo uso de las
t�cnicas de optimizaci�n cl�sica.
El Algoritmo Gen�tico desarrollado permiti� encontrar el programador
con fitness m�s alto, devolvi� como respuesta las caracter�sticas que el
“ganador” posee, y el sueldo a abonarle.
Personalmente, el desarrollo de este trabajo me brindo una grata
experiencia, ya que obtuve conocimientos m�s espec�ficos y concretos sobre los
algoritmos gen�ticos.
En este trabajo se introdujo por medio de pseudoc�digo, el denominado
Algoritmo Gen�tico Simple, tambi�n conocido como Algoritmo Gen�tico
Can�nico.
En la posterior secci�n se respondi� sobre como saber si es posible la
utilizaci�n de algoritmos gen�ticos frente a determinadas situaciones. A
continuaci�n se redact� la aplicaci�n dise�ada, la problem�tica de origen, la
descripci�n de los elementos utilizados en el desarrollo del algoritmo, se
presentaron las diferentes pantallas dise�adas. Finaliz� el trabajo con la
demostraci�n del c�digo fuente.