[已解决] 遗传算法中,有一步看不明白

[复制链接]
50贝里 发表于 2020-3-25 18:11:04
最后一步,要进行二进制中某一点的直接变异,
程序如下:
        N=4;L=3;
    mm=rand(N,2*L)<pm;%%pm是变异的几率
    mm(N,:)=zeros(1,2*L);%%这是保证最后一列不进行变异
    bval(mm)=1-bval(mm);%%最后看不懂了bval是个矩阵,mm还是个矩阵,bval(mm)是什么,最后这一步作用是什么

最佳答案


onlye_caisA 发表于 2020-3-25 22:47:28
我不懂遗传算法,但都是矩阵,应该相同
给你举个例子,帮你理解
>> B = [1,2,3,4,5;6,7,8,9,10];
>> A = [4,5;3,6]

A =

     4     5
     3     6

>> B(A)%即提取B中,A对应的A(index)

ans =

     7     3
     2     8

>> B

B =

     1     2     3     4     5
     6     7     8     9    10
回复此楼

6 条回复


onlye_caisA 发表于 2020-3-25 22:47:28
我不懂遗传算法,但都是矩阵,应该相同
给你举个例子,帮你理解
>> B = [1,2,3,4,5;6,7,8,9,10];
>> A = [4,5;3,6]

A =

     4     5
     3     6

>> B(A)%即提取B中,A对应的A(index)

ans =

     7     3
     2     8

>> B

B =

     1     2     3     4     5
     6     7     8     9    10
回复此楼

50贝里 发表于 2020-3-26 12:46:36
onlye_caisA 发表于 2020-3-25 22:47
我不懂遗传算法,但都是矩阵,应该相同
给你举个例子,帮你理解
>> B = [1,2,3,4,5;6,7,8,9,10];

大哥,是这样的,看完您的回复,我有些明白了。但还是有点疑惑。比如
bval
0 1 0 1 0 0
1 0 0 1 0 0
mm
0 0 0 0 0 1
0 0 0 0 0 0
bval(mm)=1-bval(mm)这个指令能让
bval
0 1 0 1 0 0 %% 这个o变成1吗?
1 0 0 1 0 0

onlye_caisA 发表于 2020-3-26 13:14:10
50贝里 发表于 2020-3-26 12:46
大哥,是这样的,看完您的回复,我有些明白了。但还是有点疑惑。比如
bval
0 1 0 1 0 0

bval(mm),如mm中含有0,会出现错误,

50贝里 发表于 2020-3-26 22:42:09
onlye_caisA 发表于 2020-3-26 13:14
bval(mm),如mm中含有0,会出现错误,

出现错误就无法进行了吗?

onlye_caisA 发表于 2020-3-26 22:47:41
50贝里 发表于 2020-3-26 22:42
出现错误就无法进行了吗?

除非你try catch end

50贝里 发表于 2020-3-27 17:22:44

好的,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表