| 查看: 2177 | 回复: 5 | |||
[求助]
关于遗传算法中交叉的程序
|
|
% Crossover two chromosome IndexPair = zeros( 1, PopulationSize); for j = 1 : PopulationSize IndexPair( j ) = j; end % End of for - j for j = 1 : PopulationSize Point = floor ( (PopulationSize - j - 1) * rand( 1 ) ); Temp = IndexPair( j ); IndexPair( j ) = IndexPair( j + Point ); IndexPair( j + Point ) = Temp; end % End of for - j 这段程序看不太懂,请高手指点。我先说我的想法吧,首先是Indexpair初始化为1行80列的矩阵,然后进行循环 , Indexpair就变为1-80的1行80列的矩阵,再然后就是确定point点,再接下来就不懂了,我运行了下程序发现Temp就变为了一个个不相邻的数,这里是为什么呢? |
» 收录本帖的淘帖专辑推荐
精品收藏 |
» 猜你喜欢
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有6人回复
孩子确诊有中度注意力缺陷
已经有14人回复
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求助:利用蒙特卡罗方法和遗传算法求解可靠度的程序
已经有13人回复
一个关于matlab的遗传算法的问题
已经有3人回复
遗传算法的一段程序请教解释
已经有9人回复
请教关于遗传算法编程的问题(俺是小白)
已经有4人回复
【分享】粒子群算法和遗传算法应用与改进实验框架
已经有42人回复
【求助】matlab 遗传算法工具箱绘图命令是什么?
已经有6人回复
【分享】遗传算法与蚁群算法演示程序
已经有18人回复
mengxc
木虫 (著名写手)
- 应助: 3 (幼儿园)
- 金币: 4128.1
- 散金: 6
- 红花: 12
- 沙发: 2
- 帖子: 1342
- 在线: 491.6小时
- 虫号: 1148508
- 注册: 2010-11-16
- 专业: 数论
2楼2011-06-08 08:37:17
3楼2011-06-08 08:45:40
mengxc
木虫 (著名写手)
- 应助: 3 (幼儿园)
- 金币: 4128.1
- 散金: 6
- 红花: 12
- 沙发: 2
- 帖子: 1342
- 在线: 491.6小时
- 虫号: 1148508
- 注册: 2010-11-16
- 专业: 数论
【答案】应助回帖
★
臭水沟(金币+1): 谢谢应助~ 2011-06-08 15:58:37
臭水沟(金币+1): 谢谢应助~ 2011-06-08 15:58:37
|
Point = floor ( (PopulationSize - j - 1) * rand( 1 ) ); rand(1)是生成0-1之间的一个随机数,floor是向下去整; Temp = IndexPair( j ); 记录下第j个元素的值 IndexPair( j ) = IndexPair( j + Point ); 利用j + Point 元素修改j元素 IndexPair( j + Point ) = Temp; 将temp赋给j + Point 上面三行相当于是j + Point 和j元素交换位置 ![]() |
4楼2011-06-08 08:55:24
|
可是我还是不太明白这是什么意思,交换以后有什么用呢?它完了之后就是这段程序,这段程序不就是相邻的两个交叉吗? for j = 1 : 2 : ( PopulationSize - 1 ) RandP = rand( 1 ); if RandP < ProCro Point = floor ( rand( 1 ) * ChromosomeLen ) ; if Point == 0 Point = 1 end for k = Point : (ChromosomeLen + Point - 1) Temp = Population ( IndexPair( j ) ) . Chromosome( k ); Population ( IndexPair( j ) ) . Chromosome( k ) = Population ( IndexPair( j + 1) ) . Chromosome( k ); Population ( IndexPair( j + 1) ) . Chromosome( k ) = Temp; end % End of for - k end % End of if end % End of for - j IndexPair = Columns 1 through 12 12 69 45 61 64 75 49 7 15 53 76 34 Columns 13 through 24 55 33 2 72 71 57 38 41 8 18 25 58 Columns 25 through 36 5 29 11 54 14 35 27 6 70 44 39 74 Columns 37 through 48 42 43 66 36 65 21 16 1 78 26 46 22 Columns 49 through 60 13 51 47 28 30 63 67 40 56 52 19 31 Columns 61 through 72 48 73 62 4 9 77 37 17 10 32 60 20 Columns 73 through 80 24 50 68 3 59 23 79 80 结果是这样的好多步,你能不能再帮我解释解释,本人愚笨,谢谢 |
5楼2011-06-08 15:26:50
mengxc
木虫 (著名写手)
- 应助: 3 (幼儿园)
- 金币: 4128.1
- 散金: 6
- 红花: 12
- 沙发: 2
- 帖子: 1342
- 在线: 491.6小时
- 虫号: 1148508
- 注册: 2010-11-16
- 专业: 数论
6楼2011-06-08 15:42:25













回复此楼

