数学建模社区-数学中国
标题:
求助:关于遗传算法的问题!!!
[打印本页]
作者:
傻蛋天天
时间:
2012-11-7 21:10
标题:
求助:关于遗传算法的问题!!!
大家请看一下这个程序:
2 h3 S! Q0 @# t9 I9 \9 s
clear ;clf
. z! S( t# j' T" t
popsize=20; %群体大小
4 k, C1 Y" T$ \+ D
chromlength=10; %字符串长度(个体长度)
6 t( v) ] {3 h6 Q) L
pc=0.6; %交叉概率
: {- K5 [8 I* J7 p8 w- E
pm=0.001; %变异概率
5 w7 w1 N- [7 Z# o( e8 L
pop=initpop(popsize,chromlength); %随机产生初始群体
. |" A) x6 d: x8 a( n$ p% ~& q! {
for i=1:20 %20为迭代次数
; e4 y+ ^* c1 P5 K
[objvalue]=calobjvalue(pop); %计算目标函数
3 b k8 z4 |& A7 j% a
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
# G# h5 n; v% K0 v z; P# G
[newpop]=selection(pop,fitvalue); %复制
1 u; D: X7 }" g
[newpop]=crossover(pop,pc); %交叉
( \2 H; [! p! O @' c
[newpop]=mutation(pop,pc); %变异
/ V6 a$ i/ ?, W" Z- M
[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值
4 f. A% j/ E8 j d' P% i2 [. M
y(i)=max(bestfit);
/ }; _* s! ~, N
n(i)=i;
. d5 _. K4 o# K7 O# y
pop5=bestindividual;
2 K+ F) c- l7 Z! K' ~
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
! i- ? [5 l$ j: L4 k
pop=newpop;
: s8 A5 u; V: e* U
end
1 N4 v- A# f# u. g3 I- I# G) L
fplot('10*sin(5*x)+7*cos(4*x)',[0 10])
: S( Z. q: {8 P$ E, {1 l5 W T
hold on
$ c7 c5 o- ?' z3 D) s6 o
plot(x,y,'r*')
# g" @3 ]" E9 G' k
hold off
1 l' o1 F1 R& s7 {0 g: ~
%%%%%%%%%%%%
8 f5 M2 U$ x2 N; E
这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?
; a2 [) P' B7 y0 U6 {6 Q9 U
当我将pop改为newpop时,程序编译时就会出现错误!!!
; m: U$ Q& l- I, }2 Y
真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!
' w+ T y$ L4 W4 W
2 _% i. L0 l7 `, ^0 X M
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5