numopt-js 0.1.0
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/CODING_RULES.md +161 -0
- package/LICENSE +22 -0
- package/README.md +807 -0
- package/dist/core/adjointGradientDescent.d.ts +61 -0
- package/dist/core/adjointGradientDescent.d.ts.map +1 -0
- package/dist/core/adjointGradientDescent.js +764 -0
- package/dist/core/adjointGradientDescent.js.map +1 -0
- package/dist/core/constrainedGaussNewton.d.ts +44 -0
- package/dist/core/constrainedGaussNewton.d.ts.map +1 -0
- package/dist/core/constrainedGaussNewton.js +314 -0
- package/dist/core/constrainedGaussNewton.js.map +1 -0
- package/dist/core/constrainedLevenbergMarquardt.d.ts +46 -0
- package/dist/core/constrainedLevenbergMarquardt.d.ts.map +1 -0
- package/dist/core/constrainedLevenbergMarquardt.js +469 -0
- package/dist/core/constrainedLevenbergMarquardt.js.map +1 -0
- package/dist/core/constrainedUtils.d.ts +92 -0
- package/dist/core/constrainedUtils.d.ts.map +1 -0
- package/dist/core/constrainedUtils.js +364 -0
- package/dist/core/constrainedUtils.js.map +1 -0
- package/dist/core/convergence.d.ts +35 -0
- package/dist/core/convergence.d.ts.map +1 -0
- package/dist/core/convergence.js +51 -0
- package/dist/core/convergence.js.map +1 -0
- package/dist/core/createGradientFunction.d.ts +85 -0
- package/dist/core/createGradientFunction.d.ts.map +1 -0
- package/dist/core/createGradientFunction.js +93 -0
- package/dist/core/createGradientFunction.js.map +1 -0
- package/dist/core/effectiveJacobian.d.ts +90 -0
- package/dist/core/effectiveJacobian.d.ts.map +1 -0
- package/dist/core/effectiveJacobian.js +128 -0
- package/dist/core/effectiveJacobian.js.map +1 -0
- package/dist/core/finiteDiff.d.ts +171 -0
- package/dist/core/finiteDiff.d.ts.map +1 -0
- package/dist/core/finiteDiff.js +363 -0
- package/dist/core/finiteDiff.js.map +1 -0
- package/dist/core/gaussNewton.d.ts +29 -0
- package/dist/core/gaussNewton.d.ts.map +1 -0
- package/dist/core/gaussNewton.js +151 -0
- package/dist/core/gaussNewton.js.map +1 -0
- package/dist/core/gradientDescent.d.ts +35 -0
- package/dist/core/gradientDescent.d.ts.map +1 -0
- package/dist/core/gradientDescent.js +204 -0
- package/dist/core/gradientDescent.js.map +1 -0
- package/dist/core/jacobianComputation.d.ts +24 -0
- package/dist/core/jacobianComputation.d.ts.map +1 -0
- package/dist/core/jacobianComputation.js +38 -0
- package/dist/core/jacobianComputation.js.map +1 -0
- package/dist/core/levenbergMarquardt.d.ts +36 -0
- package/dist/core/levenbergMarquardt.d.ts.map +1 -0
- package/dist/core/levenbergMarquardt.js +286 -0
- package/dist/core/levenbergMarquardt.js.map +1 -0
- package/dist/core/lineSearch.d.ts +42 -0
- package/dist/core/lineSearch.d.ts.map +1 -0
- package/dist/core/lineSearch.js +106 -0
- package/dist/core/lineSearch.js.map +1 -0
- package/dist/core/logger.d.ts +77 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +162 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/types.d.ts +427 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +15 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/formatting.d.ts +27 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +54 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/matrix.d.ts +63 -0
- package/dist/utils/matrix.d.ts.map +1 -0
- package/dist/utils/matrix.js +129 -0
- package/dist/utils/matrix.js.map +1 -0
- package/dist/utils/resultFormatter.d.ts +122 -0
- package/dist/utils/resultFormatter.d.ts.map +1 -0
- package/dist/utils/resultFormatter.js +342 -0
- package/dist/utils/resultFormatter.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adjointGradientDescent.js","sourceRoot":"","sources":["../../src/core/adjointGradientDescent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file implements the constrained Gauss-Newton method for solving
|
|
3
|
+
* nonlinear least squares problems with constraints.
|
|
4
|
+
*
|
|
5
|
+
* The constrained Gauss-Newton method uses the effective Jacobian concept:
|
|
6
|
+
* J_eff = r_p - r_x C_x^+ C_p, which captures all constraint effects.
|
|
7
|
+
* This allows the algorithm to use the same structure as unconstrained
|
|
8
|
+
* Gauss-Newton: (J_eff^T J_eff) δ = -J_eff^T r
|
|
9
|
+
*
|
|
10
|
+
* Role in system:
|
|
11
|
+
* - Constrained version of Gauss-Newton method
|
|
12
|
+
* - Uses effective Jacobian computed via adjoint method
|
|
13
|
+
* - Updates both parameters and states to maintain constraint satisfaction
|
|
14
|
+
* - Foundation for constrained Levenberg-Marquardt method
|
|
15
|
+
*
|
|
16
|
+
* For first-time readers:
|
|
17
|
+
* - Start with constrainedGaussNewton function
|
|
18
|
+
* - Understand how effective Jacobian replaces regular Jacobian
|
|
19
|
+
* - Check how states are updated using linear approximation
|
|
20
|
+
*/
|
|
21
|
+
import type { ConstrainedResidualFn, ConstraintFn, ConstrainedGaussNewtonOptions, ConstrainedGaussNewtonResult } from './types.js';
|
|
22
|
+
/**
|
|
23
|
+
* Performs constrained Gauss-Newton optimization for nonlinear least squares problems.
|
|
24
|
+
*
|
|
25
|
+
* Algorithm:
|
|
26
|
+
* 1. Start with initial parameters p0 and states x0 (satisfying c(p0, x0) = 0)
|
|
27
|
+
* 2. Compute effective Jacobian J_eff = r_p - r_x C_x^+ C_p
|
|
28
|
+
* 3. Solve normal equations: (J_eff^T J_eff) δ = -J_eff^T r
|
|
29
|
+
* 4. Update parameters: p_new = p_old + δ
|
|
30
|
+
* 5. Update states: x_new = x_old + dx where (∂c/∂x) dx = -∂c/∂p · δ (linear approximation)
|
|
31
|
+
* 6. Repeat until convergence
|
|
32
|
+
*
|
|
33
|
+
* The effective Jacobian captures all constraint effects, allowing the algorithm
|
|
34
|
+
* to use the same structure as unconstrained Gauss-Newton.
|
|
35
|
+
*
|
|
36
|
+
* @param initialParameters - Initial parameter vector p0
|
|
37
|
+
* @param initialStates - Initial state vector x0 (should satisfy c(p0, x0) = 0)
|
|
38
|
+
* @param residualFunction - Residual function r(p, x)
|
|
39
|
+
* @param constraintFunction - Constraint function c(p, x) = 0
|
|
40
|
+
* @param options - Optimization options
|
|
41
|
+
* @returns Optimization result with final parameters, states, and constraint norm
|
|
42
|
+
*/
|
|
43
|
+
export declare function constrainedGaussNewton(initialParameters: Float64Array, initialStates: Float64Array, residualFunction: ConstrainedResidualFn, constraintFunction: ConstraintFn, options?: ConstrainedGaussNewtonOptions): ConstrainedGaussNewtonResult;
|
|
44
|
+
//# sourceMappingURL=constrainedGaussNewton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constrainedGaussNewton.d.ts","sourceRoot":"","sources":["../../src/core/constrainedGaussNewton.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,YAAY,EACZ,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AA+apB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,YAAY,EAC/B,aAAa,EAAE,YAAY,EAC3B,gBAAgB,EAAE,qBAAqB,EACvC,kBAAkB,EAAE,YAAY,EAChC,OAAO,GAAE,6BAAkC,GAC1C,4BAA4B,CAyE9B"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file implements the constrained Gauss-Newton method for solving
|
|
3
|
+
* nonlinear least squares problems with constraints.
|
|
4
|
+
*
|
|
5
|
+
* The constrained Gauss-Newton method uses the effective Jacobian concept:
|
|
6
|
+
* J_eff = r_p - r_x C_x^+ C_p, which captures all constraint effects.
|
|
7
|
+
* This allows the algorithm to use the same structure as unconstrained
|
|
8
|
+
* Gauss-Newton: (J_eff^T J_eff) δ = -J_eff^T r
|
|
9
|
+
*
|
|
10
|
+
* Role in system:
|
|
11
|
+
* - Constrained version of Gauss-Newton method
|
|
12
|
+
* - Uses effective Jacobian computed via adjoint method
|
|
13
|
+
* - Updates both parameters and states to maintain constraint satisfaction
|
|
14
|
+
* - Foundation for constrained Levenberg-Marquardt method
|
|
15
|
+
*
|
|
16
|
+
* For first-time readers:
|
|
17
|
+
* - Start with constrainedGaussNewton function
|
|
18
|
+
* - Understand how effective Jacobian replaces regular Jacobian
|
|
19
|
+
* - Check how states are updated using linear approximation
|
|
20
|
+
*/
|
|
21
|
+
import { Matrix, solve, CholeskyDecomposition } from 'ml-matrix';
|
|
22
|
+
import { float64ArrayToMatrix, matrixToFloat64Array, vectorNorm, computeSumOfSquaredResiduals } from '../utils/matrix.js';
|
|
23
|
+
import { checkStepSizeConvergence, checkResidualConvergence, createConvergenceResult } from './convergence.js';
|
|
24
|
+
import { computeEffectiveJacobian } from './effectiveJacobian.js';
|
|
25
|
+
import { updateStates, validateInitialConditions, projectStatesToConstraints } from './constrainedUtils.js';
|
|
26
|
+
import { Logger } from './logger.js';
|
|
27
|
+
import { finiteDiffConstraintPartialP, finiteDiffConstraintPartialX } from './finiteDiff.js';
|
|
28
|
+
const DEFAULT_MAX_ITERATIONS = 1000;
|
|
29
|
+
const DEFAULT_TOLERANCE = 1e-6;
|
|
30
|
+
const DEFAULT_CONSTRAINT_TOLERANCE = 1e-6;
|
|
31
|
+
const DEFAULT_STEP_SIZE_P = 1e-6;
|
|
32
|
+
const DEFAULT_STEP_SIZE_X = 1e-6;
|
|
33
|
+
const NEGATIVE_COEFFICIENT = -1.0; // Coefficient for negative right-hand side in normal equations: (J_eff^T J_eff) δ = -J_eff^T r
|
|
34
|
+
const DEFAULT_RIDGE_REGULARIZATION = 1e-8; // Small ridge regularization to recover positive definiteness when Cholesky fails
|
|
35
|
+
/**
|
|
36
|
+
* Checks constraint violation and logs warning if needed.
|
|
37
|
+
*/
|
|
38
|
+
function checkConstraintViolation(currentParameters, currentStates, constraintFunction, constraintTolerance, iteration, logger) {
|
|
39
|
+
const constraint = constraintFunction(currentParameters, currentStates);
|
|
40
|
+
const constraintNorm = vectorNorm(constraint);
|
|
41
|
+
if (constraintNorm > constraintTolerance) {
|
|
42
|
+
logger.warn('constrainedGaussNewton', iteration, 'Constraint violation detected', [
|
|
43
|
+
{ key: '||c(p,x)||:', value: constraintNorm },
|
|
44
|
+
{ key: 'Tolerance:', value: constraintTolerance }
|
|
45
|
+
]);
|
|
46
|
+
}
|
|
47
|
+
return { constraint, constraintNorm };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Solves normal equations for constrained Gauss-Newton: (J_eff^T J_eff) δ = -J_eff^T r
|
|
51
|
+
* Returns the step vector δ, or throws if matrix is singular.
|
|
52
|
+
*/
|
|
53
|
+
function solveNormalEquationsForConstrainedGN(effectiveJacobian, residual) {
|
|
54
|
+
const effectiveJacobianTranspose = effectiveJacobian.transpose();
|
|
55
|
+
const jacobianTransposeJacobian = effectiveJacobianTranspose.mmul(effectiveJacobian);
|
|
56
|
+
const residualMatrix = float64ArrayToMatrix(residual);
|
|
57
|
+
const jacobianTransposeResidual = effectiveJacobianTranspose.mmul(residualMatrix);
|
|
58
|
+
const negativeJacobianTransposeResidual = jacobianTransposeResidual.mul(NEGATIVE_COEFFICIENT);
|
|
59
|
+
const jittered = jacobianTransposeJacobian.add(Matrix.eye(jacobianTransposeJacobian.rows, jacobianTransposeJacobian.columns).mul(DEFAULT_RIDGE_REGULARIZATION));
|
|
60
|
+
// Try Cholesky on original matrix first
|
|
61
|
+
try {
|
|
62
|
+
const cholesky = new CholeskyDecomposition(jacobianTransposeJacobian);
|
|
63
|
+
if (cholesky.isPositiveDefinite()) {
|
|
64
|
+
return matrixToFloat64Array(cholesky.solve(negativeJacobianTransposeResidual));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (choleskyError) {
|
|
68
|
+
// Fall through to ridge regularization
|
|
69
|
+
}
|
|
70
|
+
// Ridge regularization helps recover positive definiteness when matrix is near-singular
|
|
71
|
+
// This improves numerical stability by adding small diagonal terms
|
|
72
|
+
try {
|
|
73
|
+
const choleskyRidge = new CholeskyDecomposition(jittered);
|
|
74
|
+
if (choleskyRidge.isPositiveDefinite()) {
|
|
75
|
+
return matrixToFloat64Array(choleskyRidge.solve(negativeJacobianTransposeResidual));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (ridgeError) {
|
|
79
|
+
// Fall through to general solver
|
|
80
|
+
}
|
|
81
|
+
// Final fallback: general solver (may fail if matrix is truly singular)
|
|
82
|
+
return matrixToFloat64Array(solve(jacobianTransposeJacobian, negativeJacobianTransposeResidual));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Updates parameters and states for constrained Gauss-Newton iteration.
|
|
86
|
+
* Parameters are updated directly: p_new = p_old + δ
|
|
87
|
+
* States are updated using linear approximation to maintain constraint satisfaction.
|
|
88
|
+
*/
|
|
89
|
+
function updateParametersAndStatesForConstrainedGN(currentParameters, currentStates, step, constraintFunction, stepSizeP, stepSizeX, constraintTolerance, logger, dcdp, dcdx) {
|
|
90
|
+
const newParameters = new Float64Array(currentParameters.length);
|
|
91
|
+
for (let i = 0; i < currentParameters.length; i++) {
|
|
92
|
+
newParameters[i] = currentParameters[i] + step[i];
|
|
93
|
+
}
|
|
94
|
+
const constraintJacobianX = dcdx
|
|
95
|
+
? dcdx(currentParameters, currentStates)
|
|
96
|
+
: finiteDiffConstraintPartialX(currentParameters, currentStates, constraintFunction, { stepSize: stepSizeX });
|
|
97
|
+
const constraintJacobianP = dcdp
|
|
98
|
+
? dcdp(currentParameters, currentStates)
|
|
99
|
+
: finiteDiffConstraintPartialP(currentParameters, currentStates, constraintFunction, { stepSize: stepSizeP });
|
|
100
|
+
const newStates = updateStates(currentStates, constraintJacobianX, constraintJacobianP, step, logger, 'constrainedGaussNewton');
|
|
101
|
+
const projectedStates = projectStatesToConstraints(newParameters, newStates, constraintFunction, stepSizeX, constraintTolerance, logger, 'constrainedGaussNewton');
|
|
102
|
+
return { newParameters, newStates: projectedStates };
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Computes step vector for constrained Gauss-Newton iteration.
|
|
106
|
+
* Handles singular matrix errors by returning convergence result.
|
|
107
|
+
*/
|
|
108
|
+
function computeStepForGN(currentParameters, currentStates, residualFunction, constraintFunction, effectiveJacobianOptions, iteration, logger, cost, residualNorm, constraintNorm) {
|
|
109
|
+
const effectiveJacobian = computeEffectiveJacobian(currentParameters, currentStates, residualFunction, constraintFunction, effectiveJacobianOptions, logger, 'constrainedGaussNewton');
|
|
110
|
+
const residual = residualFunction(currentParameters, currentStates);
|
|
111
|
+
let step;
|
|
112
|
+
try {
|
|
113
|
+
step = solveNormalEquationsForConstrainedGN(effectiveJacobian, residual);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
logger.warn('constrainedGaussNewton', iteration, 'Singular matrix encountered. Consider using constrained Levenberg-Marquardt method for better robustness.', [
|
|
117
|
+
{ key: 'Cost:', value: cost },
|
|
118
|
+
{ key: 'Residual norm:', value: residualNorm },
|
|
119
|
+
{ key: 'Constraint norm:', value: constraintNorm }
|
|
120
|
+
]);
|
|
121
|
+
const result = createConvergenceResult(currentParameters, iteration, false, cost, undefined);
|
|
122
|
+
return {
|
|
123
|
+
converged: false,
|
|
124
|
+
result: {
|
|
125
|
+
...result,
|
|
126
|
+
finalResidualNorm: residualNorm,
|
|
127
|
+
finalStates: currentStates,
|
|
128
|
+
finalConstraintNorm: constraintNorm
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return { step };
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Checks step size convergence for constrained Gauss-Newton.
|
|
136
|
+
* Returns convergence result if converged, null otherwise.
|
|
137
|
+
*/
|
|
138
|
+
function checkStepSizeConvergenceForGN(stepNorm, constraintSatisfied, tolerance, iteration, currentParameters, currentStates, cost, residualNorm, constraintNorm, logger) {
|
|
139
|
+
if (constraintSatisfied && checkStepSizeConvergence(stepNorm, tolerance, iteration)) {
|
|
140
|
+
logger.info('constrainedGaussNewton', iteration, 'Converged', [
|
|
141
|
+
{ key: 'Cost:', value: cost },
|
|
142
|
+
{ key: 'Residual norm:', value: residualNorm },
|
|
143
|
+
{ key: 'Step size:', value: stepNorm },
|
|
144
|
+
{ key: 'Constraint norm:', value: constraintNorm }
|
|
145
|
+
]);
|
|
146
|
+
const result = createConvergenceResult(currentParameters, iteration, true, cost, undefined);
|
|
147
|
+
return {
|
|
148
|
+
...result,
|
|
149
|
+
finalResidualNorm: residualNorm,
|
|
150
|
+
finalStates: currentStates,
|
|
151
|
+
finalConstraintNorm: constraintNorm
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Checks residual convergence after parameter/state update.
|
|
158
|
+
* Returns convergence result if converged, null otherwise.
|
|
159
|
+
*/
|
|
160
|
+
function checkResidualConvergenceForGN(newParameters, newStates, newResidualNorm, newCost, constraintFunction, constraintTolerance, tolerance, iteration, constraintNorm, logger) {
|
|
161
|
+
if (checkResidualConvergence(newResidualNorm, tolerance, iteration)) {
|
|
162
|
+
logger.info('constrainedGaussNewton', iteration, 'Converged', [
|
|
163
|
+
{ key: 'Cost:', value: newCost },
|
|
164
|
+
{ key: 'Residual norm:', value: newResidualNorm },
|
|
165
|
+
{ key: 'Constraint norm:', value: constraintNorm }
|
|
166
|
+
]);
|
|
167
|
+
const finalConstraint = constraintFunction(newParameters, newStates);
|
|
168
|
+
const finalConstraintNorm = vectorNorm(finalConstraint);
|
|
169
|
+
if (finalConstraintNorm <= constraintTolerance) {
|
|
170
|
+
const result = createConvergenceResult(newParameters, iteration, true, newCost, undefined);
|
|
171
|
+
return {
|
|
172
|
+
...result,
|
|
173
|
+
finalResidualNorm: newResidualNorm,
|
|
174
|
+
finalStates: newStates,
|
|
175
|
+
finalConstraintNorm: finalConstraintNorm
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Performs one iteration of constrained Gauss-Newton optimization.
|
|
183
|
+
* Returns updated parameters/states or null if converged/error occurred.
|
|
184
|
+
*/
|
|
185
|
+
function performConstrainedGaussNewtonIteration(currentParameters, currentStates, residualFunction, constraintFunction, effectiveJacobianOptions, tolerance, constraintTolerance, stepSizeP, stepSizeX, iteration, logger, onIteration, dcdp, dcdx) {
|
|
186
|
+
const { constraintNorm } = checkConstraintViolation(currentParameters, currentStates, constraintFunction, constraintTolerance, iteration, logger);
|
|
187
|
+
const residual = residualFunction(currentParameters, currentStates);
|
|
188
|
+
const residualNorm = vectorNorm(residual);
|
|
189
|
+
const cost = computeSumOfSquaredResiduals(residualNorm);
|
|
190
|
+
const constraintSatisfied = constraintNorm <= constraintTolerance;
|
|
191
|
+
if (onIteration) {
|
|
192
|
+
onIteration(iteration, cost, currentParameters);
|
|
193
|
+
}
|
|
194
|
+
const stepResult = computeStepForGN(currentParameters, currentStates, residualFunction, constraintFunction, effectiveJacobianOptions, iteration, logger, cost, residualNorm, constraintNorm);
|
|
195
|
+
if ('converged' in stepResult) {
|
|
196
|
+
return stepResult;
|
|
197
|
+
}
|
|
198
|
+
const step = stepResult.step;
|
|
199
|
+
const stepNorm = vectorNorm(step);
|
|
200
|
+
const stepSizeConvergenceResult = checkStepSizeConvergenceForGN(stepNorm, constraintSatisfied, tolerance, iteration, currentParameters, currentStates, cost, residualNorm, constraintNorm, logger);
|
|
201
|
+
if (stepSizeConvergenceResult) {
|
|
202
|
+
return {
|
|
203
|
+
converged: true,
|
|
204
|
+
result: stepSizeConvergenceResult
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
const { newParameters, newStates } = updateParametersAndStatesForConstrainedGN(currentParameters, currentStates, step, constraintFunction, stepSizeP, stepSizeX, constraintTolerance, logger, dcdp, dcdx);
|
|
208
|
+
const newResidual = residualFunction(newParameters, newStates);
|
|
209
|
+
const newResidualNorm = vectorNorm(newResidual);
|
|
210
|
+
const newCost = computeSumOfSquaredResiduals(newResidualNorm);
|
|
211
|
+
const residualConvergenceResult = checkResidualConvergenceForGN(newParameters, newStates, newResidualNorm, newCost, constraintFunction, constraintTolerance, tolerance, iteration, constraintNorm, logger);
|
|
212
|
+
if (residualConvergenceResult) {
|
|
213
|
+
return {
|
|
214
|
+
converged: true,
|
|
215
|
+
result: residualConvergenceResult
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
logger.debug('constrainedGaussNewton', iteration, 'Progress', [
|
|
219
|
+
{ key: 'Cost:', value: cost },
|
|
220
|
+
{ key: 'Residual norm:', value: residualNorm },
|
|
221
|
+
{ key: 'Step norm:', value: stepNorm },
|
|
222
|
+
{ key: 'Constraint norm:', value: constraintNorm }
|
|
223
|
+
]);
|
|
224
|
+
return { converged: false, newParameters, newStates };
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Runs the main iteration loop for constrained Gauss-Newton optimization.
|
|
228
|
+
* Returns the result if converged, or final state if max iterations reached.
|
|
229
|
+
*/
|
|
230
|
+
function runGaussNewtonIterations(initialParameters, initialStates, residualFunction, constraintFunction, effectiveJacobianOptions, tolerance, constraintTolerance, stepSizeP, stepSizeX, maxIterations, logger, onIteration, dcdp, dcdx) {
|
|
231
|
+
let currentParameters = new Float64Array(initialParameters);
|
|
232
|
+
let currentStates = new Float64Array(initialStates);
|
|
233
|
+
for (let iteration = 0; iteration < maxIterations; iteration++) {
|
|
234
|
+
const iterationResult = performConstrainedGaussNewtonIteration(currentParameters, currentStates, residualFunction, constraintFunction, effectiveJacobianOptions, tolerance, constraintTolerance, stepSizeP, stepSizeX, iteration, logger, onIteration, dcdp, dcdx);
|
|
235
|
+
if (iterationResult.converged && iterationResult.result) {
|
|
236
|
+
return { result: iterationResult.result };
|
|
237
|
+
}
|
|
238
|
+
if (iterationResult.newParameters && iterationResult.newStates) {
|
|
239
|
+
currentParameters = iterationResult.newParameters;
|
|
240
|
+
currentStates = iterationResult.newStates;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return { finalParameters: currentParameters, finalStates: currentStates };
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Performs constrained Gauss-Newton optimization for nonlinear least squares problems.
|
|
250
|
+
*
|
|
251
|
+
* Algorithm:
|
|
252
|
+
* 1. Start with initial parameters p0 and states x0 (satisfying c(p0, x0) = 0)
|
|
253
|
+
* 2. Compute effective Jacobian J_eff = r_p - r_x C_x^+ C_p
|
|
254
|
+
* 3. Solve normal equations: (J_eff^T J_eff) δ = -J_eff^T r
|
|
255
|
+
* 4. Update parameters: p_new = p_old + δ
|
|
256
|
+
* 5. Update states: x_new = x_old + dx where (∂c/∂x) dx = -∂c/∂p · δ (linear approximation)
|
|
257
|
+
* 6. Repeat until convergence
|
|
258
|
+
*
|
|
259
|
+
* The effective Jacobian captures all constraint effects, allowing the algorithm
|
|
260
|
+
* to use the same structure as unconstrained Gauss-Newton.
|
|
261
|
+
*
|
|
262
|
+
* @param initialParameters - Initial parameter vector p0
|
|
263
|
+
* @param initialStates - Initial state vector x0 (should satisfy c(p0, x0) = 0)
|
|
264
|
+
* @param residualFunction - Residual function r(p, x)
|
|
265
|
+
* @param constraintFunction - Constraint function c(p, x) = 0
|
|
266
|
+
* @param options - Optimization options
|
|
267
|
+
* @returns Optimization result with final parameters, states, and constraint norm
|
|
268
|
+
*/
|
|
269
|
+
export function constrainedGaussNewton(initialParameters, initialStates, residualFunction, constraintFunction, options = {}) {
|
|
270
|
+
const maxIterations = options.maxIterations ?? DEFAULT_MAX_ITERATIONS;
|
|
271
|
+
const tolerance = options.tolerance ?? DEFAULT_TOLERANCE;
|
|
272
|
+
const constraintTolerance = options.constraintTolerance ?? DEFAULT_CONSTRAINT_TOLERANCE;
|
|
273
|
+
const stepSizeP = options.stepSizeP ?? DEFAULT_STEP_SIZE_P;
|
|
274
|
+
const stepSizeX = options.stepSizeX ?? DEFAULT_STEP_SIZE_X;
|
|
275
|
+
const onIteration = options.onIteration;
|
|
276
|
+
const logger = new Logger(options.logLevel, options.verbose);
|
|
277
|
+
validateInitialConditions(initialParameters, initialStates, constraintFunction, constraintTolerance, logger, 'constrainedGaussNewton');
|
|
278
|
+
const effectiveJacobianOptions = {
|
|
279
|
+
drdp: options.drdp,
|
|
280
|
+
drdx: options.drdx,
|
|
281
|
+
dcdp: options.dcdp,
|
|
282
|
+
dcdx: options.dcdx,
|
|
283
|
+
stepSizeP,
|
|
284
|
+
stepSizeX
|
|
285
|
+
};
|
|
286
|
+
const iterationResult = runGaussNewtonIterations(initialParameters, initialStates, residualFunction, constraintFunction, effectiveJacobianOptions, tolerance, constraintTolerance, stepSizeP, stepSizeX, maxIterations, logger, onIteration, options.dcdp, options.dcdx);
|
|
287
|
+
if ('result' in iterationResult) {
|
|
288
|
+
return iterationResult.result;
|
|
289
|
+
}
|
|
290
|
+
const currentParameters = iterationResult.finalParameters;
|
|
291
|
+
const currentStates = iterationResult.finalStates;
|
|
292
|
+
const finalResidual = residualFunction(currentParameters, currentStates);
|
|
293
|
+
const finalResidualNorm = vectorNorm(finalResidual);
|
|
294
|
+
const finalCost = computeSumOfSquaredResiduals(finalResidualNorm);
|
|
295
|
+
const finalConstraint = constraintFunction(currentParameters, currentStates);
|
|
296
|
+
const finalConstraintNorm = vectorNorm(finalConstraint);
|
|
297
|
+
logger.warn('constrainedGaussNewton', undefined, 'Maximum iterations reached', [
|
|
298
|
+
{ key: 'Iterations:', value: maxIterations },
|
|
299
|
+
{ key: 'Final cost:', value: finalCost },
|
|
300
|
+
{ key: 'Final residual norm:', value: finalResidualNorm },
|
|
301
|
+
{ key: 'Final constraint norm:', value: finalConstraintNorm }
|
|
302
|
+
]);
|
|
303
|
+
return {
|
|
304
|
+
parameters: currentParameters,
|
|
305
|
+
iterations: maxIterations,
|
|
306
|
+
converged: false,
|
|
307
|
+
finalCost: finalCost,
|
|
308
|
+
finalGradientNorm: undefined,
|
|
309
|
+
finalResidualNorm: finalResidualNorm,
|
|
310
|
+
finalStates: currentStates,
|
|
311
|
+
finalConstraintNorm: finalConstraintNorm
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=constrainedGaussNewton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constrainedGaussNewton.js","sourceRoot":"","sources":["../../src/core/constrainedGaussNewton.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file implements the constrained Levenberg-Marquardt algorithm for solving
|
|
3
|
+
* nonlinear least squares problems with constraints.
|
|
4
|
+
*
|
|
5
|
+
* The constrained Levenberg-Marquardt method uses the effective Jacobian concept:
|
|
6
|
+
* J_eff = r_p - r_x C_x^+ C_p, which captures all constraint effects.
|
|
7
|
+
* This allows the algorithm to use the same structure as unconstrained
|
|
8
|
+
* Levenberg-Marquardt: (J_eff^T J_eff + λI) δ = -J_eff^T r
|
|
9
|
+
*
|
|
10
|
+
* Role in system:
|
|
11
|
+
* - Constrained version of Levenberg-Marquardt method
|
|
12
|
+
* - Uses effective Jacobian computed via adjoint method
|
|
13
|
+
* - Updates both parameters and states to maintain constraint satisfaction
|
|
14
|
+
* - More robust than constrained Gauss-Newton (handles singular matrices)
|
|
15
|
+
*
|
|
16
|
+
* For first-time readers:
|
|
17
|
+
* - Start with constrainedLevenbergMarquardt function
|
|
18
|
+
* - Understand how effective Jacobian replaces regular Jacobian
|
|
19
|
+
* - Check lambda update strategy and damping mechanism
|
|
20
|
+
*/
|
|
21
|
+
import type { ConstrainedResidualFn, ConstraintFn, ConstrainedLevenbergMarquardtOptions, ConstrainedLevenbergMarquardtResult } from './types.js';
|
|
22
|
+
/**
|
|
23
|
+
* Performs constrained Levenberg-Marquardt optimization for nonlinear least squares problems.
|
|
24
|
+
*
|
|
25
|
+
* Algorithm:
|
|
26
|
+
* 1. Start with initial parameters p0, states x0, and lambda (damping parameter)
|
|
27
|
+
* 2. Compute effective Jacobian J_eff = r_p - r_x C_x^+ C_p
|
|
28
|
+
* 3. Solve damped normal equations: (J_eff^T J_eff + λI) δ = -J_eff^T r
|
|
29
|
+
* 4. Try step: p_new = p_old + δ, x_new updated using linear approximation
|
|
30
|
+
* 5. If cost decreases: accept step, decrease lambda
|
|
31
|
+
* 6. If cost increases: reject step, increase lambda
|
|
32
|
+
* 7. Repeat until convergence
|
|
33
|
+
*
|
|
34
|
+
* The damping parameter lambda interpolates between:
|
|
35
|
+
* - Constrained Gauss-Newton (λ → 0): fast convergence near solution
|
|
36
|
+
* - Constrained gradient descent (λ → ∞): robust but slow
|
|
37
|
+
*
|
|
38
|
+
* @param initialParameters - Initial parameter vector p0
|
|
39
|
+
* @param initialStates - Initial state vector x0 (should satisfy c(p0, x0) = 0)
|
|
40
|
+
* @param residualFunction - Residual function r(p, x)
|
|
41
|
+
* @param constraintFunction - Constraint function c(p, x) = 0
|
|
42
|
+
* @param options - Optimization options
|
|
43
|
+
* @returns Optimization result with final parameters, states, constraint norm, and lambda
|
|
44
|
+
*/
|
|
45
|
+
export declare function constrainedLevenbergMarquardt(initialParameters: Float64Array, initialStates: Float64Array, residualFunction: ConstrainedResidualFn, constraintFunction: ConstraintFn, options?: ConstrainedLevenbergMarquardtOptions): ConstrainedLevenbergMarquardtResult;
|
|
46
|
+
//# sourceMappingURL=constrainedLevenbergMarquardt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constrainedLevenbergMarquardt.d.ts","sourceRoot":"","sources":["../../src/core/constrainedLevenbergMarquardt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,YAAY,EACZ,oCAAoC,EACpC,mCAAmC,EACpC,MAAM,YAAY,CAAC;AAgyBpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,6BAA6B,CAC3C,iBAAiB,EAAE,YAAY,EAC/B,aAAa,EAAE,YAAY,EAC3B,gBAAgB,EAAE,qBAAqB,EACvC,kBAAkB,EAAE,YAAY,EAChC,OAAO,GAAE,oCAAyC,GACjD,mCAAmC,CA8FrC"}
|