CN112884126B - 深度强化学习网络*** - Google Patents

深度强化学习网络*** Download PDF

Info

Publication number
CN112884126B
CN112884126B CN202110218003.2A CN202110218003A CN112884126B CN 112884126 B CN112884126 B CN 112884126B CN 202110218003 A CN202110218003 A CN 202110218003A CN 112884126 B CN112884126 B CN 112884126B
Authority
CN
China
Prior art keywords
loading
box
boxes
layer
container
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110218003.2A
Other languages
English (en)
Other versions
CN112884126A (zh
Inventor
张经纬
资斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Lan Pangzi Machine Intelligence Co ltd
Original Assignee
Shenzhen Lan Pangzi Machine Intelligence Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Lan Pangzi Machine Intelligence Co ltd filed Critical Shenzhen Lan Pangzi Machine Intelligence Co ltd
Priority to CN202110218003.2A priority Critical patent/CN112884126B/zh
Publication of CN112884126A publication Critical patent/CN112884126A/zh
Application granted granted Critical
Publication of CN112884126B publication Critical patent/CN112884126B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/083Shipping

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Business, Economics & Management (AREA)
  • Economics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Development Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Container Filling Or Packaging Operations (AREA)

Abstract

本申请公开一种深度强化学习网络***,包括嵌入层、排序层以及装载层,嵌入层用于将待装箱体的装箱信息映射成特征向量,排序层用于对多个无序的待装箱体进行排序,装载层用于根据排序层输出的待装箱体的装载顺序确定待装箱体的装载位置以及朝向,以此将装箱问题分解为两个步骤并使用分层装箱模型来求解:1、序列决策问题:给定一系列无序的待装箱体,使用深度强化学习来确定待装箱体的装载顺序。2、装载问题:基于第二算法给出的箱体装载顺序,使用深度强化学习来确定箱体的装载位置以及朝向;将装箱问题的分解使得问题的需要搜索的整体动作空间大大降低,大大降低了智能体的学习和搜索难度。

Description

深度强化学习网络***
技术领域
本申请涉及人工智能以及装箱技术领域,尤其涉及一种深度强化学习网络***及存储介质。
背景技术
目前装箱通常是依据经验来进行人工装箱。为了能够提高装箱的合理性和高效性,可以采用智能算法来辅助装箱。
装箱问题是一个经典的学术问题,同时拥有着广泛的商业应用价值。在物流领域中,常常会出现需要将指定的一系列货物装入指定容器,比如车厢,进行运输的问题。
现存的绝大多数算法可分为两类,(一)使用人为制定规则的启发式搜索算法;(二)将其视为非线性优化以解决的优化算法如遗传算法,与深度学习算法。
但是,第一类的基于启发式搜索方法之根本缺陷为其结果依赖于人为指定的启发式规则。在规则适用时结果趋好,反之规则很难得出可用的方案。然而大多数装箱场景本身有着复杂的限制条件,这使得我们难以找出一套适用的规则。其次,每当场景发生主要变动时,规则均须重新制定调整,这影响了算法本身的通用性。
第二类方法,非线性优化—遗传算法和深度强化学习算法,现存的大多数基于深度强化学习的装箱算法可分为两类:(1)使用深度强化学习确定箱子装载顺序,再使用传统的启发式算法来计算箱子装载位置。(2)通过其他算法或实验限制给定箱子装载顺序,使用深度强化学习来确定装载位置。
现存的第一类基于深度强化学***滑地迁移。(2)采用传统启发式算法难以利用GPU并行化,从而使得深度强化学习的训练过程需要大量的时间与计算资源。
第二类方法的主要缺点有:(1)现实中的装箱问题通常没有一个固定的装载顺序,因此此类方法的适用范围有限。(2)装箱问题中箱子的装载顺序对最后的装载结果影响巨大,因此此类算法往往难以使最后算法的装载率达到最优。(3)同时,由于装箱算法中箱子的装载有严格的空间限制,因此需要进行大量的计算。
因此,期望提供一种深度强化学习网络***,提高装箱通用性和计算效率。
发明内容
为克服相关技术中存在的问题,本申请提供一种深度强化学习网络***及存储介质,旨在提高装箱通用性和计算效率。
本申请解决上述技术问题的技术方案如下:一种深度强化学习网络***,应用于智能装箱,所述深度强化学习网络***包括嵌入层,所述嵌入层包括:箱体嵌入模型,用于对多个无序的待装箱体的装箱信息进行数据映射,得到多个无序的所述待装箱体的装箱信息在高位空间的表征box embedding;边界嵌入模型,用于对一容器的容纳信息进行数据映射,得到所述容器的容纳信息在高位空间的表征frontier embedding。
优选的,所述深度强化学习网络***还包括:排序层,所述排序层用于对多个无序的待装箱体进行排序;所述排序层设有一序列决策模型,所述序列决策模型用于根据多个所述待装箱体的装箱信息的表征box embedding以及所述容器的容纳信息的表征frontierembedding,输出多个所述待装箱体的概率。
优选的,所述深度强化学习网络***还包括装载层,所述装载层用于根据所述排序层输出的所述待装箱体的装载顺序确定所述待装箱体的装载位置以及朝向。
优选的,所述序列决策模型用于根据多个所述待装箱体的概率,选择一个所述待装箱体;被选择的所述待装箱体的装箱信息输入到所述装载层的装载模型中。
优选的,所述序列决策模型还用于根据自注意力机制,得到被选择的所述待装箱体的表征selected box embedding。
优选的,所述装载模型用于根据未被选择的多个所述待装箱体的装箱信息的表征box embedding、被选择的所述待装箱体的表征selected box embedding以及所述容器的容纳信息的表征frontier embedding,输出被选择的所述待装箱体在所述容器中的装载位置以及朝向。
优选的,所述序列决策模型还用于根据未被选择的多个所述待装箱体的装箱信息的表征box embedding以及所述容器的容纳信息的表征frontier embedding,输出未被选择的多个所述待装箱体的概率。
优选的,所述序列决策模型采用基于自注意力机制的pointer network网络。
优选的,所述序列决策模型采用策略梯度算法对所述基于自注意力机制的pointer network网络进行训练。
优选的,所述箱体嵌入模型的结构按计算单元处理顺序为:第一层归一化单元,用于对所述待装箱体的装箱信息进行归一化;自注意力机制单元,用于根据各个所述待装箱体的大小和所述容器里的当前状态,对多个无序的所述待装箱体进行权重分配;第二层归一化单元,用于对所述自注意力机制单元的输出进行归一化;多层感知单元,用于对所述第二层归一化单元的输出进行数据映射。
优选的,所述自注意力机制单元包含至少三个自注意力层。
本申请第二方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法。
本申请提供一种深度强化学习网络***及存储介质,通过所述深度强化学习网络***设有嵌入层、排序层以及装载层,所述嵌入层用于将所述待装箱体的装箱信息映射成特征向量,所述排序层用于对多个无序的待装箱体进行排序,所述装载层用于根据所述排序层输出的所述待装箱体的装载顺序确定所述待装箱体的装载位置以及朝向,以此将装箱问题分解为两个步骤并使用分层装箱模型来求解:1、序列决策问题:给定一系列无序的待装箱体,使用深度强化学习来确定待装箱体的装载顺序。2、装载问题:基于第二算法给出的箱体装载顺序,使用深度强化学习来确定箱体的装载位置以及朝向;将装箱问题的分解使得问题的需要搜索的整体动作空间大大降低,从序列动作空间与装载动作空间的乘积变成了这两个动作空间的和,大大降低了智能体的学习和搜索难度。本发明的两个决策网络(序列决策问题的序列决策网络以及装载问题的装载网络)使用同一套高维表征作为输入,因此保证了神经网络收敛的一致性。同时由于本发明的算法完全利用了GPU并行化,因此解决了算法训练时间过长的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
通过结合附图对本申请示例性实施方式进行更详细的描述,本申请的上述以及其它目的、特征和优势将变得更加明显,其中,在本申请示例性实施方式中,相同的参考标号通常代表相同部件。
图1是本申请实施例示出的装箱方法的流程示意图;
图2是本申请实施例示出的装箱模型的示意图;
图3是本申请实施例示出的装箱方法的另一流程示意图;
图4是本申请实施例示出的容器在一个状态下的结构示意图;
图5是本申请实施例示出的深度强化学习网络***的示意图;
图6是本申请实施例示出的箱体嵌入模型的结构示意图;
图7是本申请实施例示出的边界嵌入模型的结构示意图;
图8是本申请实施例示出的电子设备的结构示意图;
图9a至图9d是本申请实施例示出的装箱方法的一过程状态图;
图10a至图10b是本申请实施例示出的装箱方法的另一过程状态图。
具体实施方式
下面将参照附图更详细地描述本申请的优选实施方式。虽然附图中显示了本申请的优选实施方式,然而应该理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本申请更加透彻和完整,并且能够将本申请的范围完整地传达给本领域的技术人员。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
以下结合附图详细描述本申请实施例的技术方案。
请参阅图1,图1为本申请第一实施例示出的装箱方法的流程示意图,如图1所示,方法包括以下步骤:
步骤S1,获得容器的装载信息,以及多个无序的待装箱体的装箱信息。
具体的,容器用于装载待装箱体,将指定的一系列货物装入指定容器比如:车厢中,所述容器的装载信息包括所述容器的长宽高以及所述容器的装载情况,即所述容器内部已经存在的物品信息。例如,靠角信息,或者已经放置在内部的箱子信息等等。所述待装箱体的装箱信息包括所述待装箱体的长宽高、待装货物的ID、重量、体积、是否有朝上放置的要求,是否有承重限制等等。本实施例中,多个待装箱体都是无序杂乱的。
步骤S2,根据所述容器的装载信息以及所述待装箱体的装箱信息,通过装箱模型来确定多个待装箱体的装载顺序。
步骤S3,根据所述装载顺序,通过所述装箱模型来确定所述待装箱体的装载位置以及朝向。
图2为本申请第一实施例示出的装箱模型的示意图。
请参阅图2,在本实施例中,所述装箱模型包括一第一神经网络、一第二神经网络、一序列决策网络以及一装载网络;通过深度强化学习算法来训练所述序列决策网络,得到训练好的序列决策网络,以此使得通过序列决策网络来确定多个无序的待装箱体的装载顺序;同时也通过深度强化学习算法来训练所述装载网络,得到训练好的装载网络,以此使得通过装载网络来确定所述待装箱体在容器中的装载位置以及朝向。
图3为本申请第一实施例示出的装箱方法的另一流程示意图。
请参照图3,根据所述容器的装载信息以及所述待装箱体的装箱信息,通过装箱模型来确定多个待装箱体的装载顺序具体包括以下步骤:
步骤S201,通过第一神经网络对所述容器的装载信息进行数据映射,得到所述容器的装载信息在高位空间的表征frontier embedding。
具体的,将所述容器的装载信息通过矩阵方式来表达,通过第一神经网络进行数据映射,得到所述容器的装载信息在高位空间的表征frontier embedding,所述装载信息为容器中已经装载的箱子情况与容器还剩余的未被装载的空间情况,表征frontierembedding表示容器的边界,如图4所示,图4为容器的在一个状态下的结构示意图,图4中的虚线表示容器的边界。箱子通常都是靠着容器的边界摆放的。
步骤S202,通过第二神经网络对多个所述待装箱体的装箱信息进行数据映射,得到多个所述待装箱体的装箱信息在高位空间的表征box embedding。
将多个待装箱体的长宽高信息:box sizes,以及目标容器的装载情况frontier分别用两个不同的神经网络(第二神经网络box embedding model和第一神经网络frontierembedding model)进行数据映射,得到其在高位空间的表征,即box embedding和frontierembedding。
在本实施例中,当步骤S1获取所述容器的装载信息以及多个无序的待装箱体的装箱信息后,所述容器的装载信息以及多个无序的待装箱体的装箱信息就分别进行步骤S201以及步骤S202,在本实施例中步骤S201以及步骤S202是同时进行,且位于步骤S1之后。
步骤S203,将所述装载信息的表征frontier embedding以及多个所述待装箱体的装箱信息的表征box embedding输入到所述装箱模型的序列决策网络中,所述序列决策网络输出多个所述待装箱体的概率。
其中概率为在当前的状态步骤下,所述待装箱体被选择装入所述容器中的概率。
步骤204,根据多个所述待装箱体的概率,所述序列决策网络选择一个所述待装箱体。
在本实施例中,根据多个所述待装箱体的概率,所述序列决策网络选择概率最大的所述待装箱体的装箱信息,概率最大的所述待装箱体的装箱信息输入到所述装箱模型的装载网络中,使得所述装载网络选择该待装箱体装入所述容器中。
步骤2041,根据自注意力机制,所述序列决策网络得到被选择的所述待装箱体的表征selected box embedding。
在其中一个实施例中,在步骤204之后,还包括:
步骤2042,将未被选择的多个所述待装箱体的装箱信息的表征box embedding以及所述装载信息的表征frontier embedding再次输入到所述序列决策网络中,所述序列决策网络输出未被选择的多个所述待装箱体的概率。其中除去在步骤204中已经被选择到第一个待装箱体,此时的概率为在当前状态步骤下,没有被选择到的多个待装箱体被选择装入所述容器中的概率。
所述序列决策网络输出未被选择的多个所述待装箱体的概率,根据未被选择的多个所述待装箱体的概率,所述序列决策网络再次选择一个所述待装箱体。即所述待装箱体再次从被选择的多个所述待装箱体选出一个所述袋装箱体,以此重复步骤204、步骤2041、步骤2042后,所述序列决策网络输出多个所述待装箱体的装载顺序。
在其中一个实施例中,根据所述装载顺序,通过所述装箱模型来确定所述待装箱体的装载位置以及朝向具体包括:
将所述装载信息的表征frontier embedding、未被选择的多个所述待装箱体的装箱信息的表征box embedding以及被选择的所述待装箱体的表征selected box embedding同时输入到所述装箱模型的装载网络中,得到被选择的所述待装箱体在所述容器中的装载位置以及朝向。
其中,得到选择的所述待装箱体在所述容器中的装载位置以及朝向也是采用概率来描述,概率为所述待装箱体被装载在容器中的一个位置以及朝向的概率,在本实施例中,所述装载网络将选择概率最高的一个装载位置以及朝向方式来装载所述待装箱体。在本实施例中,将所述容器网格化,根据被选择的所述待装箱体,所述装载网络输出被选择的所述待装箱体被放置在容器宽度方向的概率y,y=n*t,其中n为所述容器宽度方向网格化的个数,t为待装箱体的维度,箱子可以为2维或者3维的。假设箱子是二维的箱子,当所述装载网络输出被选择的所述待装箱体被放置在容器宽度方向的概率y后,所述装载网络根据所述容器的装载信息,容器的边界确定被选择的所述待装箱体在所述容器长度方向的位置,以此得到被选择的所述待装箱体在所述容器中的位置以及朝向。在被选择的所述待装箱体被装入所述容器中后,所述容器的装载信息被更新,所述装箱信息的表征box embedding也更新。
具体的,在步骤S203中,所述序列决策网络输出多个所述待装箱体的概率且在步骤S204中所述序列决策网络读取概率最大的所述待装箱体的装箱信息输入到所述装载网络中使得所述装载网络选择该待装箱体装入所述容器中,其余剩下的没有被所述装载网络选择到多个所述待装箱体重新再次输入到所述装箱模型的序列决策网络中,所述序列决策网络再次输出没有被所述装载网络选择到的多个所述待装箱体的概率,重复步骤S203以及步骤S204的操作,直到多个无序的所述待装箱体都被所述装载网络选中装入所述容器中,最后所述序列决策网络输出多个待装箱体的装载顺序,所述装载网络输出多个待装箱体在所述容器中的装载位置以及朝向。
在其中一个实施例中,所述装箱模型的序列决策网络采用基于自注意力机制的pointer network网络结构,作为Pointer Networks(指针网络),得到预测结果的方式是输出一个概率分布,也即所述序列决策网络输出当前状态下每一个所述待装箱体的概率,概率为所述待装箱体被选择装入所述容器中的概率。
具体的,将所述容器的装载信息的表征frontier embedding以及多个所述待装箱体的装箱信息的表征box embedding输入到所述装箱模型的序列决策网络中,所述序列决策网络输出多个所述待装箱体的概率具体还包括以下步骤:
步骤2031,根据所述容器里的当前状态以及各个所述待装箱体的大小,对多个无序的所述待装箱体进行权重分配,得到每一所述待装箱体的概率。得到每一所述待装箱体的权重过程如下:1、采用策略梯度算法对所述序列决策网络进行训练,得到训练好的基于自注意力机制的pointer network网络。2、将目标容器的长宽高、以及多个待装箱体的长宽高输入到训练好的基于自注意力机制的pointer network网络中,得到每一所述待装箱体的权重。
步骤2032,根据所述待装箱体被装入所述容器中的概率,所述序列决策网络选择一个所述待装箱体。
具体的,在本实施例中,根据多个所述待装箱体的概率,所述装箱模型的序列决策网络读取概率最大的所述待装箱体的装箱信息,概率最大的所述待装箱体的装箱信息输入到所述装箱模型的装载网络中,使得所述装载网络选择该待装箱体装入所述容器中。
在其中一个实施例中,根据所述装载顺序,通过所述装箱模型来确定所述待装箱体的装载位置以及朝向具体包括以下步骤:
步骤301,将所述容器的装载信息的表征frontier embedding、未被选择的多个所述待装箱体的装箱信息的表征box embedding以及被选择的所述待装箱体的表征selectedbox embedding同时输入到所述装箱模型中的装载网络中,得到被选择的所述待装箱体在所述容器中的装载位置以及朝向。
具体的,当步骤S203,所述序列决策网络输出多个所述待装箱体的概率后,被选择的所述待装箱体的表征selected box embedding、所述容器的装载信息的表征frontierembedding以及剩余其它的没被选中的所述待装箱体的表征box embedding同时输入所述装箱模型中的装载网络中,最后所述装载网络输出被选择的所述待装箱体在所述容器中的装载位置以及朝向。当步骤S204所述序列决策网络读取概率最大的所述待装箱体的装箱信息输入到所述装载网络中使得所述装载网络选择该待装箱体装入所述容器中后,又重复步骤301,直到所述装载网络输出多个所述待装箱体的装载位置以及朝向,以此同时将所述序列决策网络输出多个待装箱体的装载顺序以及所述装载网络输出多个所述待装箱体的装载位置以及朝向输入到一策略梯度算法中,以此更新所述装箱模型的网络参数。
图9a至图9d为本申请第一实施例示出的装箱方法的一过程状态图。
请参照图9a至图9d,所述序列决策网络计算出多个无序的待装箱体的概率,概率为所述待装箱体被选择装入目标容器中的概率。设有A、B、C三个箱子需要装入一个目标容器F中,第一次将A、B、C三个箱子作为一组数据同时输入所述序列决策网络中,所述序列决策网络计算出A箱子的概率为0.5(A箱子被选择装入容器的概率为0.5),B概率为0.2(B箱子被选择装入容器的概率为0.2),C概率为0.3(C箱子被选择装入容器的概率为0.3),所述序列决策网络第一次选择箱子A装入目标容器F中,则所述装载网络输出箱子A在目标容器F装载位置以及朝向;第二次将剩下的B、C两个个箱子作为一组数据再次同时输入所述序列决策网络中,所述序列决策网络计算出B概率为0.7,C概率为0.3,所述序列决策网络第二次选择箱子B装入目标容器F中,则所述装载网络输出箱子B在目标容器F装载位置以及朝向;所述序列决策网络第三次选择箱子C装入目标容器F中,则所述装载网络输出箱子C在目标容器F装载位置以及朝向,以此得到所述序列决策网络输出多个待装箱体的装载顺序,根据所述装载顺序,所述装载网络输出多个所述待装箱体的装载位置以及朝向。
图10a至图10b为本申请第一实施例示出的装箱方法的另一过程状态图。
请参照图10a至图10b,在本实施例中,设有A1、A2、A3、A4四组箱子需要分别装入四个目标容器F1、F2、F3、F4中,每一组设有3个箱子;在步骤S2中A1、A2、A3、A4四组箱子同时在深度强化算法并行计算。假设深度强化算法计算出A1组中B1箱子的概率为0.5,C1概率为0.2,D1概率为0.3;A2组中B2箱子的概率为0.6,C2概率为0.3,D2概率为0.1;A3组中B3箱子的概率为0.6,C3概率为0.3,D3概率为0.1;A4组中B4箱子的概率为0.6,C4概率为0.3,D4概率为0.1;则在步骤S203,所述序列决策网络同时分别选出每一组中概率最高的箱子,即所述序列决策网络同时选中箱子B1、B2、B3、B4输入到步骤S3中,在步骤S301中所述装载网络对箱子B1、B2、B3、B4同时进行计算,即所述装载网络采用并行运算的方式输出箱子B1、B2、B3、B4分别在目标容器F1、F2、F3、F4中的装载位置以及朝向,以此使得多个目标容器计算待装箱体装入容器中物理条件以及外观限制条件时,采用了完全并行化的矩阵运算来计算箱子的摆放位置以及验算空间限制,大大提高了计算的速度以及装箱的效率。
在其中一个实施例中,所述第一神经网络的结构按计算单元处理顺序为:
第一全连接层,用于将所述容器的装载信息映射到一特征空间。在本实施例中,所述第一全连接层将所述容器的装载信息映射成512维的特征向量。
第一层归一化层,用于对所述容器的装载信息进行归一化;
第一激活函数层,所述第一层归一化层的输出作为所述第一激活函数层的输入;
第二全连接层,用于将所述第一激活函数层的输出映射到另一特征空间。在本实施例中,所述第二全连接层将512维的特征向量变换为128维的特征向量。
第二层归一化层,用于对所述第一激活函数层的输出进行归一化;
第二激活函数层,所述第二层归一化层的输出作为所述第二激活函数层的输入。在本实施例中,激活函数为ReLU激活函数。
在其中一个实施例中,所述第二神经网络的结构按计算单元处理顺序为:
第一层归一化单元,用于对所述待装箱体的装箱信息进行归一化;
自注意力机制单元,用于根据各个所述待装箱体的大小和所述容器里的当前状态,对多个无序的所述待装箱体进行权重分配;
第二层归一化单元,用于对所述自注意力机制单元的输出进行归一化;
多层感知单元,用于对所述第二层归一化单元的输出进行数据映射。
在本实施例中,基于深度强化学习的装箱算法,其算法的输入为:
(1)目标容器的长宽高
(2)待装箱体的长宽高
算法的输出为:
(1)每个箱体最终在容器中的位置及朝向(Orientation)信息。
在本实施例中,通过将装箱问题分解为两个步骤并使用多智能体(Multi-agent)来求解,多智能体一个为序列决策网络,另一个为装载网络;其中关于序列决策网络:给定一系列无序的待装箱体,使用深度强化学习来确定待装箱体的装载顺序;关于装载网络:基于给出的箱体装载顺序,使用深度强化学习来确定箱体的装载位置以及朝向,装箱方法采用了完全并行化的矩阵运算来计算箱子的摆放位置以及验算空间限制,本实施例每一步都是基于准确数值的计算,不需要再使用其他算法来验证装载结果的可用性。
在本实施例中,通过获得容器的装载信息,以及多个无序的待装箱体的装箱信息;根据所述容器的装载信息以及所述待装箱体的装箱信息,通过装箱模型来确定多个待装箱体的装载顺序;根据所述装载顺序,通过所述装箱模型来确定所述待装箱体的装载位置以及朝向,以此将装箱问题的分解使得问题的需要搜索的整体动作空间大大降低,从序列动作空间与装载动作空间的乘积变成了这两个动作空间的和,大大降低了智能体的学习和搜索难度。本实施例的两个决策网络(序列决策网络以及装载网络)使用同一套高维表征作为输入,因此保证了神经网络收敛的一致性。同时由于本实施例的装箱算法完全利用了GPU并行化,因此解决了算法网络训练时间过长的问题。
请参照图5,图5为本申请第二实施例示出的深度强化学习网络***的示意图。
所述深度强化学习网络***应用于智能装箱,所述深度强化学习网络***按计算单元处理顺序分别为嵌入层、排序层以及装载层。所述嵌入层用于将所述待装箱体的装箱信息映射成特征向量,所述排序层用于对多个无序的待装箱体进行排序,所述装载层用于根据所述排序层输出的所述待装箱体的装载顺序确定所述待装箱体的装载位置以及朝向。
具体的,在本实施例中,通过深度强化学习算法来训练所述序列决策模型,得到训练好的序列决策网络,以此使得通过序列决策网络来确定多个无序的待装箱体的装载顺序;同时也通过深度强化学习算法来训练所述装载模型,得到训练好的装载网络,以此使得通过装载网络来确定所述待装箱体在容器中的装载位置以及朝向。
请参照图6,图6为本申请第二实施例示出的箱体嵌入模型的结构示意图,所述嵌入层包括:箱体嵌入模型以及边界嵌入模型。所述箱体嵌入模型用于对多个无序的待装箱体的装箱信息进行数据映射,得到多个无序的所述待装箱体的装箱信息在高位空间的表征box embedding。所述箱体嵌入模型的结构按计算单元处理顺序分别为:第一层归一化单元、自注意力机制单元、第二层归一化单元以及多层感知单元。所述第一层归一化单元用于对所述待装箱体的装箱信息进行归一化。所述自注意力机制单元用于根据各个所述待装箱体的大小和所述容器里的当前状态,对多个无序的所述待装箱体进行权重分配。所述第二层归一化单元用于对所述自注意力机制单元的输出进行归一化。所述多层感知单元用于对所述第二层归一化单元的输出进行数据映射。
请参照图7,图7为本申请第二实施例示出的边界嵌入模型的结构示意图,所述边界嵌入模型用于对容器的容纳信息进行数据映射,得到所述容器的容纳信息在高位空间的表征frontier embedding。所述边界嵌入模型的结构按计算单元处理顺序分别为:第一全连接层、第一层归一化层、第一激活函数层、第二全连接层、第二层归一化层以及第二激活函数层。所述第一层归一化层用于对所述容器的容纳信息进行归一化。所述第一层归一化层的输出作为所述第一激活函数层的输入。第二层归一化层用于对所述第一激活函数层的输出进行归一化。所述第二层归一化层的输出作为所述第二激活函数层的输入。
在其中一个实施例中,所述自注意力机制单元包含至少三个自注意力层。
在其中一个实施例中,所述排序层设有一序列决策模型,所述序列决策模型用于根据多个所述待装箱体的装箱信息的表征box embedding以及所述容器的容纳信息的表征frontier embedding,输出多个所述待装箱体的概率。概率为在当前状态下,所述待装箱体被选择装入所述容器中的概率。
在其中一个实施例中,所述装载层设有一装载模型,所述序列决策模型用于根据多个所述待装箱体的概率,选择一个所述待装箱体的装箱信息输入到所述装载模型中。
具体的,在本实施例中,根据多个所述待装箱体的概率,所述序列决策模型读取概率最大的所述待装箱体的装箱信息,概率最大的所述待装箱体的装箱信息输入到所述装载模型中,使得所述装载模型选择该待装箱体装入所述容器中。
所述序列决策模型还用于根据自注意力机制,得到被选择的所述待装箱体的表征selected box embedding。
具体的,所述序列决策模型采用基于自注意力机制的pointer network网络,使得所述序列决策模型输出被选择的所述待装箱体的的表征selected box embedding。所述序列决策模型采用Pointer Networks(指针网络),Pointer Networks得到预测结果的方式是输出一个概率分布,也即所述序列决策模型输出每一个所述待装箱体的概率,概率为所述待装箱体被选择装入所述容器中的概率。在本实施例中,所述装载模型将选择概率最高的一个所述待装箱体装入所述容器中。
所述序列决策模型采用策略梯度算法对所述基于自注意力机制的pointernetwork网络进行训练。
在其中一个实施例中,所述装载模型用于根据未被选择的多个所述待装箱体的装箱信息的表征box embedding、被选择的所述待装箱体的表征selected box embedding以及所述容器的容纳信息的表征frontier embedding,输出被选择的所述待装箱体在所述容器中的装载位置以及朝向。
具体的,所述序列决策模型得到多个所述待装箱体的概率后,被选择的所述待装箱体的表征selected box embedding、所述容器的装载信息的表征frontier embedding以及剩余其它的未被选择多个的所述待装箱体的表征box embedding同时输入所述装载模型中,最后所述装载模型输出被选择的所述待装箱体在所述容器中的装载位置以及朝向。其中,得到选择的所述待装箱体在所述容器中的装载位置以及朝向也是采用概率来描述,概率为所述待装箱体被装载在容器中的一个位置以及朝向的概率,在本实施例中,所述装载网络将选择概率最高的一个装载位置以及朝向方式来装载所述待装箱体。在本实施例中,将所述容器网格化,根据被选择的所述待装箱体,所述装载网络输出被选择的所述待装箱体被放置在容器宽度方向的概率y,y=n*t,其中n为所述容器宽度方向网格化的个数,t为待装箱体的维度,箱子可以为2维或者3维的。假设箱子是二维的箱子,当所述装载网络输出被选择的所述待装箱体被放置在容器宽度方向的概率y后,所述装载网络根据所述容器的装载信息,容器的边界确定被选择的所述待装箱体在所述容器长度方向的位置,以此得到被选择的所述待装箱体在所述容器中的位置以及朝向。
除去第一次所述装载模型选择的第一个所述待装箱体装入所述容器中后,所述序列决策模型又输出剩下的未被选择的多个所述待装箱体的概率,所述序列决策模型又从剩下的多个所述待装箱体中选择第二个待装箱体,所述装载模型输出第二个被选择的所述待装箱体在所述容器中的装载位置以及朝向,以此循环循环重复,最后所述序列决策模型输出多个所述待装箱体的装载顺序,所述装载模型输出多个所述待装箱体的装载位置以及朝向,以此同时将所述序列决策模型输出多个待装箱体的装载顺序以及所述装载模型输出多个所述待装箱体的装载位置以及朝向输入到一策略梯度算法中,以此更新所述深度强化学习网络***的参数。
请参照图9a至图9d,所述序列决策模型计算出多个无序的待装箱体的概率,概率为所述待装箱体被选择装入目标容器中的概率。设有A、B、C三个箱子需要装入一个目标容器F中,第一次将A、B、C三个箱子作为一组数据同时输入所述序列决策模型中,所述序列决策模型计算出A箱子的概率为0.5,B概率为0.2,C概率为0.3,则所述序列决策模型第一次选择箱子A装入目标容器F中,所述装载模型输出箱子A在目标容器F装载位置以及朝向;第二次将剩下的B、C两个个箱子作为一组数据再次同时输入所述序列决策模型中,所述序列决策模型计算出B概率为0.7,C概率为0.3,则所述序列决策模型第二次选择箱子B装入目标容器F中,所述装载模型输出箱子B在目标容器F装载位置以及朝向;所述序列决策模型第三次选择箱子C装入目标容器F中,所述装载模型输出箱子C在目标容器F装载位置以及朝向,以此得到所述序列决策模型输出多个待装箱体的装载顺序,根据所述装载顺序,所述装载模型输出多个所述待装箱体的装载位置以及朝向。
本实施例的深度强化学习网络***,将装箱问题拆解为序列决策问题与装载问题,在同一套高维表征上同时训练两套策略网络:序列决策的策略网络把装载策略看做固定,其学习目标是找到对于给定装载策略而言最优的装箱序列;而装载的策略网络则将序列的策略看做固定,其学习目标是找到对于给定序列下最优的装载策略。这种对于装箱问题的分解使得问题的需要搜索的整体动作空间大大降低,从序列动作空间与装载动作空间的乘积变成了这两个动作空间的和,大大降低了智能体的学习和搜索难度。我们的两个决策网络(序列决策网络以及装载网络)使用同一套高维表征作为输入,因此保证了神经网络收敛的一致性。同时由于我们的算法完全利用了GPU并行化,因此解决了算法训练时间过长的问题。
图8是本申请实施例示出的电子设备的结构示意图。
参见图8,电子设备400包括存储器410和处理器420。
处理器420可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器410可以包括各种类型的存储单元,例如***内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器1020或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。***内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。***内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器410可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器410可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器410上存储有可执行代码,当可执行代码被处理器420处理时,可以使处理器420执行上文述及的方法中的部分或全部。
上文中已经参考附图详细描述了本申请的方案。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。本领域技术人员也应该知悉,说明书中所涉及的动作和模块并不一定是本申请所必须的。另外,可以理解,本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
此外,根据本申请的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本申请的上述方法中部分或全部步骤的计算机程序代码指令。
或者,本申请还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或电子设备、服务器等)的处理器执行时,使所述处理器执行根据本申请的上述方法的各个步骤的部分或全部。
本领域技术人员还将明白的是,结合这里的申请所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本申请的多个实施例的***和方法的可能实现的体系***、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (10)

