예제 #1
0
파일: newsspread.py 프로젝트: haya985/soil
 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)
예제 #2
0
파일: newsspread.py 프로젝트: haya985/soil
 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)
예제 #3
0
파일: newsspread.py 프로젝트: haya985/soil
 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))
예제 #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
예제 #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)
예제 #6
0
 def exposed(self):
     if prob(self["prob_be_infected"]):
         self.set_state(self.infected)
예제 #7
0
 def not_exposed(self):
     if prob(self["prob_search_spread"]):
         self.set_state(self.exposed)
예제 #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)
예제 #9
0
파일: newsspread.py 프로젝트: haya985/soil
 def infected(self):
     for neighbor in self.get_neighboring_agents(state_id=self.neutral.id):
         if prob(self.env['prob_neighbor_spread']):
             neighbor.infect()
예제 #10
0
파일: newsspread.py 프로젝트: haya985/soil
 def neutral(self):
     if self['has_tv']:
         if prob(self.env['prob_tv_spread']):
             self.set_state(self.infected)