我使用Matlab的fmincon函数进行优化,但是体验函数值增加而不是减少,即使所有迭代中的所有约束函数都满足。
我的优化问题包括(平滑和连续)成本函数,其中两个设计变量最小化,六个(平滑和连续)约束函数。成本函数,设计变量和约束函数都被归一化,因此初始成本函数值为1,初始变量1的边界为[0.5 1.5],约束函数最初的范围为-1到0(约束条件必须低于0)。成本和约束函数都是非线性的,我使用梯度的有限(前向)差。约束函数的计算成本非常高(4-5分钟),因为商业FE程序是函数的一部分。
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