numopt-js 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,6 +11,9 @@ A flexible numerical optimization library for JavaScript/TypeScript that works s
11
11
 
12
12
  - **Gradient Descent**: Simple, robust optimization algorithm with line search support
13
13
  - **Line Search**: Backtracking line search with Armijo condition for optimal step sizes (following Nocedal & Wright, *Numerical Optimization* (2nd ed.), Algorithm 3.1)
14
+ - **Strong Wolfe Line Search**: Robust line search satisfying Strong Wolfe conditions (recommended for quasi-Newton methods)
15
+ - **BFGS**: Quasi-Newton method that updates a dense inverse Hessian approximation (unconstrained smooth optimization)
16
+ - **L-BFGS**: Memory-efficient quasi-Newton method (two-loop recursion) for larger parameter counts
14
17
  - **Gauss-Newton Method**: Efficient method for nonlinear least squares problems
15
18
  - **Levenberg-Marquardt Algorithm**: Robust algorithm combining Gauss-Newton with damping
16
19
  - **Constrained Gauss-Newton**: Efficient constrained nonlinear least squares using effective Jacobian
@@ -32,6 +35,33 @@ A flexible numerical optimization library for JavaScript/TypeScript that works s
32
35
  npm install numopt-js
33
36
  ```
34
37
 
38
+ ## Start Here (Pick Your Path)
39
+
40
+ - **Minimize a scalar cost** (smooth unconstrained optimization): use **Gradient Descent** (`cost: (p) => number`, `grad: (p) => Float64Array`). Start at [Gradient Descent](#gradient-descent).
41
+ - **Minimize a scalar cost (faster than GD for many problems)**: use **BFGS** or **L-BFGS** (`cost: (p) => number`, `grad: (p) => Float64Array`). Start at [BFGS / L-BFGS](#bfgs--l-bfgs).
42
+ - **Fit a model with residuals** (nonlinear least squares): use **Levenberg–Marquardt** or **Gauss–Newton** (`residual: (p) => Float64Array`, optional `jacobian: (p) => Matrix`). Start at [Levenberg-Marquardt](#levenberg-marquardt-nonlinear-least-squares).
43
+ - **Equality-constrained problems** \(c(p, x) = 0\): use **Adjoint** / **Constrained GN/LM** (`constraint: (p, x) => Float64Array`). Start at [Adjoint Method](#adjoint-method-constrained-optimization).
44
+ - **Browser usage**: start at [Browser Usage](#browser-usage).
45
+
46
+ **Why `Float64Array`?** This library uses `Float64Array` for predictable numeric performance. You can always convert from normal arrays with `new Float64Array([1, 2, 3])` (more details below).
47
+
48
+ ## Cost Function vs Residual Function (Important)
49
+
50
+ - **Cost function**: `cost(p) -> number` (used by `gradientDescent`)
51
+ - **Residual function**: `residual(p) -> Float64Array` (used by `gaussNewton` / `levenbergMarquardt`), where the library minimizes \(f(p) = 1/2 \|r(p)\|^2\)
52
+
53
+ ## Result Object (What to Look At)
54
+
55
+ Most algorithms return a `result` with these fields:
56
+
57
+ - **Common (all algorithms)**: `finalParameters`, `converged`, `iterations`, `finalCost`
58
+ - **Gradient Descent**: `finalGradientNorm`, `usedLineSearch`
59
+ - **BFGS / L-BFGS**: `finalGradientNorm`
60
+ - **Gauss-Newton / Levenberg–Marquardt**: `finalResidualNorm` (and LM also has `finalLambda`)
61
+ - **Constrained algorithms / Adjoint**: `finalStates`, `finalConstraintNorm`
62
+
63
+ Note: `result.parameters` is a deprecated alias of `result.finalParameters` and will be removed in a future release.
64
+
35
65
  ## 60-second Quick Start (Node)
36
66
 
37
67
  Pick **one** of the following and run it.
@@ -55,6 +85,30 @@ const result = gradientDescent(new Float64Array([5, -3]), cost, grad, {
55
85
  console.log(result.finalParameters);
56
86
  ```
