두 개의 Population1 N1 에이전트 Pop2 및 N2 Agent Pop2 있습니다. SIR 감염 역학은 Pop1과 Pop2에서 일어나고 있습니다. 이제 각 시간 단계에서 무작위로 선택된 에이전트가 Pop1에서 제거되고 Pop2에 추가되고 반대의 경우도 마찬가지입니다. 제거 된 상담원은 S 또는 I 또는 R 상태 일 수 있으며 다른 Pop에 추가 될 때 상태를 유지합니다. 코드가 조금 길어서 붙여 넣기 상자에 붙여 넣습니다. http://pastebin.com/PdmJTUhs.Python 클래스 메서드에서 인수 전달
내 코드에서 'oAgent'는 Pop1 또는 Pop2에서 제거되는 무작위로 선택된 에이전트입니다. 현재 상태 (S = 0 또는 I = 1 또는 R = 2) oAgent의이 클래스 방법 set_state (자기, oAgent) 내 코드 클래스 Pop1_SW 및 Pop2_SW에서
def set_state(self, oAgent):
if SW_SIR.oAgent in self.sAgent:
return (0)
if SW_SIR.oAgent in self.iAgent:
return (1)
if SW_SIR.oAgent in self.rAgent:
return (2)
의해 반환 POP1 및 POP2위한 클래스 개체 각기. PopA의 oAgent 상태는 Pop2에 추가되는 에이전트의 상태이며, 그 반대의 경우도 마찬가지입니다. 이제 Pop1_SW는 state2 (Pop1의 oAgent 상태)를 입력 매개 변수로 가져오고 Pop2_SW는 state1 (Pop2의 oAgent 상태)을 가져야합니다.
제 질문은 제거 된 에이전트와 추가 된 에이전트의 상태를 어떻게 올바르게 할당 할 수 있습니까? 문제는 클래스 oAgent 내부를 정의해야하고 클래스 외부에서 클래스의 상태가 다른 클래스 객체의 입력이되어야하는 위치입니다.
단일 인구에 대한 SIR 동역학을 위해 내 코드가 올바르게 실행됩니다. 나는 세 가지 메소드 set_state(), removAgents() 및 addingAgents를 오류의 원인 인 두 개의 모집단에 추가했습니다.
당신의 코드 : 어떤 일이 일어나고, 어떤 일이 일어날 것이며, 당신이 현재 갖고 있지 않은 행동을 결정할 것입니다. – shx2
문제가 발생하는 위치를 묘사하는 최소한의 예를 포함한다의 더 많은 관심을 얻을 것입니다 귀하의 질문은 훨씬 더 세부 정확히 무슨 문제입니다 –
물건을 걷어차 기 위해서는 붙여 넣기 상자에 들여 쓰기가 잘못되었습니다. 당신은 당신의 클래스 생성자에 대해 당신이 사용하지 않는 인자'm'을 가지고 있습니다 - 당신의 무작위적인'oAgent' 선택은 당신의 인구의 어떤 길이의 범위 안에 있어야합니다. –