Trabajo de Aplicacion de AG

17
UNIVERSIDAD CATOLICA DE SANTIAGO DEL ESTERO FACULTAD DE MATEMATICA APLICADA INGENIERIA EN COMPUTACION INTELIGENCIA ARTIFICIAL Dra. Rosanna Costaguta Ing. Mariela Gola Trabajo de Aplicacin: Algoritmos Genticos Dutto, Evelina - Noviembre 2008 -

description

Trabajo de aplicación donde se muestra una posible utilización de los algoritmos genéticos, este trabajo fue hecho por la Dr. Rossana Costaguta y la Ing. Mariela Gola en la Universidad Católica de Santiago del Estero.

Transcript of Trabajo de Aplicacion de AG

Page 1: 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 -

Page 2: Trabajo de Aplicacion de AG

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

Page 3: Trabajo de Aplicacion de AG

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.

Page 4: Trabajo de Aplicacion de AG

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

Page 5: Trabajo de Aplicacion de AG

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.

Page 6: Trabajo de Aplicacion de AG

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

Page 7: Trabajo de Aplicacion de AG

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]

Page 8: Trabajo de Aplicacion de AG

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).

Page 9: Trabajo de Aplicacion de AG

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

Page 10: Trabajo de Aplicacion de AG

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.

Page 11: Trabajo de Aplicacion de AG

Algoritmos Gen�ticos

Evelina E. Dutto P�gina 10

4.3 PresentaciÄn de Pantallas

Pantalla Principal

Pantalla Acerca De

Page 12: Trabajo de Aplicacion de AG

Algoritmos Gen�ticos

Evelina E. Dutto P�gina 11

Pantalla Algoritmo Gen�tico

Pantalla de Resultados

Page 13: Trabajo de Aplicacion de AG

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();

Page 14: Trabajo de Aplicacion de AG

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++){

Page 15: Trabajo de Aplicacion de AG

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":

Page 16: Trabajo de Aplicacion de AG

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){

Page 17: Trabajo de Aplicacion de AG

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.