def save_timing_performance(timing, filename): full_timings = [3] * 8 full_timings[0] = timing[0] full_timings[4] = timing[1] traffic_light = PhaseModifier("node1") controller = StaticTrafficLightController(controller=traffic_light, sequence=list(range(8)), timings=full_timings) sim = Simulator() sim.add_simulation_component(SimulationOutputParser) sim.add_tickable(controller) sim.run(sumocfg1, gui=False) sim.save_results(filename)
def evaluate_timing(timing): traffic_light = PhaseModifier("node1") full_timings = [3] * 8 full_timings[0] = timing[0] full_timings[4] = timing[1] controller = StaticTrafficLightController(controller=traffic_light, sequence=list(range(8)), timings=full_timings) sim = Simulator() sim.add_simulation_component(SimulationOutputParser) sim.add_tickable(controller) if not sim.run(sumocfg1, time_steps=2000, gui=False): return sim.results return False
from reward import RewardCalculator from simulation import Simulator import numpy as np from stats.output_parser import SimulationOutputParser from gradient_descent.static_controller import StaticTrafficLightController from action import PhaseModifier sim = Simulator() sim.add_simulation_component(SimulationOutputParser) t = [3]*8 t[0] = 50 t[4] = 50 print(t) controller = StaticTrafficLightController(PhaseModifier("node1"),list(range(8)),t) sim.add_tickable(controller) sumocfg1 = "..\\test_environments\\single_intersection_random_trips\\newnet.sumocfg" sumocfg2 = "..\\test_environments\\grid_map\\4by4.sumocfg" sim.run(sumocfg1, gui=False) print(sim.results["mean_speed"].var()**.5) print(sim.results["duration"].var()**.5)
print(timing) chromosome = Chromosome(timing, fitness=0) configuration = [] for ii in range(8): configuration.append(3) if ii == 0: configuration[ii] = timing[0] if ii == 4: configuration[ii] = timing[1] chromosome_controller = StaticTrafficLightController( PhaseModifier("node1"), list(range(0, 8)), configuration) print(chromosome._phases_steps) print(configuration) sim = Simulator() sim.add_tickable(chromosome_controller) sim.run(sumocfg1, gui=False) fitness = XMLDataExtractor(path).get_data() chromosome.set_fitness(fitness) population.append(chromosome) for member in population: print(member._fitness) best_initial_solution = min(population, key=lambda x: x._fitness) configuration = [] for ii in range(8): configuration.append(3) if ii == 0:
def __init__(self, reward_calc, state, controller, actions): super().__init__(reward_calc, state, controller, actions) import itertools self._phases = itertools.cycle([0] * 30 + [4] * 30) def _select_action(self, state): return next(self._phases) if __name__ == "__main__": class X: def __init__(self, s): self.x = 0 self.s = s def tick(self): x = int(input("Enter a phase :")) self.s.do_action(x) sim = Simulator() rc = RewardCalculator() sim.add_tickable(rc) c = Controller(PhaseModifier("node1")) s = StateGenerator() agent = SingleIntersectQAgent(rc, s, c, [0, 3, 4]) sim.add_tickable(agent) sim.add_tickable(X(c)) sumocfg = "..\\..\\test_environments\\single_intersection_map\\newnet.sumocfg" sim.run(sumocfg, time_steps=1000, gui=True)