发明内容
本发明的目的在于克服现有技术的不足,提供一种基于聚类和节约算法的路线优化推荐方法。本发明通过对烟草行业客户经理的工作流程及工作特点进行研究分析,通过利用k-means聚类方法零售户划分到不同的区域,根据拜访率、客户类型、走访量、路径最优及其他特殊要求等条件,推荐每天的拜访客户,根据推荐的客户位置分布或者对于客户经理自选的拜访客户,利用节约算法规划客户经理的拜访路径,使得拜访路径最优,拜访时间最短,提高了客户经理的工作效率。
本发明提供了一种基于聚类和节约算法的路线优化推荐方法,其特征在于,依次包括如下步骤:
步骤1:建立问题数学模型:
步骤1.1:把客户经理服务的每个零售户作为一个点,所有预拜访客户构成一个集合:C={c1,c2,…cn};
步骤1.2:规划一条拜访路线,使得总的拜访路径最短,满足:
minF(C)=d(S,ci)+Σd(ci,cj)+d(cj,S)
其中d(S,ci)表示公司S到某一客户i的距离,Σd(ci,cj)表示从客户i经过其他所有客户到达客户j的路径距离,d(cj,S)表示客户j到公司S的距离,i=1…n,j=1…n,j≠i,n为大于等于0的整数;
步骤2:基于改进K-means聚类算法的烟草零售户区域划分,按照零售户之间的路程距离进行聚类,使得每个聚类中的零售户距离相对最近;
步骤3:基于随机数字表示法和分层抽样相结合的方法进行预拜访客户推荐,把k个聚类划分看作k层,对每个聚类中的零售户进行编号,根据客户档次给予不同数目的编号,利用随机数字法从中选取客户;
步骤4:基于节约算法优化零售户拜访路径,使客户经理拜访完所有的客户所需时间最短,以服务每一个客户节点为起始解,根据三角形两边之和大于第三边的性质,起始状况为每服务一个客户后便回到原点,拜访总路程为:dij为客户i与客户j之间的距离;
而后计算路线间合并后的路程节约值:
s(i,j)=doi+dio+doj+djo-(doi+djo+dij)=dio+doj-dij,
将得到的路程节约值以降序排序而依次合并路线,最后按照最大的节约值归并拜访客户的路径,得到最优拜访路径;
步骤5:将步骤4中得到的最优拜访路径以无线/有线的方式发送到客户经理佩带的无线终端,其中无线终端包括显示装置,无线终端接收最优拜访路径后在显示装置上显示,无线终端能够以语音的方式播放最优拜访路径导航信息,客户经理根据最优拜访路径进行拜访。
优选地,所述步骤2的具体步骤如下:
步骤2.1:从客户集C中选择k个客户c1,c2,…,ck作为初始的聚类中心;
步骤2.2:把客户集C中其余的客户分配到与之距离最近的聚类中,对于每个客户ci,找出一个簇中心hm,使得它们之间的距离d(ci,hm)最小,然后把ci归并到第m个聚簇中;
步骤2.3:把所有的客户都划归到相应的聚簇之后,根据聚簇中每个客户的坐标点重新计算该聚簇的核心点h′i;
步骤2.4:对于每个聚簇,计算每个客户坐标与核心点h′i的坐标距离,找出与之最接近的客户点作为该聚簇的核心点hi;
步骤2.5:循环执行步骤2.2-步骤2.3,直到客户的划分不再发生变化。
优选地,所述步骤3具体为:
采用随机数字表法与分层抽样相结合的方法,通过步骤2的聚类算法把所有客户划分到k个聚簇中,相当于分为k个分层,在每个分层中按照客户的重要程度对每个客户进行编号,利用随机数字表法从中选取一个客户,则选出p个客户作为每天要拜访的客户,满足:
1)如果要拜访的客户数p大于聚簇的个数k,则在k个聚簇中随机选取p-k个聚簇,再在这些聚簇中选择客户;
2)如果要拜访的客户数p小于等于聚簇个数k,则对k个聚簇随机选择p个聚簇,再在这些聚簇中选择客户。
优选地,所述步骤4具体步骤为:
步骤4.1:制作客户拜访里程矩阵,列出原点到客户及客户间的最短距离;
步骤4.2:计算客户i、j拜访路程的节约值s(i,j),构建原点到客户及客户间的节约值矩阵,并从下三角矩阵中选择出最大节约值;
步骤4.3:检验节约值s(i,j)对应的两客户点是否满足如下条件:
步骤4.3.1:若节约值中对应的两客户点i和j均不在已构成的线路上,得到线路段o→i→j→o,转步骤4.4;
步骤4.3.2:若节约值中对应的一客户点i或j在已构成的线路上,且不是线路的内点,即不与原点直接相连,则连接得到线路o…→i→j→o或o→i→j→…o,转步骤4.4;
步骤4.3.3:若节约值中对应的两客户点i和j在已构成的不同线路上,且均不是内点,则得到线路o…→i→j→…o,转步骤4.4;
步骤4.3.4:若节约值中对应的两客户点i和j在已构成的同一条线路上,则不能再进行连接,转步骤4.4;
步骤4.4:去掉节约值矩阵中第i行和j列,则客户点i不能再连接到其它客户点,客户点j不能由其它客户点到达;
步骤4.5:待节约值矩阵中所有元素划去,则得到一条符合条件的线路,终止;否则从下三角节约值矩阵没有划去的元素中选择最大元素,转步骤4.3,如果找不出最大的元素,转步骤4.6;
步骤4.6:对于节约矩阵中没有划去的元素i和j,在对应的里程矩阵中找到里程值最小的元素,如果这两个元素分别在不同的线路上,则连接这两条线路,转步骤4.4。
优选地,所述步骤5中无线的方式发送是通过WIFI、2G、3G、4G中的一种或几种的组合。
优选地,所述无线终端为平板电脑、手机、笔记本电脑中一种或几种的组合。
本发明的基于聚类和节约算法的路线优化推荐方法,可以实现:
1)通过得到最优拜访路径,使得拜访时间最短,提高了客户经理的工作效率;
2)通过将最优拜访路径发送到客户经理佩带的无线终端,可以不受区域限制,随时随地的接收最优拜访路径,拜访效率提高,并且更加灵活,实用性更强。
具体实施方式
下面详细说明本发明的具体实施,有必要在此指出的是,以下实施只是用于本发明的进一步说明,不能理解为对本发明保护范围的限制,该领域技术熟练人员根据上述本发明内容对本发明做出的一些非本质的改进和调整,仍然属于本发明的保护范围。
本发明提供了一种基于聚类和节约算法的路线优化推荐方法,具体为
1.模型的建立
在烟草行业,拜访客户是客户经理的一项重要职责。每个客户经理负责200个客户,这些客户分布在不同的地理位置,彼此距离远近不同,客户经理需要从公司出发对其中20户进行拜访,然后返回公司。对预拜访客户进行推荐及路径优化的基本思想可描述如下:首先根据客户所在的地理位置利用K-means聚类算法把客户划分为不同的区域;然后根据客户的不同区域分布情况、客户类型、客户拜访数量、月拜访率等指标从不同区域中推荐预拜访的客户;最后根据推荐的客户地理位置,依据客户间的路径距离利用节约算法规划拜访路径,使得每天的所需拜访时间基本相同,每次的拜访路径最优、拜访时间最短。
其路径优化模型为:
预拜访的客户:C={c1,c2,…cn}
目标函数:minF(C)=d(S,ci)+Σd(ci,cj)+d(cj,S)
其中d(S,ci)表示公司到某一客户i的距离,Σd(ci,cj)表示从客户i经过其他所有客户到达客户j的路径距离,d(cj,S)表示客户j到公司的距离,i=1…n,j=1…n,j≠i.
2.基于改进K-means聚类算法的烟草零售户区域划分
为了使客户经理每天拜访的客户数量、拜访路径和所需时间基本平衡,本文首先对客户经理所负责的客户进行区域划分,每天从各个区域中选取或推荐预拜访客户,使得每天拜访的客户分布均衡,达到均衡客户经理工作量的目标。
K-means是一种使用最广泛的聚类算法,算法首先随机的选择k个对象,每个对象初始地代表了一个簇的平均值或者中心。对于剩余的对象根据其与各个簇中心的距离,将它划分到最近的簇中。然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。
K-means算法的准则函数定义为:
即E是数据库所有对象的平方误差的总和。其中x是空间中的点,表示给定的数据对象,是簇Ci的平均值。这个准则可以保证生成的结果簇尽可能的紧凑和独立。
客户经理负责的客户:D={ci|i=1,2,…,m},m为客户经理负责的客户数。
K个簇的核中心集合H={hi|i=1,2,…,k},各个簇中包含的数据集合为Si={c|c是属于第i簇的客户},客户ci∈Sm,则
d(ci,hm)=min{d(ci,h1),d(ci,h2),…,d(ci,hk)},m∈[1,k]
因为在聚类过程中得到的新的簇核心可能实际上无法到达,因此在实际算法中对K-means算法进行改进,利用最接近簇核心的实际客户点作为新的簇核心。客户点之间的距离利用路径耗时表示,初始化为实际路程距离与所乘交通工具的速度,这个值在实际应用中根据客户经理的实际路径耗时定期修正。
具体改进的K-means聚类算法的具体步骤如下:
输入:簇的数目k和包含m个客户的客户集
输出:k个簇,使平方误差准则最小
步骤1:从客户集D中选择k个客户c1,c2,…,ck作为初始的聚类中心;
步骤2:把其余的客户分配到与之距离最近的聚类中。对于每个客户ci,找出一个簇中心hm,使得它们之间的距离d(ci,hm)最小,则把ci归并到第m个聚簇中;
步骤3:把所有的客户都划归到相应的聚簇之后,根据聚簇中每个客户的坐标点重新计算该聚簇的核心点h′i;
步骤4:对于每个聚簇,计算每个客户坐标与核心点h′i的坐标距离,找出与之最接近的客户点作为该聚簇的核心点hi;
步骤5:循环执行步骤2-步骤3,直到客户的划分不再发生变化。
通过上面的聚类算法所有的客户会按照他们各自路程距离关系被分割成k个划分,每个聚类里的客户距离相对来说都很近,这样每天的拜访客户从各个聚类中抽取,使得他们的路程距离分布比较一致,平衡了客户经理每天的拜访工作量。
3.拜访客户推荐
客户经理每天拜访的客户推荐方法采用随机数字表法与分层抽样相结合的方法,通过上述的聚类算法把所有客户划分到k个聚簇中,相当于分为k个分层,在每个分层中对每个客户进行编号,普通客户每月访问一次给出一个编号,重点客户每月访问多次给出多个编号,利用随机数字表法从中选取一个客户,则选出p个客户作为每天要拜访的客户。如果要拜访的客户数p多于聚簇的个数k,则在k个聚簇中随机选取p-k个聚簇,再在这些聚簇中选择客户。如果要拜访的客户数p少于聚簇个数k,则对k个聚簇随机选择p个聚簇,再在这些聚簇中选择客户。客户被拜访之后做出标记,本月内不再推荐。
4.节约算法
确定要拜访的客户之后,需要合理的规划拜访路径,使客户经理拜访完所有的客户所需时间最短。本文采用节约算法规划客户经理拜访路径。节约算法(ClarkandWrightSaving)的基本原理是:以服务每一个客户节点为起始解,根据三角形两边之和大于第三边之性质,其起始状况为每服务一个客户后便回到原点,而后计算路线间合并节省量,将节省量以降序排序而依次合并路线,直到最后。其基本思想是首先分别单独拜访每个客户,则拜访总路程为
然后定义合并拜访客户i与客户j之后路程的节约值,即
s(i,j)=doi+dio+doj+djo-(doi+djo+dij)=dio+doj-dij
式中,s(i,j)为路程节约值;dij为客户i与客户j之间的距离。
最后按照最大的节约值归并拜访客户的路径,得到最优拜访路径。
节约算法步骤如下:
步骤1:制作客户拜访里程矩阵,列出原点到客户及客户间的最短距离。
步骤2:计算客户i、j拜访路程的节约值s(i,j),构建原点到客户及客户间的节约值矩阵,并从下三角矩阵中选择出最大节约值。
步骤3:检验节约值s(i,j)对应的两客户点是否满足如下条件:
步骤3.1:若节约值中对应的两客户点i和j均不在已构成的线路上,得到线路段o→i→j→o,转步骤4。
步骤3.2:若节约值中对应的一客户点i或j在已构成的线路上,且不是线路的内点(即不与原点直接相连),则连接得到线路o…→i→j→o或o→i→j→…o,转步骤4。
步骤3.3:若节约值中对应的两客户点i和j在已构成的不同线路上,且均不是内点,则得到线路o…→i→j→…o,转步骤4。
步骤3.4:若节约值中对应的两客户点i和j在已构成的同一条线路上,则不能再进行连接,转步骤4。
步骤4:去掉节约值矩阵中第i行和j列,则客户点i不能再连接到其它客户点,客户点j不能由其它客户点到达。
步骤5:待节约值矩阵中所有元素划去,则得到一条符合条件的线路,算法终止。否则从下三角节约值矩阵没有划去的元素中选择最大元素,转步骤3,如果找不出最大的元素,转步骤6。
步骤6:对于节约矩阵中没有划去的元素i和j,在对应的里程矩阵中找到里程值最小的元素,如果这两个元素分别在不同的线路上,则连接这两条线路,转步骤4。
尽管为了说明的目的,已描述了本发明的示例性实施方式,但是本领域的技术人员将理解,不脱离所附权利要求中公开的发明的范围和精神的情况下,可以在形式和细节上进行各种修改、添加和替换等的改变,而所有这些改变都应属于本发明所附权利要求的保护范围,并且本发明要求保护的产品各个部门和方法中的各个步骤,可以以任意组合的形式组合在一起。因此,对本发明中所公开的实施方式的描述并非为了限制本发明的范围,而是用于描述本发明。相应地,本发明的范围不受以上实施方式的限制,而是由权利要求或其等同物进行限定。