0

我正在尝试使用 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.02964714​​352679, 32.00103316109643, 0.36615877961432247, 4.317235538​​618653, 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。

我究竟做错了什么?

谢谢,

伊戈尔

4

0 回答 0