matlab建立遗传算法,Matlab遗传算法(一)

该博客介绍了如何在MATLAB中安装和使用遗传算法工具箱进行优化。通过设置参数如个体数目、最大遗传代数、变量精度等,利用选择、重组和变异操作,逐步求解目标函数的最优解。在迭代过程中,记录并可视化最优解和种群均值的变化,展示遗传算法的优化过程。
摘要由CSDN通过智能技术生成

1. 安装matlab 2010

3. 解压至matlab 安装目录下的toolbox中

4. 在matlab 里 file ->Set Path 中添加刚才的解压目录,或者在.m中用addpath也可

5.  配置完成,配合《matlab遗传算法工具箱及应用》,Shellield官方的相应手册(manual.pdf,实际上左边那本书基本就是这个手册的翻译),《Matlab 从入门到精通》(周建兴),《matlab 常用函数》(.doc) 等使用

来个简单的例子,代码来自《matlab遗传算法工具箱及应用》,本人修改完善注释

figure(1);

fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲线

NIND=40; %个体数目(Number of individuals)

MAXGEN=25; %最大遗传代数(Maximum number of generations)

PRECI=20; %变量的二进制位数(Precision of variables)

GGAP=0.9; %代沟(Generation gap),可选,配合select使用,即生成length(SelCh) = length(Chrom)*0.9;

trace=zeros(2, MAXGEN); %寻优结果的初始值, '0'矩阵

FieldD=[20;-1;2;1;0;1;1]; %区域描述器(Build field descriptor)

Chrom=crtbp(NIND, PRECI); %初始种群

gen=0; %代计数器

variable=bs2rv(Chrom, FieldD); %计算初始种群的十进制转换

ObjV=variable.*sin(10*pi*variable)+2.0; %计算目标函数值,Object Value

while gen

FitnV=ranking(-ObjV); %基于排序的分配适应度值(Assign fitness values)

SelCh=select('sus', Chrom, FitnV, GGAP); %选择, Selected Children

SelCh=recombin('xovsp', SelCh, 0.7); %重组

SelCh=mut(SelCh); %变异

variable=bs2rv(SelCh, FieldD); %子代个体的十进制转换

ObjVSel=variable.*sin(10*pi*variable)+2.0; %计算子代的目标函数值

[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新种群, 同时生成了Chrom和ObjV两个矩阵

variable=bs2rv(Chrom, FieldD); %转换为十进制,表现型

gen=gen+1; %代计数器增加

%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号

[Y, I]=max(ObjV);hold on; %hold on在exsiting上画图,不清空原有的图

plot(variable(I), Y, 'bo'); %每一代最优解(1个)画于图上

trace(1, gen)=max(ObjV); %遗传算法性能跟踪

trace(2, gen)=sum(ObjV)/length(ObjV);

end

variable=bs2rv(Chrom, FieldD); %最优个体的十进制转换

hold on, grid;

plot(variable,ObjV,'b*');

figure(2);

plot(trace(1,:));

hold on;

plot(trace(2,:),'-.');grid

legend('解的变化','种群均值的变化') %legend:图注 这函数名起得霸气

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值