遗传算法自学笔记6

               用遗传算法求:
%   max: f(x1,x2) = 21.5+x1*sin(4*pi*x1)+x2*sin(20*pi*x2) 
%        s.t: -3.0 <= x1 <= 12.1
%              4.1 <= x2 <= 5.8
%---------------------------------------------------------------
clear
clc
close all
popsize = 100;     %种群大小
x1_length = 18;   %x1长度为18
x2_length = 15;   %x2长度为15
chromlength = 33;  %二进制编码长度
pc = 0.25;          %交叉概率
pm = 0.01;        %变异概率
pop = initpop(popsize,chromlength);   %初始种群
for i = 1:1000 % 迭代1000次
    [objvalue] = cal_objvalue(pop);%计算计算函数值
    fitvalue = objvalue; %令适应度等于函数值
    [newpop] = selection(pop,fitvalue);  %选择操作
    [newpop] = crossover(newpop,pc);     %交叉操作
    [newpop] = mutation(newpop,pm);      %变异操作
    pop = newpop;                %更新种群
    % 将种群的每个个体表示出来
    [A B] = binary2decimal(newpop);%使用binary2decimal函数把newpop里的二进制数换算成十进制并赋值给A B。
    [y] = cal_objvalue(newpop);  %计算适应度
    figure(1);
    set(1, 'unit', 'normalized', 'position', [0.1,0.1,0.7,0.7]);
    if  i<=100&mod(i,10)==0  %每迭代10次做一次图,画100次以内的图
        j = floor(i/10);
        %画3d图
        X = -3.0:0.1:12.1;
        Y = 4.1:0.1:5.8;
        subplot(2,5,j);%画多个图放在画面中,按2行,每行5个,总计j个图画。
        [X, Y] = meshgrid(X,Y);%对确定x与y轴向量后,运算得到z轴,在画三维图像。
        Z = 21.5 + X.*sin(4*pi*X) + Y.*sin(20*pi*Y);
        mesh(X,Y,Z);
        hold on;
        title(['迭代次数为 n=' num2str(i)]);
        plot3(A,B,y,'*');
    end
 
————————————————
版权声明:本文为CSDN博主「李锐博恩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Reborn_Lee/article/details/82913414
画图操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值