alexfrom0815 / Online-3D-BPP-PCT

Code implementation of "Learning Efficient Online 3D Bin Packing on Packing Configuration Trees". We propose to enhance the practical applicability of online 3D Bin Packing Problem (BPP) via learning on a hierarchical packing configuration tree which makes the deep reinforcement learning (DRL) model easy to deal with practical constraints and well-performing even with continuous solution space.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

An error occurs if x and y in container size is too large

sensen-myr opened this issue · comments

if i set container size to [120, 100, 180], it will report the following error.
now step is the count log argument that I defined.

now step = 1
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/site-packages/torch/nn/modules/module.py:1117: UserWarning: Using a non-full backward hook when the forward contains multiple autograd Nodes is deprecated and will be removed in future versions. This hook will be missing some grad_input. Please use register_full_backward_hook to get the documented behavior.
warnings.warn("Using a non-full backward hook when the forward contains multiple autograd Nodes "
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/kfac.py:195: UserWarning: torch.symeig is deprecated in favor of torch.linalg.eigh and will be removed in a future PyTorch release.
The default behavior has changed from using the upper triangular portion of the matrix by default to using the lower triangular portion.
L, _ = torch.symeig(A, upper=upper)
should be replaced with
L = torch.linalg.eigvalsh(A, UPLO='U' if upper else 'L')
and
L, V = torch.symeig(A, eigenvectors=True)
should be replaced with
L, V = torch.linalg.eigh(A, UPLO='U' if upper else 'L') (Triggered internally at ../aten/src/ATen/native/BatchLinearAlgebra.cpp:2794.)
self.m_gg[m], eigenvectors=True)
now step = 2
now step = 3
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
now step = 4
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
now step = 5
now step = 6
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
now step = 7
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
now step = 8
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
now step = 9
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
now step = 10
Time version: test-2023.12.05-11-21-13 is training
Updates 10, num timesteps 3520, FPS 589
Last 6 training episodes: mean/median reward 0.4/0.4, min/max reward 0.2/0.6
The dist entropy 2.81792, the value loss 0.05034, the action loss 0.02634
The mean space ratio is 0.039128163580246914, the ratio threshold is0.060708796296296295

now step = 11
now step = 12
now step = 13
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
now step = 14
now step = 15
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
now step = 16
/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py:65: RuntimeWarning: invalid value encountered in true_divide
new_stack_centre /= new_stack_mass
Process ForkProcess-32:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-62:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-27:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-9:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-12:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-22:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-4:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-16:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
now step = 17
Process ForkProcess-59:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-37:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Process ForkProcess-44:
Traceback (most recent call last):
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 140, in _subproc_worker
obs, reward, done, info = env.step(data)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/monitor.py", line 54, in step
ob, rew, done, info = self.env.step(action)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/bin3D.py", line 159, in step
succeeded = self.space.drop_box(next_box, idx, rotation_flag, self.next_den, self.setting)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/pct_envs/PctDiscrete0/space.py", line 386, in drop_box
[lx, ly, max_h, lx + x, ly + y, max_h + z, density, 0, 1])
IndexError: index 80 is out of bounds for axis 0 with size 80
Traceback (most recent call last):
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/main.py", line 61, in
main(args)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/main.py", line 56, in main
trainTool.train_n_steps(envs, args, device)
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/train_tools.py", line 69, in train_n_steps
obs, reward, done, infos = envs.step(selected_leaf_node.cpu().numpy())
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/vec_env.py", line 108, in step
return self.step_wait()
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/envs.py", line 179, in step_wait
obs, reward, done, info = self.venv.step_wait()
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 77, in step_wait
outs = [pipe.recv() for pipe in self.parent_pipes]
File "/home/jintao.chen/agv/Online-3D-BPP-PCT_water/wrapper/shmem_vec_env.py", line 77, in
outs = [pipe.recv() for pipe in self.parent_pipes]
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/connection.py", line 250, in recv
buf = self._recv_bytes()
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/connection.py", line 407, in _recv_bytes
buf = self._recv(4)
File "/home/jintao.chen/anaconda3/envs/python3.7_work/lib/python3.7/multiprocessing/connection.py", line 383, in _recv
raise EOFError
EOFError

Process finished with exit code 1

Just raise the internal node number from 80 to a larger one.

Thanks for your kind explanation, it worked!