Exemplo n.º 1
0
def random_bin():
    name_len = random.randrange(5, 10)
    bin_name = get_random_string(7).upper()

    w = round(random.uniform(5000.0, 10000.0), 2)
    h = round(random.uniform(5000.0, 10000.0), 2)
    d = round(random.uniform(5000.0, 10000.0), 2)
    mw = round(random.uniform(50000.0, 100000.0), 2)
    new_bin = Bin(bin_name, w, h, d, mw)
    print(new_bin.string())
    return new_bin
Exemplo n.º 2
0
    def solve(self, bins, items):
        for bin in bins:
            self.packer.add_bin(
                Bin(bin.name, bin.width, bin.height, bin.depth,
                    bin.max_weight))

        for item in items:
            self.packer.add_item(
                Item(item.name, item.width, item.height, item.depth,
                     item.weight))

        self.packer.pack(distribute_items=True)

        return self.parse_solution()
    def generate_data(self):
        self.packer = Packer()
        bin_W =60#random.uniform(self.bin_W_range[0],self.bin_W_range[1])
        bin_H =40#random.uniform(self.bin_H_range[0],self.bin_H_range[1])
        bin_L =40#random.uniform(self.bin_L_range[0],self.bin_L_range[1])
        bin_volume=bin_W*bin_H*bin_L
        self.packer.add_bin(Bin('FirstBin', bin_W, bin_H, bin_L , 1))

        current_volume=0
        index=0
        while (current_volume<bin_volume): 
            index+=1
            item_W =random.randint(10,20)#random.uniform(self.item_W_range[0],self.item_W_range[1])
            item_H =random.randint(10,20)#random.uniform(self.item_H_range[0],self.item_H_range[1])
            item_L =random.randint(10,20)#random.uniform(self.item_L_range[0],self.item_L_range[1])
            current_volume+=item_W*item_H*item_L
            self.packer.add_item(Item('Item '+str(index), item_W, item_H, item_L, 0))
        
        self.packer.pack()

        item_list=[]
        for b in self.packer.bins:
            #draw bin origin
            bin_origin=o3d.geometry.TriangleMesh.create_coordinate_frame(size=10.0, origin= [0., 0., 0.] )
            item_list.append(bin_origin)
            print(":::::::::::", b.string()) 
            mesh_bin = self.create_mesh_box(width = b.width, height = b.height, depth = b.depth)#, dx=b.position[0], dy=b.position[1], dz=b.position[2])#position
            mesh_bin.compute_vertex_normals()
            mesh_bin.paint_uniform_color([random.uniform(0,1), random.uniform(0,1), random.uniform(0,1)])
            lineset_bin=o3d.geometry.LineSet.create_from_triangle_mesh(mesh_bin)
            item_list.append(lineset_bin)
            print("FITTED ITEMS:")
            for item in b.items:
                print("====> ", item.string())
                dim=item.get_dimension()
                mesh_box = self.create_mesh_box(width = dim[0], height = dim[1], depth = dim[2], dx=item.position[0], dy=item.position[1], dz=item.position[2])#position
                mesh_box.compute_vertex_normals()
                mesh_box.paint_uniform_color([random.uniform(0,1), random.uniform(0,1), random.uniform(0,1)])
                item_list.append(mesh_box)
            print("UNFITTED ITEMS:")
            for item in b.unfitted_items:
                print("====> ", item.string())

            print("***************************************************")
            print("***************************************************")
        
        o3d.visualization.draw_geometries(item_list)
Exemplo n.º 4
0
def loading(Container_vehicle, final_set, n_customer, N, V, Cat, IT, IT_num,
            nv, locationtuples, RP, A, nmaps, dist, historical_routes,
            historical_routes_tuples):
    packer = Packer()
    # The maximum volum and weight that a container can carry (length, width, height, weight)
    # Add bins
    packer.add_bin(
        Bin(Container_vehicle[0], Container_vehicle[1], Container_vehicle[2],
            Container_vehicle[3], Container_vehicle[4]))

    # add items to corresponding containers
    for customeritems in final_set:
        for items in customeritems:
            packer.add_item(
                Item(
                    list(items.keys())[0],
                    list(items.values())[0][0],
                    list(items.values())[0][1],
                    list(items.values())[0][2],
                    list(items.values())[0][3]))

    packer.pack(number_of_decimals=0)

    return packer