1.一种深度强化学习网络***,应用于智能装箱,其特征在于,
所述深度强化学习网络***包括嵌入层,所述嵌入层包括:
箱体嵌入模型,用于对多个无序的待装箱体的装箱信息进行数据映射,得到多个无序的所述待装箱体的装箱信息在高位空间的表征box embedding;
边界嵌入模型,用于对一容器的容纳信息进行数据映射,得到所述容器的容纳信息在高位空间的表征frontier embedding;
所述箱体嵌入模型的结构按计算单元处理顺序为:
第一层归一化单元,用于对所述待装箱体的装箱信息进行归一化;
自注意力机制单元,用于根据各个所述待装箱体的大小和所述容器里的当前状态,对多个无序的所述待装箱体进行权重分配;
第二层归一化单元,用于对所述自注意力机制单元的输出进行归一化;
多层感知单元,用于对所述第二层归一化单元的输出进行数据映射。
2.根据权利要求1所述的深度强化学习网络***,其特征在于,
所述深度强化学习网络***还包括:
排序层,所述排序层用于对多个无序的待装箱体进行排序;
所述排序层设有一序列决策模型,所述序列决策模型用于根据多个所述待装箱体的装箱信息的表征box embedding以及所述容器的容纳信息的表征frontier embedding,输出多个所述待装箱体的概率。
3.根据权利要求2所述的深度强化学习网络***,其特征在于,
所述深度强化学习网络***还包括装载层,所述装载层用于根据所述排序层输出的所述待装箱体的装载顺序确定所述待装箱体的装载位置以及朝向。
4.根据权利要求3所述的深度强化学习网络***,其特征在于,
所述序列决策模型用于根据多个所述待装箱体的概率,选择一个所述待装箱体;
被选择的所述待装箱体的装箱信息输入到所述装载层的装载模型中。
5.根据权利要求4所述的深度强化学习网络***,其特征在于,
所述序列决策模型还用于根据自注意力机制,得到被选择的所述待装箱体的表征selected box embedding。
6.根据权利要求5所述的深度强化学习网络***,其特征在于,
所述装载模型用于根据未被选择的多个所述待装箱体的装箱信息的表征boxembedding、被选择的所述待装箱体的表征selected box embedding以及所述容器的容纳信息的表征frontier embedding,输出被选择的所述待装箱体在所述容器中的装载位置以及朝向。
7.根据权利要求6所述的深度强化学习网络***,其特征在于,
所述序列决策模型还用于根据未被选择的多个所述待装箱体的装箱信息的表征boxembedding以及所述容器的容纳信息的表征frontier embedding,输出未被选择的多个所述待装箱体的概率。
8.根据权利要求5所述的深度强化学习网络***,其特征在于,
所述序列决策模型采用基于自注意力机制的pointer network网络。
9.根据权利要求6所述的深度强化学习网络***,其特征在于,
所述序列决策模型采用策略梯度算法对基于自注意力机制的pointer network网络进行训练。
10.根据权利要求1所述的深度强化学习网络***,其特征在于,
所述自注意力机制单元包含至少三个自注意力层。
CN202110218003.2A 2021-02-26 2021-02-26 深度强化学习网络*** Active CN112884126B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110218003.2A CN112884126B (zh) 2021-02-26 2021-02-26 深度强化学习网络***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110218003.2A CN112884126B (zh) 2021-02-26 2021-02-26 深度强化学习网络***

