system: [SYSTEM]

user: 3. 基于动态网络图及泛洪算法的联合投送模型 想定任务为多出发地、多目的地且多批次的动态网络优化问题，既要对于各梯队的投送路线进行优化，也要对与各梯队的投送批次安排进行优化，并且要综合考虑道路通行能力对于兵力运输投送的限制，本文引入动态网络图对于联合投送方案进行动态的优化分析，并在此基础上利用泛洪算法 [ 3 ]，在优化分析的基础上寻求充分利用道路容限能力以及时间最短的最优投送方案。考虑到时间的硬性要求，本文以总时间最短为目标进行方案设计。 3.1. 基于动态网络图与泛洪算法的投送方案模型 设在此次联合投送的军事行动中需要投送的编组分别部署在 { x 1 ， x 2 ， x 3 ， ⋯ ， x N } 共N个出发地，需要将其投送至 { y 1 ， y 2 ， y 3 ， ⋯ ， y M } 共M个出发地，其中 r i j ( i = 1 ， 2 ， ⋯ ， N ; j = 1 ， 2 ， ⋯ ， M ) 是需要从 x i 到 y i 投送的梯队数。这些梯队分为多个不同编组，每一编组可以同时有多个梯队在不同道路上连续行进，他们共享道路的通行所有权，除了道路限制及节点装卸载限制外在行进过程中互不干涉。 想定任务要求考虑总时间最短的投送方案，故可将通过每条路的时间作为边的权值，问题即为求得满足条件的最长时间最短的联合投送方案。可以将运输网络图表示为 G ( V ， E ， C ， T ) ，其中V表示节点，E表示边，C为各边的通行能力，T为通过各边所需要的时间。 综上，可以建立如下联合投送方案优化模型： s.t. ∑ w i j ∈ I r i ， k ， m ≤ C m (3.2) r i ， k ， m ≥ 0 (3.3) t r a n s ( x i ， v k ) = { 0       当 在 此 点 未 转 换 运 载 方 式 1           当     x i     出 发 在     v k     点 由 铁 路 转 换 运 载 方 式 为 公 路 2       当     x i     出 发 在     v k     点 由 公 路 转 换 运 载 方 式 为 铁 路 (3.4) ∑ k t r a n s ( x i ， v k ) ≤ 1 (3.5) T O D = t ( D ) − t 0 = v * (3.6) 〈 w i q ， v k 〉 = 〈 w i p ， v k 〉 (3.7) 其中，式(3.1)为目标函数，表示从出发地 x i 开始搜索用时最短的路径；式(3.2)和式(3.3)为路段容量限制， w i j 表示第i个编组出发第j天的梯队数，其对于第m条道路的占据量为 r i ， k ， m ，这个数值不能超过该条道路的容量限制 C m 且不能为0，I为当前时刻正在行进的所有编组及梯队的集合；式(3.4)和(3.5)限制了在投送途中只能由铁路转公路，且仅可转换一次；式(3.6)限制了同一批次中间节点不存在停留且连续投送；式(3.7)限制了同一编组兵力投送路线一致。 3.2. 求解步骤 Step 1：通过引入虚拟节点和删除多余节点的方法，将网络图中的边权值标准化到[0， 1]之间，并将其储存到如下所示的矩阵中： R = [ a ， b ， t ， C ] 其中，a表示路段起点，b表示路段终点，t表示标准化后的路段权值，C表示路段的容量。 Step 2：Dijkstra算法是从一个顶点到其余各顶点的最短路径算法，能有效解决有权图中最短路径问题。其算法步骤如图2所示： 1) 初始时令 S = { x i } ， S ¯ = V − S ， S ¯ 中顶点间若与 x i 连通，则 t 〈 x i ， v k 〉 为此路径消耗的时间，若不存在则为∞。 2) 从 S ¯ 选取一个与S中顶点有关联边且时间消耗值最小的顶点v，加入到S中。 3) 当加进顶点v作为中间点时，首先判断顶点的通行能力是否代表铁路，若代表铁路，则判断标记过的定点v中是否存在代表公路的铁路，若存在，即将v加入S，若不存在，则判断 x i 到 y j 的消耗时间是否减少，当减少后，则对其余 S ¯ 中顶点的时间消耗值进行修改，同时对v进行标记。 4) 重复上述步骤，直到S中包含所有顶点，所有标记顶点即构成 x i 到 y j 的消耗时间最少路径。 5) 由于不考虑节点转运时导致的时间消耗，所以通过Dijkstra算法找出的最短耗时路径即为所需要的最短耗时路径，消耗的时间即为t，同时记该路径上的最大通行能力为P。 图2. Dijkstra算法流程图 Step 3：计算各条投送梯队完成任务所需要的最短耗时，选择其中单耗时最长的路径规划优先进行考虑，使其尽量满足最小时间消耗，从而确保最终完成派送人物的总时间最短。若多批队目标点相同时，需考虑各编组优先级，并根据最短路径上各路段的通行能力，安排相应的投送计划与梯队分配人数，改写任务矩阵。 接着标记投送任务未来每天的道路占用情况，根据矩阵中第三列代表的消耗时间，计算此时已消耗的总时间，向上取整，即可得到此动态图相应时间段后的网络图改变情况，即完成拓扑结构的实施动态更新。 为了计算剩余各条投送任务的最短耗时路径以及最短耗时，本文依据图像处理中的泛洪算法原理，对于该节点之后的路径进行遍历以确保不会出现遗漏情况，从而通过比较确定最短时间兵力投送方案。 Step 4：根据动态网络图中各个路段每天的通行能力，计算完成剩余各条投送任务的最短消耗时间，按照Step 3中原则安排并改写矩阵。重复执行以上除Step 1外所有步骤，直至完成了所有的投送任务。将最终得出来的最优最短时间投送计划进行分析，判断各节点装卸载规则是否满足题目得装卸载规则要求，若是不满足，则舍去该结果，从而获得次优时间较短运输路径，若满足，即为题目所求总任务进行时间最短得最优方案。 3.3. 基于遗传算法优化的联合投送模型 由于利用泛洪算法进行遍历从中找出最优路径所需的时间复杂度较高，通过网络计划优化在问题数量增大的情况下，复杂度会急剧提升，不适用于显示复杂的兵力投送调度问题，因而通过启发式算法进行最优路径选择即模型优化较好。 为了防止采用遗传算法在工作数量过大的情况下出现过早收敛的情况，本文选择利用自适应遗传算法来解决道路承载能力限制下的复杂多任务兵力派送问题的优化。 本题利用遗传算法找出所有编组的投送路线以及派送顺序及人数，在求解之前，需要进行染色体编码。总共有N个编组等待配送，每个编组有 r i 个编队待投送，则待投送梯队为： S U M = ∑ i = 1 N r i (3.8) 则该染色体的长度即为SUM。 可以用 M k 表示当前种群中的第k条染色体， P k j 即可表示为染色体的一条基因，表示在染色体j位置上第 P k 个编队中的梯队， M k 中梯队的派遣顺序即为满足道路通行规则的前提下的任意排序。通过最小总时间优先准则作为启发式方法，以产生对于投送任务小姑最好的初始染色体。 标准遗传算法容易出现复杂问题下过早收敛的情况，此时得到的大多为局部最优值，而非全局最优解，为了解决此项缺陷，就要将遗传算法中的交叉概率 P c 与变异概率 P m 于适应函数关联起来。由于为求得方案为总时间最小方案，则确定适应函数为 f = C M A X − T i 即得到如下自适应参数公式： P c = { P c max                                                                                 f 0 < f o r g P c max − ( P c max − P c min ) ( f − f o r g ) f max − f a v g           f 0 ≥ f o r g P M = { P M max                                                                                       f < f o r g P M max − ( P M max − P M min ) ( f − f o r g ) f max − f a v g           f ≥ f o r g 其中， P c max 、 P c min 分别为交叉概率的最大最小值； P M max 、 P M min 分别为变异概率的额最大值与最小值； f o r g 代表每代群体的平均适应度值， f 0 为要交叉的两个个体中较大的适应度值；f为要变异个体的适应度值。 模型的评价指标即为完成所有兵力投送任务花费的总时间。时间越短，则说明模型越优。