Title: Componentes bsicos para implementar un AG
1Componentes básicos para implementar un AG
- Una representación de soluciones potenciales del
problema. - Una forma de crear una población inicial de
soluciones potenciales. - Una función de evaluación de aptitud.
- Operadores genéticos que alteran la generación de
los descendientes. - Valores de los parámetros Tamaño de la
población, prob.de crossover, prob de mutación,
nro.máximo de generaciones, etc).
2Representación
- Cada individuo de la población está representado
por un cromosoma. Ej (b1, b2, ..., bm) - Los elementos que componen el cromosoma se
denominan genes. - La posición física que ocupa cada gen dentro del
cromosoma se denomina locus. - Las diferentes formas (valor) que puede tomar un
gen se denomina alelo. Ej si la representación
es binaria, los posibles valores son 0 y 1.
3Representación
- Holland dio una justificación teórica para el uso
de la codificación binaria. - Comparó dos representaciones con la misma
capacidad de representación. - Ej cadenas binarias de long. 80 y cadenas
decimales de longitud 24 ? 280 ? 1024 - Argumentó que una representación más larga y con
menos alelos (binaria) permite más esquemas que
otra representación más corta y con más alelos
(decimal).
4Representación
- Se llama bloque constructor a la porción de un
cromosoma que le produce una aptitud elevada a la
cadena en la cual está presente. - El poder contar con más esquemas favorece la
diversidad y ayuda a la generación de buenos
bloques constructores mejorando el desempeño del
AG con el paso del tiempo (según la teoría de los
esquemas).
5Desventajas de la representación binaria
- Hay cierto tipo de problemas del mundo real que
no se ajusta a la representación binaria - Ejemplo Optimización de una función con alta
dimensionalidad (ej50 variables) con una buena
precisión (ej 5 decimales) - El cromosoma puede ser muy largo.
- Los operadores genéticos deberán ser adaptados
para cada tipo de problema.
6Desventajas de la representación binaria
- Epistasis el valor de un bit puede suprimir las
contribuciones de aptitud de otros bits en el
cromosoma. - Representación natural problemas como el del
viajero se prestan de manera natural para el uso
de representaciones con mayor cardinalidad que la
binaria (uso de permutaciones de nros. enteros
decimales) - Soluciones ilegales producidas por los operadores
genéticos aplicados sobre una representación
binaria.
7Códigos Gray
- La representación binaria no mapea adecuadamente
el espacio de búsqueda con el espacio de
representación - Ejemplo Si codificamos en binario los números 5
y 6, los cuales están adyacentes en el espacio de
búsqueda, sus equivalentes en binario, 101 y 110,
difieren en dos bits en el espacio de
representación.
8Códigos Gray
- Buscan que la propiedad de adyacencia en el
espacio de búsqueda se conserve en el espacio de
representación. - Cualquier número binario se convierte a un código
Gray haciendo XOR de sus bits consecutivos. - el último bit de la izquierda queda como está.
Binario
Gray
9Conversión de Binario a Gray
- Dado el cromosoma binario b(b1,..., bm), su
conversión a Gray, g(g1,..., gm) se realiza de
la siguiente forma - Procedure Binary_to_Gray
- begin
- g1 b1
- for k 2 to m do
- gk bk-1 XOR bk
- end
10Conversión de Gray a Binario
- El dígito izquierdo el cromosoma gray conserva el
valor de su original binario. A partir de allí
hay que hacer la reconversión. - Veamos las combinaciones posibles
- Gray Binario
- 0 0 0 0
- 1 0 1 1
- 0 1 0 1
- 1 1 1 0
11Conversión de Gray a Binario
- Procedure Gray_to_Binary
- begin
- value g1
- b1 value
- for k 2 to m do
- begin
- if gk 1 then value NOT value
- bk value
- end
- end
12Conversión de Gray a Binario
Gray
- Procedure Gray_to_Binary
- begin
- value g1
- b1 value
- for k 2 to m do
- begin
- if gk 1 then value NOT value
- bk value
- end
- end
Binario
Value 0
13Conversión de Gray a Binario
Gray
- Procedure Gray_to_Binary
- begin
- value g1
- b1 value
- for k 2 to m do
- begin
- if gk 1 then value NOT value
- bk value
- end
- end
Binario
Value 1
14Conversión de Gray a Binario
Gray
- Procedure Gray_to_Binary
- begin
- value g1
- b1 value
- for k 2 to m do
- begin
- if gk 1 then value NOT value
- bk value
- end
- end
Binario
Value 0
15Conversión de Gray a Binario
Gray
- Procedure Gray_to_Binary
- begin
- value g1
- b1 value
- for k 2 to m do
- begin
- if gk 1 then value NOT value
- bk value
- end
- end
Binario
Value 1
16Códigos Gray
- La representación Gray tiene la propiedad de que
dos números consecutivos sólo difieren en 1 bit
en el espacio de representación. - Se ha demostrado empíricamente que el uso de
códigos Gray mejora el desempeño del AG al
aplicarse a las funciones de prueba clásica de De
Jong.
17Ejercicio
- Implemente en MatLab
- function g BinToGray(b)
- function b GrayToBin(g)
- Verifique que dos números consecutivos sólo
difieren en 1 bit.
18- function b GrayToBin(g)
- m length(g)
- value g(1)
- b(1) value
- for k 21m,
- if g(k) 1, value value end
- b(k) value
- end
19Codificando número reales
- Los códigos de Gray son muy útiles para codificar
números enteros. - Qué ocurre cuando se quiere codificar números
reales mapeando correctamente el espacio de
búsqueda en el espacio de representación?
20Codificando números reales
- Para representar un número real tradicionalmente
se usa un número binario definiendo límites
inferiores y superiores para cada variable junto
con la precisión deseada. - Ejemplo
- Una variable entre 0.35 y 1.40 con una precisión
de 2 decimales requiere log2(140-35)7 bits para
representar cualquier real en ese rango,
21Codificando números reales
- Note que el problema continúa porque el número
0.38 se representaría como 0000011 mientras que
el número 0.39 sería 0000101. - Aunque se utilicen códigos Gray, si se tienen
demasiadas variables y se busca una buena
precisión, la dimensión del cromosoma será alta y
el AG tenderá a tener un desempeño pobre.
22Codificando números reales
- Una alternativa podría ser el uso de un formato
binario estándar para representar números reales.
Esto permite representar un rango grande de
números reales usando una cantidad fija de bits. - Ejemplo IEEE para precisión simple (32 bits)
23Codificando números reales
- El uso de un formato binario estándar para
representar números reales tiene las siguientes
desventajas - El proceso de decodificación en
computacionalmente más costoso. - Pequeñas modificaciones en el exponente producen
grandes saltos en el espacio de búsqueda y los
cambios en la mantisa podrían no modificar
significativamente el número codificado.
24Codificando números reales
- El uso de números reales en el cromosoma ha sido
más común en otras técnicas de computación
evolutiva basadas en mutación. - Su uso en AG ha sido criticado ya que no puede
predecirse su comportamiento. Por esto se ha
tratado de diseñar operadores que emulen el
efecto de cruza y mutación en alfabetos binarios. - El uso de AG con codificación real sigue siendo
una elección que se deja al usuario.
25Otras representaciones de reales
- Se usa un entero para cada dígito asumiendo una
posición fija para el punto. Ej el número
1.45679 - La precisión está limitada por la long.de la
cadena. - Los operadores de cruza pueden aplicarse
directamente. - La mutación podría cambiar un dígito o hacer un
cambio menor (ej suma 1)
26Recomendaciones para el diseño de una buena
representación
- Una codificación
- Debe ser capaz de representar todos los fenotipos
posibles. - Debe ser carente de sesgo.
- NO debiera codificar soluciones no factibles.
- Debe ser fácil de decodificar.
- Debe poseer localidad pequeños cambios en el
genotipo producen pequeños cambios en el fenotipo.
27Recomendaciones para el diseño de una buena
representación
- Las codificaciones deben ajustarse a operadores
genéticos que preserven los buenos bloques
constructores. - Las codificaciones deben minimizar la epistasis.
- Deben evitarse codificar el fenotipo de un
individuo por más de un genotipo.
28Ejercicio
- Modificar el AG básico utilizado la clase
anterior para hallar el mínimo de la función - f(x) x2 en -10,50
- utilizando una representación decimal con
posición fija para el punto y una precisión de 4
decimales.