一种带软时间窗物流运输调度的路径计算方法及装置与流程

文档序号:12471444阅读:465来源:国知局
一种带软时间窗物流运输调度的路径计算方法及装置与流程

本发明涉及智能交通技术领域,更具体的说,是涉及一种带软时间窗物流运输调度的路径计算方法及装置。



背景技术:

随着经济全球化的发展,带动了物流业的发展,使其显得越来越重要;而物流配送占据着物流运输中的极大比重,但在现实中会由于交通、天气等原因而无法保证在客户所制定的时间区内完成配送,因此,提出了带软时间窗的物流调度方法,即在基本的车辆路径问题上增加时间窗约束条件,允许了物流运输车辆提前到达或者迟到,实现了在成本与顾客满意之间找到了一个较为理想的权衡点。

目前,解决带软时间窗的物流调度问题的算法,主要是通过模拟每一个配送人员进行本次货物配送所形成的配送路径,并在比较形成的多条配送路径后,从中获得最优的配送路径,尽量满足了顾客对货物到达时间的制定;然而现有的计算方法,由于必须在模拟完一个配送人员达到一个配送点后,才能对下一个配送人员到达一个配送点的路径进行模拟,直到本次包含的所有配送人员遍历完全部的配送点后,才能通过比较得出最优的配送路径,进而使得完成一次搜索路径任务的速度较为缓慢,导致无法快速地获得车辆运输过程中最优的配送路径。



技术实现要素:

有鉴于此,本发明提供了一种带软时间窗物流运输调度的路径计算方法及装置,进而提高算法的搜索速度,快速获得最优配送路径。

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

一种带软时间窗物流运输调度的路径计算方法,应用于多个从服务器,包括:

多个所述从服务器并行接收主服务器发送来的出发指令及其他所述从服务器的信息素;

多个所述从服务器分别更新各自对应的子蚁群参数,任一所述子蚁群参数包括配送位置点信息、路径选择的启发式因子、禁忌表及可用节点列表,其中,所述配送位置点信息包括配送位置点的个数、所处位置以及各个配送位置点上的初始信息素值,所述禁忌表保存所述子蚁群中任一蚂蚁已经经过的配送位置点,所述可用节点列表保存所述子蚁群中任一蚂蚁未经过的配送位置点;

多个所述从服务器分别依据各自对应的所述子蚁群中每一只蚂蚁的所述路径选择的启发式因子、禁忌表、可用节点列表,以及其他所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息;

多个所述从服务器分别比较从各自对应的所述子蚁群中获取的多条所述第一优化路径信息,获得各自最小的路径信息,作为多个所述从服务器各自从对应的所述子蚁群中获取的第一最优路径信息;

多个所述从服务器分别更新各自从对应的所述子蚁群中获取的所述第一最优路径信息上的信息素;

多个所述从服务器分别将各自获得的所述第一最优路径信息及信息素,发送给所述主服务器,作为所述主服务器获得当前最优路径的依据。

优选地,所述多个所述从服务器分别依据各自对应的所述子蚁群中每一只蚂蚁的所述路径选择的启发式因子、禁忌表、可用节点列表,以及其他所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,包括:

多个所述从服务器分别使各自对应的所述子蚁群中的每一只蚂蚁依次从起始位置点出发;

多个所述从服务器分别利用各自的所述路径选择的启发式因子及接收到的其他所述从服务器的信息素,计算各自对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,其中,所述下一步允许的配送位置点为所述当前配送蚂蚁的可用节点列表中的任一配送位置点;

多个所述从服务器分别更新各自对应的所述子蚁群中所述当前配送蚂蚁的第二优化路径信息,并返回所述多个所述从服务器分别利用各自的所述路径选择的启发式因子及接收到的其他所述从服务器的信息素,计算各自对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,直到多个所述从服务器各自对应的所述子蚁群中每一只蚂蚁均移动一个所述配送位置点;

在多个所述从服务器各自对应的所述子蚁群中每一只蚂蚁均移动一个所述配送位置点时,返回所述多个所述从服务器分别利用各自的所述路径选择的启发式因子及接收到的其他所述从服务器的信息素,计算各自对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,直到多个所述从服务器各自对应的所述子蚁群中每一只蚂蚁均遍历完所述配送位置点信息中包含的全部配送位置点;

多个所述从服务器分别依次获取对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,其中,所述第一优化路径信息由多个所述第二优化路径信息组成。

优选地,所述多个所述从服务器分别更新各自从对应的所述子蚁群中获取的所述第一最优路径信息上的信息素,包括:

多个所述从服务器分别依据信息素更新公式:

<mrow> <msub> <mi>&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>n</mi> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&rho;</mi> <mo>)</mo> </mrow> <msub> <mi>&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>+</mo> <mi>&rho;</mi> <mo>&CenterDot;</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msubsup> <mi>&Delta;&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>k</mi> </msubsup> </mrow>

当且仅当本次循环中蚂蚁k经过i,j,否则

当且仅当本次循环i,j属于局部最优路径Lmin,否则

更新各自对应的所述第一最优路径信息上的信息素,其中,m为任一蚁群中蚂蚁的数目,n为迭代次数,τij(t)为t时刻在ij连线上配送位置点ij间残留的信息素量,τij(t+n)为配送位置点第n次迭代后ij连线上配送位置点ij间残留的信息素量,dij为配送位置点ij之间的距离,Δτij(t)为任一蚂蚁k在t时刻从配送位置点i到j的信息素残留量,ρ为信息素的挥发程度,Lk为任一蚂蚁k在一次循环中所走路径的长度。

一种带软时间窗物流运输调度的路径计算方法,应用于主服务器,包括:

发送出发指令到多个从服务器,其中,多个所述从服务器中的任一从服务器对应于一个子蚁群,且所述出发指令为多个所述从服务器分别从各自对应的所述子蚁群中获取第一最优路径信息及信息素的依据;

接收多个所述从服务器分别发送来的所述第一最优路径信息及信息素;

将接收到的每一个所述从服务器发送来的所述信息素发送给其他所述从服务器中所对应的子蚁群;

将接收到的多个所述从服务器分别发送来的所述第一最优路径信息与当前最优长度进行比较,获得当前最优路径,作为下一次迭代的当前最优长度,并返回所述发送出发指令到多个从服务器,直到当前迭代次数达到预设的最大迭代次数,输出最优路径。

一种服务器集群,包括:

n个从服务器;

所述服务器集群控制n个所述从服务器并行接收主服务器发送来的出发指令及其他所述从服务器的信息素;

