我正在尝试在 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);