コード例 #1
0
def StartSimulation():
    testMap = Map(
        100, 100, 1, 1, 50,
        np.loadtxt("saved data maps/notrand" + str(5) + ".txt")[:100])
    generator = PathGeneratorSmooth(0.2, (2, 5), (8, 12), 50)
    generator2 = PathGeneratorStraight(50)
    testPlanner = PrimitivePathPlanner(10, 1, [generator, generator2], testMap)
    testEntityManager = EntityManager()
    #    clock = pygame.time.Clock()
    testSimulation = SimulationData(testMap, testPlanner, testEntityManager)
    dk = []
    for ll in range(10):
        dk.append(testMap.getRandomPoint())
    for jj in range(10):  # putting targets into entitymanager
        e = testEntityManager.spawnEntity(EntityTarget, dk[jj], 0)
        e.moveSpeed = 0

    for i in range(4):
        agent = testEntityManager.spawnEntity(Agent, (10, 10), 0)
        agent.splitMapIndex = 1
        testPlanner.registerNewAgent(agent)
    for i in range(4):
        agent = testEntityManager.spawnEntity(Agent, (10, 10), 0)
        agent.generatorIndex = 1
        agent.splitMapIndex = 2
        testPlanner.registerNewAgent(agent)

    print(RunSimulation(testSimulation))
def run_threads(start_map, stop_map, num_threads):
    for i in range(start_map, stop_map): #33 maps
        taskList = []
        print('Adding map {} to the queue...'.format(i), end='')
        t = np.loadtxt("terrainmaps/0.txt")[:100]
        if i < 13:
            m = Map(100, 100, 1, 1, 50, np.loadtxt("saved data maps/notrand" + str(i + 1)+".txt")[:100], True, t)
        else:
            m = Map(100, 100, 1, 1, 50, np.loadtxt("saved data maps/rand" + str(i - 12)+".txt")[:100], True, t)
        for j in range(1): #10 sets of targets
            dk = []
            for ll in range(10): #10 agents
                dk.append(m.getRandomPoint())
            for k in range(1): # 3 sets of agent setup
                for l in range(1): # 20 trials per setup
                    for o in range(2): # split map or not
                        path_time, no_samples, replan_ratio = 50, 15, 0.5
                        generator = PathGeneratorSmooth(0.2, (1, 5), (8, 12), path_time) # straightChance, pathLengthRange, radiusRange, pathTime
                        #generator = PathGeneratorSmooth(0.2, (1, 10), (15, 25), path_time) # WIDE # straightChance, pathLengthRange, radiusRange, pathTime
                        #generator = PathGeneratorTerrainSmooth(0.0, (1,5), (8,12), path_time)
                        #generator = PathGeneratorTerrain(path_time)
                        generator2 = PathGeneratorStraight(path_time)
                        testPlanner = PrimitivePathPlanner(replan_ratio * path_time, no_samples, [generator, generator2], m) # replanTime, tries, generators, initialMap
                        testEntityManager = EntityManager()

                        for ii in range(10):  # setting each agent (10 of them)
                            agent = testEntityManager.spawnEntity(Agent, (50, 50), 0) #setting terrain code in Agent __init__
                            testPlanner.registerNewAgent(agent)
                            if ii < 5 : # <7 for primitive-spot_omni-details, <3
                                agent.mapSplitIndex = 2 #1, 2
                            else :
                                agent.mapSplitIndex = 1 #2, 1
                            if k == 0 :
                                if ii < 2 :
                                    agent.generatorIndex = 0
                                else :
                                    agent.generatorIndex = 1
                            elif k == 1 :
                                if ii < 5 :
                                    agent.generatorIndex = 0
                                else :
                                    agent.generatorIndex = 1
                            elif k == 2 :
                                if ii < 8 :
                                    agent.generatorIndex = 0
                                else :
                                    agent.generatorIndex = 1
                            if o == 0 :
                                agent.mapSplitIndex = 0

                        for jj in range(10): # putting targets into entitymanager (10 of them)
                            e = testEntityManager.spawnEntity(EntityTarget, dk[jj], 0)

                        taskList.append((SimulationData(m, testPlanner, testEntityManager),i,j,k,l,o))
        random.shuffle(taskList)
        print('OK')

        p = Pool(num_threads)
        p.map(run_simulations, taskList)