Пример #1
0
    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
position_ship1 = [(0, 0, 0)]
Ship1 = Target(position_ship1[0])
Ship1.setVelocity((2, 2, 0))
Ships.append(Ship1)

OPF = ObstaclePotentialField(1, 1, 10)
TPF = TargetPotentialField(1, 1, 1)

for i in range(0, 100):
    print('------- ITERATION ', i, '-----------')
    obstacle1_forces = OPF.calculate_obstacle_forces(Drones, Coral)
    obstacle2_forces = OPF.calculate_obstacle_forces(Drones, Coral2)
    Drone1.ObstaclePotentialForce = obstacle1_forces[Drone1.index]
    Drone2.ObstaclePotentialForce = obstacle1_forces[Drone2.index]

    Drone1.TargetPotentialForce = TPF.calculate_target_force(
        Drone1.index, 0, Drones, Ships)
    Drone2.TargetPotentialForce = TPF.calculate_target_force(
        Drone2.index, 0, Drones, Ships)

    print('Drone1 TPF = ', Drone1.TargetPotentialForce, '\n')
    print('Drone1 OPF = ', Drone1.ObstaclePotentialForce, '\n')
    print('Drone1 Total Force = ', Drone1.calculate_total_force(), '\n')
    print(Drone1.calculateVelocity(Drone1.calculate_total_force()))
    print('Drone1 Velocity', Drone1.velocity)
    Drone1.move()
    print('Drone1 Position', Drone1.position)

    print('\n')

    print('Drone2 TPF = ', Drone2.TargetPotentialForce, '\n')
    print('Drone2 OPF = ', Drone2.ObstaclePotentialForce, '\n')
Drones = []
Drone1 = Agent(0, (0, 5, 4), 1)
Drones.append(Drone1)

Drone2 = Agent(1, (0, 0, 9), 1)
Drones.append(Drone2)

Targets = []
Ship = Target((9, 9, 0))
Targets.append(Ship)

TPF = TargetPotentialField(1, 1, 1)

for i in range(0, 20):
    print('------- ITERATION ', i, '-----------')
    Drone1.TargetPotentialForce = TPF.calculate_target_force(
        0, 0, Drones, Targets)
    Drone2.TargetPotentialForce = TPF.calculate_target_force(
        1, 0, Drones, Targets)

    print('Drone1 TPF = ', Drone1.TargetPotentialForce, '\n')
    print(Drone1.calculateVelocity(Drone1.TargetPotentialForce))
    print('Drone1 Velocity', Drone1.velocity)
    Drone1.move()
    print('Drone1 Position', Drone1.position)

    print('\n')

    print('Drone2 TPF = ', Drone2.TargetPotentialForce, '\n')
    print(Drone2.calculateVelocity(Drone2.TargetPotentialForce))
    print('Drone2 Velocity', Drone2.velocity)
    Drone2.move()