示例#1
0
 private void LoadSetupFiles(CovidScenario scenario)
 {
     Wards                      = WardRecord.LoadFromCsv(scenario.GeographyFile);
     AgeDistributions           = AgeDistributionCollection.LoadFromCsv(scenario.AgeDistributionsFile);
     HouseHoldSizeDistributions = HouseSizeDistributionCollection.LoadFromCsv(scenario.HouseHoldSizesFile);
     HomeContactMatrix          = ContactMatrix.LoadFromCsv(scenario.HomeContactMatrixFile);
     OtherContactMatrix         = ContactMatrix.LoadFromCsv(scenario.OtherContactMatrixFile);
     TravelMatrix               = TravelMatrix.LoadFromCsv(scenario.TravelMatrixFile);
 }
示例#2
0
        private static int Main(string[] args)
        {
            SetupLogging();
            CheckGcStatus();

            if (!CheckArgumentParserVersion())
            {
                return(-1);
            }

            var runSettings = new RunSettings();

            if (!ParseArguments(args, runSettings))
            {
                Log.Error("Execution stopped because command line parameters did not parse successfully.");
                return(-1);
            }

            var iterations = runSettings.Iterations;

            const int seed = 879375928;

            var noOfThreads = Environment.ProcessorCount; // by default use everything that is available

            if (runSettings.Threads != 0)
            {
                noOfThreads = runSettings.Threads;
            }
            Log.Information($"Processing on {noOfThreads} threads");

            var maximumQueueSize = Math.Min(noOfThreads, 3);

            var controller = new Controller()
            {
                SaveContactGraphs = runSettings.SaveContactGraphs,
                OutputDetail      = (GeoLevel)Enum.Parse(typeof(GeoLevel), runSettings.OutputDetail)
            };

            var startTime = DateTime.Now;

            var scenario = CovidScenario.LoadFromFile(runSettings.ScenarioFile);

            controller.RunAllIterations(scenario, iterations, noOfThreads, seed, maximumQueueSize, runSettings.SaveDate);

            var endTime    = DateTime.Now;
            var timePassed = endTime - startTime;

            Log.Information($"Total processing time: {timePassed:g}");

            Log.CloseAndFlush();
            return(0);
        }