{"record":{"id":"90062bcf199d8f0d","repo":"stanfordnlp/CoreNLP","slug":"exceeded-during-linesearchminpack-function","errorCode":null,"errorMessage":"Exceeded during lineSearchMinPack() Function.","messagePattern":"Exceeded during lineSearchMinPack\\(\\) Function\\.","errorType":"exception","errorClass":"edu.stanford.nlp.optimization.QNMinimizer.MaxEvaluationsExceeded","httpStatus":null,"severity":"warning","filePath":"src/edu/stanford/nlp/optimization/QNMinimizer.java","lineNumber":1474,"sourceCode":"      fevals += 1;\n\n      // Check and make sure everything is normal.\n      if ((bracketed && (newPt[a] <= stpMin || newPt[a] >= stpMax))\n          || infoc == 0) {\n        info = 6;\n        if (!quiet) log.info(\" line search failure: bracketed but no feasible found \");\n      }\n      if (newPt[a] == aMax && newPt[f] <= fTest && newPt[g] <= gTest) {\n        info = 5;\n        if (!quiet) log.info(\" line search failure: sufficient decrease, but gradient is more negative \");\n      }\n      if (newPt[a] == aMin && (newPt[f] > fTest || newPt[g] >= gTest)) {\n        info = 4;\n        if (!quiet) log.info(\" line search failure: minimum step length reached \");\n      }\n      if (fevals >= maxFevals) {\n        // info = 3;\n        throw new MaxEvaluationsExceeded(\"Exceeded during lineSearchMinPack() Function.\");\n      }\n      if (bracketed && stpMax - stpMin <= tol * stpMax) {\n        info = 2;\n        if (!quiet) log.info(\" line search failure: interval is too small \");\n      }\n      if (newPt[f] <= fTest && Math.abs(newPt[g]) <= -gtol * g0) {\n        info = 1;\n      }\n\n      if (info != 0) {\n        return newPt;\n      }\n\n      // this is the first stage where we look for a point that is lower and\n      // increasing\n\n      if (stage1 && newPt[f] <= fTest && newPt[g] >= Math.min(ftol, gtol) * g0) {\n        stage1 = false;","sourceCodeStart":1456,"sourceCodeEnd":1492,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/optimization/QNMinimizer.java#L1456-L1492","documentation":"lineSearchMinPack() throws MaxEvaluationsExceeded when fevals reaches maxFevals inside the MINPACK-style line search loop. The budget is checked on every iteration of the line search regardless of whether bracketing or convergence has been achieved.","triggerScenarios":"A minimize() call using eLineSearchType.MINPACK where the total function evaluations during line search reach maxFevals before a satisfactory step is found (stuck at minimum step length, interval too small, or slow Armijo/Wolfe satisfaction).","commonSituations":"Very tight functionTolerance or gtol making the line search iterate indefinitely; ill-conditioned objectives; small maxFevals budgets on large problems.","solutions":["Increase maxFevals.","Loosen functionTolerance / line search tolerances so the search terminates earlier.","Check logged line-search diagnostics (minimum step length reached, interval too small) for scaling problems and rescale the objective."],"exampleFix":"// before\nQNMinimizer m = new QNMinimizer();\nm.setMinimizeType(QNMinimizer.eLineSearchType.MINPACK);\nm.minimize(f, 1e-8, init); // long line search, fevals >= maxFevals\n// after\nm.minimize(f, 1e-4, init); // looser tolerance, fewer evals","handlingStrategy":"try-catch","validationCode":"if (maxFevals < 500) log.warning(\"MINPACK line search can consume many evaluations; maxFevals=\" + maxFevals);","typeGuard":null,"tryCatchPattern":"try {\n  x = minimizer.minimize(f, tol, init);\n} catch (MaxEvaluationsExceeded e) {\n  log.warning(\"lineSearchMinPack exhausted budget; relaxing tolerance\");\n  x = minimizer.minimize(f, Math.max(tol, 1e-4), init);\n}","preventionTips":["Loosen functionTolerance with MINPACK line search.","Watch for 'minimum step length reached' diagnostics indicating scaling issues.","Normalize features before training."],"tags":["optimization","minpack","max-evaluations"],"backgroundTag":"value-out-of-range","analyzedSha":"1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a","analyzedAt":"2026-09-10T02:24:07.274Z","contentChangedAt":"2026-09-10T02:24:07.274Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}