def calculateSwarmDrones(self, newParameters): SPFParameter = newParameters[0:4] TPFParameter = newParameters[4:6] # Setup min_allowable_dist = self.targetOutput Drones = [] position_drone1 = [(0, 0, 5)] Drone1 = Agent(0, position_drone1[0], 1) Drones.append(Drone1) position_drone2 = [(10, 0, 5)] Drone2 = Agent(1, position_drone2[0], 1) Drones.append(Drone2) SPF = SwarmPotentialField(min_allowable_dist) SPF.setup(SPFParameter) Ship = Target([5, 10, 5]) TPF = TargetPotentialField(TPFParameter[0], TPFParameter[1], 1) Ships = [Ship] responseValue = [] for iteration in self.simulationTime: Drone1.SwarmPotentialForce = SPF.calculate_total_swarm_field_force( Drone1.index, Drones) Drone2.SwarmPotentialForce = SPF.calculate_total_swarm_field_force( Drone2.index, Drones) Drone1.TargetPotentialForce = TPF.calculate_target_force( Drone1.index, 0, Drones, Ships) Drone2.TargetPotentialForce = TPF.calculate_target_force( Drone2.index, 0, Drones, Ships) self.swarmForces.append( calculateLength(Drone1.calculate_total_force())) Drone1.calculateVelocity(Drone1.calculate_total_force()) Drone1.move() Drone2.calculateVelocity(Drone2.calculate_total_force()) Drone2.move() [distance_tuple, distance] = SPF.getDistance(0, 1, Drones) responseValue.append(distance) return responseValue, True
arena.set_zlabel('Z (meter)') arena.set_xlim(-1, 12) arena.set_ylim(-1, 12) arena.set_zlim(6, 12) drone1Position = arena.scatter([position_drone1[0]], [position_drone1[1]], [position_drone1[2]], color="red") drone2Position = arena.scatter([position_drone2[0]], [position_drone2[1]], [position_drone2[2]], color="green") # drone3Position = arena.scatter([position_drone3[0]], [position_drone3[1]], [position_drone3[2]], color="blue") view.show() for i in range(100): print('------- ITERATION ', i, '-----------') Drone1.SwarmPotentialForce = SPF.calculate_total_swarm_field_force(Drone1.index, Drones) print('Drone1 SPF = ', Drone1.SwarmPotentialForce, '\n') Drone2.SwarmPotentialForce = SPF.calculate_total_swarm_field_force(Drone2.index, Drones) print('Drone2 SPF = ', Drone2.SwarmPotentialForce, '\n') # Drone3.SwarmPotentialForce = SPF.calculate_total_swarm_field_force(Drone3.index, Drones) # print('Drone3 SPF = ', Drone3.SwarmPotentialForce, '\n') Drone1.calculateVelocity(Drone1.SwarmPotentialForce) print('Drone1 Velocity', Drone1.velocity) Drone1.move() print('Drone1 Position', Drone1.position) Drone2.calculateVelocity(Drone2.SwarmPotentialForce) print('Drone2 Velocity', Drone2.velocity) Drone2.move() print('Drone2 Position', Drone2.position)