其中,每一个所述从服务器,用于接收主服务器发送来的出发指令及其他n-1个所述从服务器的信息素,更新对应的子蚁群参数,依据对应的所述子蚁群中每一只蚂蚁的所述子蚁群参数中的路径选择的启发式因子、禁忌表、可用节点列表,以及其他n-1个所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,比较对应的所述子蚁群中获取的多条所述第一优化路径信息,获得对应的最小的路径信息,作为从对应的所述子蚁群中获取的第一最优路径信息,更新从对应的所述子蚁群中获取的所述第一最优路径信息上的信息素,将获得的所述第一最优路径信息及信息素,发送给所述主服务器;

其中,所述子蚁群参数包括配送位置点信息、路径选择的启发式因子、禁忌表及可用节点列表,其中,所述配送位置点信息包括配送位置点的个数、所处位置以及各个配送位置点上的初始信息素值,所述禁忌表保存所述子蚁群中任一蚂蚁已经经过的配送位置点,所述可用节点列表保存所述子蚁群中任一蚂蚁未经过的配送位置点。

优选地,所述每一个所述从服务器依据对应的所述子蚁群中每一只蚂蚁的所述子蚁群参数中的路径选择的启发式因子、禁忌表、可用节点列表,以及其他n-1个所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,具体用于:

使对应的所述子蚁群中的每一只蚂蚁依次从起始位置点出发;

利用对应的所述子蚁群参数中的所述路径选择的启发式因子及接收到的其他n-1个所述从服务器的信息素,计算对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,其中,所述下一步允许的配送位置点为所述当前配送蚂蚁的可用节点列表中的任一配送位置点;

更新对应的所述子蚁群中所述当前配送蚂蚁的第二优化路径信息,并返回所述利用对应的所述子蚁群参数中的所述路径选择的启发式因子及接收到的其他n-1个所述从服务器的信息素,计算对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,直到对应的所述子蚁群中每一只蚂蚁均移动一个所述配送位置点;

在对应的所述子蚁群中每一只蚂蚁均移动一个所述配送位置点时,返回所述利用对应的所述子蚁群参数中的所述路径选择的启发式因子及接收到的其他n-1个所述从服务器的信息素,计算对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,直到对应的所述子蚁群中每一只蚂蚁均遍历完所述配送位置点信息中包含的全部配送位置点;

依次获取对应的所述子蚁群中的每一只蚂蚁产生的所述第一优化路径信息,其中,所述第一优化路径信息由多个所述第二优化路径信息组成。

优选地,所述每一个所述从服务器更新从对应的所述子蚁群中获取的所述第一最优路径信息上的信息素,具体用于:

依据信息素更新公式:

<mrow> <msub> <mi>&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>n</mi> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&rho;</mi> <mo>)</mo> </mrow> <msub> <mi>&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>+</mo> <mi>&rho;</mi> <mo>&CenterDot;</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msubsup> <mi>&Delta;&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>k</mi> </msubsup> </mrow>

当且仅当本次循环中蚂蚁k经过i,j,否则

当且仅当本次循环i,j属于局部最优路径Lmin,否则

更新对应的所述第一最优路径信息上的信息素,其中,m为任一蚁群中蚂蚁的数目,n为迭代次数,τij(t)为t时刻在ij连线上配送位置点ij间残留的信息素量,τij(t+n)为配送位置点第n次迭代后ij连线上配送位置点ij间残留的信息素量,dij为配送位置点ij之间的距离,Δτij(t)为任一蚂蚁k在t时刻从配送位置点i到j的信息素残留量,ρ为信息素的挥发程度,Lk为任一蚂蚁k在一次循环中所走路径的长度。

一种主服务器,包括:

发送模块,用于发送出发指令到n个从服务器,将接收到的每一个所述从服务器发送来的所述信息素发送给其他n-1个所述从服务器中所对应的子蚁群,其中,n个所述从服务器中的任一从服务器对应于一个子蚁群,且所述出发指令为n个所述从服务器分别从各自对应的所述子蚁群中获取第一最优路径信息及信息素的依据;

接收模块,用于接收n个所述从服务器分别发送来的所述第一最优路径信息及信息素;

比较模块,用于将n个所述从服务器分别发送来的所述第一最优路径信息与当前最优长度进行比较,获得当前最优路径,作为下一次迭代的当前最优长度;

判断模块,用于判断当前迭代次数是否等于预设的最大迭代次数;

发送模块,还用于在当前迭代次数小于所述预设的最大迭代次数时,发送出发指令到n个从服务器;

输出模块,用于在当前迭代次数等于所述预设的最大迭代次数时,输出当前最优路径,作为本次配送的最优路径。

经由上述的技术方案可知,与现有技术相比,本发明提供了一种带软时间窗物流运输调度的路径计算方法及装置,应用于多个从服务器,通过在并行接收主服务器发送来的出发指令以及其他所述从服务器的信息素时,多个所述从服务器分别依据各自对应的所述子蚁群中每一只蚂蚁的路径选择的启发式因子、禁忌表、可用节点列表,以及其他所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,从而实现了将搜索任务同时划分给多个从服务器中的子蚁群,使其能够并行地完成搜索,提高了搜索的速度,之后,多个所述从服务器分别比较从各自对应的所述子蚁群中获取的多条所述第一优化路径信息,获得各自的第一最优路径信息,并各自更新所述第一最优路径信息上的信息素,之后,将各自第一最优路径信息及对应信息素一起发送给主服务器,进而缩短了主服务器比较最优路径信息条数的时间,使其能够快速获得物流配送的最优配送路径。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种应用于多个从服务器的带软时间窗物流运输调度的路径计算方法流程图;

图2为本发明实施例提供的另一种应用于多个从服务器的带软时间窗物流运输调度的路径计算方法流程图;

图3为本发明实施例提供的一种应用于主服务器的带软时间窗物流运输调度的路径计算方法流程图;

图4为本发明实施例提供的一种服务器集群的结构示意图;

图5为本发明实施例提供的一种主服务器的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种带软时间窗物流运输调度的路径计算方法,请参见附图1,应用于多个从服务器,其中,每一个所述从服务器进行一次迭代搜索的执行步骤一致,所述方法具体包括以下步骤:

步骤101:多个所述从服务器并行接收主服务器发送来的出发指令及其他所述从服务器的信息素;

具体的,在计算带软时间窗物流运输调度的最优路径时,预先建立带软时间窗的物流运输调度数学模型:

