Documentos de Académico
Documentos de Profesional
Documentos de Cultura
c
c
ccY
Y
YY
Y
Y
YY
Y
!"
Se implementara un algoritmo genético para obtener el valor mínimo de la siguiente función:
YYYY
Las restricciones serán las siguientes:
0x15
0y15
Nipop = 32
Reproducción= Rank
Weighting
Cruce Libre
Convergencia Libre
Sin mutación
En la hoja numero 1 se generaran los números 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 serán los valores de x en el cromosoma, así
mismo se realizara el procedimiento para generar los números binarios para y.
Se insertaran dos botones los cuales copiaran los números binarios de 4 digitos generados y
los pegara en la hoja siguiente, ( este procedimiento se realiza dado a que los números
aleatorios se recalculan cada vez que se realiza una acción y hay que hacer un pegado
especial para que esto no ocurra)
El código 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 función dada en las restricciones para el algoritmo.
Para sacar el valor decimal de x y de y se usara la siguiente fórmula:
(!)
,
&--/-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 tendrán botones con el siguiente código que al igual que los
anteriores van a ejecutarse también en el botón 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 botón contiene el código encargado de generar cada iteración en el algoritmo
hasta encontrar el valor mínimo de la función.
@
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 continuación 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 métodos 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 botón que se muestra con un mensaje justo al activar los
macros de Excel. El código del botón 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 unión de números 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 iteración.