0

したがって、次のコードを使用して関数を最適化します。

function [fval, z, Z, x] = fCarterFunction

%Searches parameter space for the best values given the model and LSE

A = [];
b = [];
Aeq = [];
beq =[]; 
options = optimset('Display','iter', 'Algorithm', 'interior-point');
options.MaxFunEvals = 100000;
options.MaxIter = 100000;
[pOPT, fval] = fmincon(@(p)fRSS(p),[.01 .01 .01],A, b, Aeq, beq, 0, 1, [], options);

z = pOPT(1);
Z = pOPT(2);
x = pOPT(3);

end

この問題は、関数でこれを実行すると、次が返されることです。

Warning: Length of lower bounds is < length(x); filling in missing lower bounds with -   Inf. 
> In checkbounds at 34
In fmincon at 332
In fCarterFunction at 12
In RunRSSfunc at 1
In run at 64 
Warning: Length of upper bounds is < length(x); filling in missing upper bounds with +Inf. 
> In checkbounds at 48
In fmincon at 332
In fCarterFunction at 12
In RunRSSfunc at 1
In run at 64 

私が理解していないのは、以前のデータセットに対してこれを実行し、問題がなかったことです。現在、matlab は上限と下限を置き換えています。これを修正する方法を知っている人はいますか?実際にデータを反復処理し、最小二乗法によってシミュレーションを実際のデータと比較する他の関数を確認する必要がある場合は、お知らせください。ありがとう!

4

1 に答える 1

1

@grantnz が指摘しているように、次のことを試してください。

[pOPT, fval] = fmincon(@(p)fRSS(p),[.01 .01 .01],A, b, Aeq, beq, [0 0 0], [1 1 1], [], options);

fminconすべての変数の上限/下限の値が必要です。

于 2013-08-26T07:43:38.743 に答える