You are on page 1of 22

c c 

c 
 c   ccY
Y 
Y Y
Y

  Y 

  YY

 Y Y   Y

  

 Y
    ! "
 


Se implementara un algoritmo gentico para obtener el valor mnimo de la siguiente funcin:

 YY YY
Las restricciones sern las siguientes:

0x15
0y15
Nipop = 32
Reproduccin= Rank
Weighting
Cruce Libre
Convergencia Libre
Sin mutacin

El algoritmo ser realizado en Microsoft office Excel 2007.

En la hoja numero 1 se generaran los nmeros aleatorios para generar los cromosomas
utilizados en el algoritmo. Con la formula =ALEATORIO.ENTRE (0,1) se llenaran las
columnas necesarias para generar un numero binario con las restricciones antes
mencionadas, y as ser para generar los 32 que sern los valores de x en el cromosoma, as
mismo se realizara el procedimiento para generar los nmeros binarios para y.

Se insertaran dos botones los cuales copiaran los nmeros binarios de 4 digitos generados y
los pegara en la hoja siguiente, ( este procedimiento se realiza dado a que los nmeros
aleatorios se recalculan cada vez que se realiza una accin y hay que hacer un pegado
especial para que esto no ocurra)
El cdigo de los botones ser el siguiente:

" #$%  %!!% &'

(! )
*
 
 )
+

 !
     )


  ,

  &-.-/-00-1+ ', )2

3 &-3 4 0-',  ! 

  &-!-',5  ) ! 5  678  

))!  ,  )29  6:


 

3 &-3 4 $-',  ! 

;

" #%  %!!% &'

(! )
*
 
 )
+

 !
       
  ,

  &-0-/--1+ ', )2

3 &-3 4 0-',  ! 

  &--',5  ) ! 5  678  

))!  ,  )29  6:


 

;

Se creara una tabla en la siguiente hoja para calcular los valores en decimal y sacar el costo
con la funcin dada en las restricciones para el algoritmo.
Para sacar el valor decimal de x y de y se usara la siguiente frmula:

=BIN.A.DEC (C4) y =(4*E4^2)+(7*((F4-4)^2))-4*E4+3*F4 para calcular el costo.

El cdigo para los botones mostrados en la imagen es el siguiente:

 4 0%" #.%  %!!% &'

(! )
  ,

  &--/-0-', )2

(!  3 ,< 7 ,  ! 

3 &-3 4 -',  ! 

  &-$-',5  ) ! 

;

" #0%  %!!% &'

=<) ),
  &-
$-', )2

  &- $-',5  ) ! 5  678  

))!  ,  )29  6:


 

  &-!-',  ! 

 





6  &-$-',8  

6  &-$-',8  

3 &-3 4 -',  ! 

  &-$-/1+ ', )2

  &-3$-',5  ) ! 5  678  

))!  ,  )29  6:


 

(  &-!$-',  ! 

;

" #%  %!!% &'

(< ,

  &-$-', )2

  &-7$-',5  ) ! 5  678  

))!  ,  )29  6:


 

  &-!-',  ! 

 





6  &-3$-',8  

6  &-2$-',8  

3 &-3 4 -',  ! 
  &-3$-/1+ ', )2

  &-$-',5  ) ! 5  678  

))!  ,  )29  6:


 

(  &-!$-',  ! 

;

En el botn ejecutar se encuentra el siguiente cdigo en el cual se encuentran los


procedimientos anteriores para que se ejecuten con solo presionarlo y no tener que hacerlo
botn por botn.

En la hoja siguiente se tendrn botones con el siguiente cdigo que al igual que los
anteriores van a ejecutarse tambin en el botn ejecutar.

 4 %" #%  %!!% &'

 > 


 


4 


? 


6$

 6$

?6$

 >6  &--',8  

@
6$:  >

+ & A$/$',8  B6 &A$/$',8  :3 

 &A$/$',8  6 & A$/$C',8  

 6$



; 

 6 A$


6D$

;+

< 7 

;

 4 %" #%  %!!% &'

  &-$-/-C-1+ ', )2

  &- $-',5  ) ! 5  678  

( 
 )
!
! 

  &- $-', )2

  &- !$-',5  ) ! 5  678  

;

" #0%  %!!% &'

(! )
  34 ,

  &- $-/-C-', )2

3 &-3 4 -',  ! 

  &- $-',5  ) ! 5  678  

;

" #.%  %!!% &'

(
 
,

3 &-3 4 -',  ! 

  &- $4C-',  ! 

  !  ,
E 2$6  &-$-'/

$67! / 
67 /%



 6$/9 !3  6@  /
   67: ): " /%

 )  $67
