一种基于改进二分k-均值算法的订单分组方法与流程

文档序号:15640081发布日期:2018-10-12 21:57阅读:378来源:国知局

本发明涉及一种分组方法,具体是一种基于改进二分k-均值算法的订单分组方法。



背景技术:

随着电商的发展,电商每天会接收到大量的订单,而这些订单呈小批量、多品种、多批次的特点。对于这些大规模的订单,电商的物流中心压力日益增大。

订单分组是将收集到的客户订单按照特定的规则进行分组,将同一组的订单安排在同一个工作台进行分拣,以缩短订单拣选时间,提高拣选效率。目前,订单分组策略有:1、种子算法,2、节约算法,3、优先规则算法,4、启发式算法,5、数据挖掘算法。

种子算法的初始种子数据难以找到较优的值,对于大规模的订单难以求出最优分组方案;优选规则算法是将客户订单进行分级,按照订单的优先级进分组,但其没有考虑订单之间的关联性,获得的分组方案往往不能有效缩减分拣效率;而一般的启发式算法并不能适用于大规模的订单集合;对于数据挖算法,现阶段用于订单分组问题的主要有两种算法:关联规则挖掘、k-means聚类算法。这两种算法适用于大规模的订单集合分组问题,但目前基于k-means算法的订单分组方案,并没有合理改进算法的三个限制:1、k值的确定,2、初始中心的确定,3、异常数据点的处理,使得现阶段的方案并没能有效提高系统的分拣效率。



技术实现要素:

本发明的目的在于提供一种基于改进二分k-均值算法的订单分组方法,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:

一种基于改进二分k-均值算法的订单分组方法,包括如下步骤:对订单数据集进行处理,获得订单集列表t={t1,t2…ti…tw};其中,ti表示第i个订单,第i个订单所包含的货品向量化表达为ti={aw1,aw2,…awi…awl};ti表示第i个订单,awi表示第w个订单包含第i种货品;

根据订单数量设置阈值ta的值;

在订单构成的簇类中选取参考订单:将该簇类中订单长度最大的订单作为第一个参考中心订单,计算簇类中其他订单与第一个参考中心订单的相似度,并在与第一个参考订单中心相似度最小的订单中,选择订单长度最大的订单作为第二个参考中心订单;

计算每个订单到每个参考中心订单的相似度rij,并将每个订单划分到与多个参考中心订单其中一者相似最大的一组;

对本次分组产生的所有簇类进行检测,查看是否满足预设的第一条件;

将满足第一条件的簇类标记为异常簇类,将异常簇类的参考中心订单标记为异常订单标记,并计算异常簇类中的所有订单与其他簇类参考中心订单的相似度,并将每个订单划分到与其他簇类参考中心订单相似度最大的簇类中;

将剩下的所有簇类按照其ssi的值大小进行降序排序,将前n个簇类进行k-means二次聚类(k=2),使得簇类数量保持不变;ssi为第i个簇类的订单相似度平方差的均值;

更新每个簇类的参考中心订单,并按照前述步骤进行进行分组迭代,直至参考中心订单不再发生改变或迭代次数达到最大迭代数;

判断现阶段最大ssi值是否小于等于ta,若是,则结束迭代,得出迭代分组结果tast={g1…gi…gk},gi表示第i个订单组;若否,则继续迭代,重复前述步骤,直至ssi值小于等于ta。

其中,第i个簇类的订单相似度平方差的均值为

其中,两个订单之间相似度为

其中,第一条件的公式表示为:∣(zli-ag)∣≥2*std;

其中,

ag为本次迭代中所有簇类的长度的均值;std为本轮迭代中所有簇类长度的标准差;zli为第i个簇类的订单数。

其中,更新每个簇类的参考中心订单的更新公式为:

其中,在订单构成的簇类中选取参考订单的步骤之前,将所有订单看作为一个簇类,并对于进行k-means聚类,k=2,使其一分为二。

与现有技术相比,本发明的有益效果是:本发明采用改进的二分k-均值算法求解对配送中心订单分批问题,从k值选取、初始中心值的选取、异常点处理三个方面对k-means聚类算法进行了改善,避免算法陷入局部最优,使得求解出的订单分组方案更加有效合理,从而有效提高订单分拣效率。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为本发明提供的一种基于改进二分k-均值算法的订单分组方法的逻辑示意图。

图2为本发明提供的一种基于改进二分k-均值算法的订单分组方法的流程示意图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

请参阅图1和图2,本发明实施例提供了一种基于改进二分k-均值算法的订单分组方法,包括如下步骤:

对订单数据集进行处理,获得订单集列表t={t1,t2…ti…tw};其中,ti表示第i个订单,第i个订单所包含的货品向量化表达为ti={aw1,aw2,…awi…awl};ti表示第i个订单,awi表示第w个订单包含第i种货品;

根据订单数量设置阈值ta的值;

在订单构成的簇类中选取参考订单:将该簇类中订单长度最大的订单作为第一个参考中心订单,计算簇类中其他订单与第一个参考中心订单的相似度,并在与第一个参考订单中心相似度最小的订单中,选择订单长度最大的订单作为第二个参考中心订单;

计算每个订单到每个参考中心订单的相似度rij,并将每个订单划分到与多个参考中心订单其中一者相似最大的一组;

对本次分组产生的所有簇类进行检测,查看是否满足预设的第一条件;

将满足第一条件的簇类标记为异常簇类,将异常簇类的参考中心订单标记为异常订单标记,并计算异常簇类中的所有订单与其他簇类参考中心订单的相似度,并将每个订单划分到与其他簇类参考中心订单相似度最大的簇类中;

将剩下的所有簇类按照其ssi的值大小进行降序排序,将前n个簇类进行k-means二次聚类(k=2),使得簇类数量保持不变;ssi为第i个簇类的订单相似度平方差的均值;

更新每个簇类的参考中心订单,并按照前述步骤进行进行分组迭代,直至参考中心订单不再发生改变或迭代次数达到最大迭代数;

判断现阶段最大ssi值是否小于等于ta,若是,则结束迭代,得出迭代分组结果tast={g1…gi…gk},gi表示第i个订单组;若否,则继续迭代,重复前述步骤,直至ssi值小于等于ta。

其中,第i个簇类的订单相似度平方差的均值为

其中,两个订单之间相似度为

其中,第一条件的公式表示为:∣(zli-ag)∣≥2*std;

其中,

ag为本次迭代中所有簇类的长度的均值;std为本轮迭代中所有簇类长度的标准差;zli为第i个簇类的订单数。

其中,更新每个簇类的参考中心订单的更新公式为:

其中,在订单构成的簇类中选取参考订单的步骤之前,将所有订单看作为一个簇类,并对于进行k-means聚类,k=2,使其一分为二。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

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