数学建模社区-数学中国

标题: 组合优化算法-现代优化算法 (二): 遗传算法 及应用举例 [打印本页]

作者: 浅夏110    时间: 2020-5-22 15:17
标题: 组合优化算法-现代优化算法 (二): 遗传算法 及应用举例
遗传算法简介 + z* q3 I! Z3 @6 K- `3 x( [" ~1 o- I/ m
遗传算法(Genetic Algorithms,简称 GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目 标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存的原则逐代进化,终 得到优解或准优解。它必须做以下操作:初始群体的产生、求每一个体的适应度、 根据适者生存的原则选择优良个体、被选出的优良个体两两配对,通过随机交叉其染色 体的基因并随机变异某些染色体的基因后生成下一代群体,按此方法使群体逐代进化, 直到满足进化终止条件。其实现方法如下:
# I; k2 ?9 T8 M) d  ?
& z1 a. M9 o6 Q) y% Z+ G6 w(1) 根据具体问题确定可行解域,确定一种编码方法,能用数值串或字符串表示 可行解域的每一解。   
8 l  j. |; G1 L, a& q! S1 ]6 E# e# m& F+ E4 M
(2) 对每一解应有一个度量好坏的依据,它用一函数表示,叫做适应度函数,适应度函数应为非负函数。    ! O5 E/ {: a& Y" ^8 s

7 l* S* N; S2 S0 V(3) 确定进化参数群体规模M 、交叉概率  、变异概率 、进化终止条件。
& f1 x# L+ K$ B- W6 X+ H
7 I* R1 m( p* y0 V为便于计算,一般来说,每一代群体的个体数目都取相等。群体规模越大、越容易找到优解,但由于受到计算机的运算能力的限制,群体规模越大,计算所需要的时 间也相应的增加。进化终止条件指的是当进化到什么时候结束,它可以设定到某一代进 化结束,也可能根据找出近似优是否满足精度要求来确定。表 2 列出了生物遗传概念 在遗传算法中的对应关系。 : b: v; @1 ~- n7 A7 l0 U+ ]3 z7 j

; z' K6 D* J$ X# y% K1 d8 L
) `+ z* P0 Q" s! @
& u+ a9 X0 A0 c" C  b, Y, o: C2 模型及算法

我们用遗传算法研究 1.2 中的问题。

(1)研究 1.2 中同样的问题。