<mrow> <mi>min</mi> <mi> </mi> <mi>z</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mo>(</mo> <mrow> <msub> <mi>C</mi> <mi>v</mi> </msub> <mo>+</mo> <msub> <mi>C</mi> <mi>d</mi> </msub> </mrow> <mo>)</mo> <msub> <mi>d</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>+</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>max</mi> <mo>{</mo> <mrow> <mo>(</mo> <msub> <mi>et</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>t</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mn>0</mn> <mo>}</mo> <mo>+</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>max</mi> <mo>{</mo> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>lt</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mn>0</mn> <mo>}</mo> </mrow>

<mrow> <mi>m</mi> <mo>=</mo> <mo>&lsqb;</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>g</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&alpha;</mi> <mi>G</mi> <mo>&rsqb;</mo> <mo>+</mo> <mn>1</mn> </mrow>

且上述模型满足以下约束条件:

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>g</mi> <mi>i</mi> </msub> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mi>k</mi> </mrow> </msub> <mo>&le;</mo> <mi>G</mi> <mo>,</mo> <mi>k</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>m</mi> </mrow>

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mi>N</mi> </munderover> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>0</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>c</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>&le;</mo> <mi>L</mi> <mo>,</mo> <mi>k</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>m</mi> </mrow>

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mi>k</mi> </mrow> </msub> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>N</mi> </mrow>

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msub> <mi>y</mi> <mrow> <mn>0</mn> <mi>k</mi> </mrow> </msub> <mo>=</mo> <mi>m</mi> </mrow>

t0=T0=0

ti≥0 i=1,2,...,N

Ti≥0 i=1,2,...,N

eti<ti<lti i=1,2,...,N

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>y</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>,</mo> <mi>j</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>N</mi> <mo>;</mo> <mi>K</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>m</mi> </mrow>

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mi>k</mi> </mrow> </msub> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>N</mi> <mo>;</mo> <mi>K</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>m</mi> </mrow>

其中,N为配送目标个数,且N为正整数;m为配送中心发出的车辆数,且m为正整数;gi为第i个配送目标的需求量,且gi=1,2,…,N;[]代表不大于括号内的数字的最大正整数;α为对装车和卸车的困难程度以及约束的估计,且α大于零,小于1;G为每一辆车最大载重约束;Cv为单位距离车辆行驶费用,Cd为司机单位费用;dij为车辆k行驶了配送目标i到j的路程;c1为调度车辆早到配送目标地点的惩罚系数,c2为调度车辆晚到配送目标地点的惩罚系数;eti为任务i的允许最早开始时间,lti为任务i的允许最迟开始时间,ti为车辆到达点i的时间;

之后,采用并行蚂蚁算法对所述模型进行求解,首先将数只蚂蚁平均分配给多个从服务器,每一个所述从服务器能够控制其内所含的子蚁群独立完成本次路径搜索的过程,且多个所述从服务器之间相互独立,但并行接收主服务器发送来的出发指令及除本身外的其他所述从服务器发送来的信息素,其中,当且仅当在所述主服务器控制多个所述服务器并行独立地执行第一次迭代搜索时,多个所述从服务器接收到的其他所述从服务器发送来的信息素为空。

步骤102:多个所述从服务器分别更新各自对应的子蚁群参数,任一所述子蚁群参数包括配送位置点信息、路径选择的启发式因子、禁忌表及可用节点列表,其中,所述配送位置点信息包括配送位置点的个数、所处位置以及各个配送位置点上的初始信息素值,所述禁忌表保存所述子蚁群中任一蚂蚁已经经过的配送位置点,所述可用节点列表保存所述子蚁群中任一蚂蚁未经过的配送位置点;

具体的,在多个所述从服务器并行接收到主服务器发送来的出发指令及其他所述从服务器发送来的信息素之后,多个所述从服务器各自开始控制其内所含的子蚁群进行路径搜索任务的第一步,即分别更新各自对应的子蚁群参数,进而实现主服务器在控制多个所述从服务器进行多次迭代搜索时,多个所述从服务器能够各自获得不同的路径搜索结果,同时,多个所述从服务器根据自身设置的所述子蚁群参数中的路径选择的启发式因子及接收到的其他所述从服务器发送来的信息素,减少了多个从服务器之间获得的路径结果相同的几率。

步骤103:多个所述从服务器分别依据各自对应的所述子蚁群中每一只蚂蚁的所述路径选择的启发式因子、禁忌表、可用节点列表,以及其他所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息;

具体的,在执行一次迭代搜索时,多个所述从服务器中的每一个从服务器会依次获取得到其内所含的子蚁群中每一只蚂蚁经过所述配送位置点信息中全部的配送位置点后,所产生的第一优化路径信息。

步骤104:多个所述从服务器分别比较从各自对应的所述子蚁群中获取的多条所述第一优化路径信息,获得各自最小的路径信息,作为多个所述从服务器各自从对应的所述子蚁群中获取的第一最优路径信息;

具体的,在多个所述从服务器并行独立地获得了各自控制的子蚁群中的每一只蚂蚁产生的第一优化路径信息之后,多个所述从服务器会各自比较自己对应子蚁群所获得的多条所述第一优化路径信息,并从中得到路径最短的一条作为第一最优路径信息。

步骤105:多个所述从服务器分别更新各自从对应的所述子蚁群中获取的所述第一最优路径信息上的信息素;

具体的,由于在多个所述从服务器各自独立地更新对应的子蚁群参数中的配送位置点信息时,使得每一个所述从服务器内的配送位置点上各自分配了初始信息素值,因此,在每一个所述从服务器通过比较得到了各自的第一最优路径信息之后,会再次更新其内各个配送位置点上的信息素,进而利用所述信息素记录得到的第一最优路径信息,其中,每一个所述从服务器为其内的配送位置点分配的初始信息素值,可以均匀分配,也可以不均匀分配。

步骤106:多个所述从服务器分别将各自获得的所述第一最优路径信息及信息素,发送给所述主服务器,作为所述主服务器获得当前最优路径的依据;

具体的,在多个所述从服务器各自独立地获得了第一最优路径信息及信息素时,需要各自将获得的对应的第一最优路径信息及信息素发送给所述主服务器,以便主服务器对返回的搜索结果进行分析汇总,获得最终的最优路径。

本发明实施例公开的带软时间窗物流运输调度的路径计算方法中,应用于多个从服务器,通过多个从服务器在并行接收了主服务器发送来的出发指令以及其他所述从服务器的信息素时,相互独立地依据各自对应的所述子蚁群中每一只蚂蚁的路径选择的启发式因子、禁忌表、可用节点列表,以及其他所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,从而实现了将搜索任务同时划分给多个从服务器中的子蚁群,使其能够并行地完成路径搜索,提高了搜索的速度,之后,多个所述从服务器比较各自获得的多条所述第一优化路径信息,得到各自的第一最优路径信息,并各自更新所述第一最优路径信息上的信息素,之后,将各自的第一最优路径信息及对应信息素一起发送给主服务器,进而缩短了主服务器比较优化路径信息条数的时间,使其能够快速获得物流配送的最优配送路径。

本发明实施例提供了另一种带软时间窗物流运输调度的路径计算方法,请参见附图2,应用于多个从服务器,其中,每一个所述从服务器进行一次迭代搜索的执行步骤一致,所述方法具体包括以下步骤:

步骤201:多个所述从服务器并行接收主服务器发送来的出发指令及其他所述从服务器的信息素。

步骤202:多个所述从服务器分别更新各自对应的子蚁群参数,任一所述子蚁群参数包括配送位置点信息、路径选择的启发式因子、禁忌表及可用节点列表,其中,所述配送位置点信息包括配送位置点的个数、所处位置以及各个配送位置点上的初始信息素值,所述禁忌表保存所述子蚁群中任一蚂蚁已经经过的配送位置点,所述可用节点列表保存所述子蚁群中任一蚂蚁未经过的配送位置点。

步骤203:多个所述从服务器分别使各自对应的所述子蚁群中的每一只蚂蚁依次从起始位置点出发;

具体的,在多个所述从服务器并行独立地进行路径搜索时,每一个所述从服务均令其内所含的子蚁群中的每一只蚂蚁依次顺序地从各自的起始位置点出发,以便后续依次获得每一只蚂蚁完成搜索所产生的路径信息。

步骤204:多个所述从服务器分别利用各自的所述路径选择的启发式因子及接收到的其他所述从服务器的信息素,计算各自对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,其中,所述下一步允许的配送位置点为所述当前配送蚂蚁的可用节点列表中的任一配送位置点;

具体的,多个所述从服务器中的任一从服务器按照其内所含的已经处于起始位置点的子蚁群,从中选择一只蚂蚁作为当前配送蚂蚁,并依据配送位置点更新公式:

当且仅当j∈Allowedk,否则

获得自身对应的所述子蚁群中的当前配送蚂蚁下一步允许的配送位置点,其中,i为当前配送蚂蚁k当前所在配送位置点,j为当前配送蚂蚁k下一步允许的配送位置点,α为当前配送蚂蚁k在运动过程中累积的信息素,β为路径选择的启发式因子,dij表示配送位置点i到j之间的距离,为当前配送蚂蚁k在t时刻从配送位置点i到j的概率;Q1和Q2均为一个常数;Allowedk为可用节点列表,且Allowedk={1,2,...,n}-Tabuk;Tabuk为当前配送蚂蚁k下一步前选择过的配送位置点的禁忌表;为β在当前配送蚂蚁k由配送位置点i转移到j的作用程度;

其次,将选择出来的当前配送蚂蚁下一步要经过的配送位置点从所述可用节点列表中删除,并将其添加到所述禁忌表中,以便后续当前配送蚂蚁能够依据配送位置点更新公式遍历完对应从服务器中包含的全部配送位置点;

由于多个所述从服务器自身设置的路径选择的启发式因子不同,且当前配送蚂蚁在运动过程中经过的配送位置点上累积的信息素不同,使得多个所述从服务器在各自并行独立地执行路径搜索任务时,可以有效避免多个从服务器在一次迭代搜索过程中获得的路径结果一致的情况发生,同时,因为蚂蚁会趋向于选择具有较高信息素强度值的路径,所以接收到的除自身外的其他从服务器发送来的信息素,可以根据其他从服务器获得的第一最优路径信息上的信息素来调整自身子蚁群中每一只蚂蚁下一步选择的配送位置点,进而调整了路径的选择;其中,当前配送蚂蚁在运动过程中经过的配送位置点上累积的信息素包括对应从服务器更新子蚁群参数所包括的配送位置点信息中的各个配送位置点上的初始信息素值,以及接收到的除自身外的其他从服务器发送来的信息素;

此外,仅在所述主服务器控制多个所述服务器并行独立地执行第一次迭代搜索时,多个所述从服务器接收到的其他所述从服务器发送来的信息素为空,即当前配送蚂蚁在运动过程中经过的配送位置点上累积的信息素只包括对应从服务器更新子蚁群参数所包括的配送位置点信息中的各个配送位置点上的初始信息素值。

步骤205:多个所述从服务器分别更新各自对应的所述子蚁群中所述当前配送蚂蚁的第二优化路径信息;

具体的,在多个所述从服务器中的任一从服务器所包含的当前配送蚂蚁从当前所处的配送位置点移动到下一个允许的配送位置点后,对应的从服务器需要将当前所处的配送位置点、下一个允许的配送位置点及这两个配送点之间的距离记录保存,作为一个第二优化路径信息,以便后续组成对应从服务器完成一次迭代搜索后获得的完整路径结果。

步骤206:判断多个所述从服务器各自对应的所述子蚁群中每一只蚂蚁是否均移动一个所述配送位置点,若是,则执行步骤207,若否,则返回执行步骤204;

具体的,由于多个所述从服务器中的任一从服务器所含的每一只蚂蚁需要依次向前均移动一个配送位置点后,才能再次使子蚁群中的每一只蚂蚁依次从当前所处的配送位置点移动到各自的下一个允许的配送位置点,因此,需要在确定任一从服务器中的每一只蚂蚁均移动了一个配送位置点后,才能进行后续的移动操作。

步骤207:多个所述从服务器分别利用各自的所述路径选择的启发式因子及接收到的其他所述从服务器的信息素,计算各自对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表;

具体的,在确定任一从服务器中的每一只蚂蚁均移动了一个配送位置点后,继续从所述从服务器所含的子蚁群中重新选择一只蚂蚁作为当前配送蚂蚁,使其依据配送位置点更新公式,获得自身对应的所述子蚁群中的当前配送蚂蚁下一步允许的配送位置点,之后,将选择出来的当前配送蚂蚁下一步要经过的配送位置点从所述可用节点列表中删除,并将其添加到所述禁忌表中。

步骤208:多个所述从服务器分别更新各自对应的所述子蚁群中所述当前配送蚂蚁的第二优化路径信息;

具体的,记录保存多个所述从服务器中的任一从服务器将当前所处的配送位置点、下一个允许的配送位置点及这两个配送点之间的距离记录保存,作为一个第二优化路径信息。

步骤209:判断多个所述从服务器各自对应的所述子蚁群中每一只蚂蚁是否均遍历完所述配送位置点信息中包含的全部配送位置点,若是,则执行步骤2010,若否,则返回执行步骤207。

步骤2010:多个所述从服务器分别依次获取对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,其中,所述第一优化路径信息由多个所述第二优化路径信息组成;

具体的,在多个所述从服务器各自对应的所述子蚁群中每一只蚂蚁均遍历完所述配送位置点信息中包含的全部配送位置点之后,多个所述从服务器中均记录保存了各自对应子蚁群中每一只蚂蚁经过全部配送位置点所产生的第一优化路径信息。

步骤2011:多个所述从服务器分别比较从各自对应的所述子蚁群中获取的多条所述第一优化路径信息,获得各自最小的路径信息,作为多个所述从服务器各自从对应的所述子蚁群中获取的第一最优路径信息。

步骤2012:多个所述从服务器分别更新各自从对应的所述子蚁群中获取的所述第一最优路径信息上的信息素;

具体的,多个所述从服务器中的任一从服务器依据信息素更新公式:

<mrow> <msub> <mi>&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>n</mi> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&rho;</mi> <mo>)</mo> </mrow> <msub> <mi>&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>+</mo> <mi>&rho;</mi> <mo>&CenterDot;</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msubsup> <mi>&Delta;&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>k</mi> </msubsup> </mrow>

