private Task ProduceSimulations(int noOfIterations, IInitializationInfo modelParameters, CancellationToken token) { return(Task.Factory.StartNew(() => { for (var i = 0; i < noOfIterations; i++) { var simulationSeed = _seedGenerator.Next(); #if !DEBUG try { #endif var newSimulation = GenerateSimulation(simulationSeed, i, modelParameters); newSimulation.AddInterventions(_interventions); const int milliseconds = 60 * 60 * 1000; //TODO: Hardcoded value for cancellation timeout _simulations.TryAdd(newSimulation, milliseconds, token); #if !DEBUG } catch (OperationCanceledException operationCanceledException) { Log.Error(operationCanceledException, "The process to produce simulations has been cancelled"); _simulations.CompleteAdding(); break; } catch (NotImplementedException f) { Log.Error(f, "Failed while generating simulation: A method is not implemented!", f.TargetSite); _simulations.CompleteAdding(); break; } catch (Exception ex) { Log.Error(ex, "Something went wrong generating the simulation"); _simulations.CompleteAdding(); throw; } #endif Log.Information($"Generated simulation {i}"); } _simulations.CompleteAdding(); }, token)); }
protected override SirSimulation GenerateSimulation(int seed, int iterationNo, IInitializationInfo modelParameters) { var beta = Gamma * RZero; var sirSim = new SirSimulation(seed, SusceptibleZero, ExposedZero, InfectiousZero, ResistantZero, beta, Gamma, Sigma, iterationNo); return(sirSim); }
protected override CovidSimulation GenerateSimulation(int seed, int iterationNo, IInitializationInfo modelParameters) { var parameters = (CovidInitializationInfo)PrepareInitializationInfo(Scenario); return(new CovidSimulation(seed, iterationNo, parameters, SaveContactGraphs)); }
protected abstract TSimulation GenerateSimulation(int seed, int iterationNo, IInitializationInfo modelParameters);