Hello, I’m trying to use the MultiStartOptimizerv4. My current code is here: riesling/cxx/riesling/merlin.cpp at merlin2 · spinicist/riesling · GitHub, apologies it is a little messy at the moment.
The results of the local optimizer within MultiStartOptimizer appears to be dependent on the order of the parameter search space, to the extent that if I pass in the same parameters twice to the search list, I get different results. Here is some logging output to demonstrate the problem:
[11:49:09] [MERLIN] Optimizer start
[11:49:09] [LOCAL ] Local optimizer start [0.000,0.000,0.000,0.000,0.000,0.000]
[11:49:09] [LOCAL ] 00 -1.269 [0.000066,-0.000003,0.000003,-0.006091,-0.063948,-0.001232]
[11:49:09] [LOCAL ] 01 -1.275 [0.000190,-0.000009,0.000007,-0.017514,-0.183217,-0.002952]
[11:49:09] [LOCAL ] 02 -1.286 [0.000418,-0.000018,0.000010,-0.038572,-0.402470,-0.004482]
[11:49:09] [LOCAL ] 03 -1.305 [0.000825,-0.000025,0.000000,-0.074768,-0.790295,-0.003310]
[11:49:09] [LOCAL ] 04 -1.333 [0.001465,-0.000007,-0.000091,-0.124831,-1.384617,-0.001261]
[11:49:09] [LOCAL ] 05 -1.356 [0.001700,0.000034,-0.000292,-0.144228,-1.582003,-0.024013]
[11:49:09] [LOCAL ] 06 -1.358 [0.001789,0.000073,-0.000493,-0.157121,-1.642256,-0.035922]
[11:49:09] [LOCAL ] 07 -1.358 [0.001894,0.000152,-0.000882,-0.177471,-1.695161,-0.051484]
[11:49:09] [LOCAL ] 08 -1.359 [0.001993,0.000311,-0.001624,-0.203723,-1.695321,-0.064578]
[11:49:09] [LOCAL ] 09 -1.360 [0.002191,0.000623,-0.002946,-0.225666,-1.700344,-0.062979]
[11:49:09] [LOCAL ] 10 -1.363 [0.003400,0.002378,-0.010487,-0.360796,-1.741483,-0.113547]
[11:49:09] [LOCAL ] 11 -1.376 [0.003477,0.002400,-0.010555,-0.343647,-1.753917,-0.123579]
[11:49:09] [LOCAL ] 12 -1.376 [0.003477,0.002400,-0.010556,-0.343623,-1.753913,-0.123591]
[11:49:09] [LOCAL ] 13 -1.376 [0.003477,0.002400,-0.010556,-0.343623,-1.753913,-0.123591]
[11:49:09] [LOCAL ] 14 -1.376 [0.003477,0.002400,-0.010556,-0.343623,-1.753913,-0.123591]
[11:49:09] [LOCAL ] Local Optimizer finished [0.003,0.002,-0.011,-0.344,-1.754,-0.124]
[11:49:09] [MERLIN] 00 -1.376 [0.003477,0.002400,-0.010555,-0.343647,-1.753917,-0.123579]
[11:49:09] [LOCAL ] Local optimizer start [0.000,0.000,0.000,0.000,0.000,0.000]
[11:49:09] [LOCAL ] 00 -1.269 [0.000000,-0.000000,0.000000,-0.000001,-0.000013,-0.000000]
[11:49:09] [LOCAL ] 01 -1.269 [0.000000,-0.000000,0.000000,-0.000004,-0.000037,-0.000001]
[11:49:09] [LOCAL ] 02 -1.269 [0.000000,-0.000000,0.000000,-0.000008,-0.000083,-0.000002]
[11:49:09] [LOCAL ] 03 -1.269 [0.000000,-0.000000,0.000000,-0.000016,-0.000169,-0.000003]
[11:49:09] [LOCAL ] 04 -1.269 [0.000000,-0.000000,0.000000,-0.000032,-0.000331,-0.000006]
[11:49:09] [LOCAL ] 05 -1.269 [0.000001,-0.000000,0.000000,-0.000061,-0.000636,-0.000012]
[11:49:09] [LOCAL ] 06 -1.269 [0.000001,-0.000000,0.000000,-0.000115,-0.001210,-0.000023]
[11:49:09] [LOCAL ] 07 -1.270 [0.000002,-0.000000,0.000000,-0.000218,-0.002291,-0.000044]
[11:49:09] [LOCAL ] 08 -1.270 [0.000004,-0.000000,0.000000,-0.000412,-0.004323,-0.000083]
[11:49:09] [LOCAL ] 09 -1.270 [0.000008,-0.000000,0.000000,-0.000776,-0.008148,-0.000155]
[11:49:09] [LOCAL ] 10 -1.270 [0.000016,-0.000001,0.000001,-0.001462,-0.015343,-0.000289]
[11:49:09] [LOCAL ] 11 -1.271 [0.000030,-0.000001,0.000001,-0.002753,-0.028871,-0.000534]
[11:49:09] [LOCAL ] 12 -1.272 [0.000056,-0.000003,0.000002,-0.005180,-0.054284,-0.000967]
[11:49:09] [LOCAL ] 13 -1.274 [0.000106,-0.000005,0.000004,-0.009740,-0.101931,-0.001689]
[11:49:09] [LOCAL ] 14 -1.279 [0.000198,-0.000009,0.000006,-0.018275,-0.190863,-0.002748]
[11:49:09] [LOCAL ] 15 -1.287 [0.000369,-0.000015,0.000009,-0.034050,-0.355163,-0.003857]
[11:49:09] [LOCAL ] 16 -1.301 [0.000679,-0.000023,0.000004,-0.061933,-0.650904,-0.003659]
[11:49:09] [LOCAL ] 17 -1.324 [0.001200,-0.000018,-0.000043,-0.104737,-1.139962,-0.000017]
[11:49:09] [LOCAL ] 18 -1.350 [0.001662,0.000022,-0.000221,-0.138398,-1.553935,-0.018904]
[11:49:10] [LOCAL ] 19 -1.358 [0.001757,0.000056,-0.000400,-0.151244,-1.622584,-0.031289]
[11:49:10] [LOCAL ] 20 -1.358 [0.001871,0.000126,-0.000753,-0.171701,-1.688802,-0.047879]
[11:49:10] [LOCAL ] 21 -1.358 [0.001972,0.000268,-0.001432,-0.198932,-1.699726,-0.063372]
[11:49:10] [LOCAL ] 22 -1.360 [0.002133,0.000555,-0.002661,-0.221931,-1.687781,-0.063059]
[11:49:10] [LOCAL ] 23 -1.363 [0.003957,0.003487,-0.015235,-0.455348,-1.673783,-0.097525]
[11:49:10] [LOCAL ] 24 -1.380 [0.003983,0.003487,-0.015224,-0.448354,-1.690245,-0.103937]
[11:49:10] [LOCAL ] 25 -1.380 [0.003993,0.003487,-0.015219,-0.445746,-1.696203,-0.106309]
[11:49:10] [LOCAL ] 26 -1.380 [0.003994,0.003487,-0.015219,-0.445702,-1.696301,-0.106348]
[11:49:10] [LOCAL ] 27 -1.380 [0.003994,0.003487,-0.015219,-0.445702,-1.696301,-0.106349]
[11:49:10] [LOCAL ] Local Optimizer finished [0.004,0.003,-0.015,-0.446,-1.696,-0.106]
Note the local optimizer starts from [0, 0, 0, 0, 0, 0] both times (as I have instructed it to), but I get wildly different results between the two runs. Is this expected? It seems like a bug to me. Is the MultiStartOptimizer not resetting some state correctly between local optimizations?