def pack(self, boxes, bin_dimensions): #1. 按体积从大到小排序(启发式策略) boxes_sorted= sorted(boxes, key=lambda b: -b.volume()) #2. 初始化箱子列表 bins= [] #3. 遍历所有盒子 forbox in boxes_sorted: placed= False #4. 优先尝试放入已有箱子 forbin in bins: ifself._try_place_in_bin(bin, box): placed= True break #5. 创建新箱子 ifnot placed: new_bin= Bin(id=len(bins)+1, dimensions=bin_dimensions) ifself._try_place_in_bin(new_bin, box): bins.append(new_bin) placed= True #6. 处理无法放置的盒子 ifnot placed: print(f"警告:无法放置盒子 {box.name}") returnbins |