遗传算法找最优解。

主要思想“物竞天择,适者生存”。

流程:初始化、适应度生成、适应度评估、选择、交叉、变异。

举例:

求最大值。

%f(x,y)= y.*x.*cos(2*pi.*x)+x.*sin(2.*pi.*y),x∈[-2,2],y∈[-1,1]
clc
clear
% 画出函数图像
figure(1);%给出定义域
lbx = -2;ubx = 2;
lby = -1;uby = 1;
%多元函数使用ezmesh作图,ezmesh('函数',定义域,参数)
ezmesh('y.*x.*cos(2*pi.*x)+x.*sin(2.*pi.*y)',[lbx,ubx,lby,uby],50);
hold on;
%定义遗传算法参数
NIND = 40;%种群大小,通常设为40.
MAXGEN = 500;%最大遗传代数,即循环500次
PRECI = 20;%个体长度设为20,这里是两个自变量,种群个数为2.
GGAP = 0.95;%代沟
px = 0.7;%交叉概率
pm = 0.01;%变异概率
trace = zeros(3,MAXGEN); %追踪记录
FieldD = [PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1];%这里7个参数,转化的格式
%第一个种群长度,因为有2个自变量,所以写两个,多个自变量类比
%第二个左边界值
%第三个右边界值
%编码方式,有0,1,1代表二进制,0为格雷编码,通常为二进制编码
%刻度,有0,1,0为算数刻度,1为对数刻度,通常为算数刻度
%第六个是否包含左边界
%第七个是否包含右边界
Chrom = crtbp(NIND,PRECI*2);%初始化种群
%优化
gen = 0;%计数器
XY = bs2rv(Chrom,FieldD);%转化为十进制,
X=XY(:,1);Y=XY(:,2);
ObjV=Y.*X.*cos(2*pi.*X)+X.*sin(2.*pi.*Y);
while gen<MAXGENFitnV = ranking(-ObjV);%分配适应度,这里注意ranking函数是计算最小值并排序,所以这里取负号。SelCh = select('sus',Chrom,FitnV,GGAP);%选择SelCh = recombin('xovsp',SelCh,px);%重组SelCh = mut(SelCh,pm);%变异XY = bs2rv(SelCh,FieldD);%转十进制X = XY(:,1);Y = XY(:,2);ObjVSel = Y.*X.*cos(2*pi.*X)+X.*sin(2.*pi.*Y);[Chrom,ObjV] = reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代;XY = bs2rv(Chrom,FieldD);gen = gen+1;%获取每代的最优解及其序号,Y为最优解,I为个体的序号。[Y,I] = max(ObjV);trace(1:2,gen) = XY(I,:);trace(3,gen) = Y;
end
plot3(trace(1,:),trace(2,:),trace(3,:),'bo');
grid on;
plot3(XY(:,1),XY(:,2),ObjV,'bo');
hold off;
%画进化图
figure(2);
plot(1:MAXGEN,trace(3,:));
grid on
xlabel('遗传代数')
ylabel('解的变化')
title('进化过程')
bestZ = trace(3,end);
bestX = trace(1,end);
bestY = trace(2,end);
fprintf(['最优解:\nX = ',num2str(bestX),'\nY=',num2str(bestY),'\nZ =  ',num2str(bestZ),'\n'])

