使用遗传算法计算 f(x) = 1-x^2的最大值

遗传算法计算 f(x) = 1-x^2的最大值

x 的区间是 -1<= x <= 1

F = @(x)1-x.^2;
f = @(x)2/(2^11-1)*x-1;

s = round(rand(8,11));
s = num2str(s);
s(find(s==' '))=[];
s = reshape(s, 8, 11);
for j = 1:10000
for i = 1:2
    k = round(rand(1)*8)+1;
    if  k == 9
        k = 8;
    end
    temp = s(k, :);
    wei = round(rand(1)*11)+1;
    if wei == 12
        wei = 11;
    end
    if temp(wei) == '1'
        temp(wei) = '0';
    else
        temp(wei) = '1';
    end
    s = [s ; temp];
end

for i = 3
    k = round(rand(1, 2)*8)+1;
    a = s(k(1), :);
    b = s(k(2), :);
    wei = round(rand(1, 2)*11)+1;
    temp = a(wei : 11);
    a (wei : 11) = b(wei : 11);
    b(wei : 11) = temp;
    s = [s ; a; b];
end
[ff bin] = sort(F(f(bin2dec(s))), 'descend');
s = [s(bin(1:8), :)];
end
F(f(bin2dec(s)))


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值