0

matlab で ga 関数を使用するためのガイダンスが必要です。私が見つけたすべての例は、たとえば1つの変数(パラメーター)を扱っていました。

 function y = two_min(x)
 if x<=20
     y = x+1; 
 else
     y = x+1;
 end

ga(@two_min,1) を呼び出すだけで開始できます。

しかし、複数の変数でそれをやろうとすると.

 function y = two_min(x,z)
 if x<=20
     y = x+1+z;
 else
     y = x+1+z;
 end

それは私にエラーを表示し続けます:十分な入力引数がありません..制約やその他のオプションを設定しなかったためではありませんか? 他のオプションをどの形式で設定する必要がありますか..ありがとう!

4

1 に答える 1

0

関数 two_min を実行すると、x の値が渡され、z は使用前にどこにも定義されていないため、エラーが発生します。試してみることのできることの 1 つは、ga を呼び出す前に z 値をバインドすることです。

a = 500; %the value that will be used for z
fitness_fun = @(x) two_min(x,a);
n_var = 1;
[x,fval] = ga(fitness_fun,n_var)

これは、fitness_fun の作成時点での a の値を z の値として使用するだけなので、後で「a」の値を再度変更しても、two_min の z の値には影響しません。無名関数を再作成します (これは、matlab の無名関数がクロージャーであり、その内部状態が作成時にワークスペースから取得されるためです)。

これは、あなたが求めていたことを実行する 1 つの方法です。何か他のことを考えていましたか?

于 2013-01-23T00:04:46.330 に答える