示例#1
0
        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);
        }
示例#2
0
    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);
    }