57
87
 
88
+ ## BFGS / L-BFGS
89
+
90
+ Use these for smooth unconstrained problems when you can provide a gradient.
91
+
92
+ ```js
93
+ import { bfgs, lbfgs } from 'numopt-js';
94
+
95
+ const cost = (params) => (params[0] - 1) ** 2 + (params[1] + 2) ** 2;
96
+ const grad = (params) => new Float64Array([2 * (params[0] - 1), 2 * (params[1] + 2)]);
97
+
98
+ const bfgsResult = bfgs(new Float64Array([10, 10]), cost, grad, {
99
+ maxIterations: 200,
100
+ tolerance: 1e-8
101
+ });
102
+
103
+ const lbfgsResult = lbfgs(new Float64Array([10, 10]), cost, grad, {
104
+ maxIterations: 200,
105
+ tolerance: 1e-8,
106
+ historySize: 10
107
+ });
108
+
109
+ console.log(bfgsResult.finalParameters, lbfgsResult.finalParameters);
110
+ ```
111
+
58
112
  Run:
59
113
 
60
114
  ```bash
@@ -113,6 +167,10 @@ const { gradientDescent } = require('numopt-js');
113
167
 
114
168
  numopt-js is designed to work seamlessly in browser environments. The library automatically provides a browser-optimized bundle that includes all dependencies.
115
169
 
170
+ **Important**:
171
+ - **Don’t use `file://`** for the import-maps / direct-import examples. Serve your files via a local static server (for example: `npx serve`, `python -m http.server`, or Vite) so ES modules load correctly.
172
+ - **SSR frameworks (Next.js, etc.)**: run numopt-js on the client side. If you hit SSR errors, move the code into a client component (`"use client"`) or dynamically import it with SSR disabled.
173
+
116
174
  ### Option 1: Bundler (Recommended)
117
175
 
118
176
  If you're using a bundler (Vite/Webpack/Rollup), just import from the package and the bundler will resolve the browser build via `package.json` exports.
@@ -177,6 +235,15 @@ After installing dependencies with `npm install`, you can run the example script
177
235
  - `npm run example:constrained-gauss-newton` — constrained least squares via effective Jacobian
178
236
  - `npm run example:constrained-lm` — constrained Levenberg–Marquardt
179
237
 
238
+ **Start with these (recommended reading order):**
239
+
240
+ - `npm run example:gradient` — smallest end-to-end example (scalar cost + gradient)
241
+ - `npm run example:rosenbrock` — shows why line search matters on a classic non-convex problem
242
+ - `npm run example:lm` — first least-squares example (residuals, optional numeric Jacobian)
243
+ - `npm run example:constrained-gauss-newton` — first constrained least-squares example
244
+ - `npm run example:constrained-lm` — robust constrained least-squares (damping)
245
+ - `npm run example:adjoint` — constrained optimization with states \(x\) and parameters \(p\)
246
+
180
247
  **Pick an algorithm:**
181
248
 
182
249
  - Gradient Descent — stable first choice for smooth problems (see below)
@@ -350,6 +417,10 @@ const gradientFn = createFiniteDiffGradient(costFn, { stepSize: 1e-8 });
350
417
  const gradient = finiteDiffGradient(params, costFn, { stepSize: 1e-8 });
