Esempio n. 1
0
 def infected(self):
     cured = max(self.count_neighboring_agents(self.cured.id), 1.0)
     infected = max(self.count_neighboring_agents(self.infected.id), 1.0)
     prob_cure = self.env['prob_neighbor_cure'] * (cured / infected)
     if prob(prob_cure):
         return self.cure()
     return self.set_state(super().infected)
Esempio n. 2
0
 def infect(self):
     infected = self.count_neighboring_agents(state_id=self.infected.id)
     total = self.count_neighboring_agents()
     prob_infect = self.env['prob_neighbor_spread'] * infected / total
     self.debug('prob_infect', prob_infect)
     if prob(prob_infect):
         self.set_state(self.infected.id)
Esempio n. 3
0
 def cured(self):
     prob_cure = self.env['prob_neighbor_cure']
     for neighbor in self.get_neighboring_agents(state_id=self.infected.id):
         if prob(prob_cure):
             try:
                 neighbor.cure()
             except AttributeError:
                 self.debug('Viewer {} cannot be cured'.format(neighbor.id))
Esempio n. 4
0
    def expose(self, type, directed):
        count_neighbor = 0
        prob_neighbor = 0

        for neighbor in self.get_neighboring_agents():
            if neighbor.state['id'] == self.exposed.id:
                prob_neighbor += 0.4
            if neighbor.state['id'] == self.infected.id:
                prob_neighbor += 0.9

            count_neighbor += 1

        prob_neighbor /= count_neighbor

        if (not self.state['id'] == self.infected.id and prob(prob_neighbor)):
            self.set_state(self.exposed)
            self['infected_type'] = type
            self["directed"] = directed
Esempio n. 5
0
 def infected(self):
     for neighbor in self.get_neighboring_agents(
             state_id=self.not_exposed.id):
         if prob(self["prob_neighbor_spread"]):
             neighbor.expose(type=self["infected_type"], directed=0)
Esempio n. 6
0
 def exposed(self):
     if prob(self["prob_be_infected"]):
         self.set_state(self.infected)
Esempio n. 7
0
 def not_exposed(self):
     if prob(self["prob_search_spread"]):
         self.set_state(self.exposed)
Esempio n. 8
0
 def infected(self):
     for neighbor in self.get_neighboring_agents(state_id="not_exposed"):
         if prob(self["prob_neighbor_spread"]):
             neighbor.expose(type=2, directed=1)
Esempio n. 9
0
 def infected(self):
     for neighbor in self.get_neighboring_agents(state_id=self.neutral.id):
         if prob(self.env['prob_neighbor_spread']):
             neighbor.infect()
Esempio n. 10
0
 def neutral(self):
     if self['has_tv']:
         if prob(self.env['prob_tv_spread']):
             self.set_state(self.infected)