public SumSquareRunoffEvaluator(IModelSimulation <double[], double, int> simulation, double[] observedData, int from, int to) { this.simulation = simulation; this.observedData = observedData; this.from = from; this.to = to; }
private void apply(IHyperCube <double> systemConfiguration, IModelSimulation <double[], double, int> simulation) { var varNames = systemConfiguration.GetVariableNames(); foreach (var varName in varNames) { simulation.SetVariable(varName, systemConfiguration.GetValue(varName)); } }
public static void SetSampleSimulation(IModelSimulation <double[], double, int> simulation, DataHandling.SampleClimate data) { simulation.Play("Rainfall", data.Rainfall); simulation.Play("Evapotranspiration", data.Evapotranspiration); var startTs = new DateTime(1980, 01, 01); int from = (new DateTime(1985, 01, 01) - startTs).Days; int to = (new DateTime(1999, 12, 31) - startTs).Days; simulation.SetSpan(0, to); simulation.Record("Runoff"); }
public static void SetSampleSimulation(IModelSimulation<double[], double, int> simulation, DataHandling.SampleClimate data) { simulation.Play("Rainfall", data.Rainfall); simulation.Play("Evapotranspiration", data.Evapotranspiration); var startTs = new DateTime(1980, 01, 01); int from = (new DateTime(1985, 01, 01) - startTs).Days; int to = (new DateTime(1999, 12, 31) - startTs).Days; simulation.SetSpan(0, to); simulation.Record("Runoff"); }
public static IHyperCube <double> BuildParameterSpace(IModelSimulation <double[], double, int> simulation) { // TODO there could be a protocol to at least verify that the parameters defined are compatible with a given simulation. // However this is a lot of work for a very generic system. var paramSpace = new BasicHyperCube(new[] { "C1", "C2", "C3", "BFI", "KBase", "KSurf" }); paramSpace.SetMinMaxValue("C1", 0.0, 50.0, 7.0); paramSpace.SetMinMaxValue("C2", 0.0, 200.0, 20.0); paramSpace.SetMinMaxValue("C3", 0.0, 1000.0, 50.0); paramSpace.SetMinMaxValue("BFI", 0.01, 0.99, 0.7); paramSpace.SetMinMaxValue("KBase", 0.01, 0.99, 0.3); paramSpace.SetMinMaxValue("KSurf", 0.01, 0.99, 0.9); return(paramSpace); }
public static double[] ParallelRun(IModelSimulation simulation, int numSystems, int reps, int maxDegreeOfParallelism = -1) { var systems = new List<IModelSimulation>(); for (int i = 0; i < numSystems; i++) { systems.Add(simulation.CloneModel()); } var parallelOptions = new ParallelOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism }; double[] res = new double[reps]; var sw = new Stopwatch(); for (int rep = 0; rep < reps; rep++) { sw.Start(); if (systems.Count() > 1) Parallel.ForEach(systems, parallelOptions, s => s.Execute()); else systems[0].Execute(); sw.Stop(); res[rep] = sw.Elapsed.TotalMilliseconds; sw.Reset(); } return res; }
public static IHyperCube <double> CreateFeasibleAwbmParameterSpace(IModelSimulation <double[], double, int> simulation) { return(ModellingSampleAdapter.OptimizationAdapter.BuildParameterSpace(simulation)); }
public static IClonableObjectiveEvaluator <IHyperCube <double> > BuildUrsEvaluator(IModelSimulation <double[], double, int> simulation, double[] observation, int from, int to) { return(ModellingSampleAdapter.OptimizationAdapter.BuildEvaluator(simulation, observation, from, to)); }
public static IClonableObjectiveEvaluator <IHyperCube <double> > BuildEvaluator(IModelSimulation <double[], double, int> simulation, double[] observation, int from, int to, string statisticsId = "ss") { if (statisticsId != "ss") { throw new NotSupportedException("Only the sum of squared differences objective function is supported in this sample code..."); } return(new SumSquareRunoffEvaluator(simulation, observation, from, to)); }
public static IHyperCube<double> CreateFeasibleAwbmParameterSpace(IModelSimulation<double[], double, int> simulation) { return ModellingSampleAdapter.OptimizationAdapter.BuildParameterSpace(simulation); }
public static IClonableObjectiveEvaluator<IHyperCube<double>> BuildUrsEvaluator(IModelSimulation<double[], double, int> simulation, double[] observation, int from, int to) { return ModellingSampleAdapter.OptimizationAdapter.BuildEvaluator(simulation, observation, from, to); }