一种解决多目标多旅行商问题的改进蚁群算法的制作方法

文档序号:15493314发布日期:2018-09-21 21:05阅读:416来源:国知局

本发明涉及蚁群算法应用于计算机组合优化的技术领域,尤其是指一种解决多目标多旅行商问题的改进蚁群算法。



背景技术:

蚁群算法利用信息素矩阵,结合启发式信息引导进行禁忌搜索,并最终借助信息素正反馈机制收敛于最优解中,是一类收敛快、可行解优良的迭代搜索算法。算法借鉴蚁群觅食过程,令算法中的蚂蚁在通过路径上释放信息素并且大概率沿信息素较多的路径移动。因为较优解蚂蚁经过的路径释放信息素更多,信息素多的路径反过来又会吸引更多的蚂蚁选择该路径,随着迭代次数的增加正反馈机制将使不同路径上信息素差值不断扩大,从而引导整个系统向着最优解方向演化。

多目标多旅行商问题是多目标优化理论与多旅行商问题结合形成的问题模型。其具有广泛的应用场景,包括物流配送、均衡调度等。由于该问题约束条件复杂且目标函数多样,加之可行域极广搜索困难;导致目前该问题有效的解决方案极少。目前常见的解决方案包括遗传算法、差分进化算法等。但由于这些算法缺乏引导信息导致算法运行结果实用性差;而对于此问题,具有启发信息的蚁群算法容易出现启发信息不明确、多目标顾此失彼的情况;因而我们需要对蚁群算法进行改进,使得算法能够很好适应新的多目标多旅行商问题模型。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提出了一种解决多目标多旅行商问题的改进蚁群算法,其在经典蚁群算法的基础上进行多点算法改进,极大提升算法广度搜索能力和多目标权衡能力,使得算法能够高效的解决多目标多旅行商问题,尤其针对以路径总长度和路径均匀度为评价指标的多目标多旅行商问题。常见的路径均匀度评价指标包括但不限于各个子路径长度的极差、标准差和方差等。

为实现上述目的,本发明所提供的技术方案为:一种解决多目标多旅行商问题的改进蚁群算法,包括以下步骤:

1)蚁群初始化

依据标准蚁群算法的参数设定对蚁群中所有蚂蚁进行初始化,随后将城市信息素矩阵初始化;

2)迭代搜索并反馈

这步骤反复执行,直至算法满足设定的终止条件为止;初始状态下,算法将会设置当前迭代次数t=0,初始化非支配解集a(0)将被设置为空集;在每一轮迭代过程中都将进行如下操作:

首先,将使用蚁群中m只蚂蚁搜索从而得到m个多目标多旅行商问题的可行解,这些搜索到的可行解必然满足多目标多旅行商问题的禁忌表约束但不一定满足其他约束条件,因此,算法随后需要剔除其中不满足多目标多旅行商问题中的其他约束条件的可行解;满足条件的所有可行解将会被保存为当轮迭代的可行解集p(t),p(t)中的所有可行解将会进行蚁群信息素反馈;随后算法将从p(t)∪a(t)中选取其中的非支配解形成集合a(t+1);

3)返回算法保存的最终运行结果a(t),如果待解决的多目标多旅行商问题模型中给定多目标加权函数,则同时返回多目标加权函数f(x)评价最优的一个可行解。

在步骤1)中,使用以下策略进行蚁群初始化:依据需要解决的多目标多旅行商问题中物流配送人数k设置配送中心的禁忌表计数为k,其他点禁忌表计数设为1;之后,初始化城市信息素矩阵,将城市i与j之间的信息素τij设置为(1+p)×q;其中p为每次随机生成的随机数,每给一对城市(i,j)设置初始信息素后,p的值都将随机更新,q是初始化时信息素的基础数值。

在步骤2)中,蚁群使用如下策略执行搜索:首先,蚁群算法中的每一只蚂蚁都将会随机被放置到任意一个配送点上,之后立即更新蚂蚁对应的路径信息及禁忌表;随后,蚂蚁k将随机产生随机数q,若随机数小于q0则蚂蚁下一跳回到物流中心,若大于q0则蚂蚁根据下面状态转移公式计算转移概率并使用轮转选择算法选择下一个配送点j,状态转移公式如下:

式中,τij(t)是城市i与城市j之间在第t轮迭代时的信息素,ηij是城市i与城市j之间在第t轮迭代时的启发式信息,具体为城市间的距离的倒数;α是信息素权重因子,β是启发式信息权重因子,allowedk是禁忌表中蚂蚁可选的城市集合;

随后配送点j在禁忌表中的禁忌计数减1,蚂蚁k移动到配送点j上;重复以上步骤,直至allowedk为空,即直至禁忌表中所有配送点的禁忌计数都减至0,搜索结束,此时所有城市均不可选,蚂蚁k的可行解构造完成;待蚁群中所有蚂蚁均完成解构造以后,该步骤完成。

