一种基于XGBoost算法的机器人制造单元自适应调度方法与流程

文档序号:15737887发布日期:2018-10-23 21:47阅读:1408来源:国知局

本发明属于制造业生产线自动化调度领域,具体涉及采用XGBoost算法对具有复杂约束的机器人制造单元进行实时在线调度的方法。



背景技术:

随着先进工业机器人技术的快速发展,以计算机控制的物料搬运机器人为核心装置的自动化制造系统正被日益广泛地应用,该系统被称之为机器人制造单元。

机器人制造单元相比传统生产线具有以下几点优势:更高的精度、操作速度以及生产效率,减少人力,在恶劣生产环境中稳定运行并保证加工过程的安全、无污染,但同时也增加了调度对象、约束关系与机器人瓶颈,使得机器人制造单元调度问题比传统车间调度具有更高的复杂性。

与传统的车间调度问题相比,机器人制造单元的调度复杂性主要体现在三方面:

1)机器人制造单元不仅仅要考虑物料在加工机器上的加工顺序,同时要考虑机器人搬运作业的顺序,由此调度对象与约束关系增加。

2)在机器瓶颈、物料瓶颈之外增加了机器人瓶颈。

3)对调度算法的有效性和实时性要求更高,即要求机器人具有更高的利用率。

目前,调度问题大多以最小化任务完工时间(makespan)或最大化单位时间吞吐量(throughput)为优化目标,同时使得机器人、加工机器得到充分利用,通过优化调度过程提高制造单元内的生产效率。在机器人制造单元领域已有许多调度方法,精确算法如混合整数规划法、分支定界算法,元启发式算法如遗传算法、差分进化算法等。这些调度优化方法在静态调度问题中有较好表现,但无法适应DRCP(Dynamic Robotic Cell Promblem,动态机器人制造单元调度问题)中生产中经常面临更多的临时任务、功能更多样化的加工机器和生产线上的更复杂动态工况,如新工件(物料)到达、机器加工时间波动、机器故障、工件交货期变更等,难以满足高实时性的要求,不适宜应用于实际的复杂生产调度过程。

在复杂大规模制造系统的在线动态调度中,启发式规则调度方法因其简单、实时的特点在动态调度问题上引起了广泛关注。目前专家们已经为制造车间的众多不同领域总结了大量的通用规则,赋予了规则调度方法科学性与实用性。但基于简单规则的调度难以获得满意解,主要原因在于:缺乏有效的调度规则选择方法,由人工经验来指导的规则调度方法会出现选择不当,使调度过程的性能下降;缺乏调度目标函数和必要的优化控制手段,无法根据系统运行情况,进一步优化生产过程。

针对上述缺陷,自适应调度方法成为当前规则调度领域的研究热点,即赋予调度器依照当前系统运行状态和调度目标选择适合调度规则的能力。Shaw和Park等提出了通过归纳学习进行模式导向(pattern-directed)自适应调度的概念,当三个重要因素成立时,该方法能够在制造系统调度中起到很好的效果:用于表征系统运行状态与环境信息的属性具备有效性;备选的调度规则集合具备有效性;正确将系统状态信息映射到当前适合调度策略的能力。

目前,自适应调度研究的热点问题大多面向车间调度。Shiue等提出了一种应用元启发式算法进行特征子集搜索的支持向量机算法(Genetic Algorithm-Support Vector Machine, GA-SVM)用于建立自适应调度器。Choi,Kim和Lee对flow shop类型可重入生产线提出了基于决策树(Decision Tree, DT)的实时调度方法。针对复杂制造系统,Li等利用仿真系统模拟实际生产并利用仿真数据训练二元回归模型,采用BP神经网络训练模型参数并加入粒子群算法优化训练过程。Guh等提出了一种基于仿真的训练样本生成机制,并采用自组织特征映射神经网络(Self-organizing Map Neural Network, SOM)获取调度知识。Shiue和Su针对冗余特征的问题,应用基于人工神经网络权重的特征选择算法与决策树分类算法结合。

自适应调度方法也正逐渐应用于其他复杂制造系统,机器人制造单元调度有别于传统车间调度,针对该领域的自适应调度方法还未见有人提出。

XGBoost(极端梯度提升树)的英文全称是 eXtreme Gradient Boosting,是2014年2月诞生的专注于梯度提升算法的机器学习函数库,因其优良的学习效果以及高效的训练速度而获得广泛的关注。



技术实现要素:

本发明的目的是提出一种调度方法,从大量样本中学习制造系统的调度知识与模式,采用机器学习方法训练启发式方法分类模型,根据实时生产状态信息,得到该状态下近似最优的启发式调度方法,由此实现实时在线选择调度的功能。

