EDA365电子论坛网

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

作者: pulbieup    时间: 2020-8-18 14:05
标题: NSGA2算法MATLAB实现(能够自定义优化函数)
. ^/ U+ @- C' \, n& i
NSGA2的算法不具有普遍性,下面参考课国外的课题小组的代码重新修改了内部冗余内容,使之能够自定义优化函数。+ G, W3 M! b$ g* e- n9 R8 l; t2 p
: z4 s+ w. Z" f' \  o8 a9 E
/ j0 U' {2 ^! }( W( P4 N

: t" z  `3 x6 h, O  K' L7 }NSGA2的过程为:
) z# M/ g. _% \& u. ~: M
% ~/ M( N6 K3 F+ b1、随机产生一个初始父代Po,在此基础上采用二元锦标赛选择、交叉和变异操作产生子代Qo, Po 和Qo群体规模均为N! H. v' w$ P3 L* q- _  z% y! K
- y: p- c2 o% w) i' r7 P
2、将Pt和Qt并入到Rt中(初始时t=0),对Rt进行快速非支配解排序,构造其所有不同等级的非支配解集F1、F2……..% @0 K8 X4 B' H1 \% a
5 B+ a% l0 x) Y* @1 U
3、按照需要计算Fi中所有个体的拥挤距离,并根据拥挤比较运算符构造Pt+1,直至Pt+1规模为N,图中的Fi为F36 d8 {) N2 p6 t! x5 @
  U, B) w' N2 J* z1 J/ `4 U7 c; n

; Z% ~' w( D8 L6 ^, S1 a下面是完整版的代码:
; V2 T9 Q$ a4 i# E+ ?# ~
" X& O8 X" L5 C% E' h①nsga2-optimization.m# V  @, }( [+ i2 z8 |2 N
6 Z' N# |4 B, Q! ~/ d
7 `0 _8 ?+ Y% t0 z. y0 U
$ t  m: L. [2 A: C, @+ v% \& {
②initialize_variables.m
4 g% y4 p; H( T8 n- ^2 r. f- O" ]6 J# h0 A+ l% B1 l6 l8 _2 k+ Y' y

# q. J2 v- O  Y; l0 q' {( r
4 ]4 I5 p+ P9 e8 S0 x③non_domination_sort_mod.m- u+ ]% i8 ]9 t  @2 j. E
* j! e( p% f  H; w* c
3 X! l$ V/ z' ]# o" R* |
: b1 N% g4 a$ s% X/ n/ i
      ④tournament_selection.m% |3 U9 q9 y$ q7 h6 P
7 l5 j& p( a. u+ V
$ C% O, {$ C  Z& v8 b% Z0 ?
) f$ e% A& n' F$ w" m, W+ t
⑤genetic_operator.m
3 J8 K/ H  Y2 S/ t/ e* Y$ V7 [; j0 f
   
7 I4 [0 b$ H/ `⑥replace_chromosome.m+ r8 H- l6 C9 w
9 a2 M& B" Q/ U9 x! z1 F8 t
            ( R, K3 k; ^7 l! [6 i

3 c. h4 w/ ]* o( E# L" S. h2 f8 k⑦自定义评价函数(我选用的ZDT1函数)1 q2 [" ]! ~0 Y2 ]/ }7 }
0 S9 N9 C& y5 E

% Z& a, Q0 o1 O  f/ o
3 s* s) Q: I2 O! c# M4 G8 m' [; Z500个种群运行500代的结果:. {3 \6 D7 y6 n+ p* U
) N+ W7 b+ x, E5 _& B9 \/ H) `

2 G/ x) k5 k, W6 V
: _( n+ w0 R( c) E$ ]# E4 C 6 ^( ~4 w8 |& S$ x6 e+ C

. C1 S! z8 v# r+ R, _6 E, T
# s* V3 I" w& D: d+ Y
" z7 ^! U2 D+ l3 ~' G% s$ E& f# F2 y2 Q5 H
( @" y% r8 V( d. R. G- E  t

( T; p( t- y- s1 l
作者: CCxiaom    时间: 2020-8-18 15:00
NSGA2算法MATLAB实现(能够自定义优化函数)




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