我这样打电话给find_min_box_constrained
:
matrix<double,nparam,1> lb ={0,0,0,0};
matrix<double,nparam,1> ub = {2,2,2,2};
find_min_box_constrained(lbfgs_search_strategy(100),
objective_delta_stop_strategy(1e-15).be_verbose(),
targetf, derivative(targetf), params,lb,ub );
产生以下输出:
迭代:0目标:3786.68
迭代:1目标:294.485
迭代:2目标:294.485
迭代:3目标:294.484
迭代:4目标:294.481
迭代:5目标:294.452
迭代:6目标:294.157
迭代:7目标:291.148
迭代:8个目标:252.786
迭代:9目标:375.851
迭代:10目标:375.851
我的params
向量最终正好是{2,2,2,2}(上限),其中targetf(ub) = 375.851
。
为什么find_min_box_constrainted
会返回该值,即使它显然已经遇到了更好的事情(在迭代8中为252)?