为实现上述目的,本发明采用的技术方案是:一种基于XGBoost算法的机器人制造单元自适应调度方法,包括以下步骤:

建立样本数据库,数据库中存储的样本是生产数据以及对应生产数据的最优启发式方法。

以样本数据库为基础,建立启发式调度方法分类模型。

通过监测机器人制造单元内的生产状态信息,获取实际的生产数据,将实际的生产数据输入给启发式调度方法分类模型,得到当前生产状态下的最优启发式方法。

以样本数据库为基础,建立启发式调度方法分类模型包括以下步骤:

A1、将数据库中的样本随机分为训练样本集和测试样本集。

A2、采用XGBoost模型为分类模型,分类模型的输入是生产数据,输出是生产数据对应当前生产状态的最优启发式方法。

A3、选取特征子集,训练模型。

A4、使用测试样本集对模型进行测试:将测试样本集中的生产数据输入模型,比对模型的输出和测试样本集中该生产数据对应的最优启发式方法,相同即判断准确,如果模型输出的准确率高于95%,结束,否则,转到步骤A3。

A3包括以下步骤:

步骤1、设置优化过程参数,包括惯性权重、加速系数、种群规模、迭代停止条件;

步骤2、种群初始化,包括粒子的初始位置及初始速度;

步骤3、对种群进行解码,得到每个粒子对应的特征子集及XGBoost模型超参数,采用XGBoost模型训练分类模型,将分类模型的准确率作为粒子的适应度值;

步骤4、得到分类模型后计算每一维特征的全局贡献度,计算所有特征的贡献度后作归一化处理,得每个特征的权重Wj

步骤5、对于每个粒子i,将其适应度值与pbesti的适应度值进行比较,若较好,则将其赋值给pbesti,反之,pbesti保持不变;

步骤6、对每个粒子,将其适应度值与所有邻域粒子的适应度值进行比较,确定邻域粒子中适应度值优于当前粒子的数量Ni

步骤7、根据以下公式,对粒子的速度进行更新:

根据以下公式,对粒子的位置进行更新:

其中,标量χ和φ分别是收缩系数,设置为0.7298和4.1,pbestin表示该粒子历史最优位置,gbestqn表示第q个近邻的历史最优位置,U(0,φ)表示0和φ之间均匀分布的随机数,Win+1表示本轮分类模型训练当中该特征所对应的权重系数,S(Vid)使用Sigmoid函数将速度分量映射到[0,1]区间用于决策,d代表粒子的维度,[1,m]代表所有特征对应的编码位置,(m,D]代表超参数对应的编码位置,r3为0到1之间均匀分布的随机数,Vid为粒子速度分量;

步骤8、如未达到迭代停止条件,则返回步骤3;如达到迭代停止条件,输出历史最优解,对特征子集及超参数进行解码;

步骤9、确定特征子集,对模型采用栅格搜索法进一步确定其超参数,得到最优分类模型;

步骤3中,

样本数为n维度为m的数据集为:

其中,xi表示数据i对应的特征,yi表示最优启发式方法,

集成了K棵决策树的XGboost模型为:

每轮迭代将产生一个决策树模型为:

其中F表示了回归树的集合空间,q(x)代表样本与树模型中叶子节点的映射关系,T表示树模型中叶子节点数,每一个树模型fk对应一个独立的树结构q与叶子节点的权重w

XGBoost算法的目标函数:

上式由损失函数和复杂度两部分组成,损失函数表示估计值和真实值之间的训练误差,表示每棵决策树的复杂度, ,

为最小化损失函数,迭代生成新的决策树叠加到原有模型中,其中每轮训练的目标函数为:

其中,。

所述的生产数据包括三个特征集,分别为机器特征集、加工工件特征集和机器人特征集。

所述机器特征集包括以下参数:单元内正在加工机器数,加工结束正在等待机器数、加工机器与空闲机器比、瓶颈机器数量。

所述加工工件特征集包括以下参数:等待时间与加工时间比、连续操作等待时间、连续操作等待时间比、当前总加工等待时间。

所述机器人特征集包括以下参数:当前可操作任务总数、可操作任务最长等待时间、可操作任务最短等待时间。

自适应调度可被定义为一个四元组{O,D,S,R}表示的问题。O和D分别代表调度目标与候选调度策略的集合;S代表了系统所有可能出现状态{s1,s2,... ...,sn}的集合,Si均可以用系统特征来描述,并可归纳为不同的模式;R代表模式分类方法,是用于模式分类的知识集合,si∈S,di∈D, di=R(oi,si,D)描述了系统状态与其对应策略的映射关系。在系统状态与调度目标已知的情况下通过模式分类方法R选择当前较优的调度策略di。通过对样本数据的归纳学习,本发明目标为获取模式分类方法R,并采用分类准确率作为评价标准。