当且仅当本次循环中蚂蚁k经过i,j,否则

当且仅当本次循环i,j属于局部最优路径Lmin,否则

更新各自对应的所述第一最优路径信息上的信息素,其中,m为任一从服务器所含子蚁群中蚂蚁的数目,n为迭代次数,τij(t)为t时刻在ij连线上配送位置点ij间残留的信息素量,τij(t+n)为配送位置点第n次迭代后ij连线上配送位置点ij间残留的信息素量,dij为配送位置点ij之间的距离,Δτij(t)为当前配送蚂蚁k在t时刻从配送位置点i到j的信息素残留量,ρ为信息素的挥发程度,Lk为当前配送蚂蚁k在一次迭代搜索循环中所走路径的长度。

步骤2013:多个所述从服务器分别将各自获得的所述第一最优路径信息及信息素,发送给所述主服务器,作为所述主服务器获得当前最优路径的依据。

本发明实施例公开的带软时间窗物流运输调度的路径计算方法,应用于多个从服务器,通过多个所述从服务器中的任一从服务器的启发式因子及接收到的其他所述从服务器的信息素,计算各自对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,有效避免多个从服务器在一次迭代搜索过程中获得的路径结果一致的情况发生,之后,将选择出来的当前配送蚂蚁下一步要经过的配送位置点从所述可用节点列表中删除,并将其添加到所述禁忌表中,以便后续当前配送蚂蚁能够依据配送位置点更新公式遍历完对应从服务器中包含的全部配送位置点。

