예제 #1
0
    def generate_mopso_velocity(self, timer, finalwaypoints, num, TMAX, wstart, wend):

        vel = [0, 0, 0]
        
        R1 = (random.randrange(0,100,10)/100)
        R2 = (random.randrange(0,100,10)/100)
        R3 = (random.randrange(0,100,10)/100)
        w = (wstart - (wstart - wend)*((timer / TMAX)**2))

        if self.__gbestloc[0] and not self.__bestlocation[0]:
            vel[0] = w*(self.__velocity[0]) + R3*1000*(finalwaypoints[self.id-1][0]-self.get_pos()[0]) + R2*1000*(self.__gbestloc[0]-self.get_pos()[0]) 
            vel[2]=0
            vel[1] = w*(self.__velocity[1]) + R3*1000*(finalwaypoints[self.id-1][1]-self.get_pos()[1]) + R2*1000*(self.__gbestloc[1]-self.get_pos()[1]) 

        elif not self.__gbestloc[0] and not self.__bestlocation[0]:
            #print(R3*1000*(finalwaypoints[self.id-1][0]-self.get_pos()[0]),R2*1000*(self.__gbest[0]-self.get_pos()[0]),R1*1000*(self.__bestlocation[1]-self.get_pos()[1]) )
            vel[0] = w*(self.__velocity[0]) + R3*1000*(finalwaypoints[self.id-1][0]-self.get_pos()[0]) + R1*1000*(self.__bestlocation[0]-self.get_pos()[0])
            vel[2]=0
            vel[1] = w*(self.__velocity[1]) + R3*1000*(finalwaypoints[self.id-1][1]-self.get_pos()[1]) + R1*1000*(self.__bestlocation[1]-self.get_pos()[1])

        elif not self.__bestlocation[0] and not self.__gbestloc[0]:
            vel[0] = w*(self.__velocity[0]) + R3*1000*(finalwaypoints[self.id-1][0]-self.get_pos()[0])  
            vel[2]=0
            vel[1] = w*(self.__velocity[1]) + R3*1000*(finalwaypoints[self.id-1][1]-self.get_pos()[1]) 
        else:
            vel[0] = w*(self.__velocity[0]) + R3*1000*(finalwaypoints[self.id-1][0]-self.get_pos()[0]) + R2*1000*(self.__gbest[0]-self.get_pos()[0]) + R1*1000*(self.__bestlocation[0]-self.get_pos()[0])
            vel[2]=0
            vel[1] = w*(self.__velocity[1]) + R3*1000*(finalwaypoints[self.id-1][1]-self.get_pos()[1]) + R2*1000*(self.__gbestloc[1]-self.get_pos()[1]) + R1*1000*(self.__bestlocation[1]-self.get_pos()[1])

        vel = self.inter_uav_collsion(vel)

        v_mopso = inside_circle(vel)

        return vmopso
예제 #2
0
    def generate_mopso_velocity(self, timer, finalwaypoints, num, TMAX, wstart,
                                wend, GlobalUavData):

        vel = [0, 0, 0]
        print("generating velocity,,,")
        print("...")

        R1 = (random.randrange(0, 100, 10) / 100)
        R2 = (random.randrange(0, 100, 10) / 100)
        R3 = (random.randrange(0, 100, 10) / 100)
        w = (wstart - (wstart - wend) * ((timer / TMAX)**2))

        if self.__gbestloc[0] and not self.__bestlocation[0]:
            print("gbest something and best location nothing")
            vel[0] = w * (self.__velocity[0]) + R3 * 1000 * (
                finalwaypoints[self.id - 1][0] - self.get_pos()[0]
            ) + R2 * 1000 * (self.__gbestloc[0] - self.get_pos()[0])
            vel[2] = 0
            vel[1] = w * (self.__velocity[1]) + R3 * 1000 * (
                finalwaypoints[self.id - 1][1] - self.get_pos()[1]
            ) + R2 * 1000 * (self.__gbestloc[1] - self.get_pos()[1])

        elif not self.__gbestloc[0] and self.__bestlocation[0]:
            #print(R3*1000*(finalwaypoints[self.id-1][0]-self.get_pos()[0]),R2*1000*(self.__gbest[0]-self.get_pos()[0]),R1*1000*(self.__bestlocation[1]-self.get_pos()[1]) )
            print("both nothiung")
            vel[0] = w * (self.__velocity[0]) + R3 * 1000 * (
                finalwaypoints[self.id - 1][0] - self.get_pos()[0]
            ) + R1 * 1000 * (self.__bestlocation[0] - self.get_pos()[0])
            vel[2] = 0
            vel[1] = w * (self.__velocity[1]) + R3 * 1000 * (
                finalwaypoints[self.id - 1][1] - self.get_pos()[1]
            ) + R1 * 1000 * (self.__bestlocation[1] - self.get_pos()[1])

        elif not self.__bestlocation[0] and not self.__gbestloc[0]:
            print("gbest nothing and best location something")
            vel[0] = w * (self.__velocity[0]) + R3 * 1000 * (
                finalwaypoints[self.id - 1][0] - self.get_pos()[0])
            vel[2] = 0
            vel[1] = w * (self.__velocity[1]) + R3 * 1000 * (
                finalwaypoints[self.id - 1][1] - self.get_pos()[1])
        else:
            print("gbest something and best location nothing")
            vel[0] = w * (self.__velocity[0]) + R3 * 1000 * (finalwaypoints[
                self.id - 1][0] - self.get_pos()[0]) + R2 * 1000 * (
                    self.__gbestloc[0] - self.get_pos()[0]) + R1 * 1000 * (
                        self.__bestlocation[0] - self.get_pos()[0])
            vel[2] = 0
            vel[1] = w * (self.__velocity[1]) + R3 * 1000 * (finalwaypoints[
                self.id - 1][1] - self.get_pos()[1]) + R2 * 1000 * (
                    self.__gbestloc[1] - self.get_pos()[1]) + R1 * 1000 * (
                        self.__bestlocation[1] - self.get_pos()[1])

        vel = self.inter_uav_collsion(vel, GlobalUavData)

        v_mopso = inside_circle(vel)

        return v_mopso
예제 #3
0
    def velocity_post_drop(self):
        """
        """
        vel = [0,0,0]
        curr_vel = self.__velocity
        vel[0] = 100000*(self.__droplocation[0]-(vehicle[j].get_pos()[0])) 
        vel[1] = 100000*((self.__droplocation[1])-(vehicle[j].get_pos()[1]))
        vel[2] = 0
        vel = self.inter_uav_collsion(j,n,vel)
        vc = inside_circle(vel)

        return vc
예제 #4
0
    def velocity_post_drop(self, GlobalUavData):
        """
        """
        vel = [0, 0, 0]
        curr_vel = self.__velocity
        vel[0] = 100000 * (self.__droplocation[0] - (self.get_pos()[0]))
        vel[1] = 100000 * ((self.__droplocation[1]) - (self.get_pos()[1]))
        vel[2] = 0
        vel = self.inter_uav_collsion(vel, GlobalUavData)
        vc = inside_circle(vel)

        return vc