def __init__(self, fw_code, length, width, coordinates_pair):
        Node.__init__(self, coordinates_pair[0], coordinates_pair[1])
        self.fw_code = fw_code
        self.left = None
        self.right = None
        self.key_in = {}
        self.wait_in = {}
        self.key_out = None
        self.side = left
        self.length = length
        self.width = width
        self.waiting = False

        self.packer = newPacker(sort_algo=SORT_NONE,
                                pack_algo=SkylineBl,
                                rotation=False)
        # GuillotineBssfSas

        self.packer.add_bin(self.width, self.length)
        self.packer.pack()

        # Get the fairway section this belongs to
        if self.fw_code not in GlobalVars.fairway_section_dict:
            print("We have problem here..")

        insertion_idx = -1
        min_distance = float('inf')

        fairway_section = GlobalVars.fairway_section_dict.get(self.fw_code)
        for idx, fairway_section_node in enumerate(fairway_section.nodes):
            distance = Utilities.haversine(
                [self.y, self.x],
                [fairway_section_node.y, fairway_section_node.x])
            if distance < min_distance:
                min_distance = distance
                insertion_idx = idx

        if min_distance == 0:
            fairway_section.nodes[insertion_idx] = self
        else:
            # Append add the best index
            if insertion_idx >= len(fairway_section.nodes) - 1:
                insertion_idx = insertion_idx - 1

            fairway_section.nodes.insert(insertion_idx + 1, self)
Beispiel #2
0
    def __init__(self, fw_code, movable, height, coordinates_pair):
        Node.__init__(self, coordinates_pair[0], coordinates_pair[1])
        self.fw_code = fw_code
        self.left = None
        self.right = None
        self.state = closed
        self.order = None
        self.moving = None
        self.movable = movable
        if height is None or math.isnan(height):
            height = 0
        self.height = height / 100

        # Get the fairway section this belongs to
        if self.fw_code not in GlobalVars.fairway_section_dict:
            print("We have problem here..")

        insertion_idx = -1
        min_distance = float('inf')

        fairway_section = GlobalVars.fairway_section_dict.get(self.fw_code)
        for idx, fairway_section_node in enumerate(fairway_section.nodes):
            distance = Utilities.haversine(
                [self.y, self.x],
                [fairway_section_node.y, fairway_section_node.x])
            if distance < min_distance:
                min_distance = distance
                insertion_idx = idx

        if min_distance == 0:
            fairway_section.nodes[insertion_idx] = self
        else:
            # Append add the best index
            if insertion_idx >= len(fairway_section.nodes) - 1:
                insertion_idx = insertion_idx - 1

            fairway_section.nodes.insert(insertion_idx + 1, self)