本发明实施例提供了另一种带软时间窗物流运输调度的路径计算方法,请参见附图3,应用于主服务器,所述方法具体包括以下步骤:

步骤301:发送出发指令到多个从服务器,其中,多个所述从服务器中的任一从服务器对应于一个子蚁群,且所述出发指令为多个所述从服务器分别从各自对应的所述子蚁群中获取第一最优路径信息及信息素的依据;

具体的,预先建立带软时间窗的物流运输调度模型,所述主服务器通过发送所述出发指令到多个所述从服务器,控制多个所述从服务器会并行独立地进行本次迭代搜索即对所述带软时间窗的物流运输调度模型进行求解。

步骤302:接收多个所述从服务器分别发送来的所述第一最优路径信息及信息素;

具体的,在多个所述从服务器并行独立地进行本次迭代搜索的过程中,多个所述从服务器中的任一从服务器会获得各自的所述第一最优路径信息及在所述第一最优路径信息上分布的信息素值,之后,将分别将各自对应的所述第一最优路径信息及信息素发送给所述主服务器,以便主服务器对本次迭代搜索的路径结果进行分析汇总。

步骤303:将接收到的每一个所述从服务器发送来的所述信息素发送给其他所述从服务器中所对应的子蚁群;

具体的,为了避免多个所述从服务器在进行一次迭代搜索时,获得的路径结果相同,主服务器需要将多个所述从服务器发送来的所述第一最优路径信息上分布的信息素值再次发送给除发送该信息素值本身的从服务器外的其他多个从服务器,以便其他多个从服务器能够根据别的从服务器获得的局部最优路径所分布的信息素,来调整自身在下一次迭代搜索时每一只蚂蚁可以选择不同于上一迭代搜索所形成的路径结果的配送位置点,进而获得较上一次迭代搜索更优的路径结果。

步骤304:将接收到的多个所述从服务器分别发送来的所述第一最优路径信息与当前最优长度进行比较,获得当前最优路径,作为下一次迭代的当前最优长度;

具体的,将多个所述从服务器分别发送来的第一最优路径信息与主服务器预存的当前最优长度进行大小比较,若多个所述第一最优路径信息中有长度小于所述当前最优长度的路径,则替换所述当前最优长度的路径为当前最优路径,同时,将所述当前最优路径作为下一次迭代的当前最优长度,以便检验是否下一次迭代的路径结果中存在最优路径;若多个所述第一最优路径信息中有长度大于或等于所述当前最优长度的路径,则保持所述当前最优长度的路径不变,并依旧作为下一次迭代搜索的比较标准;

此外,当且仅当所述主服务器控制多个所述从服务器进行第一次迭代搜索时,所述主服务器预存的当前最优长度为空,此时,所述主服务器通过比较多个所述从服务器进行第一次迭代搜索所获得的第一最优路径信息,来获得当前最优长度的初值。

步骤305:判断当前迭代次数是否等于预设的最大迭代次数,若等于,则执行步骤306,若小于,则返回执行步骤301;

具体的,为了保证配送的路径结果为最优路径,需要进行多次的迭代搜索,即所述主服务器多次控制多个所述从服务器各自并行独立地进行迭代搜索任务,获得各自的局部最优路径结果及分布在该路径上的信息素值。

步骤306:输出当前最优路径;

具体的,在当前迭代次数等于预设的最大迭代次数时,就将通过比较得到的当前最优路径作为最终结果输出。

本发明实施例公开的带软时间窗物流运输调度的路径计算方法中,主要应用于主服务器,在预先建立带软时间窗的物流运输调度模型后,通过将出发指令同时发送给多个从服务器,能够获得多个所述从服务器各自所对应的多个子蚁群的第一最优路径信息及信息素,从而实现了将搜索任务同时划分给多个从服务器中的多个子蚁群,使其能够并行地完成搜索,提高了搜索的速度,使其能够快速获得物流配送的最优配送路径。

