Esempio n. 1
0
        private void SimulateInfections()
        {
            foreach (var agent in PopulationDynamics.GetInfectiousAgents())
            {
                var encounters = PopulationDynamics.GetEncounters(agent, RandomProvider);

                foreach (var contact in encounters)
                {
                    if (contact.Agent == agent)
                    {
                        continue;                         // can't infect yourself
                    }
                    if (contact.Agent.TransitionReserved)
                    {
                        continue;
                    }
                    if (!contact.Agent.CurrentState.IsSusceptible)
                    {
                        continue;
                    }

                    var transition = MultiStateModel.DetermineAgentInteractionTransition(agent, contact, RandomProvider);

                    if (transition == null)
                    {
                        continue;
                    }

                    contact.Agent.TransitionReserved = true;

                    _transitionsToApply.Add(new Tuple <TAgent, Transition <TAgent> >(contact.Agent, transition));
                }
            }
        }