def step(self): im_x_ue.append(self.iti[0]) im_y_ue.append(self.iti[1]) self.a = 3*(math.pi/2) agents = syudan num_hito = num_agents kabe = kabes num_kabe = num_kabes fa = self.dasu_fa(num_hito,agents) maeno_a = self.a self.a = kakudo_kai_ue(fa, self.a) if fa != self.dmax: print("第一のあれにつかうfa",fa,self.a) print("第一のあれにつかうfa",fa,self.a) if maeno_a != self.a: print("第一のヒューリスティクスにより角度変化",maeno_a, math.degrees(self.a)) self.vdes = 1.3 vdes_kouho = fa / 0.5 if vdes_kouho <= self.vdes: self.vdes = vdes_kouho self.vdes = self.vdes * np.array([math.cos(self.a), math.sin(self.a)]) print("Unique_ID", self.unique_id) hito_f = self.syuui_f(num_hito,agents) if hito_f[0] != 0 or hito_f[1]!= 0: print("人の接触力が起こった",hito_f) V_nomi = self.sokudo() douro_f = self.douro_f() dvdt = (V_nomi + hito_f + douro_f ) / 10 print("self.douro_f()",self.douro_f()) print("hito_f",hito_f) dvdt[0] = round(dvdt[0], 3) dvdt[1] = round(dvdt[1], 3) print("dvdt_new", dvdt) print("self.vdes",self.vdes) print("これは動く前のself.vi", self.vi) maeno_vi = self.vi self.vi = self.vi + dvdt for i in range(num_agents): if self.iti[0]==syudan[i,0] and self.iti[1]==syudan[i,1]: syudan[i] += (self.vi) #print("これはdtdsv", dvdt) print("これは辺が後のself.vi",self.vi) print("これは動く前のself.iti",self.iti) self.iti = self.iti + self.vi print("new_itiは",self.iti) if np.linalg.norm(self.vi) - np.linalg.norm(maeno_vi) >= 0.8: print("これは予測できない変化が発生しました") print("v_nomi",V_nomi)
def step(self): "ここで関数を用いる" "まず,周囲の位置情報を確認する" #pass #周囲のエージェントとの距離の確認 #im.append(plt.scatter(self.iti[0], self.iti[1])) #plt.scatter(self.iti[0], self.iti[1]) self.vdes = 1.3 im_x_ue.append(self.iti[0]) im_y_ue.append(self.iti[1]) self.a = 3*(math.pi/2) agents = syudan #print(agents) num_hito = num_agents kabe = kabes num_kabe = num_kabes fa, syu_num,agents = self.syuui(num_hito,agents) print("上からsyu_agents", agents) #print("まえのself.a",self.a) maeno_a = self.a self.a = kakudo_kai_ue(fa, self.a) print("へんかあとのかくどは!!!!!!!!",math.degrees(self.a)) if maeno_a != self.a: print("変化しました角度変化しました角度") self.vdes = self.vdes * np.array([math.cos(self.a), math.sin(self.a)]) print("Unique_ID", self.unique_id) hito_f = self.syuui_f(syu_num,agents) #2で割ったことにより1ステップごとのdvdtは0.5秒となる V_nomi = self.sokudo() dvdt = (V_nomi + hito_f + self.douro_f() ) / 100 print("self.douro_f()",self.douro_f()) print("hito_f",hito_f) #dvdt[0] = round(dvdt[0], 3) #dvdt[1] = round(dvdt[1], 3) #if dvdt[1] >= 0 : #dvdt[1] = 0 #print("dvdt_matome", dvdt_matome) dvdt_new = dvdt print("dvdt_new", dvdt_new) print("self.vdes",self.vdes) print("これは動く前のself.vi", self.vi) maeno_vi = self.vi self.vi = self.vi + dvdt_new dvdt[0] = round(dvdt[0], 3) dvdt[1] = round(dvdt[1], 3) tan_theta = math.tan(self.a) if dvdt[1] >= 0 : dvdt[1] = 0 else: tan_theta = dvdt[0]/dvdt[1] tan_the_p_siya = (tan_theta + math.tan(self.siyakaku))/ (1 - (tan_theta * math.tan(self.siyakaku))) if tan_the_p_siya <= 0 : tan_the_p_siya = (-1)* tan_the_p_siya self.tan_siya = tan_the_p_siya for i in range(num_agents): if self.iti[0]==syudan[i,0] and self.iti[1]==syudan[i,1]: syudan[i] += self.vi #print("これはdtdsv", dvdt) print("これは辺が後のself.vi",self.vi) print("これは動く前のself.iti",self.iti) self.iti = self.iti + self.vi print("new_itiは",self.iti) if np.linalg.norm(self.vi) - np.linalg.norm(maeno_vi) >= 0.8: print("これは予測できない変化が発生しました") #print("これは辺が前のself.vi",maeno_vi) #print("これは辺が後のself.vi",self.vi) print("v_nomi",V_nomi)
def step(self): "ここで関数を用いる" "まず,周囲の位置情報を確認する" #pass #周囲のエージェントとの距離の確認 #im.append(plt.scatter(self.iti[0], self.iti[1])) #plt.scatter(self.iti[0], self.iti[1]) Oundahodou.im_x_ue.append(self.iti[0]) Oundahodou.im_y_ue.append(self.iti[1]) self.a = 3*math.pi/2 agents = syudan #print(agents) num_hito = num_agents kabe = kabes num_kabe = num_kabes fa, syu_num = self.syuui(num_hito,agents) #print("まえのself.a",self.a) maeno_a = self.a self.a = kakudo_kai_ue(fa, self.a) print("Unique_ID", self.unique_id) hito_f = self.syuui_f(syu_num,agents) #2で割ったことにより1ステップごとのdvdtは0.5秒となる V_nomi = self.sokudo() dvdt = (V_nomi + hito_f + self.douro_f() ) /2 print("self.douro_f()",self.douro_f()) print("hito_f",hito_f) dvdt[0] = round(dvdt[0], 3) dvdt[1] = round(dvdt[1], 3) #print("dvdt_matome", dvdt_matome) dvdt_new = dvdt * np.array([math.cos(self.a), math.sin(self.a)]) print("dvdt_new", dvdt_new) print("self.vdes",self.vdes) print("これは動く前のself.vi", self.vi) maeno_vi = self.vi self.vi = self.vi + dvdt_new for i in range(num_agents): if self.iti[0]==syudan[i,0] and self.iti[1]==syudan[i,1]: syudan[i] += self.vi #print("これはdtdsv", dvdt) print("これは辺が後のself.vi",self.vi) print("これは動く前のself.iti",self.iti) self.iti = self.iti + self.vi print("new_itiは",self.iti) if np.linalg.norm(self.vi) - np.linalg.norm(maeno_vi) >= 0.8: print("これは予測できない変化が発生しました") #print("これは辺が前のself.vi",maeno_vi) #print("これは辺が後のself.vi",self.vi) print("v_nomi",V_nomi)