本发明实施例提供了一种服务器集群,请参见附图4,所述服务器集群包括:

n个从服务器;

所述服务器集群401控制n个所述从服务器并行接收主服务器发送来的出发指令及其他所述从服务器的信息素;

其中,每一个所述从服务器401i,用于接收主服务器发送来的出发指令及其他n-1个所述从服务器的信息素,更新对应的子蚁群参数,依据对应的所述子蚁群中每一只蚂蚁的所述子蚁群参数中的路径选择的启发式因子、禁忌表、可用节点列表,以及其他n-1个所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,比较对应的所述子蚁群中获取的多条所述第一优化路径信息,获得对应的最小的路径信息,作为从对应的所述子蚁群中获取的第一最优路径信息,更新从对应的所述子蚁群中获取的所述第一最优路径信息上的信息素,将获得的所述第一最优路径信息及信息素,发送给所述主服务器;

其中,所述子蚁群参数包括配送位置点信息、路径选择的启发式因子、禁忌表及可用节点列表,其中,所述配送位置点信息包括配送位置点的个数、所处位置以及各个配送位置点上的初始信息素值,所述禁忌表保存所述子蚁群中任一蚂蚁已经经过的配送位置点,所述可用节点列表保存所述子蚁群中任一蚂蚁未经过的配送位置点;

具体的,n个所述从服务器组成了服务器集群401,在接收到主服务器发送来的出发指令时,所述服务器集群401会控制其内的n个所述从服务器并行接收该出发指令,进而各自相互独立地开始执行本次的迭代搜索,同时会将从主服务器接收到的n个所述从服务器的局部最优路径上分布的信息素信息分别发送给除自身外的其他n-1个所述从服务器;

其次,在n个所述从服务器并行接收该出发指令及除自身外的其他n-1个所述从服务器的信息素后,每一个所述从服务器401i会控制各自对应的子蚁群内的蚂蚁进行本次迭代搜索,进而获得各自的局部最优路径,并返回给所述主服务器,以便所述主服务器对接收到的多条局部最优路径进行分析,得到最优路径结果;其中,每一个所述从服务器401i控制自身子蚁群内的蚂蚁进行路径迭代搜索的具体过程为:更新对应的子蚁群参数,即确定本次迭代搜索所涉及的配送位置点的个数、配送位置点所处位置、各个配送位置点上分布的初始信息素值、路径选择的启发式因子以及所述子蚁群内每一只蚂蚁各自对应的禁忌表与可用节点列表,之后,依据从所述子蚁群参数以及接收到的其他n-1个所述从服务器的信息素,来依次获取其内子蚁群中每一只蚂蚁经过全部配送位置点后产生的第一优化路径信息,将获得的多条所述第一优化路径信息进行长短比较,从中选择出最短的一条路径作为该从服务器获取的第一最优路径信息,之后,重新更新该从服务器中所述第一最优路径信息上分布的信息素值,并将该第一最优路径信息及对应产生的信息素均发送给所述主服务器,而在所述主服务器接收到n个所述从服务器各自获得到的所述第一最优路径信息及对应产生的信息素后,才进行后续分析操作,以便能够快速获得最优路径。

本发明实施例公开的服务器集群中,通过控制其内的n个从服务器并行接收主服务器发送来的出发指令及其他所述从服务器的信息素后,各自独立地完成本次迭代搜索任务,从而实现了将搜索任务同时划分给多个从服务器中的子蚁群,使其能够并行地完成路径搜索,提高了搜索的速度,之后,通过n个所述从服务器先各自比较对应子蚁群中蚂蚁所获得的多条局部路径结果,获得一条第一最优路径信息及该路径上分布的信息素,并将其发送到所述主服务器,以缩短了主服务器比较优化路径信息条数的时间,使其能够快速获得物流配送的最优配送路径。

本发明实施例提供的各个单元的工作过程,请参照附图1所对应的流程图,具体工作过程不再赘述。

在上述实施例中所涉及到的n个所述从服务器中的每一个所述从服务器401i,依据对应的所述子蚁群中每一只蚂蚁的所述子蚁群参数中的路径选择的启发式因子、禁忌表、可用节点列表,以及其他n-1个所述从服务器的信息素,依次获取所对应的所述子蚁群中的每一只蚂蚁产生的第一优化路径信息,具体实现过程为:

使对应的所述子蚁群中的每一只蚂蚁依次从起始位置点出发;

利用对应的所述子蚁群参数中的所述路径选择的启发式因子及接收到的其他n-1个所述从服务器的信息素,计算对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,其中,所述下一步允许的配送位置点为所述当前配送蚂蚁的可用节点列表中的任一配送位置点;

更新对应的所述子蚁群中所述当前配送蚂蚁的第二优化路径信息,并返回所述利用对应的所述子蚁群参数中的所述路径选择的启发式因子及接收到的其他n-1个所述从服务器的信息素,计算对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,直到对应的所述子蚁群中每一只蚂蚁均移动一个所述配送位置点;

在对应的所述子蚁群中每一只蚂蚁均移动一个所述配送位置点时,返回所述利用对应的所述子蚁群参数中的所述路径选择的启发式因子及接收到的其他n-1个所述从服务器的信息素,计算对应的所述子蚁群中当前配送蚂蚁下一步允许的配送位置点,并将所述配送位置点保存在与所述当前配送蚂蚁对应的禁忌表,直到对应的所述子蚁群中每一只蚂蚁均遍历完所述配送位置点信息中包含的全部配送位置点;

依次获取对应的所述子蚁群中的每一只蚂蚁产生的所述第一优化路径信息,其中,所述第一优化路径信息由多个所述第二优化路径信息组成;

具体的,对于所述服务器集群401中的每一个从服务器401i在依次获取其内子蚁群中的每一只蚂蚁产生的第一优化路径信息时,会令对应子蚁群中的每一只蚂蚁均从同一个起始位置点出发,并先从对应子蚁群中选择出一只蚂蚁作为当前配送蚂蚁,使其依据预先存储的配送位置点更新公式:

当且仅当j∈Allowedk,否则

获得当前配送蚂蚁下一步允许的配送位置点,其中,i为当前配送蚂蚁k当前所在配送位置点,j为当前配送蚂蚁k下一步允许的配送位置点,α为当前配送蚂蚁k在运动过程中累积的信息素,β为路径选择的启发式因子,dij表示配送位置点i到j之间的距离,为当前配送蚂蚁k在t时刻从配送位置点i到j的概率;Q1和Q2均为一个常数;Allowedk为可用节点列表,且Allowedk={1,2,...,n}-Tabuk;Tabuk为当前配送蚂蚁k下一步前选择过的配送位置点的禁忌表;为β在当前配送蚂蚁k由配送位置点i转移到j的作用程度;

