Beispiel #1
0
def print_data( data = DataStore()):
    f = open('show_data_template.txt')
    src = Template(f.read())
    d = {'number_of_inbound': data.number_of_inbound_trucks,
         'number_of_outbound': data.number_of_outbound_trucks,
         'number_of_compound': data.number_of_compound_trucks,

         'number_of_receiving_doors': data.number_of_receiving_doors,
         'number_of_shipping_doors': data.number_of_shipping_doors,
         'number_of_goods': data.number_of_goods,
         'changeover_time': data.changeover_time,
         'loading_time': data.loading_time,
         'makespan_factor': data.makespan_factor,
         'transfer_time': data.transfer_time,
         'good_transfer_time': data.good_transfer_time,
         'inbound_arrival_time': data.inbound_arrival_time,
         'outbound_arrival_time': data.outbound_arrival_time,
         'data_set': data.data_set_list,
         'arrivals': data.arrival_times,
         'boundaries': data.boundaries,
         'inbound_goods': data.inbound_goods,
         'outbound_goods': data.outbound_goods,
         'compound_goods': data.outbound_goods}

    result = src.render(d)
    return result
Beispiel #2
0
 def set_data(self, solver_data=SolverData(), data=DataStore()):
     self.new_model()
     self.solver_data = solver_data
     self.data = data
     self.model.set_data(solver_data, data)
     self.sequence_algorithms = SequenceAlgorithm(data)
     self.sequence_algorithms.set_data_set_number(
         solver_data.data_set_number, data)
Beispiel #3
0
 def __init__(self, data=DataStore()):
     QDialog.__init__(self)
     self.data = data
     self.setWindowTitle('Data Set Window')
     self.setWindowModality(Qt.ApplicationModal)        
     self.setupComponents()
     self.setupButtons()
     self.setupComponents()
     self.setupConnections()
     self.setup_layout()
     self.load_data()
    def __init__(self, data=DataStore()):
        QDialog.__init__(self)
        self.data = data
        self.inboundView = []
        self.outboundView = []
        self.compoundView = []
        self.setWindowTitle('Truck Data Window')

        self.setupComponents()
        self.setGeometry(300, 400, 500, 500)
        self.setWindowModality(Qt.ApplicationModal)
Beispiel #5
0
 def __init__(self):
     self.iteration_number = 0
     self.solution_type = ""
     self.solution_name = ""
     self.model = Model()
     self.solver_data = SolverData()
     self.data = DataStore()
     self.iteration_results = IterationResults()
     self.sequence_list = SequenceList()
     self.current_sequence = Sequence()
     self.iteration_saved = False
Beispiel #6
0
    def set_data(self, solver_data=SolverData(), data=DataStore()):
        self.data = data
        self.solver_data = solver_data
        self.data_set_number = self.solver_data.data_set_number
        self.time_limit = self.solver_data.time_limit
        #print("Setting Data Set:", self.data_set_number)
        self.station = Station()

        for i in range(self.data.number_of_inbound_trucks):
            name = 'inbound' + str(i)
            truck = InboundTruck(name)
            self.inbound_trucks[name] = truck
            self.coming_trucks[name] = truck
            self.all_trucks[name] = truck

        for i in range(self.data.number_of_outbound_trucks):
            name = 'outbound' + str(i)
            truck = OutboundTruck(name)
            self.outbound_trucks[name] = truck
            self.going_trucks[name] = truck
            self.all_trucks[name] = truck

        for i in range(self.data.number_of_compound_trucks):
            name = 'compound' + str(i)
            truck = CompoundTruck(name)
            self.compound_trucks[name] = truck
            self.coming_trucks[name] = truck
            self.going_trucks[name] = truck
            truck.truck_transfer_time = data.truck_transfer_time
            self.all_trucks[name] = truck

        for i in range(self.data.number_of_receiving_doors):
            name = 'receiving' + str(i)
            door = ReceivingDoor(name)
            self.receiving_doors[name] = door
            door.station = self.station
            self.all_doors[name] = door
            self.element_list.append(door)

        for i in range(self.data.number_of_shipping_doors):
            name = 'shipping' + str(i)
            door = ShippingDoor(name)
            self.shipping_doors[name] = door
            self.element_list.append(door)
            self.all_doors[name] = door

        for truck in self.all_trucks.values():
            self.element_list.append(truck)

        self.set_coming_times()
        self.set_states()
        self.set_goods()