Publications (2)

Publication Number Publication Date
CN112884126A CN112884126A (zh) 2021-06-01
CN112884126B true CN112884126B (zh) 2024-03-08

Family

ID=76054723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110218003.2A Active CN112884126B (zh) 2021-02-26 2021-02-26 深度强化学习网络***

Country Status (1)

Country Link
CN (1) CN112884126B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115081936B (zh) * 2022-07-21 2022-11-18 之江实验室 面向应急条件下多遥感卫星观测任务调度的方法和装置
CN115913989B (zh) * 2022-11-08 2023-09-19 广州鲁邦通物联网科技股份有限公司 一种云管理平台的资源保护方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109071114A (zh) * 2017-09-05 2018-12-21 深圳蓝胖子机器人有限公司 一种自动装卸货的方法、设备及具有存储功能的装置
KR102063562B1 (ko) * 2019-10-28 2020-01-08 인천대학교 산학협력단 포인터 네트워크의 학습을 통해 고품질의 메쉬 구조의 생성을 지원하기 위한 그래픽 처리 장치 및 그 동작 방법
CN111062204A (zh) * 2019-12-13 2020-04-24 智慧神州(北京)科技有限公司 基于机器学习的文本标点符号使用错误的识别方法和装置
CN111695700A (zh) * 2020-06-16 2020-09-22 华东师范大学 一种基于深度强化学习实现的装箱方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109071114A (zh) * 2017-09-05 2018-12-21 深圳蓝胖子机器人有限公司 一种自动装卸货的方法、设备及具有存储功能的装置
KR102063562B1 (ko) * 2019-10-28 2020-01-08 인천대학교 산학협력단 포인터 네트워크의 학습을 통해 고품질의 메쉬 구조의 생성을 지원하기 위한 그래픽 처리 장치 및 그 동작 방법
CN111062204A (zh) * 2019-12-13 2020-04-24 智慧神州(北京)科技有限公司 基于机器学习的文本标点符号使用错误的识别方法和装置
CN111695700A (zh) * 2020-06-16 2020-09-22 华东师范大学 一种基于深度强化学习实现的装箱方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Multi-Source Pointer Network for Product Title Summarization;Fei Sun;《arXiv》;1-10 *
强化学习在运筹学的应用: 研究进展与展望.《运筹与管理》.2020,227-239. *