之后,将获得的下一步允许的配送位置点从所述当前配送蚂蚁对应的可用节点列表内删除,并将该点添加到对应的禁忌表中,再使所述当前配送蚂蚁从当前所处的位置点移动到已经计算出来的下一步允许的配送位置点,并记录该移动路径信息,作为一个第二优化路径信息,此时,完成了对该从服务器的子蚁群中一只蚂蚁向前移动一个配送位置点的操作,之后按照该蚂蚁的移动步骤分别对子蚁群中剩余的蚂蚁依次进行配送位置点的移动,直到所述子蚁群中每一只蚂蚁均移动了一个配送位置点后,再对这些蚂蚁进行下一轮的移动操作,直到全部蚂蚁遍历完全部的配送位置点位置,才能获得该服务器子蚁群中每一只蚂蚁经过所有配送点后形成的第一优化路径信息。

本发明实施例中,所述服务器集群401中的每一个从服务器401i能够并行独立地控制各自子蚁群中每一只蚂蚁依据自身更新后获得的路径选择的启发式因子及接收到的其他n-1个所述从服务器的信息素,既能依次获得每一只蚂蚁经过全部配送位置点后所产生的第一优化路径信息,又有效避免了n个从服务器在一次迭代搜索过程中获得的路径结果一致的情况发生。

在上述实施例中所涉及到的n个所述从服务器中的每一个所述从服务器401i更新从对应的所述子蚁群中获取的所述第一最优路径信息上的信息素,具体实现过程为:

每一个所述从服务器401i在获得了各自的第一最优路径信息后,会依据信息素更新公式:

<mrow> <msub> <mi>&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>n</mi> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&rho;</mi> <mo>)</mo> </mrow> <msub> <mi>&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>+</mo> <mi>&rho;</mi> <mo>&CenterDot;</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msubsup> <mi>&Delta;&tau;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> <mi>k</mi> </msubsup> </mrow>

当且仅当本次循环中蚂蚁k经过i,j,否则

当且仅当本次循环i,j属于局部最优路径Lmin,否则

更新各自对应的所述第一最优路径信息上的信息素,其中,m为任一蚁群中蚂蚁的数目,n为迭代次数,τij(t)为t时刻在ij连线上配送位置点ij间残留的信息素量,τij(t+n)为配送位置点第n次迭代后ij连线上配送位置点ij间残留的信息素量,dij为配送位置点ij之间的距离,Δτij(t)为任一蚂蚁k在t时刻从配送位置点i到j的信息素残留量,ρ为信息素的挥发程度,Lk为任一蚂蚁k在一次循环中所走路径的长度。

本发明实施例中,所述服务器集群401中的每一个从服务器401i通过信息素更新公式,实现了对获得的第一最优路径信息上分布的信息素进行更新的过程。

本发明实施例提供了一种主服务器,请参见附图5,包括:

发送模块501,用于发送出发指令到n个从服务器,将接收到的每一个所述从服务器发送来的所述信息素发送给其他n-1个所述从服务器中所对应的子蚁群,其中,n个所述从服务器中的任一从服务器对应于一个子蚁群,且所述出发指令为n个所述从服务器分别从各自对应的所述子蚁群中获取第一最优路径信息及信息素的依据;

具体的,在进行第一次迭代搜索时,所述主服务器向n个所述从服务器发送的信息素为空,之后在进行的多次迭代搜索过程中,所述主服务器均会向n个所述从服务器发送所述出发指令,同时将上一次迭代搜索获得的n个所述从服务器的信息素发送给除自身外的其他n-1个从服务器,以便n个所述从服务器在进行下一次迭代搜索时依据其他n-1个从服务器的信息素适当调整自己的局部路径结果。

接收模块502,用于接收n个所述从服务器分别发送来的所述第一最优路径信息及信息素;

具体的,在所述主服务器向n个所述从服务器并行发送出发指令时,n个所述从服务器会相互独立的进行本次迭代搜索任务,并将各自获得的第一最优路径信息及该路径上分布的信息素均返回给所述主服务器,以供主服务器进行分析汇总。

比较模块503,用于将n个所述从服务器分别发送来的所述第一最优路径信息与当前最优长度进行比较,获得当前最优路径,作为下一次迭代的当前最优长度;

具体的,在所述主服务器控制n个所述从服务器进行第一次迭代搜索时,所述主服务器预存的当前最优长度为空,此时,所述主服务器通过比较n个所述从服务器进行第一次迭代搜索所获得的第一最优路径信息,来获得当前最优长度的初值;

之后,在每一次迭代比较中,若n个所述从服务器发送来的n条所述第一最优路径信息中有长度小于所述当前最优长度时,则替换当前最优长度为长度最小的第一最优路径信息,若均大于所述当前最优长度,则仍将所述当前最优长度作为下次迭代比较的标准值。

判断模块504,用于判断当前迭代次数是否等于预设的最大迭代次数;

发送模块501,还用于在当前迭代次数小于所述预设的最大迭代次数时,发送出发指令到n个所述从服务器;

具体的,在当前迭代次数小于所述预设的最大迭代次数时,所述主服务器中的发送模块501会再次发送出发指令到n个从服务器,之后,则再次由所述主服务器内的接收模块502、比较模块503进行下一次的迭代计算,直到所述判断模块504判断当前迭代次数等于预设的最大迭代次数时,才停止迭代计算。

输出模块505,用于在当前迭代次数等于所述预设的最大迭代次数时,输出当前最优路径,作为本次配送的最优路径;

具体的,在当前迭代次数等于所述预设的最大迭代次数时,就将比较后获得的当前最优路径最为最终的结果进行输出,并结束本次配送路径的计算。

本发明实施例公开的主服务器中,通过将出发指令同时发送给n个从服务器,能够获得n个所述从服务器各自所对应的多个子蚁群的第一最优路径信息及信息素,从而实现了将搜索任务同时划分给多个从服务器中的多个子蚁群,使其能够并行地完成搜索,提高了搜索的速度,使其能够快速获得物流配送的最优配送路径。

本发明实施例提供的各个单元的工作过程,请参照附图3所对应的流程图,具体工作过程不再赘述。

下面对本发明实施例的技术方案涉及的一些可能的应用场景进行举例介绍。

