2012-02-21 102 views
0

运行:MATLAB:fmincon找不到最小值

function test() 

Aeq = ones(1,4); beq = 1; 
a0 = [.2,.2,.2,.1]; 
[a,f] = fmincon(@ttest,a0,[],[],Aeq,beq); 

结果:

Warning: Trust-region-reflective algorithm does not solve 
this type of problem, using active-set algorithm. You 
could also try the interior-point or sqp algorithms: set 
the Algorithm option to 'interior-point' or 'sqp' and 
rerun. For more help, see Choosing the Algorithm in the 
documentation. 
> In fmincon at 472 
    In test at 6 

Local minimum found that satisfies the constraints. 

Optimization completed because the objective function is non-decreasing in 
feasible directions, to within the default value of the function tolerance, 
and constraints were satisfied to within the default value of the constraint tolerance. 

<stopping criteria details> 

我已经测试了 't检验',它工作正常.....不太了解警告~~为什么它不起作用?

+0

你的'ttest'函数是什么样的? – macduff 2012-02-21 17:10:41

回答

1

您的本地最小化成功:Local minimum found that satisfies the constraints. 。检查您的值af

所有的警告告诉你,默认算法不适用于你正在使用的问题,所以它会为你选择另一个。请参阅底部附近的文档fmincon,了解它可以使用的不同算法。你可以告诉它具体的算法使用摆脱这种警告:

Aeq = ones(1,4); beq = 1; 
a0 = [.2,.2,.2,.1]; 
options = optimset('Display', 'iter', ... 
        'Algorithm', 'active-set'); 
[a,f] = fmincon(@ttest,a0,[],[],Aeq,beq,[],[],[],options); 

我也告诉它以显示其迭代,这是我总能找到在调试阶段非常有用。有关各种可用选项,请参阅here