Last active
March 24, 2025 20:01
-
-
Save trikitrok/2c6380a899db5c29c1fa6a0ab5cd368a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export class ConjugatedGradient { | |
private readonly tolerance: number; | |
private readonly maxIterations: number; | |
constructor(tolerance: number = 1e-6, maxIterations: number = 1000) { | |
this.tolerance = tolerance; | |
this.maxIterations = maxIterations; | |
} | |
minimize( | |
gradFn: (x: number[]) => number[], | |
init: number[] | |
): number[] { | |
// minimization code... | |
} | |
// more code... | |
} | |
export class LinearDescent { | |
min( | |
gradFn: (x: number[]) => number[], | |
init: number[], | |
config: { | |
tolerance: number; | |
maxIterations: number; | |
learningRate: number; | |
} | |
): number[] { | |
// minimization code... | |
} | |
// more code... | |
} | |
/////////////////////////////////// | |
export class ConjugatedGradient { | |
private readonly tolerance: number; | |
private readonly maxIterations: number; | |
constructor(tolerance: number = 1e-6, maxIterations: number = 1000) { | |
this.tolerance = tolerance; | |
this.maxIterations = maxIterations; | |
} | |
minimize( | |
gradFn: (x: number[]) => number[], | |
init: number[] | |
): number[] { | |
// minimization code... | |
} | |
// more code... | |
} | |
export class LinearDescent { | |
private readonly tolerance: number; | |
private readonly maxIterations: number; | |
private readonly learningRate: number; | |
constructor(tolerance: number = 1e-6, maxIterations: number = 1000, learningRate: number = = 0.01) { | |
this.tolerance = tolerance; | |
this.maxIterations = maxIterations; | |
this.learningRate = learningRate; | |
} | |
minimize( | |
gradFn: (x: number[]) => number[], | |
init: number[] | |
): number[] { | |
// minimization code... | |
} | |
// more code... | |
} | |
/////////////////////////////////// | |
export interface Minimization { | |
minimize( | |
gradFn: (x: number[]) => number[], | |
init: number[] | |
): number[]; | |
} | |
export class ConjugatedGradientMinimization implements Minimization { | |
private readonly tolerance: number; | |
private readonly maxIterations: number; | |
constructor(tolerance: number = 1e-6, maxIterations: number = 1000) { | |
this.tolerance = tolerance; | |
this.maxIterations = maxIterations; | |
} | |
minimize( | |
gradFn: (x: number[]) => number[], | |
init: number[] | |
): number[] { | |
// minimization code... | |
} | |
// more code... | |
} | |
export class LinearDescentMinimization implements Minimization { | |
private readonly tolerance: number; | |
private readonly maxIterations: number; | |
private readonly learningRate: number; | |
constructor(tolerance: number = 1e-6, maxIterations: number = 1000, learningRate: number = = 0.01) { | |
this.tolerance = tolerance; | |
this.maxIterations = maxIterations; | |
this.learningRate = learningRate; | |
} | |
minimize( | |
gradFn: (x: number[]) => number[], | |
init: number[] | |
): number[] { | |
// minimization code... | |
} | |
// more code... | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment