Matlab FMINCON解决方案终止于上限

问题描述

我正在运行一个使用FMINCON SQP的优化算法来优化8个变量的问题。以下是参数:

g = [g1 g2 g3 g4 g5 g6 g7 g8] %my variables
lb = [0 0 0 0 0 0 0 0];
ub = [1 1 1 1 1 1 1 1];

Objective函数的最小化定义为:

sse = sum((test results - calculated)).^2; 

受线性约束:

A = [1,1,1];
b = 1;
ceq = [];

优化过程的目的是拟合如图所示的曲线。

curve fitting


蓝线代表测试结果,品红色为从优化变量获得的曲线。

问题:尽管我能够根据需要拟合曲线,但优化变量最终以上限为值。我为fmincon实现了以下代码

options = optimset('display','iter','Algorithm','sqp','TolX',1e-10,'TolFun',1e-20,'MaxIter',10000000000,'MaxFunEvals',10000000000);

[y,fval,exitflag,output] = fmincon('objective',ginit,A,b,[],lb,ub,options);

任何人都可以向我建议一种可靠的方法来克服这个优化解决方案在上限处终止的问题吗?您能否也让我知道这个问题的背后原因是什么?

解决方法

除了来自max的非常准确的评论之外,您是否肯定是这个意思:

sse = sum((测试结果-计算得出)。^ 2);

代替此:

sse = sum((测试结果-计算得出))。^ 2;