Algoritmos de mutación para parámetros de valor real (GA)

Los algoritmos genéticos (AG) son algoritmos de búsqueda heurística adaptativa que pertenecen a la mayor parte de los algoritmos evolutivos. En cada generación, los cromosomas (nuestra solución candidata) sufren mutación, cruce y selección para producir una mejor población cuyos cromosomas estén más cerca de nuestra solución deseada. El operador de mutación es un operador unario y solo necesita un padre para trabajar. Lo hace seleccionando algunos genes de nuestro cromosoma seleccionado (padre) y luego aplicando el operador de mutación deseado sobre ellos.

En este artículo, hablaré sobre cuatro algoritmos de mutación para parámetros de valor real:
1) mutación uniforme
2) no uniforme
3) mutación de límite
4) mutación gaussiana

Aquí estamos considerando un cromosoma con n números reales (que son nuestros genes) y x i representa un gen e i pertenece a [1,n].

Mutación Uniforme –

En la mutación uniforme seleccionamos un gen aleatorio de nuestro cromosoma, digamos xi y le asignamos un valor aleatorio uniforme.
Sea x i dentro del rango [a i ,b i ] luego asignamos U(a i ,b i ) a x i
U(a i ,b i ) denota un número aleatorio uniforme dentro del rango [a i ,b yo ].

Algorithm –
1.    Select a random integer number i from [1,n]
2.    Set xi to U(ai,bi).

Mutación límite –

En la mutación límite, seleccionamos un gen aleatorio de nuestro cromosoma, digamos xi y le asignamos el límite superior o el límite inferior de xi .
Sea x i dentro del rango [a i ,b i ] luego asignamos a i o b i a x i .
También seleccionamos una variable r= U(0,1) (r es un número entre 0 y 1).
Si r es mayor o igual a 0,5, asigne bi a x i , de lo contrario asigne a i a x i .

Algorithm –
1.    select a random integer number i form [1,n]
2.    select a random real value r from (0,1).
3.    If(r >= 0.5)
             Set xi to bi
       else
             Set xi to ai

Mutación no uniforme –

En la mutación no uniforme, seleccionamos un gen aleatorio de nuestro cromosoma, digamos xi y le asignamos un valor aleatorio no uniforme.
Sea x i dentro del rango [a i ,b i ] luego le asignamos un valor aleatorio no uniforme.

Usamos una función,
f(G)=(r2*(1-G/Gmax))b ,
donde r2 = un número aleatorio uniforme entre (0,1)
G = el número de generación actual
Gmax = el número máximo de generaciones
b = un parámetro de forma
Aquí seleccionamos un número aleatorio uniforme r1 entre (0,1).
Si r es mayor o igual a 0,5 asignamos (b i -x i ) * f(G) a x i , de lo contrario asignamos (a i + x i ) * f(G).

Algorithm –
1.    Select a random integer i within [1,n]
2.    select two random real values r1 ,r2 from (0,1).
3.    If(r1 >= 0.5)
             Set xi to (bi-xi) * f(G)
       else
             Set xi to (ai+ xi) * f(G)

Mutación Gaussiana –

Gaussian Mutation hace uso de la función de error de Gauss. Es mucho más eficiente en la convergencia que los algoritmos mencionados anteriormente. Seleccionamos un gen aleatorio digamos x i que pertenece al rango [a i ,b i ]. Sea x’ i la descendencia mutada . Cada variable tiene un operador de fuerza de mutación (σ i ). Usamos σ= σ i /(b i -a i ) como un parámetro fijo no dimensionalizado para todas las n variables;
Así, la descendencia x’ i viene dada por —

x’i= xi + √2 * σ * (bi-ai)erf-1(u’i)

Aquí erf() denota la función de error gaussiano.

erf(y)=2√πy0 e-t2 dt

Para el cálculo u i ‘ primero seleccionamos un valor aleatorio u i dentro del rango (0,1) y luego usamos la siguiente fórmula

if(ui>=0.5)
    u’i=2*uL*(1-2*ui)
else
    u’i=2*uR*(2*ui-1)

De nuevo, u L y u R vienen dados por la fórmula

uL=0.5(erf( (ai-xi)(√2(bi-ai)σ) )+1)
uR=0.5(erf( (bi-xi)(√2(bi-ai)σ) )+1)

Referencias:
1. https://www.iitk.ac.in/kangal/papers/k2012016.pdf
2. https://en.wikipedia.org/wiki/Mutation_(genetic_algorithm)
3. http://read.pudn .com/downloads152/ebook/662702/gaotv5.pdf

Publicación traducida automáticamente

Artículo escrito por psil123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *