我正在尝试使用 Apache Commons Math 的 BobyQA 算法进行有界非线性优化。
我知道最佳值(使用matlab的信任范围反射算法找到它)并且我对以下内容感到困惑:
我将 BobyQA 的起点设置为最佳,它评估的第一个点不是我指定的起点,而是更改的次优起点(它更改了第一个参数)。而且,更进一步,它没有找到最小值。
示例(最优的最小二乘 - 起点):
lsq(optimal) = 5.526374615719567E9 for [1.0141E-7, 81.15, 119.03, 32.0, 0.36652, 4.317, 8.5167, 17.3, 16.470001, 100.13, 11.242, 29.042, 18.871, 29.92, 36.147, 87.826, 21.287]
然后我以该起点运行 BobyQA,并在第一次迭代中修改第一个参数(从 1.0141E-7 到 0.026117):
lsq(1) = 1.7374657025186486E19 for [0.02611793333333286, 81.15, 119.03, 32.0, 0.36652, 4.317, 8.5167, 17.3, 16.496117933333334, 100.13, 11.223249066666666, 29.042, 18.871, 29.92, 36.147, 87.826, 21.287]
最后它在以下位置达到次优解决方案:
lsq(274) = 5.526621213826441E9 for [1.0115737485704292E-7, 81.14883064785045, 119.02964714352679, 32.00103316109643, 0.36615877961432247, 4.317235538618653, 8.516900515414736, 17.293306813210172, 16.496079045753113, 100.12980568809833, 11.22341107874299, 29.042103684597272, 18.870381140825014, 29.919895452015545, 36.14745517499619, 87.82657624240575, 21.288471755903668]
其中 5.5266E9 大于 5.5263E9。
我究竟做错了什么?
谢谢,
伊戈尔