fmincon:收益当一些变量是固定的吗? ? ?

6视图(30天)
马赛厄斯
马赛厄斯 2014年6月17日
评论道: 马赛厄斯2014年6月18日
嘿,大家,
我有一些行为与fmincon Matlab对我来说,这似乎有点奇怪。我得到一个目标函数根据N变量包括雅可比矩阵的解析表达式和黑森。
(几个月前我已经提出了一个问题,但我认为这是或多或少地解决当时: //www.tianjin-qmedu.com/matlabcentral/answers/90090-fmincon-less-optimal-results-with-user-supplied-analytic-gradient )
现在,我遇到一些问题收敛性,该算法过早终止虽然有一些重要的残差梯度。事实上,我对一个变量计算目标函数值范围内,远离最低。
然而,当我用最后的解向量,然后回忆fmincon修复所有但一个变量fmincon发现最低对该变量。对我没有意义,我现在没能解决这个问题(我尝试不同的解决,不同的公差,任何东西在我脑海中出现)
非常感谢你的帮助提前!
第一个fmincon调用:
TolFun = 1 e-8;% 1 e-6违约
TolX = 1 e-8;% 1 e-6违约
TolCon = 1 e-8;% 1 e-6违约
FminconOptions = optimset (
“TolFun”TolFun,
“TolCon”TolCon,
“TolX”TolX,
“DerivativeCheck”,“关闭”,
“SubproblemAlgorithm”,“重心”,
“GradObj”,“上”,
“海赛”,“lbfgs”,
“FunValCheck”,“上”,
“TolProjCG”1的军医,
“算法”,“内点”,
“诊断”,“上”,
“MaxFunEvals”正,
“麦克斯特”,1000);
下界的= -x_max * (NV, 1);
UpperBounds = + x_max *的(NV, 1);
x_opt = fmincon (@ (x) EvalObjective2D (x, AuxData), 0 (NV, 1), [], [],
[][],下界,UpperBounds [], FminconOptions);
命令输出:
一阶范数
IterF-countf (x)可行性最优一步
0 1 1.238193 1.331 0.000 e + e + 00 00 e-02
1 2 1.237488 2.646 1.328 0.000 e + e + 00 00 e-02 e-02
2 3 1.233951 1.332 1.323 0.000 e + e + 00 00 e-02 e-01
12 47 7.989712 e-01 e-05 3.543 0.000 e + 00 3.533 e 03
13 56 7.989712 e-01 e-07 9.688 0.000 e + 00 3.533 e 03
14 62 7.989712 e-01 e-07 2.119 0.000 e + 00 3.533 e 03
优化停止,因为x的所有元素的相对变化
比的选择。TolX = 1.000000 e-08,相对最大约束
违反0.000000 e + 00不到选项。TolCon =1。000000e-08.
优化度规选项
马克斯(abs (delta_x. / x) = 8.55 e-09 TolX = 1 e-08(选择)
相对马克斯(约束违反)=0.00 e + 00TolCon =1 e-08(选择)
修复所有但第一变量(我知道它是次优)
idx = 1;
x_opt2 = fmincon (@ (x) EvalObjective2D ([x_opt (1: idx-1);x;x_opt (idx + 1:结束)],AuxData),x_opt (idx)、[][],[],[],下界(idx) UpperBounds (idx), [], FminconOptions)
命令输出:
一阶范数
IterF-countf (x)可行性最优一步
0 1 7.989712 e-01 0.000 e + 00 3.631 e 03
1 2 7.989582 e-01 0.000 e + 00 3.529 e 03 3.535 e 03
2 3 7.988922 e-01 0.000 e + 00 3.520 e 03 1.792 e-02
14日15 7.840090 e-01 0.000 e + 00 1.152 e-02 e-07 1.443
15 16 7.840090 e-01 0.000 e + 00 3.082 e-08 7.093 e 03
16 17 7.840090 e-01 0.000 e + 00 9.835 e-09 3.308 e 03
优化完成:相对一阶最优性措施9.834665 e-09
不到选项。TolFun =1。000000e-08,相对最大约束
违反0.000000 e + 00不到选项。TolCon =1。000000e-08.
优化度规选项
相对一阶最优性=9.83 e-09TolFun =1 e-08(选择)
相对马克斯(约束违反)=0.00 e + 00TolCon =1 e-08(选择)

答案(1)

艾伦·韦斯
艾伦·韦斯 2014年6月17日
你没有设置选项来利用你的分析梯度和黑森。GradObj选项设置为“上”,黑森选择“用户”,HessFcn选择一个函数处理 以适当的形式 (你的函数需要接受λ,但不使用它,因为你的约束是简单界约束,而不进入黑森计算)。使用分析黑森很可能使fmincon得到一个更好的答案。
说完这些,完全有可能得到一个更好的答案仅仅通过运行fmincon两次,第二次从第一次运行的解决方案。看到 这个解释 。我认为这解释了为什么你得到一个更好的结果关于你提到的第二个运行——我怀疑它不是因为你固定的变量,但仅仅因为你兰德的问题了。
艾伦·韦斯
MATLAB数学工具箱文档
3评论
马赛厄斯
马赛厄斯 2014年6月18日
嘿,我的代码片段中定义的选项已经优化,包括子问题的算法及解算器(虽然你是对的,使用分析黑森确实带来了一些好处)。
目标函数派生的一种分析方式,和——尽管它非常复杂和分段定义——我确信它没有局部最小值。然而,它肯定不是凸(这当然使优化更耗费时间,但梯度下降仍应执行)。
再一次,我评估当前的社区向量(绝对不是一个局部最小值) 只有一个变量的优化。在这种情况下,fmincon没有问题找到最优对该变量。
在我看来fmincon有一些次优的处理相对步长和对应的终止条件或线搜索。事实上,我实现了一个非常简单的版本的梯度下降法与poc的修正向量。尽管它非常缓慢(实现真的只是为了测试目的),它绝对找到全局最优,从而比fmincon执行方式。

登录置评。

类别

找到更多的在和迭代解算器输出显示帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!