数学建模社区-数学中国
标题:
求助:关于遗传算法的问题!!!
[打印本页]
作者:
傻蛋天天
时间:
2012-11-7 21:10
标题:
求助:关于遗传算法的问题!!!
大家请看一下这个程序:
3 \6 C& M: p1 S& J
clear ;clf
5 e3 P6 i; Z! y+ a" K _
popsize=20; %群体大小
0 Z1 h4 z8 E- N+ _) I. x
chromlength=10; %字符串长度(个体长度)
8 `* W0 n( y S3 K$ k' I+ L; R) g
pc=0.6; %交叉概率
* @/ j$ w. z5 h* F) |" S7 G
pm=0.001; %变异概率
. j2 N& {- x3 j3 p" U
pop=initpop(popsize,chromlength); %随机产生初始群体
1 Y& E1 I6 ^+ q }8 {9 m2 U3 e
for i=1:20 %20为迭代次数
' k+ Q- N& k: s# R$ Z. ]' x- E
[objvalue]=calobjvalue(pop); %计算目标函数
; f7 \5 r: m$ l9 w) R* W: n
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
+ v! C- n0 i; o: h. `" }5 Z4 L" a
[newpop]=selection(pop,fitvalue); %复制
7 \0 F; i% O# W( M% v! {0 Q
[newpop]=crossover(pop,pc); %交叉
0 s; R6 ^. v% D8 o9 k
[newpop]=mutation(pop,pc); %变异
: U4 V+ M C" I# B- i, j8 Q
[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值
' ~2 {4 \% }* J. H: ^, |
y(i)=max(bestfit);
7 W1 |: l0 z& Q1 j* s# \
n(i)=i;
6 [4 {& h; p9 D
pop5=bestindividual;
) T2 `2 b5 f/ \ s9 `4 m1 i! V2 `- V
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
f2 y2 a7 e3 V) F+ C) N
pop=newpop;
. ~& ]$ j) C+ ]- e- y A$ L
end
! ~* [+ R6 ~" }: B; u) H
fplot('10*sin(5*x)+7*cos(4*x)',[0 10])
4 q- @6 _0 P4 }- A* l$ ^7 f% M
hold on
% |( L# ~) }6 j5 B
plot(x,y,'r*')
1 o' H! d$ n: U( _8 x5 R
hold off
: ^* f) G( W! q: g7 A$ R1 {
%%%%%%%%%%%%
8 ?. p! l2 J: H) Z+ Q+ t6 B
这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?
8 T5 t+ F& ~, @6 `$ {+ n
当我将pop改为newpop时,程序编译时就会出现错误!!!
/ J$ d7 h, H6 Z
真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!
% V J7 E. G/ p/ }
+ D* r+ a' l; l8 M* Z- @, h' L
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5