Matlab fmincon约束满足但目标函数值上升的优化问题求助
关于fmincon优化中目标函数不降反升的问题求助
我在用Matlab的fmincon做优化时碰到了个棘手的问题:所有迭代点的约束都满足要求,但目标函数值反而一直在上升,完全没朝着最小化的方向走。
我的优化问题详情
- 目标函数:光滑连续,需最小化,初始值为1,已归一化
- 设计变量:共2个,初始值均为1,变量边界为
[0.5 1.5],已归一化 - 约束函数:6个光滑连续的非线性约束,要求约束值小于0,初始约束值范围在-1至0之间,已归一化
因为约束函数计算需要调用商用有限元(FE)程序,单次计算耗时4-5分钟,所以我采用**有限前向差分(finite forward difference)**来计算梯度。
fmincon配置选项
options = optimoptions('fmincon','Algorithm','interior-point','OutputFcn',@outfun,... 'Display','iter-detailed','Maxiter',maxIter,... 'TolX',1e-6,'TolCon',1e-3,'TolFun',1e-6,'DiffMinChange',1e-3);
迭代序列示例
First-order Norm of Iter F-count f(x) Feasibility optimality step 0 3 1.000000e+00 0.000e+00 1.443e-01 1 7 1.014622e+00 0.000e+00 9.874e-02 5.697e-02 2 10 1.023593e+00 0.000e+00 1.378e-01 6.169e-02 3 14 1.047664e+00 0.000e+00 4.083e-01 1.260e-01 4 18 1.116892e+00 0.000e+00 1.967e-01 2.358e-01 5 21 1.131103e+00 0.000e+00 2.020e-01 5.315e-02 6 28 1.130283e+00 0.000e+00 1.757e-01 1.141e-02 7 36 1.127147e+00 0.000e+00 2.650e-01 1.812e-02 8 45 1.114609e+00 0.000e+00 1.074e-01 4.428e-02 9 49 1.106101e+00 0.000e+00 6.890e-01 4.329e-02
我将迭代序列绘制成了图表,能直观看到目标函数先持续上升,到第5次迭代后略有下降,但整体仍远高于初始值。
已尝试的解决方法
我试过切换到sqp算法进行优化,但结果和 interior-point 算法完全一致,目标函数依旧不降反升。
恳请各位大佬帮忙解释这个现象,同时提供能让算法朝着降低目标函数值方向推进的建议,非常感谢!
内容的提问来源于stack exchange,提问作者Mads B
相关产品推荐
相关产品推荐

