void LmmABCDFinder::solve()
{
	QuantLib::NoConstraint empty_constraint;	

	QuantLib::LevenbergMarquardt minimizationSolver(stopCriteria_.functionEpsilon(), stopCriteria_.rootEpsilon(), 1e-16);

	QuantLib::Array start_abcd (4);
	start_abcd[0]=0.156147;
	start_abcd[1]=0.363384;
	start_abcd[2]=0.407813;
	start_abcd[3]=1.;

	QuantLib::Problem optimizationProblem(abdcCostFunc_, empty_constraint, start_abcd);  

	endConvergenceType_ = minimizationSolver.minimize( optimizationProblem, stopCriteria_ );	

	found_abcd = optimizationProblem.currentValue();
}
 analysis::Problem OptimizationProblemRecord_Impl::problem() const {
   return optimizationProblem().cast<analysis::Problem>();
 }