Matlab fmincon递增函数值

Matlab fmincon递增函数值,matlab,optimization,Matlab,Optimization,我使用Matlab的fmincon函数进行优化,但经验表明,函数值增加而不是减少,即使我在所有迭代中的所有约束函数都得到了满足 我的优化问题由一个(平滑和连续)成本函数和六个(平滑和连续)约束函数组成,其中两个设计变量最小化。成本函数、设计变量和约束函数均已规范化,因此初始成本函数值为1,初始变量1的边界为[0.5 1.5],约束函数的初始范围为-1到0(约束必须小于0)。成本函数和约束函数都是非线性的,我对梯度使用有限(正向)差分。由于商业FE程序是函数的一部分,因此计算约束函数的成本非常高(

我使用Matlab的fmincon函数进行优化,但经验表明,函数值增加而不是减少,即使我在所有迭代中的所有约束函数都得到了满足

我的优化问题由一个(平滑和连续)成本函数和六个(平滑和连续)约束函数组成,其中两个设计变量最小化。成本函数、设计变量和约束函数均已规范化,因此初始成本函数值为1,初始变量1的边界为[0.5 1.5],约束函数的初始范围为-1到0(约束必须小于0)。成本函数和约束函数都是非线性的,我对梯度使用有限(正向)差分。由于商业FE程序是函数的一部分,因此计算约束函数的成本非常高(4-5分钟)

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
然后绘制迭代序列:

我尝试使用sqp算法,但结果是一样的。我非常感谢对这种行为的任何解释,以及关于如何使算法降低代价函数的任何建议

先谢谢你。
Mads Baandrup

您是否也可以显示SQP算法的迭代输出?