如何使用112个变量最小化函数?

时间:2014-04-12 11:42:23

标签: matlab mathematical-optimization

我有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作为起点。并且该功能没有不连续性,输出始终是真实的。

1 个答案:

答案 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