<
 

;
El siguiente botn contiene el cdigo encargado de generar cada iteracin en el algoritmo
hasta encontrar el valor mnimo de la funcin.

" #%  %!!% &'


 


@

6$: $

 &
A$/F',8  6 &$/',8  

 &
A$/',8  6 &$/',8  

 &
A$/$',8  6 &$/',8  

(! )
  ,

(

3 ,

!  3 ,< 7 ,  ! 

  &- $-/-C$-', )2

!  3 ,5
 ,  ! 

(!  3 ,5
 ,  ! 

(3 &-3 4 -',  ! 

  &- $-',5  ) ! 

!  3 ,< 7 ,  ! 

(  &- $-/-4C$-', )2

!  3 ,5
 ,  ! 

(  &-!$-',5  ) ! 

((((((((((


((((((((((((((((((((((

((((((((((((((((((((((

(((! )
  34 ,

6  &-$-',8  

6  &-.-',8  

(3 &-3 4 -',  ! 

  &- $-/-4C-', )2

  &',5  ) ! 5  678  

))!  ,  )29  6:


 

  &-C-/-$-',


(((((

((((

  &-$-/-C-', )2

  &->$-/->C-',5  ) ! 5  678  

))!  ,  )29  6:


 

((((((((((((((((((((((

((((((((((((((((((((((

((((((((((((((((((((((

(
 
    

  &-$C-',  ! 

  !  ,
E 2$6  &-$-'/

$67! / 
67 /%


 6$/9 !3  6@  /
   67: ): " /%

 )  $67
<
 

((((((((((((((((((((((

((((((((((((((((((((((

(! )
 
 

  &-
$-', )2

  &- $-',5  ) ! 5  678  

))!  ,  )29  6:


 

((((((((((

(((((((((

(! )
 
 ,

  &-$-', )2

  &-7$-',5  ) ! 5  678  

))!  ,  )29  6:


 

((((((((((((((((((((((

() )

 


+


++



6  &-$-',8  

+6  &-$-',8  

++6  &-0-',8  

(3 &-3 4 -',  ! 

  &-$-/+1+ ', )2

  &-3$-',5  ) ! 5  678  

))!  ,  )29  6:


 

  &++/-3-',
   

(  &-!$-',  ! 

(< ,

!








!6  &-3$-',8  

6  &-2$-',8  

6  &-2.-',8  

(3 &-3 4 -',  ! 

  &-3$-/1+ ', )2

  &-$-',5  ) ! 5  678  

))!  ,  )29  6:


 

  &/--',
   

(  &-!$-',  ! 
((((((((((((

(((((((((((((((

(((((((((((((((((((

  &-$-/-C-1+ ', )2

  &- $-',5  ) ! 5  678  

( 
 )
!
! 

  &- $-', )2

  &- !$-',5  ) ! 5  678  

(  
?> 3 

 > 


 


4 


? 




6$

46$

?6$



 >6  &--',8  



@
6$:  >



+ &4A$/$',8  B6 &A$/$',8  :3 


 &A$/$',8  6 &4A$/$C',8  





46$



; 

464A$

6D$



;+



< 7 




6  &--',8  

  &/-)-',
   

((((((((((((((

(! )
  34 ,

  &- $-/-C-', )2

  &- $-',5  ) ! 5  678  

((((((((((((

((((((((((((((((

(
 
,

  &- $4C-',  ! 

  !  ,
E 2$6  &-$-'/

$67! / 
67 /%


 6$/9 !3  6@  /
   67: ): " /%

 )  $67
<
 



+  &-$-'6  &-$-':3 

  &- $-/-C$-', )2

3 ,

  &- $-',5  ) ! 

 ;


  < 7 

( !   )
!   

))!  ,!
G) 6@  

(! )   3 4  !     




!  3 , )2

(! )  2)     




 ,  ! 

  !  , )2

  !  ,5  ) ! 5  675  

(<    !   


 

(+!3
2 
     H

+!3
6:3I
? ?,<  

 6:3I
? ?,5 3

(J    7 7#  7! 

+!3
6 ) ! &+!3
/-,77-/--'

+!3
6 ) ! &+!3
/-,7-/--'

(  !!    3 4  !  

!  3 ,  ! 
(      4    

))!  ,) 2


6@  

(
   +!3
  7  !    

(   
!
       

(+!3
  7! 
 

!  I
? ?,  @   6
 1-K-1-  -1-, 7 -/@ @
 67: 7 

(!

  +!3
  7 

!  I
? ?,  

(9 
  )
!   

))!  ,!
G) 6:
 

;+

+  &-$-'6  &-$-':3 ;7 @






< 7 

((((((((((

;

Algunas de las celdas van a tener formulas para agilizar el trabajo del algoritmo, (hay
columnas auxiliares). A continuacin se enlistara la columna con la formula insertada en cada
una de sus celdas.
Nbada. =SI(H17<>I17,H17)

Nbad =K.ESIMO.MENOR($J$17:$J$48,R17)

Ngood*al =ALEATORIO()

Pn formula =($L$6-R17+1)/SI(R17<=$L$6,((($L$6+1)/2)*$L$6))

PN acumulado =M17

Ngood =I:I

X =BUSCAR(S17,I:I,C:C)

Y =BUSCAR(S17,I:I,D:D)

Col v =ALEATORIO.ENTRE(2,7)

Col x =SI(R17*2<=$L$6,2*R17-1,FALSO)

Padre =BUSCAR(X17,R:R,P:P)

x =BUSCAR(Y17,R:R,T:T)

y =BUSCAR(Y17,R:R,U:U)

col AB =SI(R17*2<=$L$6,2*R17,FALSO)

Padre2 =BUSCAR(AB17,R:R,P:P)
X =BUSCAR(AC17,R:R,T:T)

Y =BUSCAR(AC17,R:R,U:U)

Padre1 =Z17&AA17

Padre2 =AD17&AE17

Padre1a =EXTRAE(AF17,1,W17-1)

Padre1b =EXTRAE(AF17,W17,8)

Padre2a =EXTRAE(AG17,1,W17-1)

Padre2b =EXTRAE(AG17,W17,8)

Hijo1 =AH17&AK17

Hijo2 =AJ17&AI17

Xhijo1 =EXTRAE(AM17,1,4)

Yhijo1 =EXTRAE(AM17,5,8)

Decimalx1 =BIN.A.DEC(AO17)

Decimaly2 =BIN.A.DEC(AP17)

Xhijo2 =EXTRAE(AN17,1,4)

Yhijo2 =EXTRAE(AN17,5,8)

Decimalx1 =BIN.A.DEC(AS17)

Decimaly2 =BIN.A.DEC(AT17)
Costo1 =(4*AQ17^2)+(7*((AR17-4)^2))-4*AQ17+3*AR17

Costo2 =(4*AU17^2)+(7*((AV17-4)^2))-4*AU17+3*AV17

Xhijo1 =AO17

Yhijo1 =AP17

Decimalx1 =AQ17

Decimaly2 =AR17
Costo1 =AW17

Col BJ =SI.ERROR(BI17,FALSO)

Nmero menor =K.ESIMO.MENOR(BJ17:BJ81,BK17)

Col BM =SI.ERROR(SI(G17=0,"",G17),"")

Promedio =PROMEDIO(BM:BM)

Col BO =SI(BQ17>0,DEC.A.BIN(BQ17,4),SI(BQ17=0,""))

Col BP =SI(BR17>0,DEC.A.BIN(BR17,4),SI(BR17=0,""))

Todos los mtodos de los botones anteriores sirven para realizar paso por paso el algoritmo.

Para ejecutar el algoritmo desde que abrimos el documento y para que sean creados los
archivos .txt se agregan en un botn que se muestra con un mensaje justo al activar los
macros de Excel. El cdigo del botn principal es el siguiente:

  % ) &'

9  4 /;  /:L  /2 / 7 / )  /9   

9  4 6-M  !  
N-( +    4 ,

;  6O < A


 ! A +  " .( +    ,

:L  6-  
!# 9" 7-( +   L  ,

2 6-;9 ,P5-( +  


!3   2 ,

 7 6$( +    
( !  7 

(9 
   4 ,

 )  69" 7&9  4 /;  /:L  /2 / 7 '

+ )  6O :3 

((((

(! )

 
 )
+

 !
     )


  ,

  &-.-/-00-1+ ', )2

3 &-3 4 0-',  ! 

  &-!-',5  ) ! 5  678  

))!  ,  )29  6:


 

3 &-3 4 $-',  ! 

(((

(! )

 
 )
+

 !
       
  ,

  &-0-/--1+ ', )2

3 &-3 4 0-',  ! 

  &--',5  ) ! 5  678  

))!  ,  )29  6:


 

(((

;


  < 7 

( !   )
!   

))!  ,!
G) 6@  

(! )   3 4  !     




!  3 , )2

(! )  2)     




 ,  ! 
  !  , )2

  !  ,5  ) ! 5  675  

(<    !   


 

(+!3
2 
     H

+!3
6:3I
? ?,<  

 6:3I
? ?,5 3

(J    7 7#  7! 

+!3
6 ) ! &+!3
/-,77-/--'

+!3
6 ) ! &+!3
/-,7-/--'

(  !!    3 4  !  

!  3 ,  ! 

(      4    

))!  ,) 2


6@  

(
   +!3
  7  !    

(   
!
       

(+!3
  7! 
 

!  I
? ?,  @   6
 1-K-1-)  ! ! -1-, 7 -/
@ @
 67: 7 

(!

  +!3
  7 

!  I
? ?,  

(9 
  )
!  

))!  ,!
G) 6:
 

))!  , : < >A: 8  &-$-'/- 4 0%" #.%  %!!% -

))!  , : < >A: 8  &-.-'/- 4 0%" #$%  %!!% -

))!  , : < >A: 8  &-0-'/-" #0%  %!!% -


))!  , : < >A: 8  &--'/-" #%  %!!% -

))!  , : < >A: 8  &--'/- 4 %" #%  %!!% -

))!  , : < >A: 8  &--'/- 4 %" #%  %!!% -

))!  , : < >A: 8  &--'/-" #0%  %!!% -

))!  , : < >A: 8  &-C-'/-" #.%  %!!% -

))!  , : < >A: 8  &-F-'/- 4 %" #0%  %!!% -

))!  , : < >A: 8  &-$-'/-" #%  %!!% -

((((((((

; 

  &-$-',  ! 

;+

;

Al terminar las iteraciones se generaran dos archivos de texto, el primero con el nombre
poblacionInicial, en el se encontrara la tabla con los primeros cromosomas y sus costos que
fueron creados con la unin de nmeros aleatorios entre 0 y 1. El segundo archivo de texto se
llamara Salida y en l se encontraran los cromosomas con el menor costo de cada iteracin.

En conclusin se obtiene que al generar nuevos descendientes de una poblacin aleatoria


podemos encontrar el resultado que estemos buscando, ya sea el mnimo de una ecuacin, el
mximo de una ecuacin u otros resultados que estemos buscando.

You might also like