Matlab从入门到精通(3)——多目标人工鱼群算法

多目标优化问题是优化问题重要分支之一,同样是是相当大一部分科研问题中的主要问题之一,常用的方法包括

  • 穷举法(理论可以找到最优解集合,就是太慢了,一般没人用这种)
  • 解析式推导最优解(大部分情况下推不出来或者解析式很复杂无法应用)
  • 智能优化算法(可以适用于各类优化问题,包括凸和非凸的,良好设计的情况下可以取得较好的效果)

这一章首先介绍智能优化算法中的多目标优化算法--多目标人工鱼群算法。


可运行matlab获取,请关注微信公众号“通信小课堂”并回复:AFSA多目标人工鱼群算法

Matlab从入门到精通(3)——多目标人工鱼群算法_第1张图片

 


人工鱼群算法简介:

人工鱼群算法是一种参考鱼群移动觅食规律设计的优化算法,在改算法中将真实鱼抽象化、虚拟化的一个实体,其中封装了自身数据和一系列行为,可以接受环境的刺激信息,做出相应的活动(聚集、觅食、追尾、随机移动等)。其所在的环境由问题的解空间和其他人工鱼的状态,它在下一时刻的行为取决于自身的状态和环境的状态,并且它还通过自身的活动来影响环境,进而影响其他人工鱼的活动。

 Matlab从入门到精通(3)——多目标人工鱼群算法_第2张图片

该算法主要特点是

  1. 只需比较目标函数值,对目标函数的性质要求不高;
  2. 擅长进行局部优化,具备较好的全局寻优能力,能快速跳出局部最优点;
  3. 收敛速度较慢,但是具备并行处理能力;

 


一、 人工鱼群算法的寻优原理

人工鱼群算法在寻优的过程中,每个都有觅食、聚群,追尾、随机移动四种行为,通过这四种行为可以使人工鱼跳出局部最优解:

  1. 聚群行为能够促使少出陷于局部最优解的人工鱼趋向全局最优解的人工鱼方向聚集,从而逃出局部最优解;
  2. 觅食行为中重复次数较少时,为人工鱼提供了随机移动的机会,从而可能跳出局部最优解;
  3. 随机步长使得人工鱼在前往局部最优解的途中,有可能转向全局最优解;
  4. 拥挤度因子限制了聚群的规模,使得人工鱼能够更广泛的寻优;
  5. 追尾行为加快了人工鱼向更优状态游动。

通过以上几种行为,鱼群会逐渐向最优解靠近,对于各种复杂的情况都能得到极好的优化效果。

Matlab从入门到精通(3)——多目标人工鱼群算法_第3张图片Matlab从入门到精通(3)——多目标人工鱼群算法_第4张图片


二、多目标 人工鱼群算法实现的步骤

多目标人工鱼群算法相比单目标鱼群算法主要多了一个非支配排序的过程。

  • 初始化设置,包括种群规模N、每条人工鱼的初始位置、人工鱼的视野Visual、步长step、拥挤度因子δ、重复次数Trynumber;

  • 计算初始鱼群各个体的多目标函数和适应度函数,取最优人工鱼状态及其值赋予给公告牌;

  • 对每个个体进行评价,对其要执行的行为进行选择,包括觅食Pray、聚群Swarm、追尾Follow和评价行为;

  • 执行人工鱼的行为,更新自己,生成新鱼群;

  • 计算鱼群中各个鱼群得的多目标函数,执行非支配排序并更新外部集(存储所有的 Pareto解)

  • 若某个体适应度函数优于公告牌,则将公告牌更新为该个体;

  • 当公告牌上最优解达到满意误差界内或者达到迭代次数上限时算法结束,否则转步骤3。

多目标下的四种行为描述:

Matlab从入门到精通(3)——多目标人工鱼群算法_第5张图片

聚群Swarm行为:人工鱼探索当前邻居内的伙伴数量,并计算伙伴的中心位置,若中心位置的目标函数支配当前位置的目标函数,并且不是很拥挤,则当前位置向中心位置移动一步,否则执行觅食行为。此时需遵守两条规则:一是尽量向邻近伙伴的中心移动,二是避免过分拥挤。

追尾Follow行为: 人工鱼探索周围邻居鱼的最优位置,当最优位置的目标函数值支配当前位置的目标函数值,并且不是很拥挤,则当前位置向最优邻居鱼移动一步,否则执行觅食行为。

觅食Pray行为:人工鱼在当前解基础上随机进行选定一个方向单位移动,计算移动后解的多目标函数,并判断是该解支配当前解,则往该方向移动随机距离,否则重新选择方向进行尝试。多次尝试觅食失败后进行随机移动。

随机移动行为:人工鱼在当前解基础上随机进行选定一个方向随机移动。


三、结果演示

接下来我们用各种多目标测试测试函数来测试我们的多目标人工鱼群算法

首先是双目标测试函数,以下优化中为了体现性能优越,优化向量都是30维,大部分多目标优化算法维度低的时候还行,维度一高复杂度几何倍上涨就彻底歇菜,从下面结果来看人工鱼群还可以。

ZDT1

Matlab从入门到精通(3)——多目标人工鱼群算法_第6张图片

Matlab从入门到精通(3)——多目标人工鱼群算法_第7张图片

ZDT2

Matlab从入门到精通(3)——多目标人工鱼群算法_第8张图片
Matlab从入门到精通(3)——多目标人工鱼群算法_第9张图片

 

ZDT3

Matlab从入门到精通(3)——多目标人工鱼群算法_第10张图片

Matlab从入门到精通(3)——多目标人工鱼群算法_第11张图片

 

ZDT4

Matlab从入门到精通(3)——多目标人工鱼群算法_第12张图片

Matlab从入门到精通(3)——多目标人工鱼群算法_第13张图片

 

ZDT6

Matlab从入门到精通(3)——多目标人工鱼群算法_第14张图片

Matlab从入门到精通(3)——多目标人工鱼群算法_第15张图片

 

 

完整代码获取


往期链接:

Matlab从入门到精通(1)——学习书单与流程

Matlab从入门到精通(2)——遗传算法学习

 

你可能感兴趣的:(Matlab从入门到精通(3)——多目标人工鱼群算法)