本发明使用应用FIPS-XGBoost算法完成,从大量样本中学习机器人制造单元的调度知识与模式,训练调度规则分类模型。使用混合全信息粒子群优化算法( Hybrid Fully Informed Particle Swarm Optimization,HFIPS),依照决策树Gini不纯度指导粒子的位置更新,快速高效地求解最优特征子集,采用XGBoost算法生成自适应调度器。

有益效果:使用本发明提供的分类模型,根据实际生产数据得出最优启发式方法,可以减少机器人空载移动次数、加快调度效率,带来单元内吞吐量的提升。

机器人制造单元考虑的性能指标为总完工时间(Makespan),以最小化完工时间为目标提升制造单元的生产效率。为体现调度机器人的忙碌程度,将机器人总利用率(Util_Robot)指标用作参考。

对不同在制品水平(WIP)下的动态机器人制造单元,在500组随机生成的动态环境下,分别采用GA-SVM算法、PSO-DT算法等和FIPS-XGBoost算法,使用相同的训练样本集和特征选择模块的终止条件,下表给出了几种算法的平均性能指标,对比结果显示,FIPS-XGBoost算法性能普遍好于组合调度规则,验证了该算法自适应调度的有效性。

不同方法下的性能指标比较

附图说明。

图1是本发明的技术方案框架图,

图2是建立启发式调度方法分类模型的算法框图。

具体实施例。

参看图1,技术框架从功能上分为三个部分,数据处理模块、模型学习模块和实时调度模块。

一种基于XGBoost算法的机器人制造单元自适应调度方法,包括以下步骤:

数据处理模块:建立样本数据库,数据库中存储的样本是生产数据以及对应生产数据的最优启发式方法。

模型学习模块:以样本数据库为基础,建立启发式调度方法分类模型。

实时调度模块:分类模型建立完成后,通过监测机器人制造单元内的生产状态信息,获取实际的生产数据,将实际的生产数据输入给启发式调度方法分类模型,得到最优启发式方法,满足机器人制造单元内的自适应调度要求。这里的实际生产数据为选定的特征子集。

将实际的生产数据和通过分类模型得到的最优启发式方法添加到样本数据库,丰富和完善样本库。

获取样本数据的途径有两个,1、使用以往的先验数据,依据人工经验,确定每一条生产数据对应生产状态下的最优启发式调度方法;2、通过稳态仿真方法获得。

通过稳态仿真方法,首先确定该类型机器人制造单元中性能较好的启发式调度方法集,将该方法集作为生产数据样本的标签集合,对经处理后的制造单元生产数据集进行打标,即确定该生产状态对应的最优启发式调度方法。打标过程是通过计算机稳态仿真的方式进行,在仿真的每一步中需确定在当前状态下最优的启发式方法,仿真系统遍历一个时间窗口内所有可能的调度方法组合后,选择性能指标最优的方法组合,从而确定该时间窗内每一个实时状态下的最优启发式方法,实时状态与最优启发式方法的组合作为一个样本。

模型学习模块:以样本数据库为基础,建立启发式调度方法分类模型包括以下步骤。

A1、将数据库中的样本随机分为训练样本集和测试样本集。

A2、采用XGBoost极端梯度提升树模型为分类模型,分类模型的输入是生产数据,输出是对应生产数据的最优启发式方法。

A3、训练模型,选取特征子集。

A4、使用测试样本集对模型进行测试:将测试样本集中的生产数据输入模型,比对模型的输出和测试样本集中该生产数据对应的最优启发式方法,相同即判断准确,如果模型输出的准确率高于95%,结束,否则,转到步骤A3。

本发明采用FIPS-XGBoost算法完成训练模型和特征子集选取。

粒子群优化(PSO)是受自然分组行为启发的优化技术,它利用潜在解决方案(粒子)的群体内合作来执行搜索。群体中每个粒子的位置代表一个关于最优化问题的候选解。在每次迭代中,一个粒子根据其速度飞到一个新的位置,这在PSO算法的原始版本中是粒子实现的历史最佳位置和其附近所有粒子中发现的历史最佳位置的函数。

在其基础上改进的全信息粒子群(FIPS)算法,粒子的更新并不是仅仅利用其邻域内的最优粒子,而是使用邻域内所有成员的历史最优的加权平均值来指导更新。本发明对FIPS算法做出改进,将粒子的适应度值与其邻域粒子进行比较,只选取适应值优于该粒子的领域粒子指导更新。该改进通过选择优势信息指导种群更新,对群体信息有更合理的利用,有利于种群寻优效率过程。

