def test_get_booking_distance_bins(self): number = 10 bounding_box = (13.34014892578125, 52.52791908000258, 13.506317138671875, 52.562995039558004) instance = Simulator(bounding_box); response = Simulator.get_booking_distance_bins(instance, number); actualSum=sum(response.values()) self.assertEqual(actualSum,number)
def main(): """ Main program function. """ resources_path = Path(os.path.dirname(os.path.abspath(__file__))).parent / 'resource' print(resources_path) all_players = load_players(resources_path / 'players.json') simulator = Simulator(resources_path) simulator.run(all_players)
def test_simultor_2_steps(self): simulator = Simulator() simulator.run(2) self.assertEqual(len(simulator.grid.cells), 2) for cell in simulator.grid.cells: self.assertEqual(simulator.grid.cells[cell].color, Color.BLACK)
def test_simultor_1_step(self): simulator = Simulator() simulator.run(1) self.assertEqual(len(simulator.grid.cells), 1) element = list(simulator.grid.cells.keys())[0] self.assertEqual(element, Simulator.ORIGIN) self.assertEqual(simulator.grid.cells[element].color, Color.BLACK) self.assertEqual(simulator.robot.move_orientation, WindRose.EAST)
def main(): woman = 500 man = 500 years = 20 if len(argv) == 4: woman = int(argv[1]) man = int(argv[2]) years = int(argv[3]) s = Simulator() s.build(woman, man, 12 * years) collector = s.sim() if argv.count('graph'): from app import app app.data = collector app.run(host='0.0.0.0', port=8000, debug=False)
def build(self): Config.set('graphics', 'width', '380') Config.set('graphics', 'height', '500') self.root = T2Root() self.simulator = Simulator(0, 0, 0, 0, 0) self.root.app = self return self.root
def test_event_computation(): import argparse # args = { # 'use_reserve': False, # 'num_stations': 20 # } parser = argparse.ArgumentParser(description='Process simulation args') parser.add_argument('--use_reserve', default=False, type=bool) parser.add_argument('--num_stations', default=20, type=int) args = parser.parse_args() simulator = Simulator(args) current_init = CallInit(0, 0, 1, 0, 0.5, 1) speed, position, duration, direction = current_init.get_params() next_event_type, _, _, _, _, _ = simulator.compute_next_event( speed, position, duration, direction, simulator.stations_array[current_init.station_id], current_init) assert next_event_type == "Termination"
def put(self, steps): simulator = Simulator() simulator.run(steps) folder = 'simulations' filename = 'simulation-%d-%s' % (steps, uuid.uuid4()) simulator.export_grid(os.path.join(folder, filename)) return filename
def runner(): simulator = Simulator() simulator.evolve(dt=0.1)
def benchmark_memory(): simulator = Simulator(particle_count=100000) simulator.evolve(dt=0.0001)
#! /usr/bin/env python2.7 import src.simulator import sys from src.simulator import Simulator port = 0 if (len(sys.argv) == 3): if (sys.argv[1] == "-p"): port = int(sys.argv[2]) print(port) sim = Simulator(port) sim.run()
def main(args): check_path = Path(f'./results/warmups/res_{args.num_reserve}_blocked.npy') # capture stats blocked_arr = [] dropped_arr = [] num_inits = num_handover = num_terminate = 0 if not check_path.exists(): # set the base seed np.random.seed(args.seed) simulator = Simulator(args) # init simulator # for step in tqdm(range(args.steps), leave=False): for step in tqdm(range(args.steps)): event = simulator.FEL.dequeue() simulator.clock = event.time # advance clock to event # clock_times.append(simulator.clock) if isinstance(event, CallInit): simulator.handle_call_init(event) num_inits += 1 elif isinstance(event, CallHandover): num_handover += 1 if args.num_reserve == 0: simulator.handle_call_handover_no_res(event) else: simulator.handle_call_handover_res(event) elif isinstance(event, CallTerminate): num_terminate += 1 simulator.handle_call_termination(event) else: raise TypeError("Wrong event type in FEL") blocked_arr.append( (simulator.blocked_calls / simulator.total_calls) * 100) dropped_arr.append( (simulator.dropped_calls / simulator.total_calls) * 100) np.save(f'./results/warmups/res_{args.num_reserve}_blocked.npy', blocked_arr) np.save(f'./results/warmups/res_{args.num_reserve}_dropped.npy', dropped_arr) else: blocked_arr = np.load( f'./results/warmups/res_{args.num_reserve}_blocked.npy') dropped_arr = np.load( f'./results/warmups/res_{args.num_reserve}_dropped.npy') fig, ax = plt.subplots() ############################ UNUSED ######################## # plt.plot(clock_times, blocked_percents, label='blocked') # plt.plot(clock_times, dropped_percents, label="dropped") # plt.xlabel('clock times') ############################################################ ax.plot(blocked_arr, label='blocked') ax.plot(dropped_arr, label="dropped") ax.vlines(x=args.plot_at, ymin=-0.1, ymax=args.ymax, color='r', linestyle='dashed') ax.set_xlabel('Number of Events') ax.set_ylabel('Percentages') plt.legend() ax.set_title('Percentages of Dropped and Blocked Calls') fig.savefig(f'./images/warmups/res_{args.num_reserve}.png')
def main(args): # set the base seed np.random.seed(args.seed) final_blocked_arr = [] final_dropped_arr = [] seeds = list(np.random.randint(1, 20381, size=args.reps)) print(f'Seeds: {seeds}') for rep in tqdm(range(args.reps)): np.random.seed(seeds[rep]) # scipy uses numpy seeds # print('Simulator initialised') args.seed = seeds[rep] # so simulator sets correct internal seed simulator = Simulator(args) # init simulator # capture stats blocked_arr = [] dropped_arr = [] num_inits = num_handover = num_terminate = 0 warmed_up = False # for step in tqdm(range(args.steps), leave=False): for step in range(args.steps): # if step % 10000 == 0: # print(f'Currently in step {step}') if step > args.warmup and not warmed_up: # print('Simulator reset') simulator.reset() warmed_up = True event = simulator.FEL.dequeue() simulator.clock = event.time # advance clock to event # clock_times.append(simulator.clock) if isinstance(event, CallInit): simulator.handle_call_init(event) num_inits += 1 elif isinstance(event, CallHandover): num_handover += 1 if args.num_reserve == 0: simulator.handle_call_handover_no_res(event) else: simulator.handle_call_handover_res(event) elif isinstance(event, CallTerminate): num_terminate += 1 simulator.handle_call_termination(event) else: raise TypeError("Wrong event type in FEL") if warmed_up: # only start collecting when warmed up # print("total calls", simulator.total_calls) #! BUG FOUND, not the fault of the pool!!! # I had just reset and then entered this section where I attempt to divide by 0 assert simulator.total_calls != 0 percent_blocked = (simulator.blocked_calls / simulator.total_calls) * 100 percent_dropped = (simulator.dropped_calls / simulator.total_calls) * 100 blocked_arr.append(percent_blocked) dropped_arr.append(percent_dropped) final_blocked_arr.append(np.mean(blocked_arr)) final_dropped_arr.append(np.mean(dropped_arr)) np.save(f'./results/reps_{args.reps}_blocked.npy', final_blocked_arr) np.save(f'./results/reps_{args.reps}_dropped.npy', final_dropped_arr)
#!/usr/bin/env python3 from src.game import Game from src.player import MartingalePlayer, SevenRedsPlayer, Player1326, PlayerFibonacci from src.simulator import Simulator from src.table import Table from src.wheel import Wheel from test.non_random import NonRandom chosen_player = PlayerFibonacci wheel = Wheel() table = Table(1000) game = Game(wheel, table) player = chosen_player(table) simulator = Simulator(game, player) # possible_outcomes = [] # for bin in wheel.bin_iterator(): # for outcome in bin: # possible_outcomes.append(outcome) # self.player.set_possible_outcomes(possible_outcomes) simulator.gather() print(simulator.durations) print(simulator.maxima)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1274, 896) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout_9 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_9.setObjectName("gridLayout_9") self.tab_view = QtWidgets.QTabWidget(self.centralwidget) self.tab_view.setLayoutDirection(QtCore.Qt.LeftToRight) self.tab_view.setTabPosition(QtWidgets.QTabWidget.North) self.tab_view.setTabShape(QtWidgets.QTabWidget.Triangular) self.tab_view.setElideMode(QtCore.Qt.ElideLeft) self.tab_view.setDocumentMode(False) self.tab_view.setTabsClosable(False) self.tab_view.setMovable(False) self.tab_view.setTabBarAutoHide(False) self.tab_view.setObjectName("tab_view") self.tab_1 = QtWidgets.QWidget() self.tab_1.setObjectName("tab_1") self.gridLayout_3 = QtWidgets.QGridLayout(self.tab_1) self.gridLayout_3.setContentsMargins(0, 0, 0, 0) self.gridLayout_3.setObjectName("gridLayout_3") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.formLayout = QtWidgets.QFormLayout() self.formLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) self.formLayout.setObjectName("formLayout") self.numberOfInboundTrucksLabel = QtWidgets.QLabel(self.tab_1) self.numberOfInboundTrucksLabel.setObjectName("numberOfInboundTrucksLabel") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.numberOfInboundTrucksLabel) self.numberOfInboundTrucksSpinBox = QtWidgets.QSpinBox(self.tab_1) self.numberOfInboundTrucksSpinBox.setObjectName("numberOfInboundTrucksSpinBox") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.numberOfInboundTrucksSpinBox) self.numberOfOutboundTrucksLabel = QtWidgets.QLabel(self.tab_1) self.numberOfOutboundTrucksLabel.setObjectName("numberOfOutboundTrucksLabel") self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.numberOfOutboundTrucksLabel) self.numberOfOutboundTrucksSpinBox = QtWidgets.QSpinBox(self.tab_1) self.numberOfOutboundTrucksSpinBox.setObjectName("numberOfOutboundTrucksSpinBox") self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.numberOfOutboundTrucksSpinBox) self.numberOfCompoundTrucksLabel = QtWidgets.QLabel(self.tab_1) self.numberOfCompoundTrucksLabel.setObjectName("numberOfCompoundTrucksLabel") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.numberOfCompoundTrucksLabel) self.numberOfCompoundTrucksSpinBox = QtWidgets.QSpinBox(self.tab_1) self.numberOfCompoundTrucksSpinBox.setObjectName("numberOfCompoundTrucksSpinBox") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.numberOfCompoundTrucksSpinBox) self.numberOfReceivingDoorsLabel = QtWidgets.QLabel(self.tab_1) self.numberOfReceivingDoorsLabel.setObjectName("numberOfReceivingDoorsLabel") self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.numberOfReceivingDoorsLabel) self.numberOfReceivingDoorsSpinBox = QtWidgets.QSpinBox(self.tab_1) self.numberOfReceivingDoorsSpinBox.setObjectName("numberOfReceivingDoorsSpinBox") self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.numberOfReceivingDoorsSpinBox) self.numberOfShippingDoorsLabel = QtWidgets.QLabel(self.tab_1) self.numberOfShippingDoorsLabel.setObjectName("numberOfShippingDoorsLabel") self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.numberOfShippingDoorsLabel) self.numberOfShippingDoorsSpinBox = QtWidgets.QSpinBox(self.tab_1) self.numberOfShippingDoorsSpinBox.setObjectName("numberOfShippingDoorsSpinBox") self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.numberOfShippingDoorsSpinBox) self.numberOfGoodsLabel = QtWidgets.QLabel(self.tab_1) self.numberOfGoodsLabel.setObjectName("numberOfGoodsLabel") self.formLayout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.numberOfGoodsLabel) self.numberOfGoodsSpinBox = QtWidgets.QSpinBox(self.tab_1) self.numberOfGoodsSpinBox.setObjectName("numberOfGoodsSpinBox") self.formLayout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.numberOfGoodsSpinBox) self.loadingTumeLabel = QtWidgets.QLabel(self.tab_1) self.loadingTumeLabel.setObjectName("loadingTumeLabel") self.formLayout.setWidget(6, QtWidgets.QFormLayout.LabelRole, self.loadingTumeLabel) self.loadingTumeLineEdit = QtWidgets.QLineEdit(self.tab_1) self.loadingTumeLineEdit.setObjectName("loadingTumeLineEdit") self.formLayout.setWidget(6, QtWidgets.QFormLayout.FieldRole, self.loadingTumeLineEdit) self.truckChangeoverTimeLabel = QtWidgets.QLabel(self.tab_1) self.truckChangeoverTimeLabel.setObjectName("truckChangeoverTimeLabel") self.formLayout.setWidget(8, QtWidgets.QFormLayout.LabelRole, self.truckChangeoverTimeLabel) self.truckChangeoverTimeLineEdit = QtWidgets.QLineEdit(self.tab_1) self.truckChangeoverTimeLineEdit.setObjectName("truckChangeoverTimeLineEdit") self.formLayout.setWidget(8, QtWidgets.QFormLayout.FieldRole, self.truckChangeoverTimeLineEdit) self.effectOfTheArrivalTimesOnMakespanLabel = QtWidgets.QLabel(self.tab_1) self.effectOfTheArrivalTimesOnMakespanLabel.setObjectName("effectOfTheArrivalTimesOnMakespanLabel") self.formLayout.setWidget(9, QtWidgets.QFormLayout.LabelRole, self.effectOfTheArrivalTimesOnMakespanLabel) self.effectOfTheArrivalTimesOnMakespanLineEdit = QtWidgets.QLineEdit(self.tab_1) self.effectOfTheArrivalTimesOnMakespanLineEdit.setObjectName("effectOfTheArrivalTimesOnMakespanLineEdit") self.formLayout.setWidget(9, QtWidgets.QFormLayout.FieldRole, self.effectOfTheArrivalTimesOnMakespanLineEdit) self.truckTransferTimeLabel = QtWidgets.QLabel(self.tab_1) self.truckTransferTimeLabel.setObjectName("truckTransferTimeLabel") self.formLayout.setWidget(10, QtWidgets.QFormLayout.LabelRole, self.truckTransferTimeLabel) self.truckTransferTimeLineEdit = QtWidgets.QLineEdit(self.tab_1) self.truckTransferTimeLineEdit.setObjectName("truckTransferTimeLineEdit") self.formLayout.setWidget(10, QtWidgets.QFormLayout.FieldRole, self.truckTransferTimeLineEdit) self.inboundArrivalTimeLabel = QtWidgets.QLabel(self.tab_1) self.inboundArrivalTimeLabel.setObjectName("inboundArrivalTimeLabel") self.formLayout.setWidget(11, QtWidgets.QFormLayout.LabelRole, self.inboundArrivalTimeLabel) self.inboundArrivalTimeLineEdit = QtWidgets.QLineEdit(self.tab_1) self.inboundArrivalTimeLineEdit.setObjectName("inboundArrivalTimeLineEdit") self.formLayout.setWidget(11, QtWidgets.QFormLayout.FieldRole, self.inboundArrivalTimeLineEdit) self.outboundArrivalTimeLabel = QtWidgets.QLabel(self.tab_1) self.outboundArrivalTimeLabel.setObjectName("outboundArrivalTimeLabel") self.formLayout.setWidget(12, QtWidgets.QFormLayout.LabelRole, self.outboundArrivalTimeLabel) self.outboundArrivalTimeLineEdit = QtWidgets.QLineEdit(self.tab_1) self.outboundArrivalTimeLineEdit.setObjectName("outboundArrivalTimeLineEdit") self.formLayout.setWidget(12, QtWidgets.QFormLayout.FieldRole, self.outboundArrivalTimeLineEdit) self.goodTransferTimeLabel = QtWidgets.QLabel(self.tab_1) self.goodTransferTimeLabel.setObjectName("goodTransferTimeLabel") self.formLayout.setWidget(13, QtWidgets.QFormLayout.LabelRole, self.goodTransferTimeLabel) self.goodTransferTimeLineEdit = QtWidgets.QLineEdit(self.tab_1) self.goodTransferTimeLineEdit.setObjectName("goodTransferTimeLineEdit") self.formLayout.setWidget(13, QtWidgets.QFormLayout.FieldRole, self.goodTransferTimeLineEdit) self.numberOfDataSetsLabel = QtWidgets.QLabel(self.tab_1) self.numberOfDataSetsLabel.setObjectName("numberOfDataSetsLabel") self.formLayout.setWidget(14, QtWidgets.QFormLayout.LabelRole, self.numberOfDataSetsLabel) self.numberOfDataSetsSpinBox = QtWidgets.QSpinBox(self.tab_1) self.numberOfDataSetsSpinBox.setMinimum(0) self.numberOfDataSetsSpinBox.setProperty("value", 0) self.numberOfDataSetsSpinBox.setObjectName("numberOfDataSetsSpinBox") self.formLayout.setWidget(14, QtWidgets.QFormLayout.FieldRole, self.numberOfDataSetsSpinBox) self.label_20 = QtWidgets.QLabel(self.tab_1) self.label_20.setObjectName("label_20") self.formLayout.setWidget(7, QtWidgets.QFormLayout.LabelRole, self.label_20) self.unloading_time_edit = QtWidgets.QLineEdit(self.tab_1) self.unloading_time_edit.setObjectName("unloading_time_edit") self.formLayout.setWidget(7, QtWidgets.QFormLayout.FieldRole, self.unloading_time_edit) self.verticalLayout.addLayout(self.formLayout) self.datasettable = ClipboardTableView(self.tab_1) self.datasettable.setAccessibleDescription("") self.datasettable.setLineWidth(1) self.datasettable.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked) self.datasettable.setTabKeyNavigation(False) self.datasettable.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) self.datasettable.setSortingEnabled(True) self.datasettable.setObjectName("datasettable") self.datasettable.horizontalHeader().setCascadingSectionResizes(True) self.datasettable.horizontalHeader().setDefaultSectionSize(70) self.verticalLayout.addWidget(self.datasettable) self.gridLayout_3.addLayout(self.verticalLayout, 0, 0, 1, 1) self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.inbound_good_table = ClipboardTableView(self.tab_1) self.inbound_good_table.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked) self.inbound_good_table.setObjectName("inbound_good_table") self.verticalLayout_2.addWidget(self.inbound_good_table) self.compound_coming_good_table = ClipboardTableView(self.tab_1) self.compound_coming_good_table.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked) self.compound_coming_good_table.setObjectName("compound_coming_good_table") self.verticalLayout_2.addWidget(self.compound_coming_good_table) self.outbound_good_table = ClipboardTableView(self.tab_1) self.outbound_good_table.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked) self.outbound_good_table.setObjectName("outbound_good_table") self.verticalLayout_2.addWidget(self.outbound_good_table) self.compound_going_good_table = ClipboardTableView(self.tab_1) self.compound_going_good_table.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked) self.compound_going_good_table.setObjectName("compound_going_good_table") self.verticalLayout_2.addWidget(self.compound_going_good_table) self.gridLayout_3.addLayout(self.verticalLayout_2, 0, 1, 1, 1) self.gridLayout_3.setColumnStretch(0, 1) self.gridLayout_3.setColumnStretch(1, 5) self.tab_view.addTab(self.tab_1, "") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.gridLayout_2 = QtWidgets.QGridLayout(self.tab) self.gridLayout_2.setContentsMargins(0, 0, 0, 0) self.gridLayout_2.setObjectName("gridLayout_2") self.verticalLayout_4 = QtWidgets.QVBoxLayout() self.verticalLayout_4.setObjectName("verticalLayout_4") self.label_2 = QtWidgets.QLabel(self.tab) self.label_2.setAlignment(QtCore.Qt.AlignCenter) self.label_2.setObjectName("label_2") self.verticalLayout_4.addWidget(self.label_2) self.leaving_lower_table = ClipboardTableView(self.tab) self.leaving_lower_table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.leaving_lower_table.setObjectName("leaving_lower_table") self.verticalLayout_4.addWidget(self.leaving_lower_table) self.gridLayout_2.addLayout(self.verticalLayout_4, 2, 1, 1, 1) self.print_gams = QtWidgets.QPushButton(self.tab) self.print_gams.setObjectName("print_gams") self.gridLayout_2.addWidget(self.print_gams, 0, 1, 1, 1) self.verticalLayout_5 = QtWidgets.QVBoxLayout() self.verticalLayout_5.setObjectName("verticalLayout_5") self.label_3 = QtWidgets.QLabel(self.tab) self.label_3.setAlignment(QtCore.Qt.AlignCenter) self.label_3.setObjectName("label_3") self.verticalLayout_5.addWidget(self.label_3) self.leaving_upper_table = ClipboardTableView(self.tab) self.leaving_upper_table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.leaving_upper_table.setObjectName("leaving_upper_table") self.verticalLayout_5.addWidget(self.leaving_upper_table) self.gridLayout_2.addLayout(self.verticalLayout_5, 2, 2, 1, 1) self.print_text = QtWidgets.QPushButton(self.tab) self.print_text.setObjectName("print_text") self.gridLayout_2.addWidget(self.print_text, 0, 2, 1, 1) self.generate_times_button = QtWidgets.QPushButton(self.tab) self.generate_times_button.setObjectName("generate_times_button") self.gridLayout_2.addWidget(self.generate_times_button, 0, 0, 1, 1) self.verticalLayout_3 = QtWidgets.QVBoxLayout() self.verticalLayout_3.setObjectName("verticalLayout_3") self.label = QtWidgets.QLabel(self.tab) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.verticalLayout_3.addWidget(self.label) self.arrival_time_table = ClipboardTableView(self.tab) self.arrival_time_table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.arrival_time_table.setObjectName("arrival_time_table") self.verticalLayout_3.addWidget(self.arrival_time_table) self.gridLayout_2.addLayout(self.verticalLayout_3, 2, 0, 1, 1) self.generate_new_boundaries_button = QtWidgets.QPushButton(self.tab) self.generate_new_boundaries_button.setObjectName("generate_new_boundaries_button") self.gridLayout_2.addWidget(self.generate_new_boundaries_button, 1, 0, 1, 1) self.tab_view.addTab(self.tab, "") self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName("tab_2") self.gridLayout_7 = QtWidgets.QGridLayout(self.tab_2) self.gridLayout_7.setContentsMargins(0, 0, 0, 0) self.gridLayout_7.setObjectName("gridLayout_7") self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.solverLabel = QtWidgets.QLabel(self.tab_2) self.solverLabel.setObjectName("solverLabel") self.horizontalLayout_4.addWidget(self.solverLabel) self.solverComboBox = QtWidgets.QComboBox(self.tab_2) self.solverComboBox.setObjectName("solverComboBox") self.solverComboBox.addItem("") self.solverComboBox.addItem("") self.horizontalLayout_4.addWidget(self.solverComboBox) self.numberOfIterationsLabel = QtWidgets.QLabel(self.tab_2) self.numberOfIterationsLabel.setObjectName("numberOfIterationsLabel") self.horizontalLayout_4.addWidget(self.numberOfIterationsLabel) self.numberOfIterationsLineEdit = QtWidgets.QLineEdit(self.tab_2) self.numberOfIterationsLineEdit.setObjectName("numberOfIterationsLineEdit") self.horizontalLayout_4.addWidget(self.numberOfIterationsLineEdit) self.label_19 = QtWidgets.QLabel(self.tab_2) self.label_19.setObjectName("label_19") self.horizontalLayout_4.addWidget(self.label_19) self.solution_time_label = QtWidgets.QLineEdit(self.tab_2) self.solution_time_label.setObjectName("solution_time_label") self.horizontalLayout_4.addWidget(self.solution_time_label) self.stackedWidget = QtWidgets.QStackedWidget(self.tab_2) self.stackedWidget.setObjectName("stackedWidget") self.page = QtWidgets.QWidget() self.page.setObjectName("page") self.gridLayout_4 = QtWidgets.QGridLayout(self.page) self.gridLayout_4.setContentsMargins(0, 0, 0, 0) self.gridLayout_4.setObjectName("gridLayout_4") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label_7 = QtWidgets.QLabel(self.page) self.label_7.setObjectName("label_7") self.horizontalLayout.addWidget(self.label_7) self.tempereature_line_edit = QtWidgets.QLineEdit(self.page) self.tempereature_line_edit.setObjectName("tempereature_line_edit") self.horizontalLayout.addWidget(self.tempereature_line_edit) self.label_9 = QtWidgets.QLabel(self.page) self.label_9.setObjectName("label_9") self.horizontalLayout.addWidget(self.label_9) self.decav_factor_line_edit = QtWidgets.QLineEdit(self.page) self.decav_factor_line_edit.setObjectName("decav_factor_line_edit") self.horizontalLayout.addWidget(self.decav_factor_line_edit) self.gridLayout_4.addLayout(self.horizontalLayout, 0, 0, 1, 1) self.stackedWidget.addWidget(self.page) self.page_2 = QtWidgets.QWidget() self.page_2.setObjectName("page_2") self.gridLayout_8 = QtWidgets.QGridLayout(self.page_2) self.gridLayout_8.setContentsMargins(0, 0, 0, 0) self.gridLayout_8.setObjectName("gridLayout_8") self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.label_10 = QtWidgets.QLabel(self.page_2) self.label_10.setObjectName("label_10") self.horizontalLayout_3.addWidget(self.label_10) self.number_of_tabu_neighbours_line_edit = QtWidgets.QLineEdit(self.page_2) self.number_of_tabu_neighbours_line_edit.setObjectName("number_of_tabu_neighbours_line_edit") self.horizontalLayout_3.addWidget(self.number_of_tabu_neighbours_line_edit) self.label_11 = QtWidgets.QLabel(self.page_2) self.label_11.setObjectName("label_11") self.horizontalLayout_3.addWidget(self.label_11) self.number_of_tabu_line_edit = QtWidgets.QLineEdit(self.page_2) self.number_of_tabu_line_edit.setObjectName("number_of_tabu_line_edit") self.horizontalLayout_3.addWidget(self.number_of_tabu_line_edit) self.gridLayout_8.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) self.stackedWidget.addWidget(self.page_2) self.horizontalLayout_4.addWidget(self.stackedWidget) self.label_21 = QtWidgets.QLabel(self.tab_2) self.label_21.setObjectName("label_21") self.horizontalLayout_4.addWidget(self.label_21) self.function_combo_box = QtWidgets.QComboBox(self.tab_2) self.function_combo_box.setObjectName("function_combo_box") self.function_combo_box.addItem("") self.function_combo_box.addItem("") self.function_combo_box.addItem("") self.function_combo_box.addItem("") self.function_combo_box.addItem("") self.function_combo_box.addItem("") self.function_combo_box.setItemText(5, "") self.horizontalLayout_4.addWidget(self.function_combo_box) self.time_limit_edit = QtWidgets.QLineEdit(self.tab_2) self.time_limit_edit.setObjectName("time_limit_edit") self.horizontalLayout_4.addWidget(self.time_limit_edit) self.solve_data_set_button = QtWidgets.QPushButton(self.tab_2) self.solve_data_set_button.setObjectName("solve_data_set_button") self.horizontalLayout_4.addWidget(self.solve_data_set_button) self.data_set_spin_box = QtWidgets.QSpinBox(self.tab_2) self.data_set_spin_box.setMinimum(1) self.data_set_spin_box.setProperty("value", 1) self.data_set_spin_box.setObjectName("data_set_spin_box") self.horizontalLayout_4.addWidget(self.data_set_spin_box) self.stop_data_set_solve_button = QtWidgets.QPushButton(self.tab_2) self.stop_data_set_solve_button.setObjectName("stop_data_set_solve_button") self.horizontalLayout_4.addWidget(self.stop_data_set_solve_button) self.gridLayout_7.addLayout(self.horizontalLayout_4, 0, 0, 1, 3) self.verticalLayout_6 = QtWidgets.QVBoxLayout() self.verticalLayout_6.setObjectName("verticalLayout_6") self.label_4 = QtWidgets.QLabel(self.tab_2) self.label_4.setAlignment(QtCore.Qt.AlignCenter) self.label_4.setObjectName("label_4") self.verticalLayout_6.addWidget(self.label_4) self.coming_sequence_table = ClipboardTableView(self.tab_2) self.coming_sequence_table.setObjectName("coming_sequence_table") self.verticalLayout_6.addWidget(self.coming_sequence_table) self.gridLayout_7.addLayout(self.verticalLayout_6, 1, 0, 1, 1) self.verticalLayout_7 = QtWidgets.QVBoxLayout() self.verticalLayout_7.setObjectName("verticalLayout_7") self.label_5 = QtWidgets.QLabel(self.tab_2) self.label_5.setAlignment(QtCore.Qt.AlignCenter) self.label_5.setObjectName("label_5") self.verticalLayout_7.addWidget(self.label_5) self.going_sequence_table = ClipboardTableView(self.tab_2) self.going_sequence_table.setObjectName("going_sequence_table") self.verticalLayout_7.addWidget(self.going_sequence_table) self.gridLayout_7.addLayout(self.verticalLayout_7, 1, 1, 1, 1) self.verticalLayout_8 = QtWidgets.QVBoxLayout() self.verticalLayout_8.setObjectName("verticalLayout_8") self.label_6 = QtWidgets.QLabel(self.tab_2) self.label_6.setAlignment(QtCore.Qt.AlignCenter) self.label_6.setObjectName("label_6") self.verticalLayout_8.addWidget(self.label_6) self.sequence_error_table = ClipboardTableView(self.tab_2) self.sequence_error_table.setObjectName("sequence_error_table") self.verticalLayout_8.addWidget(self.sequence_error_table) self.gridLayout_7.addLayout(self.verticalLayout_8, 1, 2, 1, 1) self.gridLayout_7.setRowStretch(1, 3) self.tab_view.addTab(self.tab_2, "") self.tab_4 = QtWidgets.QWidget() self.tab_4.setObjectName("tab_4") self.gridLayout_5 = QtWidgets.QGridLayout(self.tab_4) self.gridLayout_5.setContentsMargins(0, 0, 0, 0) self.gridLayout_5.setObjectName("gridLayout_5") self.frame = QtWidgets.QFrame(self.tab_4) self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame.setFrameShadow(QtWidgets.QFrame.Raised) self.frame.setObjectName("frame") self.gridLayout_6 = QtWidgets.QGridLayout(self.frame) self.gridLayout_6.setObjectName("gridLayout_6") self.sequence_grid = QtWidgets.QGridLayout() self.sequence_grid.setObjectName("sequence_grid") self.gridLayout_6.addLayout(self.sequence_grid, 0, 0, 1, 1) self.gridLayout_5.addWidget(self.frame, 1, 0, 1, 1) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.solve_one_sequence_button = QtWidgets.QPushButton(self.tab_4) self.solve_one_sequence_button.setObjectName("solve_one_sequence_button") self.horizontalLayout_2.addWidget(self.solve_one_sequence_button) self.label_8 = QtWidgets.QLabel(self.tab_4) self.label_8.setObjectName("label_8") self.horizontalLayout_2.addWidget(self.label_8) self.time = QtWidgets.QLCDNumber(self.tab_4) font = QtGui.QFont() font.setBold(True) font.setItalic(False) font.setWeight(75) self.time.setFont(font) self.time.setObjectName("time") self.horizontalLayout_2.addWidget(self.time) self.label_12 = QtWidgets.QLabel(self.tab_4) self.label_12.setObjectName("label_12") self.horizontalLayout_2.addWidget(self.label_12) self.time_constant = QtWidgets.QLineEdit(self.tab_4) self.time_constant.setObjectName("time_constant") self.horizontalLayout_2.addWidget(self.time_constant) self.pause_button = QtWidgets.QPushButton(self.tab_4) self.pause_button.setObjectName("pause_button") self.horizontalLayout_2.addWidget(self.pause_button) self.resume_button = QtWidgets.QPushButton(self.tab_4) self.resume_button.setObjectName("resume_button") self.horizontalLayout_2.addWidget(self.resume_button) self.stop_button = QtWidgets.QPushButton(self.tab_4) self.stop_button.setObjectName("stop_button") self.horizontalLayout_2.addWidget(self.stop_button) self.gridLayout_5.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) self.graphicsView = Simulator(self.tab_4) self.graphicsView.setObjectName("graphicsView") self.gridLayout_5.addWidget(self.graphicsView, 2, 0, 1, 1) self.gridLayout_5.setRowStretch(2, 3) self.tab_view.addTab(self.tab_4, "") self.tab_3 = QtWidgets.QWidget() self.tab_3.setObjectName("tab_3") self.gridLayout = QtWidgets.QGridLayout(self.tab_3) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("gridLayout") self.horizontalLayout_5 = QtWidgets.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.result_names_combo_box = QtWidgets.QComboBox(self.tab_3) self.result_names_combo_box.setMinimumSize(QtCore.QSize(300, 0)) self.result_names_combo_box.setObjectName("result_names_combo_box") self.horizontalLayout_5.addWidget(self.result_names_combo_box) self.label_13 = QtWidgets.QLabel(self.tab_3) self.label_13.setObjectName("label_13") self.horizontalLayout_5.addWidget(self.label_13) self.result_iteration_number_line_edit = QtWidgets.QLineEdit(self.tab_3) self.result_iteration_number_line_edit.setObjectName("result_iteration_number_line_edit") self.horizontalLayout_5.addWidget(self.result_iteration_number_line_edit) self.show_results_button = QtWidgets.QPushButton(self.tab_3) self.show_results_button.setObjectName("show_results_button") self.horizontalLayout_5.addWidget(self.show_results_button) self.multiSolveButton = QtWidgets.QPushButton(self.tab_3) self.multiSolveButton.setObjectName("multiSolveButton") self.horizontalLayout_5.addWidget(self.multiSolveButton) self.multiSolveCombo = QtWidgets.QComboBox(self.tab_3) self.multiSolveCombo.setObjectName("multiSolveCombo") self.multiSolveCombo.addItem("") self.multiSolveCombo.addItem("") self.multiSolveCombo.addItem("") self.multiSolveCombo.addItem("") self.multiSolveCombo.addItem("") self.horizontalLayout_5.addWidget(self.multiSolveCombo) self.horizontalLayout_5.setStretch(0, 2) self.gridLayout.addLayout(self.horizontalLayout_5, 0, 0, 1, 1) self.verticalLayout_15 = QtWidgets.QVBoxLayout() self.verticalLayout_15.setObjectName("verticalLayout_15") self.horizontalLayout_6 = QtWidgets.QHBoxLayout() self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.verticalLayout_12 = QtWidgets.QVBoxLayout() self.verticalLayout_12.setObjectName("verticalLayout_12") self.verticalLayout_13 = QtWidgets.QVBoxLayout() self.verticalLayout_13.setObjectName("verticalLayout_13") self.label_17 = QtWidgets.QLabel(self.tab_3) self.label_17.setObjectName("label_17") self.verticalLayout_13.addWidget(self.label_17) self.sequence_table = ClipboardTableView(self.tab_3) self.sequence_table.setMinimumSize(QtCore.QSize(350, 0)) self.sequence_table.setObjectName("sequence_table") self.verticalLayout_13.addWidget(self.sequence_table) self.verticalLayout_12.addLayout(self.verticalLayout_13) self.verticalLayout_11 = QtWidgets.QVBoxLayout() self.verticalLayout_11.setObjectName("verticalLayout_11") self.label_16 = QtWidgets.QLabel(self.tab_3) self.label_16.setAlignment(QtCore.Qt.AlignCenter) self.label_16.setObjectName("label_16") self.verticalLayout_11.addWidget(self.label_16) self.inbound_time_table = ClipboardTableView(self.tab_3) self.inbound_time_table.setMinimumSize(QtCore.QSize(350, 0)) self.inbound_time_table.setObjectName("inbound_time_table") self.verticalLayout_11.addWidget(self.inbound_time_table) self.verticalLayout_12.addLayout(self.verticalLayout_11) self.horizontalLayout_6.addLayout(self.verticalLayout_12) self.verticalLayout_14 = QtWidgets.QVBoxLayout() self.verticalLayout_14.setObjectName("verticalLayout_14") self.label_18 = QtWidgets.QLabel(self.tab_3) self.label_18.setObjectName("label_18") self.verticalLayout_14.addWidget(self.label_18) self.good_in_out_table = ClipboardTableView(self.tab_3) self.good_in_out_table.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) self.good_in_out_table.setObjectName("good_in_out_table") self.good_in_out_table.horizontalHeader().setHighlightSections(False) self.verticalLayout_14.addWidget(self.good_in_out_table) self.horizontalLayout_6.addLayout(self.verticalLayout_14) self.horizontalLayout_6.setStretch(0, 1) self.horizontalLayout_6.setStretch(1, 1) self.verticalLayout_15.addLayout(self.horizontalLayout_6) self.verticalLayout_9 = QtWidgets.QVBoxLayout() self.verticalLayout_9.setObjectName("verticalLayout_9") self.label_14 = QtWidgets.QLabel(self.tab_3) self.label_14.setAlignment(QtCore.Qt.AlignCenter) self.label_14.setObjectName("label_14") self.verticalLayout_9.addWidget(self.label_14) self.outbound_time_table = ClipboardTableView(self.tab_3) self.outbound_time_table.setMinimumSize(QtCore.QSize(0, 150)) self.outbound_time_table.setObjectName("outbound_time_table") self.verticalLayout_9.addWidget(self.outbound_time_table) self.verticalLayout_15.addLayout(self.verticalLayout_9) self.verticalLayout_10 = QtWidgets.QVBoxLayout() self.verticalLayout_10.setObjectName("verticalLayout_10") self.label_15 = QtWidgets.QLabel(self.tab_3) self.label_15.setAlignment(QtCore.Qt.AlignCenter) self.label_15.setObjectName("label_15") self.verticalLayout_10.addWidget(self.label_15) self.compound_time_table = ClipboardTableView(self.tab_3) self.compound_time_table.setMinimumSize(QtCore.QSize(0, 150)) self.compound_time_table.setObjectName("compound_time_table") self.verticalLayout_10.addWidget(self.compound_time_table) self.verticalLayout_15.addLayout(self.verticalLayout_10) self.gridLayout.addLayout(self.verticalLayout_15, 1, 0, 1, 1) self.tab_view.addTab(self.tab_3, "") self.gridLayout_9.addWidget(self.tab_view, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1274, 30)) self.menubar.setObjectName("menubar") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.actionNew_Data = QtWidgets.QAction(MainWindow) self.actionNew_Data.setObjectName("actionNew_Data") self.actionLoad_Data = QtWidgets.QAction(MainWindow) self.actionLoad_Data.setObjectName("actionLoad_Data") self.actionSave_Data = QtWidgets.QAction(MainWindow) self.actionSave_Data.setObjectName("actionSave_Data") self.actionQuit = QtWidgets.QAction(MainWindow) self.actionQuit.setObjectName("actionQuit") self.menuFile.addAction(self.actionNew_Data) self.menuFile.addAction(self.actionLoad_Data) self.menuFile.addAction(self.actionSave_Data) self.menuFile.addAction(self.actionQuit) self.menubar.addAction(self.menuFile.menuAction()) self.retranslateUi(MainWindow) self.tab_view.setCurrentIndex(2) self.stackedWidget.setCurrentIndex(0) self.solverComboBox.currentIndexChanged['int'].connect(self.stackedWidget.setCurrentIndex) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def run_avian(inter_name, sig_method, sc, start_time_stamp, tester): """ .. note:: The following assumptions are important to notice: - Trajectories must end at the stop bar, i.e. the distance to stop bar converges to zero, even if they are temporarily assigned. - The desired speed of vehicles shall not exceed the speed limit or they will be advised speeding - Use default values for pieces of information that are impossible to obtain, i.e. accel/decel rates and destination of conventional vehicles. :param inter_name: The intersection name (should match the name given to identify an intersection in ``config.py``) :type inter_name: str :param sig_method: signalization method ``pretimed, GA, ...`` :type sig_method: str :param sc: scenario number (should match ``/data/<intersection name>/<intersection name>_<scenario number>.csv``) :type sc: int :param start_time_stamp: The local time stamp to name the output CSV files :param tester: The tester object :type tester: test.unit_tests.SimTest :Author: Mahmoud Pourmehrab <*****@*****.**> :Date: April-2018 :Organization: University of Florida """ intersection = Intersection(inter_name) lanes = Lanes(intersection) traffic = Traffic(intersection, sc, start_time_stamp) first_detection_time = traffic.get_first_detection_time() if sig_method == "MCF": signal = MCF_SPaT(first_detection_time, intersection, sc, start_time_stamp) elif sig_method == "GA": signal = GA_SPaT(first_detection_time, intersection, sc, start_time_stamp) trajectory_planner = TrajectoryPlanner(intersection) simulator = Simulator(first_detection_time) if intersection._general_params.get("log_csv"): t_start = perf_counter() # to measure the total run time (IS NOT THE SIMULATION TIME) while True: # stops when all rows of CSV are processed (a break statement controls this) simulation_time = simulator.clock # gets current simulation clock intersection._general_params.get("print_commandline") and print( "\n################################# CLOCK: {:>5.1f} SEC #################################".format( simulation_time)) # update the assigned trajectories traffic.serve_update_at_stop_bar(lanes, simulation_time, intersection) # tester is not None and intersection._general_params.get("do_traj_computation") and tester.check_order_in_lanes(lanes) # add/update the vehicles traffic.get_traffic_info(lanes, simulation_time, intersection) # update earliest departure schedule lanes.refresh_earliest_departure_times(lanes, intersection) # update the SPaT signal.update_SPaT(intersection, simulation_time, sc) # update the space mean speed volumes = traffic.get_volumes(lanes, intersection) critical_volume_ratio = 3_600 * volumes.max() / intersection._general_params.get( "min_CAV_headway") # todo could depend on min_CNV_headway too # perform signal optimization signal.solve(lanes, intersection, critical_volume_ratio, trajectory_planner, tester) num_lanes = intersection._general_params.get("num_lanes") tester is not None and tester.test_departure_of_trj(lanes, intersection, [0] * num_lanes, lanes.last_vehicle_indx) # move it forward if traffic.last_veh_arrived() and lanes.all_served(num_lanes): if intersection._general_params.get("log_csv"): elapsed_time = perf_counter() - t_start # THIS IS NOT SIMULATION TIME! IT'S JUST FOR TIMING THE ALGORITHM simulator.record_sim_stats(sc, inter_name, start_time_stamp, elapsed_time) traffic.save_veh_level_csv(inter_name, start_time_stamp) traffic.close_trj_csv() signal.close_sig_csv() intersection._general_params.get("print_commandline") and print( "\n### ELAPSED TIME: {:>5d} ms ###".format(int(1000 * elapsed_time))) return else: simulator.next_sim_step()
class SimulatorDriver(models.Model): #def __str__(self): # return self.summary def __init__(self, file_name): self.simulator = Simulator() self.simulator.process_input(file_name) self.simulator.setup() def get_data(self): return self.simulator.get_mdata_for_gui() def next_move(self): self.simulator.make_simulation_turn() def fast_forward(self): self.simulator.fast_forward() def stop(self): self.simulator.stop_simulation()
def __init__(self, file_name): self.simulator = Simulator() self.simulator.process_input(file_name) self.simulator.setup()
os.chdir("reports") dir_name = strftime("%Y%m%d_%H%M%S") if os.path.exists(dir_name): id = 0 tmp_dir_name = dir_name + "." + id while os.path.exists(tmp_dir_name): id = id + 1 tmp_dir_name = dir_name + "." + id dir_name = tmp_dir_name os.makedirs(dir_name) os.chdir(dir_name) return dir_name if __name__ == "__main__": args = parse_arguments() if (2 * args.minimum_bitwidth) > args.maximum_fanout: print("The maximum fanout needs to be smaller than twice the " "minimum bitwidth plus one.") quit() print("Starting ...") working_dir = setup_working_dir() print("Working directory: " + working_dir) sim = Simulator(args.minimum_bitwidth, args.maximum_fanout, working_dir) sim.run_designs() print("Thank you!")
def run(args, shared_blocked, shared_dropped, run_seed): np.random.seed(run_seed) # scipy uses numpy seeds args.seed = run_seed simulator = Simulator(args) # init simulator # capture stats # step-wise statistics no longer required # blocked_arr = [] # dropped_arr = [] num_inits = num_handover = num_terminate = 0 warmed_up = False for step in range(args.steps): if step > args.warmup and not warmed_up: simulator.reset() warmed_up = True # print('Simulator reset') # print(f'Total Calls: {simulator.total_calls}') # print(f'Blocked Calls: {simulator.blocked_calls}') # print(f'Dropped Calls: {simulator.dropped_calls}') # print('Leaving simulator reset') event = simulator.FEL.dequeue() simulator.clock = event.time # advance clock to event if isinstance(event, CallInit): simulator.handle_call_init(event) num_inits += 1 elif isinstance(event, CallHandover): num_handover += 1 if args.num_reserve == 0: simulator.handle_call_handover_no_res(event) else: simulator.handle_call_handover_res(event) elif isinstance(event, CallTerminate): num_terminate += 1 simulator.handle_call_termination(event) else: raise TypeError("Wrong event type in FEL") # if warmed_up: # only start collecting when warmed up # assert simulator.total_calls != 0 # percent_blocked = (simulator.blocked_calls / simulator.total_calls) * 100 # percent_dropped = (simulator.dropped_calls / simulator.total_calls) * 100 # blocked_arr.append(percent_blocked) # dropped_arr.append(percent_dropped) # compute final run statistics # for debugging # print(f'Total Calls: {simulator.total_calls}') # print(f'Blocked Calls: {simulator.blocked_calls}') # print(f'Dropped Calls: {simulator.dropped_calls}') run_blocked = (simulator.blocked_calls / simulator.total_calls) * 100 run_dropped = (simulator.dropped_calls / simulator.total_calls) * 100 # store results in shared list shared_blocked.append(run_blocked) shared_dropped.append(run_dropped)
def test_visualize() -> None: particles = [Particle(0.3, 0.5), Particle(0.0, -0.5), Particle(-0.1, -0.4)] simulator = Simulator(particles) visualize(simulator)
if __name__ == '__main__': ranking = Ranking() setup_teams = ['Slovakia', 'Brasil', 'Argentina', 'Germany', 'France', 'Spain', 'England', 'Italy'] print('Registering teams into ranking...') for t in setup_teams: ranking.register_team(Team(t, 0)) print('Building groups...') groups = ranking.build_groups() for group in groups: group.generate_matches() print('Building simulator...') sim = Simulator(groups) print('Simulating qualification...') while not sim.simulate_qualification_one_day(): pass print('Building championship...') sim.build_championship() print('Simulating championship spider rounds...') while not sim.simulate_championship_round(): pass print('Done... The winner is {0}'.format(sim.get_championship_winner()))