Trabajando en una tarea que involucra Algoritmos Genéticos (cargas de dolores de cabeza, mucha diversión). Necesito poder probar diferentes métodos de cruce y diferentes métodos de mutación, para comparar sus resultados (parte del trabajo que tengo que escribir para el curso). Como tal, quiero simplemente pasar los nombres de las funciones al método Repopulate, como maneja la función.MATLAB- pasando un parámetro de manejador de función a otra función como manejador
function newpop = Repopulate(population, crossOverMethod, mutationMethod)
...
child = crossOverMethod(parent1, parent2, @mutationMethod);
...
function child = crossOverMethod(parent1, parent2, mutationMethod)
...
if (mutateThisChild == true)
child = mutationMethod(child);
end
...
El punto clave aquí es como 3, parámetro 3: ¿cómo paso a mutationMethod otro nivel? Si utilizo el símbolo @, me dicen:
"mutationMethod" was previously used as a variable,
conflicting with its use here as the name of a function or command.
si yo no uso el símbolo @, a continuación, se llama a mutationMethod, sin parámetros, y es muy infeliz.
Si bien soy consciente de que sí, podría reescribir mi código para que funcione de manera diferente, ahora tengo curiosidad sobre cómo hacerlo realmente trabajo.
Cualquier ayuda es muy apreciada.