在步骤2)中,蚁群完成可行解构造得到可行解集合后,使用如下策略进行信息素更新:可行解将依据其支配可行解的数量和被支配的可行解数量综合得到优越程度评价,并以此优越程度评价为信息素添加含量的基础,在不同子路径上添加信息素从而优化下一轮迭代搜索;其具体是:搜索到的全部可行解将会通过预设定的目标加权函数对其进行打分,然后将会依据打分对各路径上的信息素进行更新,更新策略如下:

τij(t+1)=(1-ρ)·τij(t)+δτij(t)

式中,ρ表示信息素挥发系数,表示路径中信息素挥发的速度;τij(t)表示第t轮循环中城市i到城市j的路径上原有的信息素含量;δτij(t)表示第t轮循环中城市i到城市j的路径上添加的信息素含量,其计算公式如下:

式中,表示蚂蚁k在第t轮循环中添加在城市i到城市j的路径上的信息素;不同于经典蚁群算法的信息素添加策略,此处包含三轮信息素添加,分别对多个目标进行引导;

第一轮:局部信息素更新,在所有子路径上均等的添加与可行解优越度正相关的信息素τbase;该轮信息素更新继承经典蚁群算法,添加的信息素数值与当前蚂蚁k构造的可行解打分gk有关,添加策略是在构成可行解的全部路径上添加等量的信息素,即值如下:

此轮信息素本质上是为了诱导蚁群在下一次迭代时保留行进长度低于平均值的子路径;

第二轮:子路径信息素更新,对可行解的每一个子路径进行评价,子路径长度低于所有子路径长度平均值的子路径添加的信息素含量将在信息素添加含量τbase的基础上降低0.05~0.3倍,而子路径长度大于所有子路径长度平均值的子路径添加的信息素含量将在信息素添加含量τbase的基础上降低0.5~0.9倍;该轮信息素添加的信息素数值将以上一轮添加的数值作为参照进行微调,旅行商t的快递路径长度将直接影响添加的信息素数值,该影响将通过一个权重算子来αt体现,αt使用以下公式来计算:

式中,mapfun是映射函数,lt表示第t名旅行商路径长度,表示所有旅行商路径长度的平均值,表示所有旅行商路径长度与平均值差距绝对值中的最大值;求得权重算子后,所有路径上的信息素添加将按照以下公式计算:

式中,αt是权重因子,gk是蚂蚁k所构造的可行解的打分值,q是初始化时信息素的基础数值,这个数值通常取q=1;

此轮信息素添加的目的本质上看是为了使最长旅行商路径的长度最小化,从而使得算法在均匀度目标和总长度目标上均有所进步;

第三轮:跳信息素更新,将可行解中最短子路径和最长子路径的信息素添加含量降低到信息素添加含量τbase的1/10,使得这两个子路径更可能被重新组合而形成更优的可行解;此轮信息素主要影响旅行商路径中距离最长的和最短的两条子路径;添加的信息素值同样以第一轮信息素更新为基础,不同的是,在最长的子路径上,每一跳信息素添加量将会降低,而最短的子路径上,回到物流中心的两跳信息素添加量将会降低;以上操作将使得最长子路径和最短子路径在下一轮迭代时容易打散重组,从而出现均匀度评价更优的可行解;

此轮信息素添加本质上是为了诱导蚁群在下一次迭代时尽可能构造各子路径均匀的可行解。

本发明与现有技术相比,具有如下优点与有益效果:

1、蚁群算法禁忌表改动适配实际物流场景配送所抽象的多目标多旅行商问题,为解决该特定问题提供有效的解决方案,并且改进后算法天然适应多目标多旅行商问题,具有良好的灵活性和拓展性。

2、基于蚁群算法,良好的继承了蚁群算法导向明确、快速高效的特点,能在短时间内快速给出实际有效的可行解,具有极其优越的实用价值。

3、针对性的设计信息素更新策略,使用多轮信息素融合多目标启发,使得算法能在保持原有高效特点的基础上同时兼顾多目标。

附图说明

图1是基本蚁群算法流程图。

图2是映射函数mapfun的函数图像。

图3是本发明的算法改进示意图及其流程图。

具体实施方式

下面结合具体实施例对本发明作进一步说明。在此,多目标多旅行商问题具体实例场景为快递员物流配送场景,即物流中心有若干名快递员需要完成若干点的快递配送,需要满足多名快递员配送路径长度最小化和路径长度数值差异最小化。

如图1至图3所示,本实施例所提供的解决多目标多旅行商问题的改进蚁群算法,其主要包括步骤:1)蚁群初始化;2)迭代搜索并反馈;3)判断当前状态是否满足算法终止条件,如果是则终止并返回最终结果a(t),如果不是则返回步骤2)后继续运行。

其具体的流程步骤文字说明如下:

步骤1:将蚁群的所有蚂蚁路径设置为空,依据实际问题模型中物流配送人数k设置配送中心的禁忌表计数为k,其他点禁忌表计数设为1。之后,初始化城市信息素矩阵,将配送点i与j之间的信息素τij设置为(1+p)×q。其中p为每次随机生成的随机数,每给一对配送点(i,j)设置初始信息素后,p的值都将随机更新。

