Skip to content

Instantly share code, notes, and snippets.

@trikitrok
Created March 24, 2025 20:14
Show Gist options
  • Save trikitrok/eb38c4a2d4168b11d5893eec0f6fc679 to your computer and use it in GitHub Desktop.
Save trikitrok/eb38c4a2d4168b11d5893eec0f6fc679 to your computer and use it in GitHub Desktop.
public class ConjugatedGradient {
private final double tolerance;
private final int maxIterations;
public ConjugatedGradient(double tolerance = 1e-6, int maxIterations = 1000) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
}
public double[] minimize(
Function<double[], double[]> gradFn,
double[] init
) {
// minimization code...
}
// more code...
}
public class LinearDescent {
public double[] min(
Function<double[], double[]> gradFn,
double[] init,
Config config
) {
// minimization code...
}
// more code...
}
///////////////////////////////////
public class ConjugatedGradient {
private final double tolerance;
private final int maxIterations;
public ConjugatedGradient(double tolerance = 1e-6, int maxIterations = 1000) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
}
public double[] minimize(
Function<double[], double[]> gradFn,
double[] init
) {
// minimization code...
}
// more code...
}
public class LinearDescent {
private final double tolerance;
private final int maxIterations;
private final double learningRate;
public LinearDescent(double tolerance = 1e-6, int maxIterations = 1000, double learningRate = 0.01) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
this.learningRate = learningRate;
}
public double[] minimize(
Function<double[], double[]> gradFn,
double[] init
) {
// minimization code...
}
// more code...
}
///////////////////////////////////
public interface Minimization {
double[] minimize(
Function<double[], double[]> gradFn,
double[] init
);
}
public class ConjugatedGradientMinimization implements Minimization {
private final double tolerance;
private final int maxIterations;
public ConjugatedGradientMinimization(double tolerance = 1e-6, int maxIterations = 1000) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
}
public double[] minimize(
Function<double[], double[]> gradFn,
double[] init
) {
// minimization code...
}
// more code...
}
public class LinearDescentMinimization implements Minimization {
private final double tolerance;
private final int maxIterations;
private final double learningRate;
public LinearDescentMinimization(double tolerance = 1e-6, int maxIterations = 1000, double learningRate = 0.01) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
this.learningRate = learningRate;
}
public double[] minimize(
Function<double[], double[]> gradFn,
double[] init
) {
// minimization code...
}
// more code...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment