def Validate(threeDsolution): valid, errors = True, [""] for pallet in threeDsolution.pallets: ngoi = NgoiMatrix(*pallet.loadingspace.boundingBox) # Add dummy objects to each placement that represent the free space required for label visibility dummies_labels = ReadableItemLabelConstraint.GetDummies( pallet.loadingspace) dummies, _ = zip(*dummies_labels) dummies = list(dummies) for dummy, label in dummies_labels: if label.upper() == 'H': valid = False errors.append("Label of item with id " + str(dummy.id) + " was facing along H-direction <- VIOLATION") for placement in sorted(pallet.loadingspace.placements + dummies, key=lambda x: x.position[2]): ngoi.addCuboid(placement) for pair in ngoi.overlaps(): pair.sort(key=key("id")) if pair[0].TypeString() != "label of item" or pair[ 1].TypeString() != "label of item": valid = False errors.append(pair[0].TypeString().capitalize() + " with id " + str(pair[0].id) + " overlaps with " + pair[1].TypeString().capitalize() + " with id " + str(pair[1].id) + " <- VIOLATION") errors += ngoi.overlap_report return valid, ( "All" if valid else "Not all") + " item labels were visible" + ( "." if valid else ":" + "\n\t- ".join(sorted(set(errors))))
def sort(self): if self.threeDinstance != None: self.threeDinstance.sort() if self.containers != None: self.containers.sort(key=key("id")) for container in self.containers: if container != None: container.sort() if self.pallets != None: self.pallets.sort(key=key("id")) for pallet in self.pallets: if pallet != None: pallet.sort() if self.boxes != None: self.boxes.sort(key=key("id")) for box in self.boxes: if box != None: box.sort() if self.unplaced != None: self.unplaced.sort(key=key("id"))
def sort(self): if self.itemkinds != None: self.itemkinds.sort(key=key("id")) if self.boxkinds != None: self.boxkinds.sort(key=key("id")) if self.palletkinds != None: self.palletkinds.sort(key=key("id")) if self.containerkinds != None: self.containerkinds.sort(key=key("id")) for containerkind in self.containerkinds: if containerkind != None: containerkind.sort() if self.objectives != None: self.objectives.sort(key=combine([ key("priority"), lambda x: key("name")(key("objective", None) (x)), key("weight") ])) if self.constraints != None: self.constraints.sort( key=lambda x: key("name")(key("constraint", None)(x)))
def sort(self): if self.placements != None: self.placements.sort(key=key("id"))
def sort(self): if self.loadingspaces != None: self.loadingspaces.sort(key=key("id")) for loadingspace in self.loadingspaces: if loadingspace != None: loadingspace.sort()
def sort(self): if self.loadingspaces != None: self.loadingspaces.sort(key=key("id"))