I'm struggling with Math.Net Minimum functions.
I have this function:
public double minim(DenseVector dv)
{
double a = dv[0];
double b = dv[1];
...
return r;
}
I need to find the minimal return value for the two doubles in dv (2D search).
I understand that I can do that with Math.NET's NewtonOptimizer.
I tried this:
var param = new DenseVector(new double[] { x,y });
var f1 = new Func<Vector<double>, double>(v => minim(param));
var obj = ObjectiveFunction.Value(f1);
var solver = new NewtonMinimizer(ftol, 1000);
var result = solver.FindMinimum(obj, param);
but I get an Exception, saying
"Gradient not supported in objective function, but required for Newton minimization."
Obviously minim is missing something.
What does a "gradient" look like?
Maybe an example?
addition: My function to be minimized has no derivative: it is a rather unpredictable function. To be more precise: it has the form of a catenary, with various loads hanging from it.
question from:
https://stackoverflow.com/questions/65936291/how-to-find-a-minimum-for-my-function-with-math-net-newtonminimizer 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…