optimizationMethods_.add(makeOptimizationMethods(optimizationMethodTypes, simplexLambda, levenbergMarquardtEpsfcn, levenbergMarquardtXtol, levenbergMarquardtGtol));
// Set expected results for optimizer
for (int i=0; i<costFunctions_.size(); ++i) {
final Problem problem = new Problem(costFunctions_.get(i), constraints_.get(i), initialValues_.get(i));
for (int j=0; j<(optimizationMethods_.get(i)).size(); ++j) {
final EndCriteria.Type endCriteriaResult = optimizationMethods_.get(i).get(j).minimize(problem, endCriterias_.get(i));
final Array xMinCalculated = problem.currentValue();
final Array yMinCalculated = problem.values(xMinCalculated);
// Check optimizatin results vs known solution
for (int k=0; k < xMinCalculated.size(); ++k) {
//if(Math.abs(yMinExpected_.get(k)- yMinCalculated.get(k))> functionEpsilons_.get(i)){
//if (std::fabs(yMinExpected_[k]- yMinCalculated[k]) > functionEpsilons_[i]) {
if (true) {