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); }
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()); } }