应用改进FIPS算法对特征子集进行寻优,首先对特征集合F以及超参数集合T分别进行编码:对于特征全集采用0-1的二进制编码方式,粒子的每一位均代表一个生产特征,所选特征的子集用候选预测因子总数相同长度的二进制串,表示如果搜索算法选择了特征i,则二进制串的第i位被设置为1 ,否则将被设置为0;对于XGBoost模型的超参数,对基树的棵数(tree_num),学习率(eta),最大树深(max_depth)和叶子节点最小样本权重(min_child_weight)几个重要参数进行多位二进制编码,位数根据参数备选值的极差决定,粒子可表示为:,其位置向量是如下表所示的二进制串,其中lfeature是用于直接编码的特征全集的位,位的个数等于候选特征的总个数;Tnum表示用于编码最大值(Nhmax)和最小值(Nhmin)之间的候选值所需的位数,Tnum=log2(Nhmax-Nhmin)

当编码为D维时,粒子的位置可以表示为,解码后即对应被选择的特征子集,适应度的大小可以衡量粒子所在位置的优劣。在寻优过程中,粒子i经过的最优位置被称为pbestigbest表示整个粒子群搜索到的最优位置。

A3包括以下步骤:

步骤1、设置优化过程参数,包括惯性权重、加速系数、种群规模、迭代停止条件。

步骤2、种群初始化,包括粒子的初始位置及初始速度。

步骤3、对种群进行解码,得到每个粒子对应的特征子集及XGBoost模型超参数,采用XGBoost模型训练分类模型,将分类模型的准确率作为粒子的适应度值。

步骤4、得到分类模型后计算每一维特征的全局贡献度,计算所有特征的贡献度后作归一化处理,得每个特征的权重Wj

步骤5、对于每个粒子i,将其适应度值与pbesti的适应度值进行比较,若较好,则将其赋值给pbesti,反之,pbesti保持不变。

步骤6、对每个粒子,将其适应度值与所有邻域粒子的适应度值进行比较,确定邻域粒子中适应度值优于当前粒子的数量Ni

步骤7、根据以下公式,对粒子的速度进行更新:

根据以下公式,对粒子的位置进行更新:

其中,标量χ和φ分别是收缩系数,设置为0.7298和4.1,pbestin表示该粒子历史最优位置,gbestqn表示第q个近邻的历史最优位置,U(0,φ)表示0和φ之间均匀分布的随机数,Win+1表示本轮分类模型训练当中该特征所对应的权重系数,S(Vid)使用Sigmoid函数将速度分量映射到[0,1]区间用于决策,d代表粒子的维度,[1,m]代表所有特征对应的编码位置,(m,D]代表超参数对应的编码位置,r3为0到1之间均匀分布的随机数,Vid为粒子速度分量。

步骤8、如未达到迭代停止条件,则返回步骤3;如达到迭代停止条件,输出历史最优解,对特征子集及超参数进行解码。迭代停止条件为适应度值在20次迭代过程中没有提升,或迭代次数大于200。

步骤9、确定特征子集,对模型采用栅格搜索法进一步确定其超参数,得到最优分类模型。

在步骤3中的模型训练过程,采用XGBoost极端梯度提升树模型。该模型以决策树模型作为基学习器的组合模型,通过集成学习的方法来提升决策树的预测性能,相比较传统机器学习算法(如支持向量机(SVM)、决策树(DT))在该类问题上有更好的分类能力并能较好地防止过拟合,具体可表示为:

(2)

(3)

式(2)中D代表给定的样本数为n维度为m的数据集,式(3)表示集成了K棵决策树的XGboost模型。其中每轮迭代将产生一个决策树模型,可表示为:

(4)

(5)

式(4)中F表示了回归树的集合空间,q(x)代表样本与树模型中叶子节点的映射关系,每一个树模型fk对应一个独立的树结构去q与叶子节点的权重w。式(5)为XGBoost算法的目标函数,由损失函数和复杂度两部分组成。损失函数l表示估计值和真实值之间的训练误差,表示每棵决策树的复杂度,可通过计算叶子数量与L2正则得到:。

在训练模型的过程中,XGBoost算法采用boosting方法训练,为了最小化损失函数,迭代生成一颗新的决策树叠加到原有模型中去,其中每轮训练的目标函数式(6):

(6)

表示样本i在第t-1轮决策树模型中的预测值,在第t轮模型训练过程中,保留并加入一个新的决策树函数ft(xi)以尽可能减小目标函数。

