예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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))]))
예제 #4
0
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)
예제 #6
0
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()
예제 #7
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)