Beispiel #7
0
def main():
    global data_store, cwd, opened_file

    data_store = DataStore(config.DATA_STORE)
    cwd.append(data_store.root_directory)

    os.system("clear")
    print("\nType help to get help.\n")

    COMMANDS = {
        "help": [help, 0],
        "create": [create, 1],
        "del": [delete, 1],
        "ls": [list_contents, 0],
        "mkdir": [mkdir, 1],
        "cd": [chdir, 1],
        "mv": [move, 2],
        "open": [open_file, 1],
        "close": [close_file, 0],
        "append": [write_append, 0],
        "write": [write_at, 0],
        "read": [read, 0],
        "move-within": [move_within_file, 0],
        "truncate": [truncate_file, 0],
        "show-mem-map": [show_mem_map, 0],
        "clear": [clear, 0],
        "exit": [exit, 0]
    }

    while True:
        cwd_path = "/" + "/".join(list(map(lambda d: d.name, cwd[1:])))
        prompt = f"{cwd_path} - \u001b[32m({opened_file})\u001b[0m> " if opened_file \
        else f"{cwd_path}> "
        user_input = input(prompt).split(" ")
        if user_input[0] == "": continue

        if user_input[0] in COMMANDS:
            command = COMMANDS[user_input[0]]
            if len(user_input[1:]) == command[1]:
                try: command[0](*user_input[1:])
                except Exception as e: print(e)
            else:
                print(f"{user_input[0]} takes {command[1]} arguments, " \
                f"{len(user_input[1:])} given.")
        else:
            print(f"Command not recognized {user_input[0]}, " \
            "type help for help.")
 def __init__(self, parent):
     self.parent = None
     self.data = DataStore()
     self.scn = QGraphicsScene()
     QGraphicsView.__init__(self, self.scn)
     self.setup_station()
     self.show()
     self.fitInView(self.scn.itemsBoundingRect(), Qt.KeepAspectRatio)
     self.door_positions = {}
     self.truck_positions = {}
     self.doors = {}
     self.truck_states = {}
     self.trucks = {}
     self.doors = {}
     self.station = None
     self.pause = None
     self.dialog = []
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.data = DataStore()
        self.solver_data = SolverData()
        self.solver = Solver(self.data, self.solver_data)
        self.update_data_table()
        self.setup_data()
        self.value_connections()
        self.connections()
        self.combobox_coming_sequence = []
        self.combobox_going_sequence = []
        self.statusBar().showMessage('Ready')
        self.load_generated_data()
        self.results = OrderedDict()
        self.shoved_solution_name = ""
        self.shoved_iteration = IterationResults()
        self.shoved_solution = ModelResult()
        self.shoved_iteration_number = 0

        self.continue_solution = True
        self.showing_result = []
        self.result_times = {}
        self.function_type = "normal"
        self.solution_name = ""
        self.solution_number = 0
        self.sequence_solver = SequenceSolver()
        self.solution_results = dict()
        self.enter_sequence_widget = EnterSequenceWidget(self.data)
        self.current_sequence = Sequence()
        self.load_data()

        self.simulationStartButton.setEnabled(False)
        self.simulationStepForwardButton.setEnabled(False)

        self.result_show_best_solution_button.setEnabled(False)
        self.result_show_errors_button.setEnabled(False)
        self.result_show_sequences_button.setEnabled(False)
        self.result_show_trucktimes_button.setEnabled(False)
        self.result_show_truckgoods_button.setEnabled(False)
        self.run_simulation_button.setEnabled(False)
Beispiel #10
0
 def __init__(self, data=DataStore()):
     self.data = data
     self.coming_sequence = []
     self.going_sequence = []
     self.coming_sequence_element = SequenceElement('receiving', self.data.number_of_receiving_doors)
     self.going_sequence_element = SequenceElement('shipping', self.data.number_of_shipping_doors)
 def __init__(self, data=DataStore()):
     SequenceAlgorithm.__init__(self, data)
     self.algorithm_name = "annealing"
Beispiel #12
0
def gams_writer(file_name, data_set_number, data=DataStore()):
    f = open('gams_template.txt')
    src = Template(f.read())
    inbound_arrivals = []
    outbound_arrivals = []
    lower_boundaries = []
    upper_boundaries = []
    inbound_goods = chain(data.compound_coming_goods, data.inbound_goods)
    outbound_goods = chain(data.compound_going_goods, data.outbound_goods)

    for i in range(data.number_of_compound_trucks):
        truck_name = 'compound' + str(i)
        inbound_arrivals.append(
            int(data.arrival_times[data_set_number][truck_name][0]))
        outbound_arrivals.append(
            int(data.arrival_times[data_set_number][truck_name][1]))
        lower_boundaries.append(
            int(data.boundaries[data_set_number][truck_name][0]))
        upper_boundaries.append(
            int(data.boundaries[data_set_number][truck_name][1]))

    for i in range(data.number_of_inbound_trucks):
        truck_name = 'inbound' + str(i)
        inbound_arrivals.append(
            int(data.arrival_times[data_set_number][truck_name]))

    for i in range(data.number_of_outbound_trucks):
        truck_name = 'outbound' + str(i)
        outbound_arrivals.append(
            int(data.arrival_times[data_set_number][truck_name]))
        lower_boundaries.append(
            int(data.boundaries[data_set_number][truck_name][0]))
        upper_boundaries.append(
            int(data.boundaries[data_set_number][truck_name][1]))

    d = {
        'number_of_inbound':
        data.number_of_inbound_trucks + data.number_of_compound_trucks,
        'number_of_outbound':
        data.number_of_outbound_trucks + data.number_of_compound_trucks,
        'number_of_compound': data.number_of_compound_trucks,
        'compound_plus_one': data.number_of_compound_trucks + 1,
        'changeover_time': int(data.changeover_time),
        'product_transfer_time': int(data.good_transfer_time),
        'transfer_time': int(data.transfer_time),
        'number_of_goods': data.number_of_goods,
        'number_of_receiving_doors': data.number_of_receiving_doors,
        'number_of_shipping_doors': data.number_of_shipping_doors,
        'inbound_arrivals': inbound_arrivals,
        'outbound_arrivals': outbound_arrivals,
        'lower_boundaries': lower_boundaries,
        'upper_boundaries': upper_boundaries,
        'inbound_goods': inbound_goods,
        'outbound_goods': outbound_goods,
        'good_numbers': range(0, data.number_of_goods)
    }

    result = src.render(d)
    s = open(file_name, 'w')
    s.write(result)
    s.close()