步骤2:蚁群执行搜索操作。首先所有蚂蚁将会随机被放置到某一个配送点上,之后立即更新蚂蚁对应的路径信息及禁忌表信息等。随后,蚂蚁k将以随机放置的配送点为起点不断移动构造可行解,构造可行解的每一步大致如下,首先,蚂蚁k将随机产生随机数q,若随机数小于q0则蚂蚁下一跳回到物流中心,若大于q0则蚂蚁开始计算以当前所在配送点i为起点,周围所有可选的配送点j为下一跳的状态转移概率pij:

式中,τij(t)是城市i与城市j之间在第t轮迭代时的信息素,ηij是城市i与城市j之间在第t轮迭代时的启发式信息,具体为城市间的距离的倒数;α是信息素权重因子,β是启发式信息权重因子,allowedk是禁忌表中蚂蚁可选的城市集合;

得到所有可选城市的状态转移概率后,将会进行归一化计算得到其中任意一个配送点j的选中概率pj,用于执行轮转选择算法来选择下一个实际配送点j,pj使用以下公式进行计算:

配送点j被选中以后,其在禁忌表中的禁忌计数减1,蚂蚁k移动到配送点j上,下一次移动则以配送点j作为起点;重复以上步骤,直至禁忌表中所有配送点的禁忌计数都减至0,搜索结束,蚂蚁k解构造完成。所有蚂蚁均完成解构造以后,将会验证所有可行解的有效性并剔除其中不满足问题模型限制的解,而验证有效的可行解将会更新当前保存最优解的集合a使得集合a中保存算法从开始执行到当前轮数时的最优结果集。随后,对可行解的优越性进行评价打分后转入信息素更新。

蚁群完成可行解构造得到可行解集合后,使用如下策略进行信息素更新:可行解将依据其支配可行解的数量和被支配的可行解数量综合得到优越程度评价,并以此优越程度评价为信息素添加含量的基础,在不同子路径上添加信息素从而优化下一轮迭代搜索;其具体是:搜索到的全部可行解将会通过预设定的目标加权函数对其进行打分,然后将会依据打分对各路径上的信息素进行更新,更新策略如下:

τij(t+1)=(1-ρ)·τij(t)+δτij(t)

式中,ρ表示信息素挥发系数,表示路径中信息素挥发的速度;τij(t)表示第t轮循环中城市i到城市j的路径上原有的信息素含量;δτij(t)表示第t轮循环中城市i到城市j的路径上添加的信息素含量,其计算公式如下

式中,表示蚂蚁k在第t轮循环中添加在城市i到城市j的路径上的信息素;不同于经典蚁群算法的信息素添加策略,此处包含三轮信息素添加,分别对多个目标进行引导;

信息素更新是模拟蚂蚁在自己经过的路径上分泌信息素的行为。在蚂蚁完成搜索得到可行解以后,可行解将以其优越程度为信息素添加含量的基础,在不同子路径上添加信息素以使得下一轮迭代搜索能够获得更好的搜索结果。信息素更新包括三轮;

第一轮:局部信息素更新,在所有子路径上均等的添加与可行解优越度正相关的信息素τbase;该轮信息素更新继承经典蚁群算法,添加的信息素数值为可行解打分gk的倒数。添加策略是在构成可行解的全部路径上添加等量的信息素,即值如下:

第二轮:子路径信息素更新,对可行解的每一个子路径进行评价,子路径长度低于所有子路径长度平均值的子路径添加的信息素含量将在信息素添加含量τbase的基础上降低0.05~0.3倍,而子路径长度大于所有子路径长度平均值的子路径添加的信息素含量将在信息素添加含量τbase的基础上降低0.5~0.9倍;该轮信息素添加的信息素数值将以上一轮添加的数值作为参照进行微调,快递员t的快递路径长度将直接影响添加的信息素数值,该影响将通过一个权重算子来αt体现,αt使用以下公式来计算:

式中,mapfun是映射函数,lt表示第t名快递员路径长度,表示所有快递员路径长度的平均值,表示所有快递员路径长度与平均值差距绝对值中的最大值;求得权重算子后,所有路径上的信息素添加将按照以下公式计算:

式中,αt是权重因子,gk是蚂蚁k所构造的可行解的打分值;

此轮信息素添加的目的本质上看是为了使最长快递员路径的长度最小化,从而使得算法在均匀度目标和总长度目标上均有所进步;

第三轮:跳信息素更新,将可行解中最短子路径和最长子路径的信息素添加含量降低到信息素添加含量τbase的1/10,使得这两个子路径更可能被重新组合而形成更优的可行解;此轮信息素主要影响快递员路径中距离最长的和最短的两条子路径;添加的信息素值同样以第一轮信息素更新为基础,不同的是,在最长的子路径上,每一跳信息素添加量将会降低,而最短的子路径上,回到物流中心的两跳信息素添加量将会降低;

步骤3:判断流程终止条件。经过以上流程后,一轮迭代完成,此时判定算法是否满足终止条件,如果不满足则回到步骤2,如果已经达到终止条件,算法结束,返回最优结果集a。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

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