public double[] ComputeMin(OptMultivariateFunction function, OptSimplexBoundVariable[] variables, double initialStep, double tolerance, ref int MAXFUN) { this.Function = function; this.MeFunEvaluations = 0; this.MeSimplexBoundVariableList = OptSimplexBoundVariable.GetClon(variables); this.MeInitialStep = initialStep; this.InitializeVariables(); this.InitializeWorkSpace(); if (this.MeNumFreeVariables == 0) return this.MeVariables; this.MeCOBYLA.Run(this.MeNumFreeVariables, this.MeNumBoundVariables, ref this.MeFreeVariables, 0, initialStep, tolerance, 0, ref MAXFUN, ref W, 0, ref IACT, 0); int varFreeVarIndex = 0; for (int i = 0; i < this.MeSimplexBoundVariableList.Length; i++) { if (this.MeSimplexBoundVariableList[i].Fixed == false) { //mod this.MeVariables[i] = this.MeFreeVariables[varFreeVarIndex] * this.MeSimplexBoundVariableList[i].ScaleFactor; varFreeVarIndex++; } } MAXFUN = this.MeFunEvaluations; return this.MeVariables; }
public double[] ComputeMin(OptMultivariateFunction function, OptSimplexBoundVariable[] variables, double initialStep, double tolerance, ref int MAXFUN) { this.Function = function; this.MeFunEvaluations = 0; this.MeSimplexBoundVariableList = OptSimplexBoundVariable.GetClon(variables); this.MeInitialStep = initialStep; this.InitializeVariables(); this.InitializeWorkSpace(); if (this.MeNumFreeVariables == 0) { return(this.MeVariables); } this.MeCOBYLA.Run(this.MeNumFreeVariables, this.MeNumBoundVariables, ref this.MeFreeVariables, 0, initialStep, tolerance, 0, ref MAXFUN, ref W, 0, ref IACT, 0); int varFreeVarIndex = 0; for (int i = 0; i < this.MeSimplexBoundVariableList.Length; i++) { if (this.MeSimplexBoundVariableList[i].Fixed == false) { //mod this.MeVariables[i] = this.MeFreeVariables[varFreeVarIndex] * this.MeSimplexBoundVariableList[i].ScaleFactor; varFreeVarIndex++; } } MAXFUN = this.MeFunEvaluations; return(this.MeVariables); }