Professional Documents
Culture Documents
Algoritmo Genetico Binario Ing. Artificial
Algoritmo Genetico Binario Ing. Artificial
c
c
ccY
Y
YY
Y
Y
YY
Y
!"
Se implementara un algoritmo gentico para obtener el valor mnimo de la siguiente funcin:
YYYY
Las restricciones sern las siguientes:
0x15
0y15
Nipop = 32
Reproduccin= Rank
Weighting
Cruce Libre
Convergencia Libre
Sin mutacin
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:
(!)
*
)
+
!
)
,
3 &-34 0-', !
3 &-34 $-', !
;
(!)
*
)
+
!
,
3 &-34 0-', !
;
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:
(!)
,
&--/-0-',)2
(! 3 ,< 7, !
3 &-34 -', !
&-$-',5 ) !
;
=<)),
&-
$-',)2
&-!-', !
6 &-$-',8
6 &-$-',8
3 &-34 -', !
( &-!$-', !
;
(<,
&-$-',)2
&-!-', !
6 &-3$-',8
6 &-2$-',8
3 &-34 -', !
&-3$-/1+ ',)2
( &-!$-', !
;
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
?
6$
6$
?6$
@
6$:>
6$
;
;+
< 7
;
(
)
!
!
;
(!)
34,
3 &-34 -', !
;
(
,
3 &-34 -', !
&- $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, !
! 3 ,5
, !
(! 3 ,5
, !
&- $-',5 ) !
! 3 ,< 7, !
! 3 ,5
, !
( &-!$-',5 ) !
((((((((((
((((((((((((((((((((((
((((((((((((((((((((((
(((!)
34,
6 &-$-',8
6 &-.-',8
&-C-/-$-',
(((((
((((
&-$-/-C-',)2
((((((((((((((((((((((
((((((((((((((((((((((
((((((((((((((((((((((
(
&-$C-', !
!,
E 2$6 &-$-'/
$67! /
67 /%
6$/9 !3 6@ /
67:):"/%
)$67
<
((((((((((((((((((((((
((((((((((((((((((((((
(!)
&-
$-',)2
((((((((((
(((((((((
(!)
,
&-$-',)2
((((((((((((((((((((((
())
+
++
6 &-$-',8
+6 &-$-',8
++6 &-0-',8
&++/-3-',
( &-!$-', !
(<,
!
!6 &-3$-',8
6 &-2$-',8
6 &-2.-',8
&/--',
( &-!$-', !
((((((((((((
(((((((((((((((
(((((((((((((((((((
(
)
!
!
(
?> 3
>
4
?
6$
46$
?6$
@
6$:>
46$
;
464A$
6D$
;+
< 7
6 &--',8
&/-)-',
((((((((((((((
(!)
34,
((((((((((((
((((((((((((((((
(
,
&- $4C-', !
!,
E 2$6 &-$-'/
$67! /
67 /%
6$/9 !3 6@ /
67:):"/%
)$67
<
3 ,
;
< 7
(
! )
!
))! ,!
G) 6@
! 3 ,)2
, !
!,)2
(+!3
2
H
+!3
6:3I
??,<
6:3I
??,5 3
+!3
6 ) ! &+!3
/-,77-/--'
+!3
6 ) ! &+!3
/-,7-/--'
( !! 34 !
! 3 , !
( 4
(
+!3
7 !
(
!
(+!3
7!
! I
??, @ 6
1-K-1- -1-,7-/@ @
67: 7
(!
+!3
7
! I
??,
(9
)
!
))! ,!
G) 6:
;+
< 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)
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 6-M !
N-( + 4 ,
:L6-
!# 9"7-( + L,
76$( +
( ! 7
(9
4 ,
((((
(!)
)
+
!
)
,
3 &-34 0-', !
3 &-34 $-', !
(((
(!)
)
+
!
,
3 &-34 0-', !
(((
;
< 7
(
! )
!
))! ,!
G) 6@
! 3 ,)2
, !
!,)2
(+!3
2
H
+!3
6:3I
??,<
6:3I
??,5 3
+!3
6 ) ! &+!3
/-,77-/--'
+!3
6 ) ! &+!3
/-,7-/--'
( !! 34 !
! 3 , !
(
+!3
7 !
(
!
(+!3
7!
! I
??, @ 6
1-K-1-) !! -1-,7-/
@ @
67: 7
(!
+!3
7
! I
??,
(9
)
!
))! ,!
G) 6:
((((((((
;
&-$-', !
;+
;
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.