【3D装箱环境】

本文介绍了一个3D装箱环境的创建,旨在应用于强化学习,以解决组合优化问题。通过环境中的操作,如添加物品、卸载、重设尺寸等,模拟实际装箱场景。此外,还展示了如何初始化、放置和移除物品,以及调整箱体尺寸等基本功能。
摘要由CSDN通过智能技术生成


前言

依靠环境与强化学习任务的交互,可以很好地反映强化学习的能力表现,但是依赖已有的gym库进行训练,并不能满足设众多paper对实际问题的探究,尤其是组合优化问题,为了说明强化学习在该领域具有一定的可行性,通常会创建该领域的环境与强化学习进行交互,通过学习任务的结果来说明强化学习在该领域能够达到什么水准。
环境的建立对强化学习十分重要,目前,结合深度强化学习研究组合优化问题的文章还是不太多的,本人参照部分博主的代码,针对实际的装箱场景,结合本人对问题的理解,创建了一个简单的3D装箱环境,用以在强化学习方面的交互,进行学习记录。

一、三维装箱问题是什么?

三维装箱问题就是在有限的矩形箱内,将大小,形状各异的物品装载到箱中,使箱的空间占用率最大

二、环境下的操作

  • 添加(addPosition_item_info)
    参数有两个:第一个是物品装载位置[x,y,z],第二个为物品装载信息[L.W,H]
  • 取出(popLastPosition_item_info)
    有装载就会有卸载,每一次取出上一次被装载的物品以及位置,其它位置不可取
  • 重设装箱尺寸(setBinSize)
    重新设置装载箱的尺寸
  • 展示状态(show3D)
    打印当前物品的装载状态
  • 清空(clearPosition_item_info)
    清空所有的物品以及位置信息,用于重新装载
  • 查看(query_info)
    查看当前状态的物品位置以及物品信息
  • 装载高度图(initHeightGraph,oneHeightGraph)
    返回初始高度图与矩阵为1的高度图,方面后续灵活运用

三、代码

1.引入库

代码如下(示例):

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy.matlib as matlib
import numpy as np

2.主体代码

代码如下(示例):

class Bin_Packing_Env:
    def __init__(self,Bin_L, Bin_W, Bin_H):
        self.Bin_length = Bin_L
        self.Bin_width = Bin_W
        self.Bin_height = Bin_H
        self.Packing_Position = []
        self.item_info = []

    def box(self,ax,dx, dy, dz):  # x,y,z,为平面坐标网格生成(x,y)(y,z)(z,x)三个面的网格
        color = self.selectColor()
        x, y, z = 0, 0, 0
        xx = [x, x, x + dx, x + dx, x]
        yy = [y, y + dy, y + dy, y, y]
        kwargs = {
   'alpha': 1, 'color': color}
        ax.plot3D(xx, yy, [z] * 5, **kwargs)  # 下底
        ax.plot3D(xx, yy, [z + dz] * 5, 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值