查看: 2537  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

s20090281

银虫 (小有名气)

[求助] 关于遗传算法中交叉的程序

% 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就变为了一个个不相邻的数,这里是为什么呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mengxc

木虫 (著名写手)

【答案】应助回帖

★
臭水沟(金币+1): 谢谢应助~ 2011-06-08 15:58:37
引用回帖:
Originally posted by s20090281 at 2011-06-08 08:45:40:
关键是接下来那段是什么意思呢?

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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

mengxc

木虫 (著名写手)

【答案】应助回帖

★
s20090281(金币+1): 2011-06-08 08:45:59
臭水沟(金币+1): 谢谢应助~ 2011-06-08 15:58:25
for j = 1 : PopulationSize
       IndexPair( j ) = j;
    end % End of for - j
执行完后,IndexPair的值就是1到PopulationSize
2楼2011-06-08 08:37:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

s20090281

银虫 (小有名气)

引用回帖:
Originally posted by mengxc at 2011-06-08 08:37:17:
for j = 1 : PopulationSize
       IndexPair( j ) = j;
    end % End of for - j
执行完后,IndexPair的值就是1到PopulationSize

关键是接下来那段是什么意思呢?
3楼2011-06-08 08:45:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

s20090281

银虫 (小有名气)

引用回帖:
Originally posted by mengxc at 2011-06-08 08:55:24:
Point = floor ( (PopulationSize - j - 1)  *  rand( 1 ) );
rand(1)是生成0-1之间的一个随机数,floor是向下去整;
  Temp = IndexPair( j );   记录下第j个元素的值
       IndexPair( j ) = IndexPai ...

可是我还是不太明白这是什么意思,交换以后有什么用呢?它完了之后就是这段程序,这段程序不就是相邻的两个交叉吗?
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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 极限拉扯,如何抉择 +6 Isak0320 2026-10-12 9/450 2026-10-12 21:13 by Isak0320
[基金申请] 入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍 +6 13108017953 2026-10-08 6/300 2026-10-12 20:07 by w3w3y3
[有机交流] OpenAI又攻克数学难题了,离AI做有机合成还有多远? +4 wangyl_123 2026-10-10 8/400 2026-10-12 18:09 by wangyl_123
[教师之家] 课题组会帮你通过考核么? +3 好运来~9527 2026-10-10 6/300 2026-10-12 14:55 by 简单化xn
[公派出国] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:34 by XQNyDCa1Tk5n
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:26 by XQNyDCa1Tk5n
[找工作] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 22:26 by XQNyDCa1Tk5n
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:15 by XQNyDCa1Tk5n
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 22:11 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:06 by XQNyDCa1Tk5n
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 14:25 by VOMexwnDzOFZ
[教师之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 14:05 by VOMexwnDzOFZ
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:51 by VOMexwnDzOFZ
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:45 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:54 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:34 by VOMexwnDzOFZ
[考博] 招收博士生一名 +3 mandolin 2026-10-10 3/150 2026-10-11 10:21 by 不是山谷!
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 qR2AdCWTVtkw 2026-10-09 4/200 2026-10-11 03:14 by M0zrYVSAnxpE
[有机交流] 各位大佬,路线设计求助 +6 zapen 2026-10-08 8/400 2026-10-10 15:59 by zapen
[有机交流] 我应该选哪条合成路线让实验成功率高一些? +5 jing816y 2026-10-08 9/450 2026-10-10 09:05 by zapen
信息提示
请填处理意见