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 -

Trabajo de Aplicacion de AG

Embed Size (px)

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.

Citation preview

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.