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.
Files changed (80) hide show
  1. package/CODING_RULES.md +161 -0
  2. package/LICENSE +22 -0
  3. package/README.md +807 -0
  4. package/dist/core/adjointGradientDescent.d.ts +61 -0
  5. package/dist/core/adjointGradientDescent.d.ts.map +1 -0
  6. package/dist/core/adjointGradientDescent.js +764 -0
  7. package/dist/core/adjointGradientDescent.js.map +1 -0
  8. package/dist/core/constrainedGaussNewton.d.ts +44 -0
  9. package/dist/core/constrainedGaussNewton.d.ts.map +1 -0
  10. package/dist/core/constrainedGaussNewton.js +314 -0
  11. package/dist/core/constrainedGaussNewton.js.map +1 -0
  12. package/dist/core/constrainedLevenbergMarquardt.d.ts +46 -0
  13. package/dist/core/constrainedLevenbergMarquardt.d.ts.map +1 -0
  14. package/dist/core/constrainedLevenbergMarquardt.js +469 -0
  15. package/dist/core/constrainedLevenbergMarquardt.js.map +1 -0
  16. package/dist/core/constrainedUtils.d.ts +92 -0
  17. package/dist/core/constrainedUtils.d.ts.map +1 -0
  18. package/dist/core/constrainedUtils.js +364 -0
  19. package/dist/core/constrainedUtils.js.map +1 -0
  20. package/dist/core/convergence.d.ts +35 -0
  21. package/dist/core/convergence.d.ts.map +1 -0
  22. package/dist/core/convergence.js +51 -0
  23. package/dist/core/convergence.js.map +1 -0
  24. package/dist/core/createGradientFunction.d.ts +85 -0
  25. package/dist/core/createGradientFunction.d.ts.map +1 -0
  26. package/dist/core/createGradientFunction.js +93 -0
  27. package/dist/core/createGradientFunction.js.map +1 -0
  28. package/dist/core/effectiveJacobian.d.ts +90 -0
  29. package/dist/core/effectiveJacobian.d.ts.map +1 -0
  30. package/dist/core/effectiveJacobian.js +128 -0
  31. package/dist/core/effectiveJacobian.js.map +1 -0
  32. package/dist/core/finiteDiff.d.ts +171 -0
  33. package/dist/core/finiteDiff.d.ts.map +1 -0
  34. package/dist/core/finiteDiff.js +363 -0
  35. package/dist/core/finiteDiff.js.map +1 -0
  36. package/dist/core/gaussNewton.d.ts +29 -0
  37. package/dist/core/gaussNewton.d.ts.map +1 -0
  38. package/dist/core/gaussNewton.js +151 -0
  39. package/dist/core/gaussNewton.js.map +1 -0
  40. package/dist/core/gradientDescent.d.ts +35 -0
  41. package/dist/core/gradientDescent.d.ts.map +1 -0
  42. package/dist/core/gradientDescent.js +204 -0
  43. package/dist/core/gradientDescent.js.map +1 -0
  44. package/dist/core/jacobianComputation.d.ts +24 -0
  45. package/dist/core/jacobianComputation.d.ts.map +1 -0
  46. package/dist/core/jacobianComputation.js +38 -0
  47. package/dist/core/jacobianComputation.js.map +1 -0
  48. package/dist/core/levenbergMarquardt.d.ts +36 -0
  49. package/dist/core/levenbergMarquardt.d.ts.map +1 -0
  50. package/dist/core/levenbergMarquardt.js +286 -0
  51. package/dist/core/levenbergMarquardt.js.map +1 -0
  52. package/dist/core/lineSearch.d.ts +42 -0
  53. package/dist/core/lineSearch.d.ts.map +1 -0
  54. package/dist/core/lineSearch.js +106 -0
  55. package/dist/core/lineSearch.js.map +1 -0
  56. package/dist/core/logger.d.ts +77 -0
  57. package/dist/core/logger.d.ts.map +1 -0
  58. package/dist/core/logger.js +162 -0
  59. package/dist/core/logger.js.map +1 -0
  60. package/dist/core/types.d.ts +427 -0
  61. package/dist/core/types.d.ts.map +1 -0
  62. package/dist/core/types.js +15 -0
  63. package/dist/core/types.js.map +1 -0
  64. package/dist/index.d.ts +26 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +29 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/utils/formatting.d.ts +27 -0
  69. package/dist/utils/formatting.d.ts.map +1 -0
  70. package/dist/utils/formatting.js +54 -0
  71. package/dist/utils/formatting.js.map +1 -0
  72. package/dist/utils/matrix.d.ts +63 -0
  73. package/dist/utils/matrix.d.ts.map +1 -0
  74. package/dist/utils/matrix.js +129 -0
  75. package/dist/utils/matrix.js.map +1 -0
  76. package/dist/utils/resultFormatter.d.ts +122 -0
  77. package/dist/utils/resultFormatter.d.ts.map +1 -0
  78. package/dist/utils/resultFormatter.js +342 -0
  79. package/dist/utils/resultFormatter.js.map +1 -0
  80. 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"}