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)