Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)