小言_互联网的博客

NSGA2学习笔记

321人阅读  评论(0)

因为毕业设计涉及多目标优化算法,学习一下别人的算法并做个笔记(注:这笔记乱的估计只有我看的懂了吧————╭(╯^╰)╮)

代码来源 --> 多目标优化算法NSGA2–晓风wangchao

NSGA2(非支配排序遗传算法)
:用于解决多目标优化问题
多目标优化问题
:多个目标函数

1.参数的设置

测试函数 存放目标函数目标个数f_num,决策变量个数x_num,决策变量范围x_min,x_max: funfun.m

涉及的参数有
f_num 目标函数个数
fun 问题的名字
gen 进化代数
pc 交叉概率
pm 变异概率
pop 种群
x_max 决策变量的最大值
x_min 决策变量的最大值
x_num 决策变量的个数
yita1 模拟二进制交叉参数
yita2 多项式变异参数

ZDT6 函数公式----《多目标优化算法及其应用》

ZDT6—来源于platEMO

访问不了github可以在码云上搜得到

2.种群的初始化

生成一个300*12的数组chromo(种群大小300 决策变量10 目标2)

3.非支配排序

得到两个数组F1 和chromo_non
F1(每一行存放了这一个pareto等级的个体在chromo中的行号)

chromo_non 在chromo数组的基础上在最后一列(13列)加上了这个个体的pareto的等级

4.拥挤度的计算


箭头所指的列存放了各个个体的拥挤度
并且拥挤度函数对数组根据pareto等级进行了排序

5.循环开始(次数为gen 进化代数)

6.产生两个父代
chromo_parent_1

chromo_parent_2

chromo_parent

7.交叉与变异生成子代chromo_offspring


8.子代和父代的合并



9.再进行非支配排序和拥挤度计算 计算结果存放在combine_chromo2中


10.精英保留策略
%mod 求余 每过10代输出一次提示信息



就这样循环gen(进化代数)次
11.最后画图


与platEMO的图对比一下 (* ̄rǒ ̄)

所有m文件
主函数:nsga2.m
测试函数 存放目标函数目标个数f_num,决策变量个数x_num,决策变量范围x_min,x_max
:funfun.m
种群初始化函数:initialize.m
目标公式函数:object_fun.m
非支配排序函数:non_domination_sort.m
拥挤度计算和排序函数:crowding_distance_sort.m
锦标赛选择函数:tournament_selection.m
交叉变异函数:cross_mutation.m
精英保留函数:elitism.m

算法流程图来源多目标优化算法NSGA2–晓风wangchao


转载:https://blog.csdn.net/weixin_45024240/article/details/104503096
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场