数学建模社区-数学中国
标题:
求助:关于遗传算法的问题!!!
[打印本页]
作者:
傻蛋天天
时间:
2012-11-7 21:10
标题:
求助:关于遗传算法的问题!!!
大家请看一下这个程序:
: G3 ~5 Y5 K5 O( k" B
clear ;clf
( J' c" n6 i& s! {
popsize=20; %群体大小
1 Y% r; ^' U3 A. {) `5 l
chromlength=10; %字符串长度(个体长度)
0 L6 K8 C4 s) Z$ \
pc=0.6; %交叉概率
I* x/ [9 O- a4 k3 P
pm=0.001; %变异概率
, i- g' u. n+ R ?. H# D6 ^& x8 u2 `
pop=initpop(popsize,chromlength); %随机产生初始群体
2 k6 |5 s- ?+ ~. G! ?
for i=1:20 %20为迭代次数
- L* \) k% r# Q4 `% @4 R
[objvalue]=calobjvalue(pop); %计算目标函数
) `& q+ L" J2 B* b" b
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
& Z3 Q& S6 ~8 t8 X/ v
[newpop]=selection(pop,fitvalue); %复制
& j! O) m) r" r6 }7 C7 u
[newpop]=crossover(pop,pc); %交叉
l' `, ~# [. E8 t
[newpop]=mutation(pop,pc); %变异
/ w; s, h ?/ B9 Z- T }+ B8 J K9 j
[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值
# h3 h% J) `3 V% h# s, f7 }
y(i)=max(bestfit);
4 @$ S# M" S- q( z8 w1 C8 ]
n(i)=i;
$ E, V4 _, A$ o3 I, I0 W
pop5=bestindividual;
, X6 u+ v# q' b. m
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
, o4 |, i% B. N; B5 q& {
pop=newpop;
. G6 Y1 M7 s, E; K1 I/ ]% u A
end
# i8 C7 H* v# u2 H$ k5 }! Z
fplot('10*sin(5*x)+7*cos(4*x)',[0 10])
7 {! f$ K& n3 J; i: e& t5 {- ?
hold on
; k; w) n+ Y$ U$ G8 j
plot(x,y,'r*')
% _) w% G; H- y8 s8 t* ]
hold off
P( `$ Z2 k6 p5 l; B" v
%%%%%%%%%%%%
$ I" z) v* z1 W0 z p1 m
这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?
) g4 _. }9 w; r E; R p
当我将pop改为newpop时,程序编译时就会出现错误!!!
- K4 U; x9 I; o, `4 a6 ^" W
真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!
6 g# t, }2 j% `+ S
! P* C8 b$ \5 ]9 D
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5