Also Published As

Publication number Publication date
CN112884126A (zh) 2021-06-01

Similar Documents

Publication Publication Date Title
US10885434B2 (en) Alternative loop limits for accessing data in multi-dimensional tensors
CN112884126B (zh) 深度强化学习网络***
US8554702B2 (en) Framework for optimized packing of items into a container
CN110210685B (zh) 物流装箱方法及装置
CN109324827A (zh) 访问序言和结尾数据
CN112070444A (zh) 箱型推荐方法、装置和计算机存储介质
EP3907705A1 (en) Apparatus for determining arrangement of objects in space and method thereof
CN111860837B (zh) 装箱问题的处理方法、装置及计算机可读存储介质
Maglić et al. Optimization of container relocation operations in port container terminals
CN114372496A (zh) 用于决策树计算的具有模拟内容可寻址存储器(a-cam)的硬件加速器
US8682808B2 (en) Method and apparatus for processing logistic information
CN112884410B (zh) 装箱方法、电子设备以及存储介质
US20220261644A1 (en) Method and apparatus for generating task plan based on neural network
Alinaghian et al. A novel mathematical model for cross dock open-close vehicle routing problem with splitting
Kroes et al. Evolutionary bin packing for memory-efficient dataflow inference acceleration on FPGA
CN114612030A (zh) 舱位分配优化方法、装置、计算机设备和存储介质
Yurtseven et al. Optimization of container stowage using simulated annealing and genetic algorithms
Liu et al. Dynamic feedback algorithm based on spatial corner fitness for solving the three-dimensional multiple bin-size bin packing problem
CN113537885B (zh) 卡车和无人机组合配送的包裹投递方法及***
JP7399568B2 (ja) 推論装置
Sridhar et al. Multi objective optimization of heterogeneous bin packing using adaptive genetic approach
US11928469B2 (en) Apparatus and method with neural network operation
Cruz-Reyes et al. A loading procedure for the containership stowage problem
CN117745182A (zh) 一种基于自调整svm分类的三维装箱调度方法和***
Zhang et al. Research Article Stowage Planning in Multiple Ports with Shifting Fee Minimization

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant