遺伝的アルゴリズム(たくさんの頭痛、たくさんの楽しみ)を含む課題に取り組んでいます。それらの結果を比較するために、さまざまなクロスオーバー方法とさまざまな突然変異方法をテストできる必要があります(コースのために書かなければならない論文の一部)。そのため、関数ハンドルとして、関数名を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を別のレベルに渡すにはどうすればよいですか?@記号を使用すると、次のように表示されます。
"mutationMethod" was previously used as a variable,
conflicting with its use here as the name of a function or command.
@記号を使用しない場合、mutationMethodがパラメーターなしで呼び出され、非常に不幸になります。
はい、コードを書き直して別の動作をさせることができることは承知していますが、実際に動作させる方法に興味があります。
どんな助けでも大歓迎です。