MATLAB程序详细解析,遗传算法——matlab代码解析

遗传算法——matlab代码解析

本文为学习B站老哥数学建模课程之后的一点笔记,图片源自web,代码源自老哥程序包,侵权删。

详细的遗传算法原理不再赘述,百度即可找到。

算法定义

遗传算法(GA)是模拟达尔文生物进化论的自然选择和孟德尔遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。它模仿生物的遗传进化原理,通过选择(Selection)、交叉(Crossover)与变异(Mutation)等操作机制,使种群中个体的适应性(Fitness)不断提高,最终达到最优。其可以用来解决多目标线性规划问题,复杂函数优化问题和组合优化问题,影响因素指标及关联程度问题等等。

注意的几点:

以目标函数为适应度函数,若目标函数为最小值问题,还得在前面加个负号。交叉率建议取值范围0.4~0.9。变异率一般可取0.001~0.1。

算法流程图

算法代码

1.主程序

编程示例:

% 求下列函数的最大值 %

% f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] %

% 将 x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为 (10-0)/(2^10-1)≈0.01 。 %

% 将变量域 [0,10] 离散化为二值域 [0,1023], x=0+10*b/1023, 其中 b 是 [0,1023] 中的一个二值数。 %

function genmain()

tic;

clear

clf

popsize=20; %群体大小

chromlength=10; %字符串长度(个体长度)

pc=0.6; %交叉概率

pm=0.001; %变异概率

pop=initpop(popsize,chromlength); %随机产生初始群体

for i=1:20 %20为迭代次数

[objvalue]=calobjvalue(pop); %计算目标函数

fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度

[newpop]=selection(pop,fitvalue); %复制

[newpop]=crossover(pop,pc); %交叉

[newpop]=mutation(pop,pc); %变异

[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值

y(i)=max(bestfit);

n(i)=i;

pop5=bestindividual;

x(i)=decodechrom(pop5,1,chromlength)*10/1023;

pop=newpop;

end

fplot('10*sin(5*x)+7*cos(4*x)',[0 10]) %固定函数绘图 新版matlab用fplot(@(x)10.*sin(5.*x)+7.*cos(4.*x))

hold on

plot(x,y,'r*')

hold off

[z index]=max(y); %计算最大值及其位置

x5=x(index)%计算最大值对应的x值

y=z

toc

2

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值