Exemplo n.º 5
0
def get_bin(vehicle):
  '''
  Constroi e retorna o objeto Bin a partir dos dados de um veículo

  vehicle = {
    name: string
    dimentions: {
      'length': float (cm)
      'height': float (cm)
      'depth': float (cm)
      'weight': float (kg)
    }
  }
  '''

  bin_ = Bin(
    vehicle['name'],                 # name
    vehicle['dimentions']['length'], # max length 
    vehicle['dimentions']['height'], # max height
    vehicle['dimentions']['depth'],  # max depth
    vehicle['dimentions']['weight'], # max weigth
  )

  return bin_
    def generate_data_test(sefl):

        packer = Packer()

        packer.add_bin(Bin('small-envelope', 11.5, 6.125, 0.25, 10))
        packer.add_bin(Bin('large-envelope', 15.0, 12.0, 0.75, 15))
        packer.add_bin(Bin('small-box', 8.625, 5.375, 1.625, 70.0))
        packer.add_bin(Bin('medium-box', 11.0, 8.5, 5.5, 70.0))
        packer.add_bin(Bin('medium-2-box', 13.625, 11.875, 3.375, 70.0))
        packer.add_bin(Bin('large-box', 12.0, 12.0, 5.5, 70.0))
        packer.add_bin(Bin('large-2-box', 23.6875, 11.75, 3.0, 70.0))

        packer.add_item(Item('50g [powder 1]', 3.9370, 1.9685, 1.9685, 1))
        packer.add_item(Item('50g [powder 2]', 3.9370, 1.9685, 1.9685, 2))
        packer.add_item(Item('50g [powder 3]', 3.9370, 1.9685, 1.9685, 3))
        packer.add_item(Item('250g [powder 4]', 7.8740, 3.9370, 1.9685, 4))
        packer.add_item(Item('250g [powder 5]', 7.8740, 3.9370, 1.9685, 5))
        packer.add_item(Item('250g [powder 6]', 7.8740, 3.9370, 1.9685, 6))
        packer.add_item(Item('250g [powder 7]', 7.8740, 3.9370, 1.9685, 7))
        packer.add_item(Item('250g [powder 8]', 7.8740, 3.9370, 1.9685, 8))
        packer.add_item(Item('250g [powder 9]', 7.8740, 3.9370, 1.9685, 9))

        packer.pack()

        for b in packer.bins:
            print(":::::::::::", b.string())

            print("FITTED ITEMS:")
            for item in b.items:
                print("====> ", item.string())

            print("UNFITTED ITEMS:")
            for item in b.unfitted_items:
                print("====> ", item.string())

            print("***************************************************")
            print("***************************************************")
Exemplo n.º 7
0
from py3dbp import Item, Bin, Packer
print('start')
from copy import deepcopy

packer = Packer()

packer.add_bin(Bin('small-envelope 1', 85, 85, 85, 124))

for j in range(11):
    a = Item('Beauty & Personal Care {}'.format(j), 19, 19, 19, 12)
    packer.add_item(a)

for j in range(14):
    a = Item('Tools & Home Improvement {}'.format(j), 6, 6, 6, 4)
    packer.add_item(a)

for j in range(8):
    a = Item('Audible Books & Originals {}'.format(j), 15, 15, 15, 8)
    packer.add_item(a)

import time
now = time.time()
packer_1 = deepcopy(packer)
packer_2 = deepcopy(packer)

packer = packer_1
packer.algorithm_1()
print('start')
for b in packer.bins:
    print(b.string())
    for i in b.items:
Exemplo n.º 8
0
from py3dbp import Packer, Bin, Item

packer = Packer()

packer.add_bin(Bin('small-envelope', 11.5, 6.125, 0.25, 10))
packer.add_bin(Bin('large-envelope', 15.0, 12.0, 0.75, 15))
packer.add_bin(Bin('small-box', 8.625, 5.375, 1.625, 70.0))
packer.add_bin(Bin('medium-box', 11.0, 8.5, 5.5, 70.0))
packer.add_bin(Bin('medium-2-box', 13.625, 11.875, 3.375, 70.0))
packer.add_bin(Bin('large-box', 12.0, 12.0, 5.5, 70.0))
packer.add_bin(Bin('large-2-box', 23.6875, 11.75, 3.0, 70.0))

