Example #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);
 }
        public void GenerateGraph(CovidPopulation populationDynamics, IEnumerable <Ward> localAreas,
                                  TravelMatrix travelMatrix, ContactMatrix contactMatrix, IRandomProvider random)
        {
            var allAgents = populationDynamics.EnumeratePopulation();

            foreach (var agent in allAgents)
            {
                var travelWardId      = travelMatrix.RandomDestination(agent.WardId, random);
                var destinationWard   = localAreas.First(p => p.WardId == travelWardId);
                var potentialContacts = populationDynamics.OtherAgentsInArea(destinationWard, agent.HouseHold.Members);
                if (potentialContacts.Count > 0)
                {
                    var p = contactMatrix.ContactWeightedAgentList(potentialContacts, populationDynamics, agent);
                    var numberOfContacts = contactMatrix.SampleNoOfContacts(agent, random);
                    var selected         = CovidPopulation.SampleWeightedAgents(potentialContacts, p, numberOfContacts, random);

                    foreach (var contact in selected)
                    {
                        populationDynamics.AddConnection(agent.Id, contact, ContactSetting.Other);
                    }
                }
            }
        }