遺伝的アルゴリズムに関連する作業(頭痛の負荷、楽しい負荷)。私は、結果を比較するために、異なるクロスオーバー方法と異なる突然変異方法をテストすることができる必要があります(コースのために書かなければならない論文の一部)。そのため、関数の名前としてRepopulateメソッドに渡すだけです。MATLAB-関数ハンドルパラメータを別の関数にハンドルとして渡します。
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は、パラメータなしで、と呼ばれ、非常に不幸でます
"mutationMethod" was previously used as a variable,
conflicting with its use here as the name of a function or command.
。
私は認識していますが、別の方法でコードを書き直すだけで、実際にはどうすればいいのかが分かります。。
ご協力いただきまして誠にありがとうございます。