发明内容
本发明的目的是提供一种基于目的地的物流调度的方法、装置、设备和存储介质,可根据上报的货物信息及车辆信息随时生成最优调度方案供调度人员选择,提高车辆的装载率,并保证线路最优;解决中小物流公司痛点,为中小物流公司节约人力成本、运输沟通成本和IT成本。
为解决上述问题,本发明的技术方案为:
一种基于目的地的物流调度的方法,包括:
S1:服务端接收物流调度中的货物寄送请求,根据所述货物寄送请求,获取需寄送的货物信息基础表,对所述货物信息基础表及服务端预存的车辆信息基础表分别进行排序预处理,得到以目的地小组数据为单位的货物信息数据表及车辆信息数据表;
S2:服务端从所述货物信息数据表读取第一条目的地小组数据及所述车辆信息数据表中读取第一条车辆数据,按照预设的每条路线途径点的数量限制及车辆装载率要求,自动生成到达目的地的优化路线及车辆运输任务;
S3:去除已生成车辆运输任务的货物信息及车辆,更新所述货物信息数据表及所述车辆信息数据表;重复所述步骤S2,直至车辆不足或所述货物寄送请求处理完。
根据本发明一实施例,所述步骤S2进一步包括:
S21:所述目的地小组数据包括一个目的地、m个起始地及所述起始地对应的货量,所述每条路线途径点的数量小于等于n,n≤m;所述车辆数据包括一车辆ID、所述车辆ID对应的车辆仓位容积及载重;
S22:遍历从m个起始地中提取n-1个起始地及对应的货量的组合,并计算每个组合的总货量,逐个判断所述总货量是否超出所述车辆ID对应的车辆仓位容积及载重,若是,则舍弃;若否,则保留;
S23:提取所有保留的组合中符合预设车辆装载率的前10%个组合;
S24:依次从中读取一个组合,将所述组合中的所有起始地进行排序组合,取总里程最短的组合,作为所述组合的优化路线;所述总里程为一排序后的组合与目的地组成一运输路线的里程数;
S25:重复所述步骤S24,直至得到所述步骤S23中所述的前10%个组合的优化路线;
S26:将得到的所有优化路线按总里程从小到大及车辆装载率从大到下进行排序,取第一条所述优化路线作为一个车辆运输任务所需的路线。
根据本发明一实施例,所述步骤S22进一步包括:
若每个组合的总货量均超出所述车辆ID对应的车辆仓位容积及载重,则重新遍历从m个起始地中提取n-2个起始地及对应的货量的组合,并计算每个组合的总货量,逐个判断所述总货量是否超出所述车辆ID对应的车辆仓位容积及载重;若总货量仍均超出上述要求,则逐渐减少从m各起始地中提取的起始地数量,判断是否符合上述要求;直至从m个起始地中提取1个起始地及对应的货量。
根据本发明一实施例,所述步骤S24进一步包括:
分别计算排序后的各个组合与目的地组成的运输路线的里程数,取所述里程数最短的组合作为优化路线;
所述里程数根据组合中各起始地的经度及纬度,调用外部导航***的API接口计算得到。
根据本发明一实施例,所述步骤S1进一步包括:
S11:服务端建立并动态更新车辆信息基础表和货物信息基础表,并建立所述车辆信息基础表和所述货物信息基础表的关键字段的索引文件,所述车辆信息基础表至少包含车辆ID、车辆仓位容积在内的关键字段信息,所述货物信息基础表至少包含货物ID、货量、起始地、目的地在内的关键字段信息;
S12:服务端接收物流调度中的多条货物寄送请求,从中获取货物ID,利用所述索引文件的货物ID关键字段索引所述货物信息基础表,得到相应的货物信息,将所述货物信息按目的地进行分组,统计各组中的货物总量,并按货物总量的大小进行排序,得到排序后的包含多个目的地小组的货物信息数据表;
S13:将所述车辆信息基础表按所述车辆仓位容积的大小进行排序,得到车辆信息数据表;所述车辆信息基础表的排序类型与所述货物总量的排序类型一致,所述排序类型为正序或倒序。
一种基于目的地的物流调度的装置,包括:
基础信息建立模块,用于服务端建立并动态更新车辆信息基础表和货物信息基础表,并建立所述车辆信息基础表和所述货物信息基础表的关键字段的索引文件,所述车辆信息基础表至少包含车辆ID、车辆仓位容积在内的关键字段信息,所述货物信息基础表至少包含货物ID、货量、起始地、目的地在内的关键字段信息;
货物信息预处理模块,用于服务端接收物流调度中的多条货物寄送请求,从中获取货物ID,利用所述索引文件的货物ID关键字段索引所述货物信息基础表,得到相应的货物信息,将所述货物信息按目的地进行分组,统计各组中的货物总量,并按货物总量的大小进行排序,得到排序后的包含多个目的地小组的货物信息数据表;
车辆信息预处理模块,用于将所述车辆信息基础表按所述车辆仓位容积的大小及进行排序,得到车辆信息数据表;所述车辆信息基础表的排序类型与所述货物总量的排序类型一致,所述排序类型为正序或倒序;
运输任务生成模块,用于服务端从所述货物信息数据表读取第一个目的地小组数据及从所述车辆信息数据表中读取第一条车辆数据,按照预设的每条路线途径点的数量限制及车辆装载率要求,自动生成到达目的地的优化路线及车辆运输任务;去除已生成车辆运输任务的货物信息及车辆,更新所述货物信息数据表及所述车辆信息数据表;重复进行运输任务生成的操作,直至车辆不足或所述货物寄送请求均已处理。
根据本发明一实施例,所述运输任务生成模块进一步包括:
装载率判断模块,用于遍历从一目的地小组数据的m个起始地中提取n-1个起始地及对应的货量的组合,并计算每个组合的总货量,逐个判断所述总货量是否超出车辆数据中的车辆ID对应的车辆仓位容积及载重,若是,则舍弃;若否,则保留;所述目的地小组数据包括一个目的地、m个起始地及所述起始地对应的货量,所述每条路线途径点的数量小于等于n,n≤m;所述车辆数据包括一车辆ID、所述车辆ID对应的车辆仓位容积及载重;
优化路线生成模块,用于提取所有保留的组合中符合预设车辆装载率的前10%个组合;依次从中读取一个组合,将所述组合中的所有起始地进行排序组合,取总里程最短的组合,作为所述组合的优化路线;所述总里程为一排序后的组合与目的地组成一运输路线的里程数;重复进行组合的优化路线生成操作,直至得到所述前10%个组合的优化路线;
最终路线生成模块,用于将得到的所有优化路线按总里程从小到大及车辆装载率从大到下进行排序,取第一条所述优化路线作为一个车辆运输任务所需的路线。
根据本发明一实施例,所述装载率判断模块进一步包括:
超载处理模块,用于当每个组合的总货量均超出所述车辆ID对应的车辆仓位容积及载重时,重新获取从m个起始地中提取n-2个起始地及对应的货量的组合,并计算每个组合的总货量,逐个判断所述总货量是否超出所述车辆ID对应的车辆仓位容积及载重;若总货量仍均超出上述要求,则逐渐减少从m各起始地中提取的起始地数量,直至从m个起始地中提取1个起始地及对应的货量。
一种基于目的地的物流调度的设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行本发明一实施例中所述的基于目的地的物流调度的方法中的步骤。
一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本基于目的地的发明一实施例中所述的物流调度的方法中的步骤。
本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:
本发明一实施例中的基于目的地的物流调度的方法,针对现有的中小物流公司进行车辆排班时往往是根据经验来排班,由于每天的路况及货量不同,经常出现车辆装载率低、路程太远,空跑现象严重,造成人力及车辆资源的浪费,加大了公司的经营成本的问题,设计一套物流调度***,根据上报的货物信息及车辆信息,将货物信息按目的地进行分组,自动生成每个目的地小组的满足车辆装载率要求的优化运输路线,一方面解决中小物流公司痛点,为中小物流公司节约人力成本、运输沟通成本和IT成本;另一方面,操作方便,大大降低了新人上手的难度。
具体实施方式
以下结合附图和具体实施例对本发明提出的一种基于目的地的物流调度的方法、装置、设备和存储介质作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。
实施例一
本实施例提供一种基于目的地的物流调度的方法,解决现有的中小物流公司因没有足够的IT成本,无法搭建一套自己的调度管理***,在进行车辆排班时往往是根据经验来排班,由于每天的路况及货量不同,经常出现车辆装载率低、路程太远,空跑现象严重,造成人力及车辆资源的浪费,加大了公司的经营成本的问题。请参看图1,该方法具体包括以下步骤:
S1:服务端接收物流调度中的货物寄送请求,根据所述货物寄送请求,获取需寄送的货物信息基础表,对所述货物信息基础表及服务端预存的车辆信息基础表分别进行排序预处理,得到以目的地小组数据为单位的货物信息数据表及车辆信息数据表;
S2:服务端从所述货物信息数据表读取第一条目的地小组数据及所述车辆信息数据表中读取第一条车辆数据,按照预设的每条路线途径点的数量限制及车辆装载率要求,自动生成到达目的地的优化路线及车辆运输任务;
S3:去除已生成车辆运输任务的货物信息及车辆,更新所述货物信息数据表及所述车辆信息数据表;重复所述步骤S2,直至车辆不足或所述货物寄送请求处理完。
具体的,步骤S1进一步包括:服务端建立并动态更新车辆信息基础表和货物信息基础表,并建立所述车辆信息基础表和所述货物信息基础表的关键字段的索引文件,所述车辆信息基础表至少包含车辆ID、车辆仓位容积在内的关键字段信息,所述货物信息基础表至少包含货物ID、货量、起始地、目的地在内的关键字段信息。
其中,车辆信息基础表包括车辆ID(也就是车牌号)、车辆仓位容积、额定载重、已完成班次、司机、司机联系电话等信息,具体格式参看表1:
表1
表1中,车辆ID(车牌号)是车辆的唯一标识号;车辆仓位容积及额定载重表明了该车辆的大小及可装载的货物多少;已完成班次是指当天该车辆已出过几次车,是否达到了每天出车次数的上限。由于记录空间有限,表1中只列出了车辆信息基础表中的一部分参数,但车辆信息基础表并不限于表1中所列的,还包括如车辆性质、车门数、皮重等的其他参数。
货物信息基础表包括货物ID(也即订单编号)、货量、货物类型、起始地、目的地、寄件人、寄件人联系电话、收件人、收件人联系电话等信息,具体格式参看表2:
表2
序号 |
货物ID |
货量 |
起始地 |
目的地 |
货物类型 |
寄件人 |
… |
… |
… |
… |
… |
… |
… |
表2中,货物ID(订单编号)是货物的唯一标识号;货量指货物的重量;货物类型指衣服、鞋帽、电器、玩具等类型,从货物类型上可预估货物的体积大小。由于记录空间有限,表2中只列出了货物信息基础表中的一部分参数,但货物信息基础表并不限于表2中所列的,还可根据实际需要增加其他参数。
上述车辆信息基础表和货物信息基础表是本发明实现基于目的地的物流调度的基础,需做好维护工作。
本实施例还建立了车辆信息基础表和货物信息基础表的关键字段的索引文件。车辆信息基础表至少包含车辆ID、车辆仓位容积、额定载重在内的关键字段信息,而货物信息基础表至少包含货物ID、货量、起始地、目的地在内的关键字段信息。当表单的数据量非常大时,本发明建立该车辆信息基础表和货物信息基础表的关键字段的索引文件,通过索引文件访问表单,处理数速从分级直接提升至秒级,提升整个处理效率。
由于中小物流公司的用户会不时地上报车辆信息和货物信息对车辆信息基础表和货物信息基础表进行更新,也有调度人员不时地访问这些表单,查询相关信息。当同时出现对车辆信息基础表和货物信息基础表进行更新及查询时,会出现查询得到的数据是未更新的数据,也会出现多个用户同时更改数据的情况,使数据混乱。因此,保证数据的安全性和一致性就显得极为重要。那么如何保证数据的安全性和一致性呢?可以通过以下方法实现:
服务端将车辆信息基础表和货物信息基础表存储至主节点数据库和一个或多个从节点数据库。
该主节点数据库适配存储空间进行包括车辆信息基础表和货物信息基础表的表单更改,而从节点数据库提供这些表单被读取的查询操作,并在主节点数据库和从节点数据库中分别建立车辆信息基础表和货物信息基础表的关键字段的索引文件。
当从节点数据库连接主节点数据库时,主节点数据库创建日志线程,用于发送主节点数据库对车辆信息基础表和货物信息基础表的表单修改内容,当从节点数据库读取该日志线程时,主节点数据库相应的表单被锁定,从节点数据库根据该修改内容进行更新,以达到动态更新车辆信息基础表和货物信息基础表时的数据一致性。
其中,主节点数据库还会针对车辆信息基础表和货物信息基础表的表单创建一个日志转储logdump线程,用于发送这些表单的箱日志bin-log的修改内容,该bin-log修改内容包括用户对数据库对应表单更新的命令语句信息,进一步包括更改数据库表单和更改内容的命令语句都会记录到bin-log里。
当从节点数据库在读取bin-log中的操作时,此线程会对主节点数据库对应表单上的bin-log加锁,当读取完成后,锁才会被释放。
当从节点数据库上执行关闭同步命令之后,从节点会创建一个I/O线程用来连接主节点数据库,请求主节点数据库中更新的bin-log;I/O线程接收到主节点数据库箱日志转储bin-logdump进程发来的更新之后,保存、解析成具体的操作并执行,最终保证主从数据库对应表单数据的一致性。
简单做些解释,主节点数据库预先创建一个logdump线程,该线程发送的是bin-log内容。bin-log内容是用来保存对主节点数据库进行操作的各项指令,比如哪一时刻更新哪一个表单的哪一个字段等。但是,该logdump线程不保存查找指令。当logdump线程中执行至某一节点就触发发送bin-log内容。比如,logdump线程设定每隔一预先设定的周期就将bin-log内容中新增的操作指令日志发送至对应的从节点数据库,而将bin-log内容中新增的操作指令日志是通过bin-logdump进程发送至对应的从节点数据库。
也就是说,在实现过程中,以MySQL(一种开放源代码的关系型数据库管理***)为例。主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。
在开发工作中,有时候会遇见某个SQL语句需要锁表,导致暂时不能使用读的服务,这样就会影响现有业务,使用主从复制,让主节点数据库负责写,从节点数据库负责读,这样,即使主节点数据库出现了锁表的情景,通过读从节点数据库也可以保证业务的正常运作。随着***中业务访问量的增大,如果是单机部署数据库,就会导致I/O访问频率过高。有了主从复制,增加多个数据存储节点,将负载分布在多个从节点上,降低单机磁盘I/O访问的频率,提高单个机器的I/O性能。
上述方法采用主节点数据库和从节点数据库的结构方式,进行主从备份。其中主节点数据库负责写,而从节点数据库只负责读,读写的分离,保证了数据库的最佳的性能,使得数据更快的被读取。同时,主节点数据库只有一个,数据在写、删除和更新的时候都不会出现数据不同步的问题。以这样的方式确保车辆信息基础表和货物信息基础表的安全性和一致性。
服务端接收物流调度中的多条货物寄送请求(即用户在客户端下的订单),从中获取货物ID(订单编号),利用预先建立的索引文件的货物ID关键字段索引货物信息基础表,得到相应的货物信息,将该货物信息按目的地进行分组,统计各组中的货物总量,并按货物总量的大小进行排序,得到排序后的包含多个目的地小组的货物信息数据表。
服务端收到客户端上报的多条货物寄送请求,如收到100条货物寄送请求,相应的在货物信息基础表中有100条货物信息(如a1、a2、a3、…、a100)。服务端将从这些货物寄送请求中,提取各货物ID,利用预设建立的索引文件索引货物信息基础表,得到相应的货物信息。下面以这100条货物信息(a1、a2、a3、…、a100)为例,对本发明基于目的地的物流调度方法展开说明。
将这100条货物信息按目的地进行分组,得到多个目的地小组,以10个目的地小组(如b1、b2、b3、…b10)为例。每个目的地小组中包括一个目的地,多个起始地及这些起始地对应的货量。统计每个目的地小组的总货量,经这10个目的地小组按总货量的大小进行排序,如按总货量从大到小进行排序,得到排序后的各目的地小组(如b3、b2、b4、b1、b5、b6、b7、b10、b8、b9),这些目的地小组组成新的货物信息数据表,该货物信息数据表以目的地小组为单位进行存储。
将车辆信息基础表按车辆仓位容积的大小进行排序;该车辆信息基础表的排序类型与所述货物总量的排序类型一致。
在物流调度中,车辆是主要运输工具。为了提高物流运输效率,对车辆装载率提出了要求,如每次出车,车辆装载率达到车辆仓位容积的95%。为了达到这个要求,通常把货量大的货物装在车辆仓位容积大的车辆上。因此,在对货物进行排序后,对现有的车辆也要做相应的排序。
服务端将车辆信息基础表按车辆仓位容积的大小进行排序,该车辆信息基础表的排序类型与货物总量的排序类型一致,如按车辆仓位容积从大到小进行排序。为了确保车辆可以按时出车,在按将车辆信息基础表按车辆仓位容积从大到小进行排序的基础上,再按已完成班次从小到大进行排序。
如共有10条车辆信息(c1、c2、c3、…、c10),将这10条车辆信息按按车辆仓位容积从大到小进行排序的基础上,再按已完成班次从小到大进行排序,得到排序后的车辆信息(如c4、c1、c2、c5、c3、c7、c8、c6、c10、c9),这些车辆信息组成新的车辆信息数据表,该车辆信息数据表以车辆为单位进行存储。
步骤S2:服务端从货物信息数据表读取第一个目的地小组数据及从车辆信息数据表中读取第一条车辆数据,按照预设的每条路线途径点的数量限制及车辆装载率要求,自动生成到达目的地的优化路线及车辆运输任务。
其中,请参看图2,该步骤S2进一步包括:
S21:目的地小组数据包括一个目的地、m个起始地及所述起始地对应的货量,所述每条路线途径点的数量小于等于n,n≤m;所述车辆数据包括一车辆ID、所述车辆ID对应的车辆仓位容积及载重;
S22:遍历从m个起始地中提取n-1个起始地及对应的货量的组合,并计算每个组合的总货量,逐个判断所述总货量是否超出所述车辆ID对应的车辆仓位容积及载重,若是,则舍弃;若否,则保留;
S23:提取所有保留的组合中符合预设车辆装载率的前10%个组合;
S24:依次从中读取一个组合,将所述组合中的所有起始地进行排序组合,取总里程最短的组合,作为所述组合的优化路线;所述总里程为一排序后的组合与目的地组成一运输路线的里程数;
S25:重复所述步骤S24,直至得到所述步骤S23中所述的前10%个组合的优化路线;
S26:将得到的所有优化路线按总里程从小到大及车辆装载率从大到下进行排序,取第一条所述优化路线作为一个车辆运输任务所需的路线。
具体的,服务端从货物信息数据表读取第一个目的地小组数据,如b3;从车辆信息数据表中读取第一条车辆数据,如c4。在b3中有多个起始地,以10个起始地为例。根据历史物流运输数据,为了提高物流运输效率,得出每次出车(即一个车辆运输任务),车辆最多可经过7个地点。具体到本实施例,除去一个目的地,一个车辆运输任务中,最多包含6个起始地,即车辆最多先后到达6个起始地去取货物,然后把货物一起运输至目的地。
由于在b3这个目的地小组中存在10个起始地,而每次最多只能获取6个起始地的货物,因此,需遍历出从这10个起始地中提取6个起始地的所有组合。另外,由于每个起始地需要寄送的货物的货量不同,为了达到车辆装载率要求,需判断上述遍历的各个组合的车辆装载率是否符合要求。可以通过计算每个组合中包含的起始地的货量总和是否超出车辆c4的仓位容积及载重来进行判断。
从这10个起始地中提取6个起始地的所有组合的个数为C160=210,因此,需要遍历出210个不同的组合,并分别计算各个组合的总货量;再将计算得到的各个组合的总货量与车辆c4的仓位容积及载重进行比较,若该组合的总货量超出了车辆c4的容积或载重,则舍弃该组合;若没有超出,则保留该组合。
在实际应用中,可能会出现存在没有符合上述条件的组合的情况,也即每个组合的总货量均超出车辆c4的仓位容积或载重。碰到这种情况,则将从这10个起始地中提取的起始地个数,从6个改为5个。即需要完成遍历出从这10个起始地中提取5个起始地的所有组合,并分别计算各个组合的总货量;再将计算得到的各个组合的总货量与车辆c4的仓位容积及载重进行比较的操作。
从这10个起始地中提取5个起始地的所有组合的个数为C150=252,因此,需要遍历出252个不同的组合,并分别计算各个组合的总货量;再将计算得到的各个组合的总货量与车辆c4的仓位容积及载重进行比较,若该组合的总货量超出了车辆c4的容积或载重,则舍弃该组合;若没有超出,则保留该组合。
若仍出现每个组合的总货量均超出车辆c4的仓位容积或载重的情况,则将从这10个起始地中提取的起始地个数,从5个改为4个,完成遍历出从这10个起始地中提取4个起始地的所有组合,并分别计算各个组合的总货量;再将计算得到的各个组合的总货量与车辆c4的仓位容积及载重进行比较的操作。
如此,通过减少组合中起始地的个数来减小组合的总货量的大小,使组合的总货量符合车辆c4的仓位容积及载重的要求。若上述从这10个起始地中提取4个起始地的所有组合中仍没有符合要求的,则继续减少提取起始地的数量,即从这10个起始地中提取3个起始地的所有组合,若这些组合中仍没有符合要求的,则继续减少提取起始地的数量,即从这10个起始地中提取2个起始地的所有组合,直到从这10个起始地中提取1个起始地为止。
经过上述组合的总货量与车辆c4的仓位容积及载重进行比较后,假设在这10个起始地中提取5个起始地的所有组合中得到多个符合条件的组合,假设有50个。为了充分利用车辆c4的仓位容积,将这50个符合条件的组合按c4的车辆装载率从大到小排序,取前10%的组合,即取前5个组合。
分别对这车辆装载率较高的5个组合计算优化路线。具体的,可将这5个组合中按次序逐一进行优化路线的计算,也可将这5个组合进行并行处理,同时计算这5个组合的优化路线。
在计算优化路线时,需加上目的地b3。即每个组合由5个起始地及1个目的地组成,其优化线路就是调整这5个起始地的顺序,使最终获得的路线的里程最短。因此,需遍历这5个起始地的所有排列组合,计算每种排列组合与目的地b3组成的路线的里程数,并按里程数排序,取里程数最短的路线作为优化路线。
在计算每种排列组合与目的地b3组成的路线的里程数时,可通过调用外部导航***的相关接口来完成。如调用高德导航***的API接口,根据各起始地及目的地的经度及纬度计算线路的里程。
无论是通过将这5个组合中按次序逐一进行优化路线的计算,还是将这5个组合进行并行处理,同时计算这5个组合的优化路线,最终都将得到这5个组合的对应的5条优化路线。由于这5条优化路线中或多或少存在相同的起始地,因此,还需进行筛选,获得一条最优的路线。
这条最优的路线可通过将这5条优化路线按里程数从小到大及车辆装载率从大到下进行排序,取第一条优化路线作为最优路线。如该最优路线为a2→a5→a6→a1→a9→b3。调度员可将这条最优路线与车辆c4绑定作为第一个车辆运输任务下发。
对于已形成车辆运输任务的货物信息及车辆信息,在其生成运输任务的同时,从货物信息数据表及车辆信息数据表中删除,刷新该货物信息数据表及车辆信息数据表。
上述为一个车辆运输任务的生产过程,显然,上述第一个目的地小组中的货物信息还没有被指派完。因此,还需要对该第一个目的地小组进行车辆及路线的安排。由于该第一个目的地小组中的10个起始地中有5个已经生成运输任务,因此,还剩5个起始地的货物没有安排车辆及路线。对货物信息数据表进行刷新后,该第一目的地小组仍然是货物信息数据表的第一条数据。而在车辆信息数据表中,位于第一条数据的是车辆c1。
因此,第二个车辆运输任务的对象为第一目的地小组及车辆c1,该第二个车辆运输任务的确定方法与上述第一个车辆运输任务的确定方法一致,需达到车辆c1的装置率要求及路线最优。
按照上述方法,依次对排序后的各目的地小组(如b3、b2、b4、b1、b5、b6、b7、b10、b8、b9)中的货物进行车辆指派,生成运输任务,直到车辆信息数据表中的车辆指派完或各目的地小组中的货物安排完。
实施例二
本发明还提供了实现上述基于目的地的物流调度方法的装置,请参看图3,该装置包括:
基础信息建立模块1,用于服务端建立并动态更新车辆信息基础表和货物信息基础表,并建立车辆信息基础表和货物信息基础表的关键字段的索引文件,车辆信息基础表至少包含车辆ID、车辆仓位容积在内的关键字段信息,货物信息基础表至少包含货物ID、货量、起始地、目的地在内的关键字段信息;
货物信息预处理模块2,用于服务端接收物流调度中的多条货物寄送请求,从中获取货物ID,利用索引文件的货物ID关键字段索引货物信息基础表,得到相应的货物信息,将货物信息按目的地进行分组,统计各组中的货物总量,并按货物总量的大小进行排序,得到排序后的包含多个目的地小组的货物信息数据表;
车辆信息预处理模块3,用于将车辆信息基础表按所述车辆仓位容积的大小及进行排序,得到车辆信息数据表;车辆信息基础表的排序类型与所述货物总量的排序类型一致,所述排序类型为正序或倒序;
运输任务生成模块4,用于服务端从货物信息数据表读取第一个目的地小组数据及从车辆信息数据表中读取第一条车辆数据,按照预设的每条路线途径点的数量限制及车辆装载率要求,自动生成到达目的地的优化路线及车辆运输任务;去除已生成车辆运输任务的货物信息及车辆,更新所述货物信息数据表及车辆信息数据表;重复进行运输任务生成的操作,直至车辆不足或所述货物寄送请求均已处理。
其中,运输任务生成模块4进一步包括:
装载率判断模块401,用于遍历从一目的地小组数据的m个起始地中提取n-1个起始地及对应的货量的组合,并计算每个组合的总货量,逐个判断总货量是否超出车辆数据中的车辆ID对应的车辆仓位容积及载重,若是,则舍弃;若否,则保留;该目的地小组数据包括一个目的地、m个起始地及起始地对应的货量,每条路线途径点的数量小于等于n,n≤m;车辆数据包括一车辆ID、车辆ID对应的车辆仓位容积及载重;
优化路线生成模块402,用于提取所有保留的组合中符合预设车辆装载率的前10%个组合;依次从中读取一个组合,将该组合中的所有起始地进行排序组合,取总里程最短的组合,作为组合的优化路线;总里程为一排序后的组合与目的地组成一运输路线的里程数;重复进行组合的优化路线生成操作,直至得到所述前10%个组合的优化路线;
最终路线生成模块403,用于将得到的所有优化路线按总里程从小到大及车辆装载率从大到下进行排序,取第一条所述优化路线作为一个车辆运输任务所需的路线。
装载率判断模块401进一步包括:
超载处理模块,用于当每个组合的总货量均超出所述车辆ID对应的车辆仓位容积及载重时,重新获取从m个起始地中提取n-2个起始地及对应的货量的组合,并计算每个组合的总货量,逐个判断总货量是否超出该车辆ID对应的车辆仓位容积及载重;若总货量仍均超出上述要求,则逐渐减少从m各起始地中提取的起始地数量,直至从m个起始地中提取1个起始地及对应的货量。
上述装置为虚拟装置,该装置中的基础信息建立模块1、货物信息预处理模块2、车辆信息预处理模块3及运输任务生成模块4可由计算机程序编辑而成,可构成一套物流调度***,根据上报的货物信息及车辆信息,将货物信息按目的地进行分组,自动生成每个目的地小组的满足车辆装载率要求的优化运输路线,一方面解决中小物流公司痛点,为中小物流公司节约人力成本、运输沟通成本和IT成本;另一方面,操作方便,大大降低了新人上手的难度。
由于上述基础信息建立模块1、货物信息预处理模块2、车辆信息预处理模块3及运输任务生成模块4由计算机程序编辑而成,也就是说基础信息建立模块1、货物信息预处理模块2、车辆信息预处理模块3及运输任务生成模块4由计算机可读程序代码组成。因此,可将该程序代码存储的电子设备中。
该电子设备包括存储器和处理器,该存储器中存储上述计算机可读程序代码,当该计算机可读程序代码被处理器执行时,使得该处理器执行如实施例一中所述的物流调度的方法中的步骤。
该计算机可读程序代码也可以存储在存储介质中,如ROM、RAM。当该计算机可读程序代码被一个或多个处理器执行时,使得该处理器执行如实施例一中所述的物流调度的方法中的步骤。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式。即使对本发明作出各种变化,倘若这些变化属于本发明权利要求及其等同技术的范围之内,则仍落入在本发明的保护范围之中。