Consulta sobre parámetros de operadores

Consulta sobre parámetros de operadores

de Matias Cikurel Tashiro -
Número de respuestas: 1

Buenas, dejo la consulta que hice en la clase respecto a un par de operadores para problemas enteros. 

public IntegerSBXCrossover(double crossoverProbability, double distributionIndex)

public IntegerPolynomialMutation(double mutationProbability, double distributionIndex)

No logro comprender que impacto tiene, ni que representa, el segundo parámetro. En la documentación de jMetal tampoco encontré explicación.

Muchas gracias!

En respuesta a Matias Cikurel Tashiro

Re: Consulta sobre parámetros de operadores

de Santiago Iturriaga -
Hola:

Estuve revisando los operadores. La respuesta corta y rápida es que el parámetro distributionIndex indica que tan "cerca" estarán los hijos de los padres. Un valor de distributionIndex grande generará hijos similares a los padres y un valor pequeño (pero siempre mayor a 0) generará hijos muy diferentes a los padres. Esto funciona de forma similar para el cruzamiento y la mutación.

Los fundamentos matemáticos del operador son bastante complejos y la implementación de jMetal creo que confunde más de lo que aclara porque no tiene ni un comentario. Así que (para los que quieran profundizar) lo mejor es evitar el código de jMetal e ir directo a la fuente. Les dejo acá dos links a artículos que explican el operador y como calcularlo:
https://content.wolfram.com/uploads/sites/13/2018/02/09-2-2.pdf
https://content.wolfram.com/uploads/sites/13/2018/02/09-6-1.pdf

Así lo explica uno de los artículos:
"For small values of n, points far away from the parents are likely to be chosen, whereas for large values of n, only points close to the parents are likely to be chosen. In a sense, the exponent n is similar to the reciprocal temperature parameter T used in the simulated annealing algorithm described in [13]. Ideally, a good search algorithm must have a broad search (with large T or small n) in early generations and, as the generations proceed, the search must be focussed on a narrower region (with small T or large n) to obtain better precision in the solution. However, for brevity, we use a fixed compromised n for the entire simulation"

El operador fue propuesto para codificación de punto flotante pero la versión para codificación entera que propone jMetal es la misma que la de punto flotante, simplemente trunca el double y lo convierte en int.

Saludos,
Santiago.