我有non-negative function named aim
个112个变量可以最小化,但即便
fminsearch('aim',random('Normal',0,3,1,112),optimset('MaxFunEvals',100^141))
输出
Exiting: Maximum number of iterations has been exceeded
- increase MaxIter option.
Current function value: 1.977209
据我所知,aim
的最小值应为0.但我只是不知道该怎么办。
根据丹尼尔的建议,我增加了MaxIter
,并且没有输出任何警告
fminsearch('aim',random('Normal',0,3,1,112),optimset('MaxFunEvals',10^9,'MaxIter',10^9))
但是aim(ans)
输出0.4559而不是0。
此函数可能不是凸的,因此我使用random
作为起点。并且该功能没有不连续性,输出始终是真实的。
答案 0 :(得分:0)
如果您的函数不是凸函数,您可以尝试使用不同的起点,例如:
% Parameters
Niter = 1e10;
Nparam = 112;
% Default
x_min = zeros(1,Nparam);
f_min = Inf;
% Find minima
for ii=1:Niter
[x,f] = fminsearch('aim',random('Normal',0,3,1,Nparam),optimset('MaxFunEvals',100^141));
if (f<f_min),
f_min = f;
x_min = x;
end