고 싶을 최소화하는 다음과 같은 기능
제약 조건
C#. 나는 그것을 시도와 함께 Math.Net's Newton 방법,그러나 나는 방법을 알아낼 수 없습니다 그것을 할 수 있습니다. 을 최소화할 수 있는 방법을 이 함수에서 프로그래밍 방식으로 C#지정된$F_1,F_2$?
업데이트: 후에의 코멘트@MinosIllyrien 나가려고 다음과 같은,but I don't get the syntax:
_f1 = 0.3; // Global fields.
_f2 = 0.7;
var minimizer = new NewtonMinimizer(1E-4, 100, false);
var objectiveFunction = ObjectiveFunction.ScalarDerivative(FunctionToMinimize, GradientOfFunctionToMinimize);
var firstGuess = CreateVector.DenseOfArray(new[] {0.5});
var minimalWeight1 = minimizer.FindMinimum(objectiveFunction, firstGuess).MinimizingPoint;
private double GradientOfFunctionToMinimize(double w1){
return _f1 - (w1 * _f2) / Math.Sqrt(1 - Math.Pow(w1, 2));
}
private double FunctionToMinimize(double w1){
return w1 * _f1 + Math.Sqrt(1 - Math.Pow(w1, 2)) * _f2;
}
이 작동하지 않기 때문에,FindMinimum 방법을 사용하려면 IObjectiveFunction 으로 기능하지 않 IScalarObjectiveFunction...
Update2: 나서 솔루션을 구글:
var solver = Solver.CreateSolver("GLOP");
Variable w1 = solver.MakeNumVar(0.0, double.PositiveInfinity, "w1");
Variable w2 = solver.MakeNumVar(0.0, double.PositiveInfinity, "w2");
solver.Add(Math.Sqrt(w1*w1 + w2*w2) == 1);
이 발생하는 오류*연산자를 사용할 수 없습"Variable"및"변수". 누군가가 어떤 아이디어가?