通过获取到的带软时间窗物流运输调度的基本参数:客户的位置,车场的送货车辆最大运载能力为12吨,每次出行的最大里程为150,车场坐标为(0,0),车辆最早发车时间是8:00,预先建立带软时间窗物流运输调度数学模型:

<mrow> <mi>min</mi> <mi> </mi> <mi>z</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mo>(</mo> <mrow> <msub> <mi>C</mi> <mi>v</mi> </msub> <mo>+</mo> <msub> <mi>C</mi> <mi>d</mi> </msub> </mrow> <mo>)</mo> <msub> <mi>d</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>+</mo> <msub> <mi>c</mi> <mn>1</mn> </msub> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>max</mi> <mo>{</mo> <mrow> <mo>(</mo> <msub> <mi>et</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>t</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mn>0</mn> <mo>}</mo> <mo>+</mo> <msub> <mi>c</mi> <mn>2</mn> </msub> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>max</mi> <mo>{</mo> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>lt</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mn>0</mn> <mo>}</mo> </mrow>

<mrow> <mi>m</mi> <mo>=</mo> <mo>&lsqb;</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>g</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&alpha;</mi> <mi>G</mi> <mo>&rsqb;</mo> <mo>+</mo> <mn>1</mn> </mrow>

且上述模型满足以下约束条件:

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>g</mi> <mi>i</mi> </msub> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mi>k</mi> </mrow> </msub> <mo>&le;</mo> <mi>G</mi> <mo>,</mo> <mi>k</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>m</mi> </mrow>

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mi>N</mi> </munderover> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>0</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>c</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>&le;</mo> <mi>L</mi> <mo>,</mo> <mi>k</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>m</mi> </mrow>

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mi>k</mi> </mrow> </msub> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>N</mi> </mrow>

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msub> <mi>y</mi> <mrow> <mn>0</mn> <mi>k</mi> </mrow> </msub> <mo>=</mo> <mi>m</mi> </mrow>

t0=T0=0

ti≥0 i=1,2,...,N

Ti≥0 i=1,2,...,N

eti<ti<lti i=1,2,...,N

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>y</mi> <mrow> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>,</mo> <mi>j</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>N</mi> <mo>;</mo> <mi>K</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>m</mi> </mrow>

<mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mi>k</mi> </mrow> </msub> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>N</mi> <mo>;</mo> <mi>K</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mi>m</mi> </mrow>

其中,要服务的客户数为16个,m表示配送中心发出的车辆数(m为正整数),第i个客户的需求量为gi(gi=1,2,…,N),式中[]代表不大于括号内的数字的最大正整数,α(0<α<1)是对装车和卸车的困难程度以及约束的估计,单位距离车辆行驶费用为50元/km,司机单位费用0.5元/km,dij表示车辆k行驶了客户i到j的路程,其中等待费用c1为10元/h,车辆延迟费用c2为100元/h,其中eti为任务i的允许最早开始时间,lti为任务i的允许最迟开始时间,ti为车辆到达点i的时间;

所述带软时间窗物流运输调度数学模型表示物流运输过程中的成本耗费,包括物流运输中车辆行驶费用、司机薪酬费用、提早或者延迟到达配送点产生的等待损失和延迟罚款。

主服务器设置本次路径计算的最大迭代次数值为6,使初始的迭代次数=0,且每进行一次迭代就加1,并将大小为200只蚂蚁的总蚁群,均分成四个子蚁群,每个子蚁群的数量为50只蚂蚁,并将这四个子蚁群交由四个从服务器各自控制;

当主服务器发送出发指令同时到四个从服务器时,即开始了第一次迭代搜索,四个从服务器会并行接收该出发指令,并各自独立地进行迭代搜索任务;而每一个从服务器控制其内的子蚁群进行迭代搜索的过程一致,但在每次迭代搜索开始时,四个从服务器会分别设置自身子蚁群中每一只蚂蚁的控制参数:配送客户的个数、配送客户所在的位置、各个配送客户初始分布的信息素值、路径选择的启发式因子、记录任一蚂蚁已经经过的配送客户的禁忌表以及记录任一蚂蚁未经过的配送客户的可用节点列表,其中,由于每个从服务器设置的路径选择的启发式因子会影响该服务器内子蚁群中蚂蚁选择不同的配送客户,因此,可以使四个从服务器设置不同的路径选择的启发式因子,以避免四个从服务器进行了一次迭代搜索后获得相同的局部路径结果;

之后,每个从服务器使其内的50只蚂蚁均放置在物流配送中心即车场,其坐标设为(0,0),初始时间t=0,从50只蚂蚁中选择一只出来作为当前配送蚂蚁,并从其对应的可用节点列表中查找其未走过的配送客户,按照公式:

当且仅当j∈Allowedk,否则

选择当前配送蚂蚁下一步要经过的配送客户,并将这个配送客户从可用节点列表中删除,添加到禁忌表中,同时也记录下当前配送蚂蚁目前从物流配送中心移动到第一个配送客户所形成的部分配送路径;

之后,使得该子蚁群中的剩余49只蚂蚁都按照第一只蚂蚁行进的过程,顺序完成各自的第一步移动;然后,再按照子蚁群中50只蚂蚁移动一个配送客户的过程,循环使这50只蚂蚁再次移动到另一个配送客户,直到它们移动完该服务器设置的16个配送客户,此时,该服务器获得了与50只蚂蚁对应的50条局部优化路径,该服务器会先自己将这50条优化路径进行比较,从中选择出最小的一条发送给主服务器,以减少主服务比较的时间;同时,从服务器会对这条最小的局部优化路径上的信息素进行更新,以突显这条局部最优的路径;

主服务在接收到四个从服务器分别发送来的4条最小的局部优化路径及分布在这些路径上的信息素后,会比较这4条最小的局部优化路径的长短,选择最小的一条作为当前最优长度,以便在进行下一次迭代搜索时,当作比较标准;

之后,主服务器会再次发送出发指令给四个从服务器,控制其进行第二次迭代搜索,同时,还会将第一次迭代搜索四个从服务器对应的4条最小的局部优化路径上分布的信息素分别发送给除自身外的其他三个从服务器,以达到降低四个从服务器在进行第二次迭代搜索获得的局部最优路径结果与第一次获得的局部最优路径结果相同的概率,且也能使四个从服务器通过接收其他三个从服务器的局部最优路径的信息素来调整下一次子蚁群蚂蚁产生的路径结果,直到主服务器判断目前累计的迭代搜索次数达到了6次,就直接将当前最优路径输出,作为本次配送路径计算的最优路径结果,进而提高了算法的搜索速度,使其能快速获得最优配送路径。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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