Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BobyQA改变起点并计算次优结果?_Java_Algorithm_Optimization_Nonlinear Optimization_Apache Commons Math - Fatal编程技术网

Java BobyQA改变起点并计算次优结果?

Java BobyQA改变起点并计算次优结果?,java,algorithm,optimization,nonlinear-optimization,apache-commons-math,Java,Algorithm,Optimization,Nonlinear Optimization,Apache Commons Math,我正在试用ApacheCommonsMath的BobyQA算法进行有界非线性优化 我知道最佳值(使用matlab的信任范围反射算法找到),但我对以下几点感到困惑: 我将BobyQA的起始点设置为最优,它计算的第一个点不是我指定的起始点,而是更改了次优起始点(它更改了第一个参数)。 而且,它还没有找到最小值 示例(最佳-起点的最小二乘法): 对于[1.0141E-7,81.15,119.03, 32.0,0.36652,4.317,8.5167,17.3,16.470001,100.13,11.2

我正在试用ApacheCommonsMath的BobyQA算法进行有界非线性优化

我知道最佳值(使用matlab的信任范围反射算法找到),但我对以下几点感到困惑:

我将BobyQA的起始点设置为最优,它计算的第一个点不是我指定的起始点,而是更改了次优起始点(它更改了第一个参数)。 而且,它还没有找到最小值

示例(最佳-起点的最小二乘法):

对于[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,对于[0.02611793333286,81.15, 119.03,32.0,0.36652,4.317,8.5167,17.3,16.496117933334100.13,11.2232490666666,29.042,18.871,29.92,36.147,87.826,21.287]

最终在以下位置达到次优解:

lsq(274)=5.5266213826441E9,对于[1.0115737485704292E-7, 81.14883064785045、119.02964714352679、32.00103316109643、0.3661587961432247、4.317235538653、8.516900515414736、17.293306813210172、16.496079045753113、100.12980568809833、11.22341107874299、29.042103684597272、18.870381140825014、29.919895452015545、36.147457499619、87.82657624257575288668]

其中5.5266E9大于5.5263E9

我做错了什么

谢谢


Igor

BOBYQA将采取与RHO参数成比例的搜索步骤,该参数将从RHOBEG开始,在RHOEND左右结束。若你们从接近最佳状态开始,BOBYQA可能会离那个点有相当大的距离,并且可能无法随着RHO的减小而返回。如果你不从(接近)最优开始,会发生什么?如果我从次优开始,我会得到一个更好的,但也是次优的解决方案。在数字方面,我从lsq=5.62E9开始,得到了更好的lsq=5.58E9,但仍然比lsq(最优)=5.52E9差。您使用的RHOBEG和RHOEND值是什么?如果起点接近最佳值,则可以从比默认值更小的RHOBEG开始,并尝试减少RHOEND以“更长”收敛;默认的停车半径=1E-8;从10到1,从1E-8到1E-12,我的迭代次数达到408次(从274次),但数字几乎保持不变:(.我认为BOBYQA对变量缩放很敏感。也许你可以尝试在优化过程中重新缩放最大的变量?