1

MATLABでfmincon関数を使用して、4つの変数の値を取得しようとしています。警告が表示されます:

Local minimum possible. Constraints satisfied.

fmincon stopped because the size of the current search direction is less than
twice the default value of the step size tolerance and constraints are 
satisfied to within the selected value of the constraint tolerance.

<stopping criteria details>

Optimization stopped because the norm of the current search direction, 6.854643e-07,
is less than 2*options.TolX = 1.000000e-06, and the maximum constraint 
violation, -3.940985e-05, is less than options.TolCon = 1.000000e-15.

Optimization Metric                                               Options
norm(search direction) =   6.85e-07                        TolX =   1e-06 (default)
max(constraint violation)  =  -3.94e-05                  TolCon =   1e-15 (selected)

TolFunとTolConを1e-6から1e-10に変更しようとしましたが、それでも同じメッセージが表示されます。収束させる方法は他にありますか

My code:
A = [1, 1, 0, 0];
b = 1;
lb = [0; 0; 0; 0];
ub = [1; 1; 1; 1];
Aeq = [];
beq = [];
noncoln = [];
init_guess = [.03;.93; long_term_sigma; initial_sigma];
%option = optimset('FunValCheck', 1000);
options = optimset('fmincon');
options = optimset(options, 'MaxFunEvals', 1000, 'MaxIter', 1000, 'Algorithm', 'active-set', 'TolCon', 1e-15, 'TolFun', 1e-15);
func = @(theta)Log_likeli(theta, ret_1000);
%[x, maxim] = fminsearch(@(theta)Log_likeli(theta, ret_1000), init_guess, options);
[x, maxim] = fmincon(func, init_guess, A, b, Aeq, beq, lb, ub, noncoln, options);
4

1 に答える 1

2

問題には9つの制約があります。theta_i = exp(x_i)を作成し、すべての場所でtheta_iをこの新しい変数に置き換えると、問題を5つの制約に大幅に簡略化できる可能性があります。したがって、陽性の制約を排除し、新しい問題はx_iに依存します(x_iは新しい変数です)。OK .... x_iの最適値を見つけて、theta_i = exp(x_i)を計算します。これは、たとえば分散やボラティリティを扱う場合の計量経済学での非常に一般的な代替です。

また、別の置換を試して(以前は見たことがありませんが、機能しているようです)、すべてのlbまたはubを削除することもできます... y = exp(x)/(1 + exp(x))[ロジスティック関数]を作成します。これで、制約が1つだけ(Aとbで指定)であり、上記と同じ手順に従うため、問題ははるかに簡単になります。

于 2013-03-07T22:29:14.110 に答える