public static void function1_fvec(double[] x, double[] fi, object obj) { if (model == null) { model = new DaisyLolland(workingdir, "DaisyModel.dai"); var ClayColumns = model.DaisyColumns.Columns.Where(c => c.Name.StartsWith("Clay")).ToList(); foreach (var c in ClayColumns.Skip(2)) { model.DaisyColumns.Columns.Remove(c); } var SandColumns = model.DaisyColumns.Columns.Where(c => c.Name.StartsWith("Sand")).ToList(); foreach (var c in SandColumns.Skip(1)) { model.DaisyColumns.Columns.Remove(c); } model.DaisyColumns.Columns.Remove(model.DaisyColumns.Columns.Single(d => d.Name.ToLower() == "hummingen")); model.DaisyColumns.Columns.Remove(model.DaisyColumns.Columns.Single(d => d.Name.ToLower() == "kramnitse")); } model.SetParams(x); if (RunNext) { model.RunDaisy(); } RunNext = true; fi[0] = Math.Pow(1.0 - model.Get2Error(720), 2) + Math.Pow(1.0 - model.GetFBalError(720), 2); string outs = ""; foreach (var d in x) { outs += "P = " + d; } using (StreamWriter sw = new StreamWriter(Path.Combine(workingdir, "Kalib.log"), true)) { sw.WriteLine("current error: " + fi[0].ToString() + outs); sw.WriteLine("FBal: " + model.GetFBalError(720) + "; R2 = " + model.Get2Error(720) + "; RMS = " + model.GetRMSError(720)); } Console.WriteLine("current error: " + fi[0].ToString() + outs); // // this callback calculates // f0(x0,x1) = 100*(x0+3)^4, // f1(x0,x1) = (x1-3)^4 // // fi[0] = 10 * System.Math.Pow(x[0] + 3, 2) +System.Math.Pow(x[1] - 3, 2); // fi[1] = System.Math.Pow(x[1] - 3, 2); }
public static void function1_fvec(double[] x, double[] fi, object obj) { if (model == null) { model = new DaisyLolland( workingdir, "DaisyModel.dai"); var ClayColumns = model.DaisyColumns.Columns.Where(c => c.Name.StartsWith("Clay")).ToList(); foreach (var c in ClayColumns.Skip(2)) model.DaisyColumns.Columns.Remove(c); var SandColumns = model.DaisyColumns.Columns.Where(c => c.Name.StartsWith("Sand")).ToList(); foreach (var c in SandColumns.Skip(1)) model.DaisyColumns.Columns.Remove(c); model.DaisyColumns.Columns.Remove(model.DaisyColumns.Columns.Single(d => d.Name.ToLower() == "hummingen")); model.DaisyColumns.Columns.Remove(model.DaisyColumns.Columns.Single(d => d.Name.ToLower() == "kramnitse")); } model.SetParams(x); if (RunNext) { model.RunDaisy(); } RunNext = true; fi[0] = Math.Pow(1.0- model.Get2Error(720),2) + Math.Pow(1.0-model.GetFBalError(720),2); string outs = ""; foreach (var d in x) outs += "P = " + d; using (StreamWriter sw = new StreamWriter(Path.Combine(workingdir, "Kalib.log"), true)) { sw.WriteLine("current error: " + fi[0].ToString() + outs); sw.WriteLine("FBal: " + model.GetFBalError(720) + "; R2 = " + model.Get2Error(720) + "; RMS = " + model.GetRMSError(720)); } Console.WriteLine("current error: " + fi[0].ToString() + outs); // // this callback calculates // f0(x0,x1) = 100*(x0+3)^4, // f1(x0,x1) = (x1-3)^4 // // fi[0] = 10 * System.Math.Pow(x[0] + 3, 2) +System.Math.Pow(x[1] - 3, 2); // fi[1] = System.Math.Pow(x[1] - 3, 2); }