- 在线时间
- 4 小时
- 最后登录
- 2012-11-23
- 注册时间
- 2012-11-7
- 听众数
- 6
- 收听数
- 0
- 能力
- 0 分
- 体力
- 30 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 13
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 6
- 主题
- 3
- 精华
- 0
- 分享
- 0
- 好友
- 10
升级   8.42% TA的每日心情 | 难过 2012-11-9 16:52 |
|---|
签到天数: 1 天 [LV.1]初来乍到
- 自我介绍
- 傻傻的,笨笨的。。。
 群组: 学术交流A 群组: 学术交流B |
大家请看一下这个程序:# g0 `. {) i7 I* D
clear ;clf # S: a- _; M, U
popsize=20; %群体大小
- c, H+ l8 e9 k5 L# achromlength=10; %字符串长度(个体长度)
: V# R! O) _0 I+ z( Rpc=0.6; %交叉概率 # k% F! x( z7 {% K' R' ]0 k
pm=0.001; %变异概率 4 G% ?. O2 ^9 _) e
pop=initpop(popsize,chromlength); %随机产生初始群体
8 S$ }& d. G6 H4 x# cfor i=1:20 %20为迭代次数
& @. F$ O1 E5 ?[objvalue]=calobjvalue(pop); %计算目标函数
j1 j- w) D' b! y9 b* S5 Dfitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
) |% v( f ?+ o3 T& Q[newpop]=selection(pop,fitvalue); %复制 # G9 R. T( }+ G
[newpop]=crossover(pop,pc); %交叉
5 h) B7 }: D( _. u$ m- e[newpop]=mutation(pop,pc); %变异 7 i, i' r) ]8 I" l+ O
[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值
* T+ e, L* R' x, Jy(i)=max(bestfit); , X5 b3 D) N% w2 T
n(i)=i;
3 B+ x1 [9 | g0 a1 a8 @1 npop5=bestindividual; 5 f* Z8 r. r9 C8 @
x(i)=decodechrom(pop5,1,chromlength)*10/1023; ) D! u3 Q/ n3 }6 r: V
pop=newpop;
S) T. X# U% L) m: s4 Kend 1 b7 X+ {7 m& u3 J4 m( {6 ~% q
fplot('10*sin(5*x)+7*cos(4*x)',[0 10]) 4 S, e4 a4 U; i7 j7 a
hold on 0 @4 {5 ]0 n( P' w7 v$ f
plot(x,y,'r*') $ h! d" d' P8 B4 M
hold off $ o9 e& b0 U, n' J9 ^
%%%%%%%%%%%%
4 P# R+ z$ s4 {( B3 x2 f6 q7 t8 a 这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?
7 [; E* ]4 d0 V0 o3 R! ]1 g 当我将pop改为newpop时,程序编译时就会出现错误!!!
/ {" L; M' M3 k7 o. U( c+ E 真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!
" l9 I* }- X# U9 B4 s S. T
% B* R% [8 Y2 H* }' \3 L2 i |
zan
|