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 runSim(trials): sim = Simulator(requests) outFile = open("data/results/{0}_{1}_{2}_delays.results".format(week, day, trials), 'w') # Report the results to the open file. def reportResults(report): report.printTSV(outFile) if trials > 1: runSim(trials - 1) # Run the simulation. tieBreakingPolicy = crisisThresholdsAndFlip(10 * 60, 40 * 60, 1.5) sim.run(reportResults, tieBreakingPolicy, regular, senior)
def run_n_simulations(designpoint, dp_name, iterations, outputs, all_samples=False): """ Evaluate the given design point by calculating the MTTF for a given amount of sample_budget. This function is used for parallelising the Monte Carlo Simulation evaluation. :param designpoint: DesignPoint object - this DesignPoint is evauluated. :param dp_name: any - unique inidcator of this designpoint (e.g. integer) :param iterations: number of sample_budget to run the MCS. :param outputs: dictionary to write the MTTF output. :return: None """ TTFs = [] consumptions = [] sim = Simulator(designpoint) for i in range(iterations): ttf, consum, size = sim.run() TTFs.append(ttf) consumptions.append(consum) if not all_samples: outputs[dp_name] = sum(TTFs) / len(TTFs), sum(consumptions) / len( consumptions), size else: outputs[dp_name] = list( zip(TTFs, consumptions, [size for _ in range(len(TTFs))]))
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)
if __name__ == '__main__': args = P.parse_args() # If not given as a fraction, then assume percentage if args.z > 1: args.z /= 100 sim = Simulator(args.n, args.z, args.tm, args.bm) print("\n >>>> Cleaning graphs directory ") sim.remove_graphs() print("\n >>>> Running simulation \n") sim.run(args.until, args.q) if args.network: print("\n >>>> Dumping network graph ") sim.dump_network() print("\n >>>> Dumping blockchains of all nodes ") sim.dump_node_chains() print("\n >>>> Dumping blockchains of all nodes (pruned) ") sim.prune_node_chains() sim.dump_node_chains(pruned=True) print("\n >>>> Rendering graphs to png images ") sim.convert_graphs()
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)