double OptimizationAlgorithmLevenberg::computeLambdaInit() const { if (_userLambdaInit->value() > 0) return _userLambdaInit->value(); double maxDiagonal=0.; for (size_t k = 0; k < _optimizer->indexMapping().size(); k++) { OptimizableGraph::Vertex* v = _optimizer->indexMapping()[k]; assert(v); int dim = v->dimension(); for (int j = 0; j < dim; ++j){ maxDiagonal = std::max(fabs(v->hessian(j,j)),maxDiagonal); } } return _tau*maxDiagonal; }