Matlab智能算法chap1相关推荐

  1. matlab bs2rv.m,Matlab智能算法之遗传算法(一)

    Matlab智能算法之遗传算法(1) 以往写过的一篇文章了,旧了 1)Sheffield遗传算法工具箱的安装 我共享了下修改过文件名和后缀名的原版工具箱,地址为:http://pan.baidu.co ...

  2. matlab中存档算法代码,MATLAB 智能算法超级学习手册中程序代码

    [实例简介] MATLAB 智能算法超级学习手册中程序代码 [实例截图] [核心代码] dc90ef43-7920-434e-bdb8-0636c31c0b44 └── MATLAB 智能算法超级学习 ...

  3. 《MATLAB智能算法30个案例》:第19章 基于模拟退火算法的TSP算法

    <MATLAB智能算法30个案例>:第19章 基于模拟退火算法的TSP算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...

  4. 《MATLAB智能算法30个案例》:第20章 基于遗传模拟退火算法的聚类算法

    <MATLAB智能算法30个案例>:第20章 基于遗传模拟退火算法的聚类算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...

  5. 《MATLAB智能算法超级学习手册》一一1.3 符号变量的应用

    本节书摘来自异步社区出版社<MATLAB智能算法超级学习手册>一书中的第1章,第1.3节,作者:MATLAB技术联盟 , 高飞 , 许玢更多章节内容可以访问云栖社区"异步社区&q ...

  6. 《MATLAB智能算法30个案例》:第27章 无导师学习神经网络的分类——矿井突水水源判别

    <MATLAB智能算法30个案例>:第27章 无导师学习神经网络的分类--矿井突水水源判别 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法3 ...

  7. MATLAB智能算法30个案例分析pdf

    下载地址:网盘下载 MATLAB智能算法30个案例分析,ISBN:9787512403512,作者:史峰,王辉 等编著 下载地址:网盘下载 转载于:https://www.cnblogs.com/cf ...

  8. 《MATLAB智能算法30个案例》:第25章 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测

    <MATLAB智能算法30个案例>:第25章 有导师学习神经网络的回归拟合--基于近红外光谱的汽油辛烷值预测 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MA ...

  9. MATLAB智能算法实现 (一)

    MATLAB智能算法实现 (一) 写在前面:突然想做点儿什么,为自己本科四年的学习生涯画上一个句点.用一款自己喜欢的软件实现一些老师们在上课时总提到的智能算法应该是一件极有意义的事吧! 我的目的:没什 ...

最新文章

  1. js中字符串转json
  2. 关于CRM插件调试方面事
  3. PHP大批量正则,php – 正则表达式匹配无限数量的选项
  4. asp-Webshell免杀
  5. 少儿编程150讲轻松学Scratch(七)-Scratch学习中需要注意的地方
  6. Asterisk学习进阶-3
  7. STM32F0使用LL库实现PWM输出
  8. (LINQ 学习系列)(3)学习Linq的几个基础知识
  9. leetcode—22.二分查找题目leetcode总结
  10. kubernetes NodeIP、PodIP、ClusterIP的区别和联系
  11. 随机森林原始论文_【论文笔记】韩家炜团队AutoPhrase:从大量文本库中 自动挖掘短语...
  12. Win10 中U盘不识别的解决方法
  13. java 计算百分比 保留两位小数
  14. r语言把两个折线图图像放到一个图里_OpenCV计算机视觉学习(10)——图像变换(傅里叶变换,高通滤波,低通滤波)...
  15. 【自研IM系统Talk00】 --- 接口说明
  16. Mac电脑打开app,提示无法验证此App不包含恶意软件解决方法
  17. 如何打造抖音爆款内容,从而快速热门涨粉丨国仁网络
  18. STM32F103ZE+SHT30检测环境温度与湿度(IIC模拟时序)
  19. 嵌入式STM32—第一天GPIO实现led呼吸灯
  20. 2019年互联网公司月饼颜值大比拼!

热门文章

  1. Golang 源码安装方式 完整教程
  2. C学生管理系统 指定位置插入学生节点
  3. matlab 去除协变量,求助协变量调整
  4. MySQL的索引和存储引擎
  5. 旅行中........
  6. 生活啊生活。。。。。
  7. 魅族应用市场之--自动化测试Umeng分享报错
  8. 继奇瑞小蚂蚁之后奇瑞新能源的又一力作,奇瑞无界Pro正式上市
  9. missing separator. Stop
  10. python如何逆序输出数组_python怎样逆序输出数组?