遗传算法以及matlab程序实现
遗传算法以及matlab程序实现
话不多说,直接上程序,该程序为寻找目标函数的最大值,代码中所用到的matlab函数大多是基于谢菲尔德大学的遗传算法工具箱实现的,所以有小伙伴运行时出现函数问题,那就应该安装一个谢菲尔德大学的遗传算法工具箱,在我主页里有免费的谢菲尔德大学遗传算法工具箱,下面是代码部分:
%% 标准遗传算法SGA
clear
clc
pc=0.7;
pm=0.05;
%定义遗传算法参数
NIND=40; %个体数目
MAXGEN=500; %最大遗传代数
NVAR=2; %变量的维数
PRECI=20; %变量的二进制位数
GGAP=0.9; %代沟
trace=zeros(MAXGEN,1);
FieldD=[rep(PRECI,[1,NVAR]);[-3,4.1;12.1,5.8];rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND, NVAR*PRECI); %创建初始种群
gen=0; %代计数器
maxY=0; %最优值
ObjV=ObjectFunction(bs2rv(Chrom, FieldD));%计算初始种群个体的目标函数值
while gen<MAXGEN %迭代FitnV=ranking(-ObjV); %分配适应度值(Assign fitness values)SelCh=select('rws', Chrom, FitnV, GGAP); %选择SelCh=recombin('xovsp', SelCh, pc); %重组SelCh=mut(SelCh,pm); %变异ObjVSel=ObjectFunction(bs2rv(SelCh, FieldD)); %计算子代目标函数值[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入gen=gen+1; %代计数器增加if maxY<max(ObjV)maxY=max(ObjV);endtrace(gen,1)=maxY;
% % [maxO,maxI]=max(ObjV);
% % maxObjV(gen,:)=maxO;
% % maxChrom(gen,:)=Chrom(maxI,:);
end%% 进化过程图
plot(1:gen,trace(:,1));% % 输出最优解
[Y,I]=max(ObjV);
X=bs2rv(Chrom, FieldD);
disp(['最优值为:',num2str(Y)])
disp(['对应的自变量取值:',num2str(X(I,:))])
% % [Y,I]=max(maxObjV);
% % X=bs2rv(maxChrom(I,:),FieldD);
% % disp(['最优值为:',num2str(Y)])
% % disp(['对应的自变量取值:',num2str(X)])
这是遗传算法的主体部分,还需要一个函数文件(使用该遗传算法进行寻优的函数)如下:
function obj=ObjectFunction(X)
%% 待优化的目标函数
% X的每行为一个个体
col=size(X,1);
for i=1:colobj(i,1)=21.5+X(i,1)*sin(4*pi*X(i,1))+X(i,2)*sin(20*pi*X(i,2));
end%%测试函数
% % col=size(X,1);
% % for i=1:col
% % obj(i,1)=21.5+X(i,1)*sin(4*pi*X(i,2))+X(i,2)*sin(20*pi*X(i,3));
% % end
这里就可以实现用遗传算法寻找函数的最大值。
也可以子在此基础上进行改进,如寻找最小值,参数识别,以及与其他算法进行结合等等。
要想了解更多的算法以及源代码,欢迎点进我的主页
遗传算法以及matlab程序实现相关推荐
- TSP问题遗传算法通用Matlab程序
程序一:主程序 %TSP问题(又名:旅行商问题,货郎担问题)遗传算法通用matlab程序 %D是距离矩阵,n为种群个数 %参数a是中国31个城市的坐标 %C为停止代数,遗传到第 C代时程序停止,C的具 ...
- 遗传算法系统辨识matlab程序,8.8 基于遗传算法的机械手参数辨识 系统辨识理论及Matlab仿真课件.ppt...
8.8 基于遗传算法的机械手参数辨识 (1) 8.8.1 系统描述 双关节机械臂动力学方程可写为: 其中 为重力加速度. 参数 分别是机械力臂方程中未知物理参数 的函数,表达如下: 由 的定义,可知: ...
- 用matlab程序表示三角形序列,MATLAB程序举例带注释
1.绘制云图 Ex=18 En=2 He=0.2 hold on for i=1:1000 Enn=randn(1)*He+En; x(i)=randn(1)*Enn+Ex; y(i)=exp(-(x ...
- 双隐藏层BP网络的matlab仿真,求遗传算法优化含有两个隐含层的BP神经网络的matlab程序...
怎样用遗传算法优化含有两个隐含层的BP神经网络的matlab程序啊,这个代码是错的,可不知道错在哪,求高手帮忙解答,非常感谢! FieldD=[repmat(PRECI,1,N);repmat([-0 ...
- 非线性整数规划的遗传算法Matlab程序
非线性整数规划的遗传算法Matlab程序 通常,非线性整数规划是一个具有指数复杂度的NP问题,如果约束较为复杂,Matlab优化工具箱和一些优化软件比如lingo等,常常无法应用,即使能应用也不能给出 ...
- 基于遗传算法的微电网经济运行优化matlab程序
基于遗传算法的微电网经济运行优化matlab程序 摘 要: 微电网作为智能电网的一部分,是分布式电源接入电网的一种有效手段,微电网经济运行是其中一个重要研究方面.考察微电网经济性,通常是从最小运行成本 ...
- 基于多目标遗传算法的IEEE14节点系统分布式电源选址定容matlab程序
基于多目标遗传算法的IEEE14节点系统分布式电源选址定容matlab程序 摘 要: 为更好地解决分布式电源选址定容问题,提出一种改进的多目标遗传算法.之后,考虑投资成本.网损以及电压稳定性三因素建立 ...
- 分布式电源优化配置与选址定容MATLAB程序基于遗传算法
分布式电源优化配置与选址定容MATLAB程序基于遗传算法 (1)该程序为基于遗传算法的分布式电源优化配置与选址定容程序,硕士学位论文源程序,配有该论文. (2)本程序可有效配置分布式电源容量与安装位置 ...
- MATLAB程序采用非支配排序遗传算法(NSGA2)求解分布式电源选址定容问题
MATLAB程序采用非支配排序遗传算法(NSGA2)求解分布式电源选址定容问题,可作为一个有用的参考,程序注释明确,算法原理可以自己搜. 现有:6920651507678049浪迹天涯
最新文章
- Linux设备驱动--块设备(二)之相关结构体
- python 的dict的append()?
- YbtOJ#20067-[NOIP2020模拟赛B组Day5]糖果分配【dp】
- android aar jar制作,AndroidStudio aar、jar生成及其引用
- dns服务器v6解析 windows_04:缓存DNS、Split分离解析、电子邮件通信、Web服务器项目实战...
- 漫步最优化三十六——基本共轭方向法
- 由于芯片短缺 现代汽车牙山工厂将再度停产
- 改变世界的iPhone背后都有些什么?
- 大道至简 第二章 读后随笔
- 微服务架构的核心要点和实现原理解析
- 函数__内置函数(reversed,slice,format,ord,chr,ascii,repr)递归,迭代,二分法
- 阿里要把雄安打造成AI第一城:未来30年城市长啥样?
- java怎么测试接口测试_java怎么测试接口
- 软考中级软件设计师--5面向对象基础
- python playsound 报UnicodeDecodeError
- 链游成公链新宠,风口之下究竟哪家称王?
- 产品设计(1):开源产品设计工具pencil
- excel表格如何转换成word表格_轻松将Excel表格完美转换成Word文档
- 谷歌雅虎新闻大战-两种路线的PK
- 育儿知识小分享—— 如何引导孩子学会分享