351
418
  ```
352
419
 
420
+ **Practical tips (finite differences)**:
421
+ - **Scale your parameters** so typical values are around \(O(1)\). If one parameter is \(10^{-6}\) and another is \(10^{6}\), a single global `stepSize` will often fail.
422
+ - If you work in physical units, consider **normalizing inputs/parameters** first, then convert back after optimization.
423
+
353
424
  ### Adjoint Method (Constrained Optimization)
354
425
 
355
426
  The adjoint method efficiently solves constrained optimization problems by solving for an adjoint variable λ instead of explicitly inverting matrices. This requires solving only one linear system per iteration, making it much more efficient than naive approaches.
@@ -636,7 +707,7 @@ Extends `ConstrainedGaussNewtonOptions` with:
636
707
  - `tolStep?: number` - Tolerance for step size convergence (default: 1e-6)
637
708
  - `tolResidual?: number` - Tolerance for residual norm convergence (default: 1e-6)
638
709
 
639
- **Note**: The constraint function `c(p, x)` does not need to return a vector with the same length as the state vector `x`. The adjoint method supports both square and non-square constraint Jacobians (overdetermined and underdetermined systems). For non-square matrices, the method uses QR decomposition or pseudo-inverse to solve the adjoint equation.
710
+ **Note**: The constraint function `c(p, x)` does not need to return a vector with the same length as the state vector `x`. The constrained solvers support both square and non-square constraint Jacobians (overdetermined and underdetermined systems) by solving the relevant linear systems in a least-squares sense (with regularization when needed). If you see instability, try scaling/normalizing your states/constraints.
640
711
 
641
712
  #### Numerical Differentiation Options
642
713
 
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This file implements the (dense) BFGS algorithm for unconstrained smooth optimization.
3
+ *
4
+ * Role in system:
5
+ * - Quasi-Newton optimizer for scalar cost functions with user-provided gradients
6
+ * - Uses Strong Wolfe line search to encourage curvature conditions needed for stable updates
7
+ * - Dense method: stores a full inverse Hessian approximation (O(n^2) memory)
8
+ *
9
+ * For first-time readers:
10
+ * - Start with `bfgs` (main entry point)
11
+ * - Then read `updateInverseHessianApproximation` (core BFGS update)
12
+ * - Finally, check safeguard helpers (descent direction / curvature checks)
13
+ */
14
+ import type { BfgsOptions, CostFn, GradientFn, OptimizationResult } from './types.js';
15
+ export declare function bfgs(initialParameters: Float64Array, costFunction: CostFn, gradientFunction: GradientFn, options?: BfgsOptions): OptimizationResult;
16
+ //# sourceMappingURL=bfgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bfgs.d.ts","sourceRoot":"","sources":["../../src/core/bfgs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgItF,wBAAgB,IAAI,CAClB,iBAAiB,EAAE,YAAY,EAC/B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,UAAU,EAC5B,OAAO,GAAE,WAAgB,GACxB,kBAAkB,CA2FpB"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * This file implements the (dense) BFGS algorithm for unconstrained smooth optimization.
3
+ *
4
+ * Role in system:
5
+ * - Quasi-Newton optimizer for scalar cost functions with user-provided gradients
6
+ * - Uses Strong Wolfe line search to encourage curvature conditions needed for stable updates
7
+ * - Dense method: stores a full inverse Hessian approximation (O(n^2) memory)
8
+ *
9
+ * For first-time readers:
10
+ * - Start with `bfgs` (main entry point)
11
+ * - Then read `updateInverseHessianApproximation` (core BFGS update)
12
+ * - Finally, check safeguard helpers (descent direction / curvature checks)
13
+ */
14
+ import { Matrix } from 'ml-matrix';
15
+ import { strongWolfeLineSearch } from './lineSearch.js';
16
+ import { Logger } from './logger.js';
17
+ import { checkGradientConvergence, createConvergenceResult } from './convergence.js';
18
+ import { addVectors, dotProduct, scaleVector, subtractVectors, vectorNorm } from '../utils/matrix.js';
19
+ const DEFAULT_MAX_ITERATIONS = 1000;
20
+ const DEFAULT_TOLERANCE = 1e-6;
21
+ const DEFAULT_USE_LINE_SEARCH = true;
22
+ const DEFAULT_FIXED_STEP_SIZE = 1.0;
23
+ const INVALID_STEP_SIZE = 0.0;
24
+ const NEGATIVE_GRADIENT_DIRECTION = -1.0;
25
+ const MINIMUM_CURVATURE_THRESHOLD = 1e-10;
26
+ function createIdentityMatrix(dimension) {
27
+ // NOTE: Provide both dimensions to stay compatible with our (older) local typing history
28
+ // and with ml-matrix's API where `columns` is optional.
29
+ return Matrix.eye(dimension, dimension);
30
+ }
31
+ function multiplyMatrixVector(matrix, vector) {
32
+ const result = new Float64Array(vector.length);
33
+ for (let rowIndex = 0; rowIndex < matrix.rows; rowIndex++) {
34
+ let sum = 0.0;
35
+ for (let columnIndex = 0; columnIndex < matrix.columns; columnIndex++) {
36
+ sum += matrix.get(rowIndex, columnIndex) * vector[columnIndex];
37
+ }
38
+ result[rowIndex] = sum;
39
+ }
40
+ return result;
41
+ }
42
+ function computeBfgsSearchDirection(inverseHessianApproximation, currentGradient) {
43
+ const approximateNewtonDirection = multiplyMatrixVector(inverseHessianApproximation, currentGradient);
44
+ return scaleVector(approximateNewtonDirection, NEGATIVE_GRADIENT_DIRECTION);
45
+ }
46
+ function ensureDescentDirectionOrFallback(currentGradient, proposedSearchDirection, currentInverseHessianApproximation, logger, iteration, currentCost) {
47
+ const directionalDerivative = dotProduct(currentGradient, proposedSearchDirection);
48
+ const isDescentDirection = directionalDerivative < 0.0;
49
+ if (isDescentDirection) {
50
+ return { searchDirection: proposedSearchDirection, inverseHessianApproximation: currentInverseHessianApproximation };
51
+ }
52
+ // WHY: If numerical issues yield a non-descent direction, reset H to identity and fall back to -g.
53
+ logger.warn('bfgs', iteration, 'Non-descent direction detected; resetting inverse Hessian and using negative gradient.', [
54
+ { key: 'Cost:', value: currentCost },
55
+ { key: 'Directional derivative:', value: directionalDerivative }
56
+ ]);
57
+ return {
58
+ searchDirection: scaleVector(currentGradient, NEGATIVE_GRADIENT_DIRECTION),
59
+ inverseHessianApproximation: createIdentityMatrix(currentGradient.length)
60
+ };
61
+ }
62
+ function updateInverseHessianApproximation(inverseHessianApproximation, stepVector, gradientChangeVector, logger, iteration, currentCost) {
63
+ const stepDotGradientChange = dotProduct(stepVector, gradientChangeVector);
64
+ const curvatureIsTooWeak = stepDotGradientChange <= MINIMUM_CURVATURE_THRESHOLD;
65
+ if (curvatureIsTooWeak) {
66
+ // WHY: If curvature is weak/negative, the BFGS update can break positive definiteness.
67
+ logger.warn('bfgs', iteration, 'Curvature condition too weak; resetting inverse Hessian approximation.', [
68
+ { key: 'Cost:', value: currentCost },
69
+ { key: 'stepDotGradientChange:', value: stepDotGradientChange }
70
+ ]);
71
+ return createIdentityMatrix(stepVector.length);
72
+ }
73
+ const curvatureScaling = 1.0 / stepDotGradientChange;
74
+ const stepMatrix = Matrix.columnVector(Array.from(stepVector));
75
+ const gradientChangeMatrix = Matrix.columnVector(Array.from(gradientChangeVector));
76
+ const identityMatrix = createIdentityMatrix(stepVector.length);
77
+ const stepGradientOuterProduct = stepMatrix.mmul(gradientChangeMatrix.transpose()).mul(curvatureScaling);
78
+ const gradientStepOuterProduct = gradientChangeMatrix.mmul(stepMatrix.transpose()).mul(curvatureScaling);
79
+ const leftFactor = identityMatrix.sub(stepGradientOuterProduct);
80
+ const rightFactor = identityMatrix.sub(gradientStepOuterProduct);
81
+ const rankTwoPart = leftFactor.mmul(inverseHessianApproximation).mmul(rightFactor);
82
+ const rankOnePart = stepMatrix.mmul(stepMatrix.transpose()).mul(curvatureScaling);
83
+ return rankTwoPart.add(rankOnePart);
84
+ }
85
+ function computeNextParameters(currentParameters, searchDirection, stepSize) {
86
+ const stepVector = scaleVector(searchDirection, stepSize);
87
+ return addVectors(currentParameters, stepVector);
88
+ }
89
+ function handleLineSearchFailure(currentParameters, iteration, currentCost, gradientNorm, logger) {
90
+ logger.warn('bfgs', iteration, 'Line search failed (non-descent direction).', [
91
+ { key: 'Cost:', value: currentCost },
92
+ { key: 'Gradient norm:', value: gradientNorm }
93
+ ]);
94
+ return {
95
+ finalParameters: currentParameters,
96
+ parameters: currentParameters,
97
+ iterations: iteration + 1,
98
+ converged: false,
99
+ finalCost: currentCost,
100
+ finalGradientNorm: gradientNorm
101
+ };
102
+ }
103
+ export function bfgs(initialParameters, costFunction, gradientFunction, options = {}) {
104
+ const maxIterations = options.maxIterations ?? DEFAULT_MAX_ITERATIONS;
105
+ const tolerance = options.tolerance ?? DEFAULT_TOLERANCE;
106
+ const useLineSearch = options.useLineSearch ?? DEFAULT_USE_LINE_SEARCH;
107
+ const fixedStepSize = options.stepSize ?? DEFAULT_FIXED_STEP_SIZE;
108
+ const onIteration = options.onIteration;
109
+ const logger = new Logger(options.logLevel, options.verbose);
110
+ let currentParameters = new Float64Array(initialParameters);
111
+ let currentCost = costFunction(currentParameters);
112
+ let inverseHessianApproximation = createIdentityMatrix(currentParameters.length);
113
+ for (let iteration = 0; iteration < maxIterations; iteration++) {
114
+ const currentGradient = gradientFunction(currentParameters);
115
+ const gradientNorm = vectorNorm(currentGradient);
116
+ if (onIteration)
117
+ onIteration(iteration, currentCost, currentParameters);
118
+ if (checkGradientConvergence(gradientNorm, tolerance, iteration)) {
119
+ logger.info('bfgs', iteration, 'Converged', [
120
+ { key: 'Cost:', value: currentCost },
121
+ { key: 'Gradient norm:', value: gradientNorm }
122
+ ]);
123
+ return createConvergenceResult(currentParameters, iteration, true, currentCost, gradientNorm);
124
+ }
125
+ const proposedSearchDirection = computeBfgsSearchDirection(inverseHessianApproximation, currentGradient);
126
+ const descentResult = ensureDescentDirectionOrFallback(currentGradient, proposedSearchDirection, inverseHessianApproximation, logger, iteration, currentCost);
127
+ const searchDirection = descentResult.searchDirection;
128
+ inverseHessianApproximation = descentResult.inverseHessianApproximation;
129
+ const stepSize = useLineSearch
130
+ ? strongWolfeLineSearch(costFunction, gradientFunction, currentParameters, searchDirection, options.lineSearchOptions)
131
+ : fixedStepSize;
132
+ if (stepSize === INVALID_STEP_SIZE) {
133
+ return handleLineSearchFailure(currentParameters, iteration, currentCost, gradientNorm, logger);
134
+ }
135
+ const newParameters = computeNextParameters(currentParameters, searchDirection, stepSize);
136
+ const stepVector = subtractVectors(newParameters, currentParameters);
137
+ const stepNorm = vectorNorm(stepVector);
138
+ const newCost = costFunction(newParameters);
139
+ const newGradient = gradientFunction(newParameters);
140
+ const gradientChangeVector = subtractVectors(newGradient, currentGradient);
141
+ inverseHessianApproximation = updateInverseHessianApproximation(inverseHessianApproximation, stepVector, gradientChangeVector, logger, iteration, newCost);
142
+ logger.debug('bfgs', iteration, 'Progress', [
143
+ { key: 'Cost:', value: currentCost },
144
+ { key: 'Gradient norm:', value: gradientNorm },
145
+ { key: 'Step size:', value: stepSize },
146
+ { key: 'Step norm:', value: stepNorm }
147
+ ]);
148
+ currentParameters = new Float64Array(newParameters);
149
+ currentCost = newCost;
150
+ }
151
+ const finalGradient = gradientFunction(currentParameters);
152
+ const finalGradientNorm = vectorNorm(finalGradient);
153
+ logger.warn('bfgs', undefined, 'Maximum iterations reached', [
154
+ { key: 'Iterations:', value: maxIterations },
155
+ { key: 'Final cost:', value: currentCost },
156
+ { key: 'Final gradient norm:', value: finalGradientNorm }
157
+ ]);
158
+ return {
159
+ finalParameters: currentParameters,
160
+ parameters: currentParameters,
161
+ iterations: maxIterations,
162
+ converged: false,
163
+ finalCost: currentCost,
164
+ finalGradientNorm: finalGradientNorm
165
+ };
166
+ }
167
+ //# sourceMappingURL=bfgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bfgs.js","sourceRoot":"","sources":["../../src/core/bfgs.ts"],"names":[],"mappings":"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"}
@@ -77,8 +77,11 @@ export declare function projectStatesToConstraints(parameters: Float64Array, sta
77
77
  * Validates initial conditions including constraint satisfaction and dimensions.
78
78
  *
79
79
  * Checks that:
80
- * 1. Constraint count equals state count (required for adjoint method)
81
- * 2. Initial constraint violation is within tolerance (warns if not)
80
+ * 1. Initial constraint violation is within tolerance (warns if not)
81
+ *
82
+ * Note:
83
+ * - Constraint count and state count do not need to match.
84
+ * - Both square and non-square constraint Jacobians are supported by the shared solvers.
82
85
  *
83
86
  * @param initialParameters - Initial parameter vector p0
84
87
  * @param initialStates - Initial state vector x0
@@ -86,7 +89,6 @@ export declare function projectStatesToConstraints(parameters: Float64Array, sta
86
89
  * @param constraintTolerance - Tolerance for constraint violation
87
90
  * @param logger - Logger instance for warnings
88
91
  * @param algorithmName - Name of calling algorithm (for error messages)
89
- * @throws Error if constraint count != state count
90
92
  */
91
93
  export declare function validateInitialConditions(initialParameters: Float64Array, initialStates: Float64Array, constraintFunction: ConstraintFn, constraintTolerance: number, logger: Logger, algorithmName?: string): void;
92
94
  //# sourceMappingURL=constrainedUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constrainedUtils.d.ts","sourceRoot":"","sources":["../../src/core/constrainedUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAgC,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAyQrC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,EACjD,cAAc,GAAE,MAAU,GACzB,YAAY,CAgBd;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,EACjD,cAAc,GAAE,MAAU,GACzB,YAAY,CAkBd;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,YAAY,EAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,GAChD,YAAY,CAcd;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,YAAY,EACxB,MAAM,EAAE,YAAY,EACpB,kBAAkB,EAAE,YAAY,EAChC,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,EACjD,aAAa,GAAE,MAAU,GACxB,YAAY,CAyBd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,iBAAiB,EAAE,YAAY,EAC/B,aAAa,EAAE,YAAY,EAC3B,kBAAkB,EAAE,YAAY,EAChC,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,GAChD,IAAI,CAYN"}
1
+ {"version":3,"file":"constrainedUtils.d.ts","sourceRoot":"","sources":["../../src/core/constrainedUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAgC,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAyQrC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,EACjD,cAAc,GAAE,MAAU,GACzB,YAAY,CAgBd;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,EACjD,cAAc,GAAE,MAAU,GACzB,YAAY,CAkBd;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,YAAY,EAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,GAChD,YAAY,CAcd;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,YAAY,EACxB,MAAM,EAAE,YAAY,EACpB,kBAAkB,EAAE,YAAY,EAChC,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,EACjD,aAAa,GAAE,MAAU,GACxB,YAAY,CAyBd;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,iBAAiB,EAAE,YAAY,EAC/B,aAAa,EAAE,YAAY,EAC3B,kBAAkB,EAAE,YAAY,EAChC,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAkC,GAChD,IAAI,CAYN"}
@@ -338,8 +338,11 @@ export function projectStatesToConstraints(parameters, states, constraintFunctio
338
338
  * Validates initial conditions including constraint satisfaction and dimensions.
339
339
  *
340
340
  * Checks that:
341
- * 1. Constraint count equals state count (required for adjoint method)
342
- * 2. Initial constraint violation is within tolerance (warns if not)
341
+ * 1. Initial constraint violation is within tolerance (warns if not)
342
+ *
343
+ * Note:
344
+ * - Constraint count and state count do not need to match.
345
+ * - Both square and non-square constraint Jacobians are supported by the shared solvers.
343
346
  *
344
347
  * @param initialParameters - Initial parameter vector p0
345
348
  * @param initialStates - Initial state vector x0
@@ -347,7 +350,6 @@ export function projectStatesToConstraints(parameters, states, constraintFunctio
347
350
  * @param constraintTolerance - Tolerance for constraint violation
348
351
  * @param logger - Logger instance for warnings
349
352
  * @param algorithmName - Name of calling algorithm (for error messages)
350
- * @throws Error if constraint count != state count
351
353
  */
352
354
  export function validateInitialConditions(initialParameters, initialStates, constraintFunction, constraintTolerance, logger, algorithmName = 'constrainedOptimization') {
353
355
  const initialConstraint = constraintFunction(initialParameters, initialStates);
@@ -1 +1 @@
1
- {"version":3,"file":"constrainedUtils.js","sourceRoot":"","sources":["../../src/core/constrainedUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constrainedUtils.js","sourceRoot":"","sources":["../../src/core/constrainedUtils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"convergence.d.ts","sourceRoot":"","sources":["../../src/core/convergence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,YAAY,EAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GACzB,kBAAkB,CASpB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT"}
1
+ {"version":3,"file":"convergence.d.ts","sourceRoot":"","sources":["../../src/core/convergence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,YAAY,EAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,GACzB,kBAAkB,CASpB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAOT;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAKT;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAIT"}
@@ -30,23 +30,30 @@ export function createConvergenceResult(finalParameters, iteration, converged, f
30
30
  * Returns true if gradient is small enough (algorithm has found a stationary point).
31
31
  */
32
32
  export function checkGradientConvergence(gradientNorm, tolerance, iteration) {
33
- // Skip convergence check on first iteration (no step taken yet)
34
- return iteration > 0 && gradientNorm < tolerance;
33
+ // NOTE:
34
+ // If the initial point is already a stationary point (||∇f(x0)|| ≈ 0),
35
+ // optimizers should report convergence immediately. Skipping iteration 0
36
+ // can incorrectly trigger line-search failures (e.g., zero search direction).
37
+ void iteration; // kept for backward-compatible signature
38
+ return gradientNorm < tolerance;
35
39
  }
36
40
  /**
37
41
  * Checks if step size indicates convergence.
38
42
  * Returns true if step is small enough (algorithm is making minimal progress).
39
43
  */
40
44
  export function checkStepSizeConvergence(stepNorm, tolerance, iteration) {
41
- // Skip convergence check on first iteration (no step taken yet)
42
- return iteration > 0 && stepNorm < tolerance;
45
+ // A tiny step on the first iteration is still a valid convergence signal
46
+ // (e.g., already near the optimum).
47
+ void iteration; // kept for backward-compatible signature
48
+ return stepNorm < tolerance;
43
49
  }
44
50
  /**
45
51
  * Checks if residual norm indicates convergence.
46
52
  * Returns true if residual is small enough (problem is solved to desired accuracy).
47
53
  */
48
54
  export function checkResidualConvergence(residualNorm, tolerance, iteration) {
49
- // Skip convergence check on first iteration (no step taken yet)
50
- return iteration > 0 && residualNorm < tolerance;
55
+ // If the initial residual is already small, we should converge immediately.
56
+ void iteration; // kept for backward-compatible signature
57
+ return residualNorm < tolerance;
51
58
  }
52
59
  //# sourceMappingURL=convergence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"convergence.js","sourceRoot":"","sources":["../../src/core/convergence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,eAA6B,EAC7B,SAAiB,EACjB,SAAkB,EAClB,SAAiB,EACjB,iBAA0B;IAE1B,OAAO;QACL,eAAe;QACf,UAAU,EAAE,eAAe;QAC3B,UAAU,EAAE,SAAS,GAAG,CAAC;QACzB,SAAS;QACT,SAAS;QACT,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAoB,EACpB,SAAiB,EACjB,SAAiB;IAEjB,gEAAgE;IAChE,OAAO,SAAS,GAAG,CAAC,IAAI,YAAY,GAAG,SAAS,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAgB,EAChB,SAAiB,EACjB,SAAiB;IAEjB,gEAAgE;IAChE,OAAO,SAAS,GAAG,CAAC,IAAI,QAAQ,GAAG,SAAS,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAoB,EACpB,SAAiB,EACjB,SAAiB;IAEjB,gEAAgE;IAChE,OAAO,SAAS,GAAG,CAAC,IAAI,YAAY,GAAG,SAAS,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"convergence.js","sourceRoot":"","sources":["../../src/core/convergence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,eAA6B,EAC7B,SAAiB,EACjB,SAAkB,EAClB,SAAiB,EACjB,iBAA0B;IAE1B,OAAO;QACL,eAAe;QACf,UAAU,EAAE,eAAe;QAC3B,UAAU,EAAE,SAAS,GAAG,CAAC;QACzB,SAAS;QACT,SAAS;QACT,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAoB,EACpB,SAAiB,EACjB,SAAiB;IAEjB,QAAQ;IACR,uEAAuE;IACvE,yEAAyE;IACzE,8EAA8E;IAC9E,KAAK,SAAS,CAAC,CAAC,yCAAyC;IACzD,OAAO,YAAY,GAAG,SAAS,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAgB,EAChB,SAAiB,EACjB,SAAiB;IAEjB,yEAAyE;IACzE,oCAAoC;IACpC,KAAK,SAAS,CAAC,CAAC,yCAAyC;IACzD,OAAO,QAAQ,GAAG,SAAS,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAoB,EACpB,SAAiB,EACjB,SAAiB;IAEjB,4EAA4E;IAC5E,KAAK,SAAS,CAAC,CAAC,yCAAyC;IACzD,OAAO,YAAY,GAAG,SAAS,CAAC;AAClC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * This file implements the L-BFGS (Limited-memory BFGS) algorithm for unconstrained
3
+ * smooth optimization.
4
+ *
5
+ * Role in system:
6
+ * - Quasi-Newton optimizer for scalar cost functions with user-provided gradients
7
+ * - Uses Strong Wolfe line search to obtain steps that typically satisfy curvature conditions
8
+ * - Memory-efficient alternative to dense BFGS for medium/large parameter counts
9
+ *
10
+ * For first-time readers:
11
+ * - Start with `lbfgs` (main entry point)
12
+ * - Then read `computeLbfgsSearchDirection` (two-loop recursion)
13
+ * - Finally, check safeguard helpers (descent direction / curvature checks)
14
+ */
15
+ import type { CostFn, GradientFn, OptimizationResult, LbfgsOptions } from './types.js';
16
+ export declare function lbfgs(initialParameters: Float64Array, costFunction: CostFn, gradientFunction: GradientFn, options?: LbfgsOptions): OptimizationResult;
17
+ //# sourceMappingURL=lbfgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lbfgs.d.ts","sourceRoot":"","sources":["../../src/core/lbfgs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0KvF,wBAAgB,KAAK,CACnB,iBAAiB,EAAE,YAAY,EAC/B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,UAAU,EAC5B,OAAO,GAAE,YAAiB,GACzB,kBAAkB,CAmFpB"}