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 +72 -1
- package/dist/core/bfgs.d.ts +16 -0
- package/dist/core/bfgs.d.ts.map +1 -0
- package/dist/core/bfgs.js +167 -0
- package/dist/core/bfgs.js.map +1 -0
- package/dist/core/constrainedUtils.d.ts +5 -3
- package/dist/core/constrainedUtils.d.ts.map +1 -1
- package/dist/core/constrainedUtils.js +5 -3
- package/dist/core/constrainedUtils.js.map +1 -1
- package/dist/core/convergence.d.ts.map +1 -1
- package/dist/core/convergence.js +13 -6
- package/dist/core/convergence.js.map +1 -1
- package/dist/core/lbfgs.d.ts +17 -0
- package/dist/core/lbfgs.d.ts.map +1 -0
- package/dist/core/lbfgs.js +199 -0
- package/dist/core/lbfgs.js.map +1 -0
- package/dist/core/lineSearch.d.ts +15 -11
- package/dist/core/lineSearch.d.ts.map +1 -1
- package/dist/core/lineSearch.js +138 -15
- package/dist/core/lineSearch.js.map +1 -1
- package/dist/core/types.d.ts +94 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.browser.js +532 -57
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs +534 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
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.
|
|
81
|
-
*
|
|
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
|
|
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.
|
|
342
|
-
*
|
|
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,
|
|
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"}
|
package/dist/core/convergence.js
CHANGED
|
@@ -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
|
-
//
|
|
34
|
-
|
|
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
|
-
//
|
|
42
|
-
|
|
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
|
-
//
|
|
50
|
-
|
|
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,
|
|
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"}
|