【 MATLAB 】遗传算法程序

有段时间,一直用为知笔记记笔记,可是后来使用了csdn博客后,就不太喜欢用为知笔记了,可惜了我的会员。笔记里的一些东西,例如公式什么的,都不能直接复制过来,很是遗憾。

准备弃用为知笔记了,把这个遗传算法的程序粘过来吧,即使对我可能没什么用了,但也可能有需要用的人。

程序很详细,当时上课的时候就是用这个程序编的一篇小报告。程序很详细。

function main()
%% -------------主函数-----------------------------------
%                用遗传算法求:
%   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);
    [y] = cal_objvalue(newpop);  
    figure(1);
    set(1, 'unit', 'normalized', 'position', [0.1,0.1,0.7,0.7]);
    i
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李锐博恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值