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"))
Esempio n. 5
0
 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"))