Beispiel #13
0
    def __init__(self, data=DataStore()):
        """
        Initialize trucks, the station and get ready to solve
        :return: nothing
        """
        self.data = data
        self.inbound_trucks = OrderedDict()
        self.outbound_trucks = OrderedDict()
        self.compound_trucks = OrderedDict()
        self.inbound_data = {}
        self.outbound_data = {}
        self.compound_data = {}
        self.truck_data = {}
        self.number_of_goods = self.data.number_of_goods
        self.number_of_inbound_trucks = self.data.number_of_inbound_trucks
        self.number_of_outbound_trucks = self.data.number_of_outbound_trucks
        self.number_of_compound_trucks = self.data.number_of_compound_trucks
        self.number_of_trucks = self.data.number_of_inbound_trucks + self.data.number_of_outbound_trucks + self.data.number_of_compound_trucks
        self.number_of_coming_trucks = self.data.number_of_inbound_trucks + self.data.number_of_compound_trucks
        self.number_of_going_trucks = self.data.number_of_outbound_trucks + self.data.number_of_compound_trucks
        self.truck_dictionary = {
            'inbound': self.inbound_trucks,
            'outbound': self.outbound_trucks,
            'compound': self.compound_trucks
        }
        self.all_trucks = None
        self.sequence_bool = False
        self.solution_finish = False

        self.number_of_shipping_doors = self.data.number_of_shipping_doors
        self.number_of_receiving_doors = self.data.number_of_receiving_doors

        self.alpha = 0
        self.gamma = 0
        self.tightness_factor = 0
        self.inbound_mu = 0
        self.outbound_mu = 0
        self.product_per_inbound_truck = 0
        self.product_per_outbound_truck = 0

        # calculate data
        self.calculate_mu()
        self.calculate_product_per_truck()

        self.finish = False

        # create trucks
        self.inbound_data['arrival_time'] = self.data.inbound_arrival_time
        self.inbound_data['mu'] = self.inbound_mu
        self.inbound_data['product_per_truck'] = self.product_per_inbound_truck

        self.outbound_data['arrival_time'] = self.data.outbound_arrival_time
        self.outbound_data['mu'] = self.outbound_mu
        self.outbound_data[
            'product_per_truck'] = self.product_per_outbound_truck

        self.compound_data['arrival_time'] = self.data.inbound_arrival_time
        self.compound_data['mu'] = self.inbound_mu
        self.compound_data['transfer_time'] = self.data.transfer_time
        self.compound_data[
            'inbound_product_per_truck'] = self.product_per_inbound_truck
        self.compound_data[
            'outbound_product_per_truck'] = self.product_per_outbound_truck

        self.truck_data['loading_time'] = self.data.loading_time
        self.truck_data['changeover_time'] = self.data.changeover_time
        self.truck_data[
            'makespan_factor'] = self.data.makespan_factor  # not used anthwere!!
        self.truck_data['alpha'] = self.alpha
        self.truck_data['gamma'] = self.gamma
        self.truck_data['tightness_factor'] = self.tightness_factor

        self.station = Station(self.data.good_transfer_time)
        self.create_trucks()

        self.current_data_set = 0

        # init model solution
        self.current_time = 0
        self.time_step = 1
Beispiel #14
0
 def __init__(self, data=DataStore()):
     self.algorithm_name = ""
     self.data_set_number = 0
     self.data = data
     self.arrivals = {}
     self.sequence = Sequence(self.data)
Beispiel #15
0
 def __init__(self, data=DataStore(), solver_data=SolverData()):
     QObject.__init__(self)
     self.data = data
     self.solver_data = solver_data
     self.annealing = Annealing(self.data)
     self.current_iteration = 0
 def new_data(self):
     self.data = DataStore()
     self.update_data_table()
     self.value_connections()
     self.setup_data()