-2

この質問で誰かが私を助けてくれませんか。私はMatlabの初心者です...そして、Matlabで遺伝的アルゴリズムを作成して使用する方法を理解するのは少し難しいです。指定された関数の最小値/最大値を検索するための非常に単純なコードを書くのを手伝ってくれる人がいれば。そのためにgatoolを使用する必要があることを読みました...しかし、Matlabヘルプネットワークの例を理解できません。次の手順を実行しています。

  1. テキスト エディターで次のように入力しています。

    function y= parabola(x)
        y=x*x;
    end
    
  2. 次に、を起動し、GATOOLこの関数を次のように指定します@parabola

  3. 変数の数の設定 (2 に等しい)
  4. Initial range = [-10;10].
  5. 他のパラメータはデフォルトとして設定されています

    ボタンを押すStartと、結果が表示されます。

    fitnessfcn のエラー: 入力引数 "x" が定義されていません。

4

1 に答える 1

3

主な問題は、ツールボックスがどのように機能するかを理解していないことです。全体像を把握するには、ドキュメントを参照する必要があります。

したがって、適応度関数は関数ハンドルであり、スカラーを返す必要があります。

Fitnessfcn

適応度関数を処理します。適応度関数は、長さnvarsの行ベクトルを受け入れ、スカラー値を返す必要があります。

まず、関数が明確に定義されていません。匿名関数を定義したい場合は、

% A function handle to an anonymous function that returns an scalar.
% You should change this function accordingly to your expectations.
% Also, note that this handle could be of a function defined in a file too.
parabola = @(x) prod(x);
% Parameters for the GA
optGA = gaoptimset('PlotFcns', @gaplotbestfun, 'PlotInterval', 10, 'PopInitRange', [-10 ; 10]);
[Xga,Fga] = ga(parabola,2,optGA)

GAのGUIでも同じことができます。関数をmファイルで定義する場合は、次のようにする必要があります。

parabola.m

function [y] = parabola(x)
% This should return a scalar
y = prod(x);

そして、ハンドルをのように定義しますfh = @parabolaparabola上記のコードでは、新しいハンドルを置き換えますfh

これがあなたが始めるのに役立つことを願っています。

于 2012-01-22T15:06:26.217 に答える