【发布时间】:2020-10-30 05:06:03
【问题描述】:
我正在使用 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];
目标函数的最小化定义为:
sse = sum((test results - calculated)).^2;
受线性约束:
A = [1,1,1,1,1,1,1,1];
b = 1;
ceq = [];
优化过程的目的是拟合曲线,如图所示。
蓝线代表测试结果,洋红色是优化后的变量曲线。
问题:虽然我能够根据需要拟合曲线,但优化后的变量最终的值在上限。我为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);
谁能给我建议一个可靠的方法来克服这个优化解决方案在上限处终止的问题?您能否也让我知道这个问题背后的原因可能是什么?
【问题讨论】:
-
为什么处于上限不好?这通常表明您的搜索空间太窄(即您的上限太低)。您很可能最终会权衡错误……这不一定能准确拟合曲线的一部分(如您的图像所示)。这取决于你如何制定目标函数
标签: matlab optimization curve-fitting nonlinear-optimization