Exemplo n.º 1
0
        private List <ForecastResult> RunForecasts(string[] forecastToRun,
                                                   DateTime t, double estimationFactor)
        {
            List <ForecastResult> allResults = new List <ForecastResult>();

            for (int i = 0; i < forecastToRun.Length; i++)
            {
                ForecastEquation eq = null;
                try
                {
                    eq = GetEquation(forecastToRun[i]);
                    FireOnLogEvent(eq.Name, "");
                    ForecastResult result = eq.Evaluate(t, checkBoxLookAhead.Checked, estimationFactor);
                    allResults.Add(result);
                }
                catch (Exception e)
                {
                    var    res = new ForecastResult();
                    string msg = e.Message;
                    if (eq != null)
                    {
                        res.Equation.Name = " -->> ERROR " + eq.Name;
                        msg = eq.Name + " " + msg;
                        FireOnLogEvent(msg, "");
                    }
                    res.Details.Add(msg);
                    allResults.Add(res);
                }
            }
            return(allResults);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            if (args.Length != 5 && args.Length != 2)
            {
                Console.WriteLine("HydrometForecast.exe basin.csv date level look-ahead output");
                Console.WriteLine("Where: ");
                Console.WriteLine("        basin.csv      -- name of csv input file");
                Console.WriteLine("        date           -- date to run forecaset 2017-01-01");
                Console.WriteLine("        level          -- subsequent conditions  1.0 normal  0.8 for 80%, etc... ");
                Console.WriteLine("        look-ahead     -- perfect forecast 0 or 1");
                Console.WriteLine("        output         -- filename for output");
                Console.WriteLine("Example:  HydrometForecast  heise.csv 2016-1-1 1.0 0 output.txt");

                Console.WriteLine("HydrometForecast.exe basin.csv output.csv");

                return;
            }

            var filename = args[0];


            ForecastEquation eq = new ForecastEquation(filename);

            if (args.Length == 2)
            {
                var cache = new HydrometDataCache();

                cache.Add(eq.GetCbttPcodeList().ToArray(),
                          new DateTime(eq.StartYear - 1, 10, 1),
                          new DateTime(eq.EndYear, 9, 30));

                HydrometMonthlySeries.Cache = cache;

                var tbl = eq.ComputeHistoricalCoefficients(eq.StartYear, eq.EndYear);
                CsvFile.WriteToCSV(tbl, args[1], false);
            }
            else
            {
                DateTime t              = DateTime.Parse(args[1]);
                double   level          = double.Parse(args[2]);
                int      lookAhead      = int.Parse(args[3]);
                string   outputFileName = args[4];

                ForecastResult result = eq.Evaluate(t, lookAhead == 1, level);
                File.WriteAllLines(outputFileName, result.Details.ToArray());
            }
        }