24小时热门版块排行榜    

查看: 3196  |  回复: 9

s20090281

银虫 (小有名气)

[求助] 遗传算法的一段程序请教解释

各位高手我在做遗传算法的东西,但是自己刚开始研究,高手给我解决一下下面的程序是什么意思吧:
while generation<=maxgen
   ind=randperm(N-2)+2; % 随机配对交叉
   A=fatherrand(:,ind(1N-2)/2));
   B=fatherrand(:,ind((N-2)/2+1:end));
%     多点交叉
   rnd=rand(num,(N-2)/2);
   ind=rnd   tmp=A(ind);
   A(ind)=B(ind);
   B(ind)=tmp;
% % 两点交叉
%     for kk=1N-2)/2
%         rndtmp=randint(1,1,num)+1;
%         tmp=A(1:rndtmp,kk);
%         A(1:rndtmp,kk)=B(1:rndtmp,kk);
%         B(1:rndtmp,kk)=tmp;
%     end
   fatherrand=[fatherrand(:,1:2),A,B];
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

【答案】应助回帖

★ ★
xiegangmai(金币+2): 鼓励讨论交流! 2011-05-15 22:10:42
s20090281(金币+2): 2011-05-16 08:15:05
楼主,你给的程序里面好像有很多的自定义函数,比如fatherrand(  ),A(  ),B(  ),randint(  ),randtemp(  ),遗传算法的流程并不困难,把这些自定义的函数的功能理解清楚就应该没问题了。
我也是刚开始学遗传算法。
往事并不如烟
2楼2011-05-14 08:59:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

s20090281

银虫 (小有名气)

引用回帖:
Originally posted by wangyuewu08 at 2011-05-14 08:59:48:
楼主,你给的程序里面好像有很多的自定义函数,比如fatherrand(  ),A(  ),B(  ),randint(  ),randtemp(  ),遗传算法的流程并不困难,把这些自定义的函数的功能理解清楚就应该没问题了。
我也是刚开始学遗传算法。

我主要是对这个交叉不明白,为什么是这样的?那以后可以多交流
3楼2011-05-16 08:21:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

交叉的意思就是在两个染色体相同的位置上进行互换,这个在高中的生物中讲的很多。

楼主,请教一下细节:
1.图标“”那里有没有运算符?
2.在你的遗传算法中,个体是怎样表示的,染色体如何编码,如何存储,感觉这段代码中的A和B就是染色体的矩阵,可否详细告诉它们的维数,行、列的意义?
3.N代表什么?

有了这些,对理解会有帮助
往事并不如烟
4楼2011-05-16 09:06:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouhanlei

银虫 (初入文坛)

【答案】应助回帖

★ ★
xiegangmai(金币+2): 谢谢应助! 2011-05-16 22:18:38
s20090281(金币+2): 2011-05-17 11:54:19
内容已删除
为祖国加油!
5楼2011-05-16 09:12:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

s20090281

银虫 (小有名气)

引用回帖:
Originally posted by wangyuewu08 at 2011-05-16 09:06:47:
交叉的意思就是在两个染色体相同的位置上进行互换,这个在高中的生物中讲的很多。

楼主,请教一下细节:
1.图标“”那里有没有运算符?
2.在你的遗传算法中,个体是怎样表示的,染色体如何编码,如何存储, ...

就是:的意思,具体是怎么编码的,我也不太清楚,A,B就是做为父代的,N没有限定具体取多大的值。
6楼2011-05-18 08:30:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★
xiegangmai(金币+4): 谢谢应助! 2011-05-18 22:56:13
s20090281(金币+6): 很感谢你,以后还要多多请教呢 2011-05-19 08:28:59
因为楼主和管理员都给了金币,今天又花时间把这代码看了几遍,组要是揣测那些没有交代清楚的条件(在其它子函数中定义的变量)。
我推测fatherrand是num行N列的数组,其中每一列元素代表种群中的一个个体,fatherrand是一个种群,num应该是染色体代码的长度。
先说说这一段:
ind=randperm(N-2)+2; % 随机配对交叉
   A=fatherrand(:,ind(1N-2)/2));
   B=fatherrand(:,ind((N-2)/2+1:end));

ind=randperm(N-2)+2;      作用是将( N - 2 )进行全排,排列之后加上2是为了能够选取最后两列的个体,但是这样的话fatherrand的前2列始终不参加交叉,这个从代码的最后一句 fatherrand=[fatherrand(:,1:2),A,B]可以看出,是将前2列与交叉之后的A和B重新组成新的种群。
A=fatherrand(:,ind(1N-2)/2));       作用是将( N - 2 )个个体的一半放在数组A中。
B=fatherrand(:,ind((N-2)/2+1:end));    将另一半放在B中。