packer.add_item(Item('50g [powder 1]', 3.9370, 1.9685, 1.9685, 1))
packer.add_item(Item('50g [powder 2]', 3.9370, 1.9685, 1.9685, 2))
packer.add_item(Item('50g [powder 3]', 3.9370, 1.9685, 1.9685, 3))
packer.add_item(Item('250g [powder 4]', 7.8740, 3.9370, 1.9685, 4))
packer.add_item(Item('250g [powder 5]', 7.8740, 3.9370, 1.9685, 5))
packer.add_item(Item('250g [powder 6]', 7.8740, 3.9370, 1.9685, 6))
packer.add_item(Item('250g [powder 7]', 7.8740, 3.9370, 1.9685, 7))
packer.add_item(Item('250g [powder 8]', 7.8740, 3.9370, 1.9685, 8))
packer.add_item(Item('250g [powder 9]', 7.8740, 3.9370, 1.9685, 9))

packer.pack()

for b in packer.bins:
    print(":::::::::::", b.string())

    print("FITTED ITEMS:")
    for item in b.items:
        print("====> ", item.string())
Exemplo n.º 9
0
for t in range(len(trucks)):
    packer = Packer()

    #packer.add_bin(Bin('small-envelope', 11.5, 6.125, 0.25, 10))
    #packer.add_bin(Bin('large-envelope', 15.0, 12.0, 0.75, 15))
    #packer.add_bin(Bin('small-box', 8.625, 5.375, 1.625, 70.0))
    #packer.add_bin(Bin('medium-box', 11.0, 8.5, 5.5, 70.0))
    #packer.add_bin(Bin('medium-2-box', 13.625, 11.875, 3.375, 70.0))
    #packer.add_bin(Bin('large-box', 240, 244, 1360, 70.0))
    #packer.add_bin(Bin('large-2-box', 23.6875, 11.75, 3.0, 70.0))

    truckX = trucks[t][0]
    truckY = trucks[t][1]
    truckZ = trucks[t][2]

    packer.add_bin(Bin('LB', truckX, truckY, truckZ, 3000.0))

    for i in range(300):
        packer.add_item(Item('boxL' + str(i), 20, 40, 20, 1))

    for i in range(10):
        packer.add_item(Item('boxU' + str(i), 100, 100, 100, 1))

    for i in range(5):
        packer.add_item(Item('boxU' + str(i), 200, 100, 50, 1))

    for i in range(10):
        packer.add_item(Item('boxU' + str(i), 40, 40, 20, 1))

    #packer.pack()
    packer.pack(bigger_first=False)
Exemplo n.º 10
0
from py3dbp import Packer, Bin, Item

packer = Packer()

a = Bin('large-3-box', 23.6875, 11.2, 35.0, 1000.0)
#packer.add_bin(Bin('small-envelope', 11.5, 6.125, 0.25, 10))
#packer.add_bin(Bin('large-envelope', 15.0, 12.0, 0.75, 15))
#packer.add_bin(Bin('small-box', 8.625, 5.375, 1.625, 70.0))
#packer.add_bin(Bin('medium-box', 11.0, 8.5, 5.5, 70.0))
#packer.add_bin(Bin('medium-2-box', 13.625, 11.875, 3.375, 70.0))
#packer.add_bin(Bin('large-box', 12.0, 12.0, 5.5, 70.0))
#packer.add_bin(Bin('large-2-box', 23.6875, 11.75, 3.0, 70.0))
packer.add_bin(a)

packer.add_item(Item('1', 3.9370, 1.9685, 11.9685, 1))
packer.pack()
#packer.add_item(Item('2', 23.6875, 11.2, 30, 10))
#packer.pack()
packer.add_item(Item('2', 3.9370, 1.9685, 1.9685, 2))
packer.pack()
packer.add_item(Item('3', 3.9370, 1.9685, 1.9685, 3))
packer.pack()

packer.add_item(Item('4', 7.8740, 3.9370, 1.9685, 4))
packer.pack()
packer.add_item(Item('5', 7.8740, 3.9370, 1.9685, 5))
packer.pack()
packer.add_item(Item('6', 7.8740, 3.9370, 1.9685, 6))
packer.pack()
packer.add_item(Item('7', 15.5, 6, 20, 6))
packer.pack()