| 查看: 2213 | 回复: 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就变为了一个个不相邻的数,这里是为什么呢? |
» 收录本帖的淘帖专辑推荐
精品收藏 |
» 猜你喜欢
职称评审没过,求安慰
已经有49人回复
26申博自荐
已经有3人回复
A期刊撤稿
已经有4人回复
垃圾破二本职称评审标准
已经有17人回复
投稿Elsevier的Neoplasia杂志,到最后选publishing options时页面空白,不能完成投稿
已经有22人回复
EST投稿状态问题
已经有7人回复
毕业后当辅导员了,天天各种学生超烦
已经有4人回复
三无产品还有机会吗
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求助:利用蒙特卡罗方法和遗传算法求解可靠度的程序
已经有13人回复
一个关于matlab的遗传算法的问题
已经有3人回复
遗传算法的一段程序请教解释
已经有9人回复
请教关于遗传算法编程的问题(俺是小白)
已经有4人回复
【分享】粒子群算法和遗传算法应用与改进实验框架
已经有42人回复
【求助】matlab 遗传算法工具箱绘图命令是什么?
已经有6人回复
【分享】遗传算法与蚁群算法演示程序
已经有18人回复
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
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
|
可是我还是不太明白这是什么意思,交换以后有什么用呢?它完了之后就是这段程序,这段程序不就是相邻的两个交叉吗? 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













回复此楼