多点交叉我还没有看懂,在这里只说说我对两点交叉的理解:
% % 两点交叉
%     for kk=1: ( N-2)/2
%         rndtmp=randint(1,1,num)+1;
%         tmp=A(1:rndtmp,kk);
%         A(1:rndtmp,kk)=B(1:rndtmp,kk);
%         B(1:rndtmp,kk)=tmp;
%     end

for kk=1: ( N-2)/2;   作用是能够遍历A和B中的( N - 2 ) / 2个个体(从第一列到最后一列)。
rndtmp=randint(1,1,num)+1;      作用是产生一个[ 1, num ]的随机数,注意是闭区间,这个随机数确定了交叉点在染色体中的位置。由于只确定了一个交叉点,所以我觉得这应该叫单点交叉(我看到的一个GA算法的例子中是这样定义单点交叉的)。

%         tmp=A(1:rndtmp,kk);
%         A(1:rndtmp,kk)=B(1:rndtmp,kk);
%         B(1:rndtmp,kk)=tmp;
这3行的作用是将A中某一列的( 1 : rndtmp )个元素与B中相应列的相应元素进行交换,也就是交叉。循环( N - 2 ) / 2次,将A和B中的相应个体均进行交叉。

最后一句的作用是将交叉后的个体与没有参与交叉的前2个个体进行组合,生成新的种群。

有空再帮楼主看看多点交叉的代码,写了这么大一坨字,希望楼主别嫌我太啰嗦
往事并不如烟
7楼2011-05-18 20:13:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ocnzhao

木虫 (正式写手)

游戏

★ ★
xiegangmai(金币+2): 谢谢应助! 2011-05-19 21:37:09
多点交叉就是首先选好父代,
A=[a1,a2,a3,.....,an];
B=[b1,b2,b3,......,bn]
然后可以随机产生1-m(其中m 然后以这些位置点做数组的下表对父代进行操作就可以了
数学软件交流群84998420
8楼2011-05-19 13:32:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小新爱小白

金虫 (小有名气)

引用回帖:
1317898楼: Originally posted by wangyuewu08 at 2011-05-18 20:13:23
因为楼主和管理员都给了金币,今天又花时间把这代码看了几遍,组要是揣测那些没有交代清楚的条件(在其它子函数中定义的变量)。
我推测fatherrand是num行N列的数组,其中每一列元素代表种群中的一个个体,fatherr ...

小弟正在学习遗传算法,准备运用到资源调度问题中。买了一些GA的参考书也查阅了一些相关遗传算法的文献,可还是感觉摸不着头脑,有老师推荐直接从资源调度的遗传算法源代码程序入手,可我找了很久也没有找到相关的代码,不知哪位前辈可以帮忙,还望赐教!(最好是能用Matlab编写的代码)谢谢……
天天开心,事事顺利
9楼2012-08-06 19:42:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yujunhui

银虫 (著名写手)


xiegangmai: 金币+1, 谢谢参与! 2012-08-06 23:22:20
楼主用什么软件学习GA,
我是用malab
直接从help中学习
安静
10楼2012-08-06 20:12:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 s20090281 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 基金未中,这种答复是模板吗? +4 zhaosm1982 2026-08-27 5/250 2026-08-27 12:17 by zhaosm1982
[文学芳草园] 梦想 +3 myrtle 2026-08-26 3/150 2026-08-27 10:01 by angelyueyi
[基金申请] 面上合作单位盖章 +3 ssyjh 2026-08-27 3/150 2026-08-27 09:59 by 阿拉贡aragon
[基金申请] 基金不中,共勉 +7 eulota 2026-08-26 7/350 2026-08-27 09:02 by hsding2026
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 国自然面上复盘~欢迎讨论 +7 晴天加油 2026-08-26 8/400 2026-08-27 07:53 by longfie172
[教师之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 LIbGuocjEEYw 2026-08-26 4/200 2026-08-27 04:33 by Ie9AyIAvGbvs
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 LIbGuocjEEYw 2026-08-26 4/200 2026-08-27 02:01 by Ie9AyIAvGbvs
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 范进中举一文的中心思想 +9 炎黄贵胄 2026-08-22 10/500 2026-08-26 15:40 by semaglutide
[基金申请] 科研孤儿太难了 +21 我4大白菜 2026-08-20 22/1100 2026-08-26 11:29 by nlgza
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
[基金申请] 建议基金发布提前给出明确的时间点 +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
信息提示
请填处理意见