& a) j/ `. x- ?" @# `# y9 n6 ]4 R& c2 i) L- ?% I

  D6 @( K" J& ~0 h5 ?/ j( ?, Z* q
% G2 n& k2 K; u4 H) k0 I" j0 X9 E2 \我方有一个基地,经度和纬度为(70,40)。假设我方飞机的速度为 1000 公里/小时。 我方派一架飞机从基地出发,侦察完敌方所有目标,再返回原来的基地。在敌方每一目 标点的侦察时间不计,求该架飞机所花费的时间(假设我方飞机巡航时间可以充分长)。
( P9 E9 ]% G0 c) H2 m7 I
$ H+ s( a% a2 ~3 W* f' Z
3 ?5 p- Q. [3 p9 `1 ^( A  ]. B+ f: H/ X7 J3 K. d5 K( @6 A8 Z6 j9 _) P
问题(2)我方有三个基地,经度、纬度分别为(70,40),(72,45),(68,48)。假设我方 所有无人侦察机的速度都为 1000 公里/小时。三个基地各派出一架飞机侦察敌方目标, 怎样划分任务,才能使时间最短,且任务比较均衡。( ~& M4 I# I! }3 T: _

3 J7 j7 t2 a6 A- m$ x, A! \4 G4 s4 K( ]
! N/ G2 ~2 E% D! V* `# U
(2) 初始种群' _7 @, m2 |' J' ^  l
9 b5 f' h# W3 ?& D1 F+ D3 n% Z

- t3 r/ \. V; ~! t& P& H$ ?: ]: u* v4 K' t* d6 T0 o  m
(3) 目标函数  _* W, ~% R( _$ x' }( J( E6 j

: ?9 Z4 e# X2 H1 v& P9 |5 {" T
( Y! E8 T: A4 h% h% v(4) 交叉操作
$ C" S. s  Z& V1 g/ f+ c% `3 V* @
$ D9 X1 v5 d/ e6 i6 g9 I0 a# U( M9 T; B6 ]- f8 }6 f

# q: [9 x+ c4 s$ t' P( L- v! I

交叉操作的方式有很多种选择,我们应该尽可能选取好的交叉方式,保证子代能继 承父代的优良特性。同时这里的交叉操作也蕴含了变异操作。

(5) 变异操作

% f) U6 W! D# e# O4 R4 W

* ^& y; Y+ ~2 Z8 Z$ ?

(6) 选择

采用确定性的选择策略,也就是说选择目标函数值最小的 M 个个体进化到下一代,这 样可以保证父代的优良特性被保存下来。

2.3 模型求解及结论

编写 MATLAB 程序如下:


. z: G* d( o5 t7 ?) r3 Xtic+ f& q' @' b" p7 _! K
clc,clear
- R' [/ i  X) z: Jload sj.txt %加载敌方 100 个目标的数据
4 E% O/ l& n( e0 t5 }; Cx=sj(:,1:2:8);x=x(;
' k! o  g  I. Vy=sj(:,2:2:8);y=y(;) G+ \7 r3 x  {9 N
sj=[x y];* {9 d% K$ x. n) s8 X. T
d1=[70,40];' y4 Y0 F, P1 ^* e* B% U3 D+ I& i" M
sj0=[d1;sj;d1];
  b/ W  s$ _; h3 {* `5 h%距离矩阵 d
' R) |3 I' c# m1 ^  Zsj=sj0*pi/180;
5 A: R+ n3 N6 @" x' N& H; d6 xd=zeros(102);6 K( y4 ^2 f' q& K; J# n
for i=1:101% X. b7 c( {' u& v
    for j=i+1:102
- I1 T* Z' @8 w6 x5 z9 H) y% x        temp=cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2));
! X: l$ j* R- ~5 u7 C        d(i,j)=6370*acos(temp);  @4 T! w7 Q1 c7 m
    end+ C* N* J7 V! }) T0 ^5 {- U
end1 T7 f3 h0 f: T: p$ B3 z
d=d+d';L=102;w=50;dai=100;
: e0 E2 ^( M2 A4 s8 e1 ~%通过改良圈算法选取优良父代 A! f5 U& s2 }( V. R3 ?9 h4 V
for k=1:w- L$ |; o* Q( F7 f
    c=randperm(100);1 A; U1 N" W) k6 `
    c1=[1,c+1,102];: h7 x( t" P% [, @, d2 H
    flag=1;
; Y' W4 p  J4 B    while flag>0
( e4 t9 c# F# f8 y/ J, C        flag=0;2 T* J$ i  i0 b. t
        for m=1-3# M. A0 e3 l7 t& C; f* W8 ?7 Y
            for n=m+2-13 ~# Q+ v5 t3 d" c2 Y5 E3 N2 T* M, m, O
                if d(c1(m),c1(n))+d(c1(m+1),c1(n+1))<d(c1(m),c1(m+1))+d(c1(n),c1(n+1)). C5 s5 C2 H' @; L
                    flag=1;
0 _" x3 u% `4 c8 ]& {0 {                    c1(m+1:n)=c1(n:-1:m+1);: j% U% m9 \- N7 ]! Z) w
                end9 Q4 _0 o: v( ]
            end
( i: K* ]* p4 h" H9 `3 }        end
) V3 L! i0 D" u& S! I9 G; o) o+ P8 w    end
  A% X. x* Q" Q0 k    J(k,c1)=1:102;* R5 s' C2 M5 c) n4 V9 y8 i
end
# F- W) _" F6 ]% i- D: jJ=J/102;
" J, C* U9 G" zJ(:,1)=0;J(:,102)=1;
; ~  x( Q! G7 b2 b; K& irand('state',sum(clock));
* n: M: x' L. v% l+ n1 b%遗传算法实现过程
6 M" E% G# |' @  P! q" T$ O/ iA=J;) I* `9 k& e2 v0 M% B) ?3 P3 O8 w
for k=1:dai %产生 0~1 间随机数列进行编码
0 x6 ~% D+ C) t  M8 Z$ X, Y1 ]    B=A;
/ m1 s3 L4 n! A  A; a1 D3 s$ A, f    c=randperm(w);' S/ C3 a6 O5 Y# j5 Z
%交配产生子代 B# Y" U" S; d5 q' K; Y: Y
    for i=1:2:w7 [* u0 c- j9 H7 Y- ^8 v
        F=2+floor(100*rand(1));
; d' \! C; k' a        temp=B(c(i),F:102);5 e% k, c4 L% c0 R, v
        B(c(i),F:102)=B(c(i+1),F:102);
) F. o. D* o0 K% {0 W! W8 I        B(c(i+1),F:102)=temp;# l7 g: s' t; y; `# X* d% }
    end
+ i, ], n& V  g) i- |%变异产生子代 C& G* m' ^8 _1 w' _4 n
by=find(rand(1,w)<0.1);
% B* }5 n' a# [: Eif length(by)==09 U2 r3 e. L1 c% `
    by=floor(w*rand(1))+1;( ]/ l& M% ]( o
end. {8 c2 T0 u4 I9 g" x* m
C=A(by,;7 `" w1 I* K% \! t
L3=length(by);* u8 L0 D+ ~/ T1 F3 f+ S% g
for j=13
8 l; S& a- E. H! W" D, G1 N6 n4 o& n6 J- p    bw=2+floor(100*rand(1,3));( q1 k8 T4 n( @4 X8 z* d
    bw=sort(bw);0 y- K1 x& i& v1 i  e  I5 y
    C(j,=C(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:102]);/ G5 V  f, p/ A, M) M$ I1 i
end + b" O7 N5 E1 k; M9 ?5 D2 V$ u
    G=[A;B;C];* R* m7 d! Y5 W
    TL=size(G,1);
5 N& A4 T1 m/ O7 `$ J9 J: g* ]5 a %在父代和子代中选择优良品种作为新的父代
7 V: g) }% _, Y6 Y  y' I    [dd,IX]=sort(G,2);temp(1:TL)=0;2 T( @1 p; L; o7 q
    for j=1:TL" I3 C, V8 ?% j7 ~
        for i=1:101
' j) v, P" J& U& l1 ]            temp(j)=temp(j)+d(IX(j,i),IX(j,i+1));5 K6 o& H* ~* `) k5 U7 k
        end
; @8 n" D  V9 m    end8 Y& c" a( d* B9 S5 E. Z4 K0 [# n9 m! s
    [DZ,IZ]=sort(temp);
7 ]: {) S9 i; a1 L. ^& A- }4 k5 |    A=G(IZ(1:w),;
& m4 O; A5 ^, f3 e- B/ U- hend
, ?& h5 n! E' m7 E9 w% }path=IX(IZ(1),
) B5 E$ G* Y" x) f$ W! blong=DZ(1)5 |! }7 w5 J- v
toc' y( t& T: C. @7 _" m
xx=sj0(path,1);yy=sj0(path,2);
, ]& ], p* h7 h3 Pplot(xx,yy,'-o')
: d1 ^. d4 ?& `0 M/ A3 K. l+ O0 k
计算结果为 40 小时左右。其中的一个巡航路径如图 2 所示。
4 i- m! ~( v7 T8 v; b& ^9 G( J% }8 C! T, T+ g% ?/ @1 a
) Y( H! b4 \6 @0 |! Q- D

8 u* @8 l9 g8 q$ V2 {" Q* R————————————————
/ K* D4 |3 W- o+ H2 k& S版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
0 Z' o) S) h% J8 X' x, W' K. C0 _" e原文链接:https://blog.csdn.net/qq_29831163/article/details/89459503
) U+ E/ H( i3 k, \5 @9 F
4 {* P. v3 n. X' `- N7 i1 H
7 F! o* H' P# ]# o
作者: 2955324023    时间: 2020-5-25 10:02
感谢分享
4 T8 N( w+ v* n




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5