将目标函数进行二阶泰勒展开可得到近似目标函数式(7):

(7)

剔除常数项后可得每轮训练的目标函数为式(8):

(8)

根据目标函数(8)完成每轮的训练,每轮训练中的节点分裂停止的条件为:

(1)当引入的分裂带来的增益小于模型默认阀值时;(2)当树达到最大深度时则停止建立决策树,最大深度根据超参数max_depth设置;(3)当样本权重和小于设定阈值时则停止建树,设定阈值根据超参数最小样本权重和min_child_weight设置。

根据超参数n_estimators(tree_num)设置,当轮数达到预设子模型数后停止迭代。

XGBoost模型训练需要确定超参数:

1、首先选择通用参数中的booster参数为gbtree,表明在提升计算过程中使用的booster为树模型。其他通用参数设置为默认值。

2、确定学习目标参数,当样本集中标签数为二时,objective参数选择为'binary:logistic',表示该模型处理的是二分类逻辑回归,输出为概率。当标签数大于二时,该问题为多标签分类问题,参数选择“multi:softmax”,即采用softmax目标函数处理多分类问题,同时需要设置参数num_class表明类别个数。

3、在改进FIPS算法中对XGBoost模型的四个重要超参数进行了编码,包括子模型个数(tree_num),学习率(eta),最大树深(max_depth)和叶子节点最小样本权重(min_child_weight),在对粒子解码后可得到这几个参数在本次训练中的值。

4、得到超参数后根据上述过程进行模型训练。

步骤4中,每个特征的权重Wj根据贡献度,按照以下方法计算。

为了提升算法特征选择的能力,在得到模型后计算每一维特征在组合模型的全局贡献度,特征贡献度可作为度量该特征重要程度的依据。对于分类问题,决策树中的特征贡献度由Gini不纯度度量。训练完成的XGBoost树共含有K棵树作为基模型,则特征j对模型的贡献度是它在K棵决策树中作为分裂节点s时的Gini不纯度的平均值,节点s的不纯度计算公式如下:

(9)

其中表示在类别c在该分裂节点的相对频率,分枝前后的Gini不纯度变化量为:

(10)

和分别表示由节点s分裂的左右新节点的Gini不纯度。假定一棵树T的分裂次数为d次,将所有分裂节点的贡献度求和即为:

(11)

由此可以得出XGBoost模型中特征j的整体贡献度为:

(12)

计算所有特征的贡献度后作归一化处理,可以得每个特征的权重。

步骤9中,利用栅格搜索(grid search)方法逐一确定模型超参数,首先需要预先设定其他参数值,按照步骤8得到的结果设置子模型个数(tree_num),学习率(eta),最大树深(max_depth)和叶子节点最小样本权重(min_child_weight),其余超参数设置为默认值。

确定超参数max_depth,在栅格搜索中比较不同的参数值下的模型表现,将最优的模型对应的参数作为其超参数设置。同理保持其他参数不变,对每一个待确定参数进行栅格搜索,依次为max_depth, subsample, min_child_weight, gamma, colsample_bytree, reg_alpha, learning_rate, n_estimators。最终参数为:learning_rate =0.01, n_estimators=2000, max_depth=4, min_child_weight=3, gamma=0, subsample=0.8, colsample_bytree=0.8, reg_alpha=0.005。

由于机器人制造单元自身的复杂性,生产中可观测的参数维度众多,其中会有特征冗余或者不相关特征,包含不必要信息的样本数据(包含不必要特征)会对分类性能产生负面的影响。最终构建的生产特征集合需要有效地反映当前系统的环境信息,以此能较好地预测其对应的调度策略。

本发明从机器特征、加工工件特征、机器人特征三个主要维度提取了29个生产特征,如下表所示:

生产特征集

由于现场环境的复杂性,需要对采集到的上述参数进行预处理。

预处理包括以下步骤:对历史生产数据中的缺失值(如传感器出现故障时未采集到数据)进行填充,对异常值(超出正常范围的值,传感器或别的故障导致的错误值)进行处理。对数值型特征和分类型特征分别进行处理:对分类变量(类别型变量,如机器当前状态可分为:忙碌,空闲两个类别型变量)进行处理,应用sklearn.preprocessing的LabelEncoder模块将分类变量转化为数值变量,并用OneHotEncoder将标签进行独热编码;将数值变量转换为比例值的形式,如等待时间比的转换公式为:Wait rate = Waiting time/ (Waiting time + Processing time)。对样本数据中的数值型特征进行归一化操作,转换公式为:。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1