2

制約変数以外の変数で構成される目的関数を最小化しようとしています。そのような関数に引数を渡す方法はありますか。たとえば、次のようになります。

data = xlsread('Returns.xlsx', 'Sheet2','A2:F324');

for i = 1:10
    returns = data(i:i+59,1:5);
    fund = data(i:i+59,6:6);
    lb = [0;0;0;0;0];
    ub = [1; 1; 1; 1; 1];
    [betas, fval] = fmincon(@obj_function, [0 .2 .2 .2 .2 .2], [], [], [], [], lb, ub, @constraints);
end

また、目的関数は次のように定義されます。

function [ value ] = obj_function(betas)
    value = returns*betas(2:6) + betas(1);
    value = sum((value - fund)^2);
end

私の目的関数には追加の変数returnsとが必要なのでfund、メイン関数から渡し続ける最善の方法は何ですか? 以下のステートメントは無効です。他に何ができますか?

[betas, fval] = fmincon(@obj_function(returns, fund), [.2 .2 .2 .2 .2], [], [], [], [], lb, ub, @constraints);

EXTRA、機能制約は次のように定義されます。

function [ c, ceq ] = constraints( betas )
    c = [];
    ceq = betas(2)*1 + betas(3)*1 + betas(4)*1 + betas(5)*1 + betas(6)*1 - 1;
end
4

2 に答える 2