Работа над заданием, включающим генетические алгоритмы (множество головных болей, множество веселья). Мне нужно уметь протестировать разные методы кроссовера и разные методы мутации, чтобы сравнить их результаты (часть статьи, которую я должен написать для курса). Таким образом, я хочу просто передать имена функций в метод Repopulate, как функции.
function newpop = Repopulate(population, crossOverMethod, mutationMethod)
...
child = crossOverMethod(parent1, parent2, @mutationMethod);
...
function child = crossOverMethod(parent1, parent2, mutationMethod)
...
if (mutateThisChild == true)
child = mutationMethod(child);
end
...
Ключевой момент здесь такой, как 3, параметр 3: как передать метод мутации на другой уровень? Если я использую символ @, мне говорят:
"mutationMethod" was previously used as a variable,
conflicting with its use here as the name of a function or command.
Если я не использую символ @, тогда вызывается mutationMethod без параметров, и он совершенно недоволен.
Хотя я знаю, что да, я мог бы просто переписать свой код, чтобы он работал по-другому, теперь мне интересно, как заставить его работать на самом деле работа .
Любая помощь очень ценится.