Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        protected override CovidSimulation GenerateSimulation(int seed, int iterationNo, IInitializationInfo modelParameters)
        {
            var parameters = (CovidInitializationInfo)PrepareInitializationInfo(Scenario);

            return(new CovidSimulation(seed, iterationNo, parameters, SaveContactGraphs));
        }
Esempio n. 4
0
 protected abstract TSimulation GenerateSimulation(int seed, int iterationNo, IInitializationInfo modelParameters);