2016-01-10 137 views
0

我成功地使用本征的文伯格 - 马夸特级以下的例子来设置文伯格 - 马夸特阻尼:http://techblog.rga.com/determining-indoor-position-using-ibeacon/如何使用本征

我试图找出如何阻尼参数转换,λ,进在本征可用参数:

https://en.wikipedia.org/wiki/Levenberg-Marquardt_algorithm#Choice_of_damping_parameter

http://eigen.tuxfamily.org/dox/unsupported/classEigen_1_1LevenbergMarquardt.html#a20efa2f5a684efaf2499ba5bdd51e792

目前还不清楚我是什么“的步骤开往倾斜移动”通过setFactor()那样 - 我这与阻尼参数有关吗?

distance_functor functor(matrix, count); 
Eigen::NumericalDiff<distance_functor> numDiff(functor);  

Eigen::LevenbergMarquardt<Eigen::NumericalDiff<distance_functor>,double> lm(numDiff); 

lm.parameters.factor = 100; //step bound for the diagonal shift, is this related to damping parameter, lambda? 
lm.parameters.maxfev = 2000;//max number of function evaluations 
lm.parameters.xtol = 1.49012e-08; //tolerance for the norm of the solution vector 
lm.parameters.ftol = 1.49012e-08; //tolerance for the norm of the vector function 
lm.parameters.gtol = 0; // tolerance for the norm of the gradient of the error vector 
lm.parameters.epsfcn = 0; //error precision 
Eigen::LevenbergMarquardtSpace::Status ret = lm.minimize(x); 

回答

1

这是从minpack一个端口,所以还可以看其documentation

因子是在测定所结合的 初始步骤中使用的正输入变量。这个界限被设置为 因子和diag * x的欧几里得范数(如果非零)的乘积,否则 是因子本身。在大多数情况下,因素应该在 区间(.1,100。)。100。是一个通常推荐的值。