EDA365电子论坛网

标题: NSGA2算法MATLAB实现(能够自定义优化函数) [打印本页]

作者: baqiao    时间: 2020-11-3 14:31
标题: NSGA2算法MATLAB实现(能够自定义优化函数)
7 Z+ V# a- U" C) H) s# G
NSGA2的算法不具有普遍性,下面参考课国外的课题小组的代码重新修改了内部冗余内容,使之能够自定义优化函数。
( x1 X7 d# ]" Z; O; Y: \, [) d1 e( N
0 _7 A3 {, ~0 {" j$ j# K

# A3 ?7 @' Z: [* c# K! t2 ENSGA2的过程为:4 {9 ^7 M/ M, Q$ \% k

8 M/ H' Z' _& O1、随机产生一个初始父代Po,在此基础上采用二元锦标赛选择、交叉和变异操作产生子代Qo, Po 和Qo群体规模均为N
4 h+ G$ x3 j% j- w6 F" r$ A5 H; N8 i
% L! W! p/ V3 Y& ~2、将Pt和Qt并入到Rt中(初始时t=0),对Rt进行快速非支配解排序,构造其所有不同等级的非支配解集F1、F2……..
3 ]; O0 g/ p5 W. X9 H7 T0 g
& N; u( L1 j9 e: d3 I" t3 A% J3、按照需要计算Fi中所有个体的拥挤距离,并根据拥挤比较运算符构造Pt+1,直至Pt+1规模为N,图中的Fi为F3" _4 Q2 P- Z9 N7 p8 M8 x- z( N% G

4 ^% O  \/ U4 Z
* {. q8 u) e( j; W$ k
# h; b. I! l7 Q1 {5 o8 E9 w下面是完整版的代码:; i# g. g: B* A% \

$ T7 C8 a* n. ^- R9 e9 H! L①nsga2-optimization.m/ h2 c& t/ S- J0 T" j6 L4 Q0 F+ g
7 ?0 v7 c# i( D% U" X
) L& E6 g9 @  |' D. R2 i( {
$ j. v' _( h+ M% R% V# X( ~
      ②initialize_variables.m2 T, X7 ^# R- O7 _! u2 M9 w8 O
6 q. v1 v, H. J. s9 C. o1 @
) V5 O* m3 U( M1 i2 O2 A. G$ R4 N' A
$ o/ G9 l: W2 m3 K- \' n; t# x
③non_domination_sort_mod.m
! w% d/ v2 @& m
% E: t. K; H. t; s3 ~6 y$ A1 v4 w* D. K% g0 z! }6 e

& m3 v+ h- s1 `' {/ x3 r' a      ④tournament_selection.m
* E8 E; e9 O: E8 g. [0 a  z. q/ q0 c

3 ~4 J: h& a! O, f6 D7 E" R⑤genetic_operator.m7 |7 \6 x' O; F0 i9 b# Q
" w/ E5 A" z5 [. n
. F* f! D; D5 _; c

- O9 Q6 Q$ w; Z   ⑥replace_chromosome.m; @% c) H/ w4 P* I+ k
% Z1 W7 }6 {7 o: H, y

0 X- `$ R( E- R/ y3 t: Q
' R9 H  R9 g; \            ⑦自定义评价函数(我选用的ZDT1函数)
8 Y0 Z7 o; @1 g! i
/ E1 R9 u* Y  x) W2 y2 `/ a5 G- R8 ^7 S9 Q3 J
4 C8 r: [8 r0 o
500个种群运行500代的结果:
2 ~1 L+ f. g9 k7 v
, P8 u$ n- o) U- H) k
7 I2 e! y# G/ T7 l3 i
+ |+ I5 U7 V8 g7 \7 ?/ ~0 L
* B/ m5 F  L- P( `  r
0 j8 x3 Z! c2 L( d' L4 {/ X
4 a: G  s, F' ~$ z7 U; S
作者: CCxiaom    时间: 2020-11-3 15:08
NSGA2算法MATLAB实现(能够自定义优化函数)




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2