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

上传人:b****4 文档编号:5390252 上传时间:2023-05-08 格式:DOCX 页数:141 大小:1.48MB
下载 相关 举报
MATLAB智能算法30个案例分析.docx_第1页
第1页 / 共141页
MATLAB智能算法30个案例分析.docx_第2页
第2页 / 共141页
MATLAB智能算法30个案例分析.docx_第3页
第3页 / 共141页
MATLAB智能算法30个案例分析.docx_第4页
第4页 / 共141页
MATLAB智能算法30个案例分析.docx_第5页
第5页 / 共141页
MATLAB智能算法30个案例分析.docx_第6页
第6页 / 共141页
MATLAB智能算法30个案例分析.docx_第7页
第7页 / 共141页
MATLAB智能算法30个案例分析.docx_第8页
第8页 / 共141页
MATLAB智能算法30个案例分析.docx_第9页
第9页 / 共141页
MATLAB智能算法30个案例分析.docx_第10页
第10页 / 共141页
MATLAB智能算法30个案例分析.docx_第11页
第11页 / 共141页
MATLAB智能算法30个案例分析.docx_第12页
第12页 / 共141页
MATLAB智能算法30个案例分析.docx_第13页
第13页 / 共141页
MATLAB智能算法30个案例分析.docx_第14页
第14页 / 共141页
MATLAB智能算法30个案例分析.docx_第15页
第15页 / 共141页
MATLAB智能算法30个案例分析.docx_第16页
第16页 / 共141页
MATLAB智能算法30个案例分析.docx_第17页
第17页 / 共141页
MATLAB智能算法30个案例分析.docx_第18页
第18页 / 共141页
MATLAB智能算法30个案例分析.docx_第19页
第19页 / 共141页
MATLAB智能算法30个案例分析.docx_第20页
第20页 / 共141页
亲,该文档总共141页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《MATLAB智能算法30个案例分析.docx》由会员分享,可在线阅读,更多相关《MATLAB智能算法30个案例分析.docx(141页珍藏版)》请在冰点文库上搜索。

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

MATLAB智能算法30个案例分析

MATLAB智能算法30个案例分析

第1章

1、案例背景

遗传算法(GeneticAlgorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。

遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。

在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。

基因组成的串就是染色体,或者叫基因型个体(Individuals) 。

一定数量的个体组成了群体(Population)。

群体中个体的数目称为群体大小(PopulationSize),也叫群体规模。

而各个个体对环境的适应程度叫做适应度(Fitness) 。

2、案例目录:

1.1 理论基础

1.1.1 遗传算法概述

1. 编码

2. 初始群体的生成

3. 适应度评估

4. 选择

5. 交叉

6. 变异

1.1.2 设菲尔德遗传算法工具箱

1. 工具箱简介

2. 工具箱添加

1.2 案例背景

1.2.1 问题描述

1. 简单一元函数优化

2. 多元函数优化

1.2.2 解决思路及步骤

1.3MATLAB程序实现

1.3.1 工具箱结构

1.3.2 遗传算法中常用函数

1. 创建种群函数—crtbp

2. 适应度计算函数—ranking

3. 选择函数—select

4. 交叉算子函数—recombin

5. 变异算子函数—mut

6. 选择函数—reins

7. 实用函数—bs2rv

8. 实用函数—rep

1.3.3 遗传算法工具箱应用举例

1. 简单一元函数优化

2. 多元函数优化

1.4 延伸阅读

1.5 参考文献

3、主程序:

1.简单一元函数优化:

clc

clearall

closeall

%%画出函数图

figure

(1);

holdon;

lb=1;ub=2;%函数自变量范围【1,2】

ezplot('sin(10*pi*X)/X',[lb,ub]);%画出函数曲线

xlabel('自变量/X')

ylabel('函数值/Y')

%%定义遗传算法参数

NIND=40;%个体数目

MAXGEN=20;%最大遗传代数

PRECI=20;%变量的二进制位数

GGAP=0.95;%代沟

px=0.7;%交叉概率

pm=0.01;%变异概率

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

FieldD=[PRECI;lb;ub;1;0;1;1];%区域描述器

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

%%优化

gen=0;%代计数器

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

ObjV=sin(10*pi*X)./X;%计算目标函数值

whilegen

FitnV=ranking(ObjV);%分配适应度值

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

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

SelCh=mut(SelCh,pm);%变异

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

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

[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代,得到新种群

X=bs2rv(Chrom,FieldD);

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

%获取每代的最优解及其序号,Y为最优解,I为个体的序号

[Y,I]=min(ObjV);

trace(1,gen)=X(I);%记下每代的最优值

trace(2,gen)=Y;%记下每代的最优值

end

plot(trace(1,:

),trace(2,:

),'bo');%画出每代的最优点

gridon;

plot(X,ObjV,'b*');%画出最后一代的种群

holdoff

%%画进化图

figure

(2);

plot(1:

MAXGEN,trace(2,:

));

gridon

xlabel('遗传代数')

ylabel('解的变化')

title('进化过程')

bestY=trace(2,end);

bestX=trace(1,end);

fprintf(['最优解:

\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])

2.多元函数优化

clc

clearall

closeall

%%画出函数图

figure

(1);

lbx=-2;ubx=2;%函数自变量x范围【-2,2】

lby=-2;uby=2;%函数自变量y范围【-2,2】

ezmesh('y*sin(2*pi*x)+x*cos(2*pi*y)',[lbx,ubx,lby,uby],50);%画出函数曲线

holdon;

%%定义遗传算法参数

NIND=40;%个体数目

MAXGEN=50;%最大遗传代数

PRECI=20;%变量的二进制位数

GGAP=0.95;%代沟

px=0.7;%交叉概率

pm=0.01;%变异概率

trace=zeros(3,MAXGEN);%寻优结果的初始值

FieldD=[PRECIPRECI;lbxlby;ubxuby;11;00;11;11];%区域描述器

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

%%优化

gen=0;%代计数器

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

X=XY(:

1);Y=XY(:

2);

ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y);%计算目标函数值

whilegen

FitnV=ranking(-ObjV);%分配适应度值

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.*sin(2*pi*X)+X.*cos(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');%画出每代的最优点

gridon;

plot3(XY(:

1),XY(:

2),ObjV,'bo');%画出最后一代的种群

holdoff

%%画进化图

figure

(2);

plot(1:

MAXGEN,trace(3,:

));

gridon

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'])

第2章基于遗传算法和非线性规划的函数寻优算法

1.1案例背景

  1.1.1 非线性规划方法

  非线性规划是20世纪50年代才开始形成的一门新兴学科。

1951年H.W.库恩和A.W.塔克发表的关于最优性条件(后来称为库恩.塔克条件)的论文是非线性规划正式诞生的一个重要标志。

  非线性规划研究一个n元实函数在一组等式或不等式的约束条件下的极值问题,且目标函数和约束条件至少有一个是未知量的非线性函数。

非线性规划的一个重要理论是1951年Kuhn-Tucker最优条件(简称KT条件)的建立。

此后的50年代主要是对梯度法和牛顿法的研究。

以Davidon(1959),Fletcher和Powell(1963)提出的DFP方法为起点,60年代是研究拟牛顿方法活跃时期,同时对共轭梯度法也有较好的研究。

在1970年由Broyden,Fletcher、Goldfarb 和Shanno从不同的角度共同提出的BFGS方法是目前为止最有效的拟牛顿方法。

由于Broyden,Dennis 和More的工作使得拟牛顿方法的理论变得很完善。

 70年代是非线性规划飞速发展时期, 约束变尺度(SQP)方法(Han和Powell为代表)和Lagrange乘子法(代表人物是Powell 和Hestenes)是这一时期主要研究成果.计算机的飞速发展使非线性规划的研究如虎添翼。

80年**始研究信赖域法、稀疏拟牛顿法、大规模问题的方法和并行计算,90年代研究解非线性规划问题的内点法和有限储存法。

可以毫不夸张的说,这半个世纪是最优化发展的黄金时期。

      1.1.2非线性规划函数

      fmincon函数是Matlab最优化工具箱中用来求解非线性规划问题的重要函数,它从一个预估值出发,搜索约束条件下非线性多元函数的最小值。

      1.1.3 案例

                 

  

1.2 模型建立

  算法流程图如下:

                                         

1.3仿真结果

                                      非线性遗传算法寻优结果如下:

                               

                                    普通遗传算法寻优结果如下:

                                 

主函数代码如下:

%%清空环境

clc

clear

%%遗传算法参数

maxgen=30;%进化代数

sizepop=100;%种群规模

pcross=[0.6];%交叉概率

pmutation=[0.01];%变异概率

lenchrom=[11111];%变量字串长度

bound=[00.9*pi;00.9*pi;00.9*pi;00.9*pi;00.9*pi];%变量范围

%%个体初始化

individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);%种群结构体

avgfitness=[];%种群平均适应度

bestfitness=[];%种群最佳适应度

bestchrom=[];%适应度最好染色体

%初始化种群

fori=1:

sizepop

(i,:

)=Code(lenchrom,bound);%随机产生个体

x=(i,:

);

ss(i)=fun(x);%个体适应度

end

%找最好的染色体

[bestfitnessbestindex]=min(ss);

bestchrom=(bestindex,:

);%最好的染色体

avgfitness=sum(ss)/sizepop;%染色体的平均适应度

%记录每一代进化中最好的适应度和平均适应度

trace=[avgfitnessbestfitness];

%%进化开始

fori=1:

maxgen

%选择操作

individuals=Select(individuals,sizepop);

avgfitness=sum(ss)/sizepop;

%交叉操作

=Cross(pcross,lenchrom,,sizepop,bound);

%变异操作

=Mutation(pmutation,lenchrom,,sizepop,[imaxgen],bound);

%计算适应度

forj=1:

sizepop

x=(j,:

);

ss(j)=fun(x);

end

%找到最小和最大适应度的染色体及它们在种群中的位置

[newbestfitness,newbestindex]=min(ss);

[worestfitness,worestindex]=max(ss);

%代替上一次进化中最好的染色体

ifbestfitness>newbestfitness

bestfitness=newbestfitness;

bestchrom=(newbestindex,:

);

end

(worestindex,:

)=bestchrom;

ss(worestindex)=bestfitness;

avgfitness=sum(ss)/sizepop;

trace=[trace;avgfitnessbestfitness];%记录每一代进化中最好的适应度和平均适应度

end

%进化结束

%%结果显示

[rc]=size(trace);

plot([1:

r]',trace(:

1),'r-',[1:

r]',trace(:

2),'b--');

title(['函数值曲线''终止代数='num2str(maxgen)]);

xlabel('进化代数');ylabel('函数值');

legend('各代平均值','各代最佳值');

disp('函数值变量');

%窗口显示

disp([bestfitnessx]);

第3章基于遗传算法的BP神经网络优化算法

1、案例背景

BP网络是一类多层的前馈神经网络。

它的名字源于在网络训练的过程中,调整网络的权值的算法是误差的反向传播的学习算法,即为BP学习算法。

BP算法是Rumelhart等人在1986年提出来的。

由于它的结构简单,可调整的参数多,训练算法也多,而且可操作性好,BP神经网络获得了非常广泛的应用。

据统计,有80%~90%的神经网络模型都是采用了BP网络或者是它的变形。

BP网络是前向网络的核心部分,是神经网络中最精华、最完美的部分。

BP神经网络虽然是人工神经网络中应用最广泛的算法,但是也存在着一些缺陷,例如:

①、学习收敛速度太慢;

②、不能保证收敛到全局最小点;

③、网络结构不易确定。

另外,网络结构、初始连接权值和阈值的选择对网络训练的影响很大,但是又无法准确获得,针对这些特点可以采用遗传算法对神经网络进行优化。

本节以某型号拖拉机的齿轮箱为工程背景,介绍使用基于遗传算法的BP神经网络进行齿轮箱故障的诊断。

2、案例目录:

第3章 基于遗传算法的BP神经网络优化算法

3.1 理论基础

  3.1.1BP神经网络概述

  3.1.2 遗传算法概述

3.2 案例背景

  3.2.1 问题描述

  3.2.2 解决思路及步骤

  1. 算法流程

  2. 神经网络算法实现

  3. 遗传算法实现

3.3MATLAB程序实现

  3.3.1 神经网络算法

  3.3.2 遗传算法主函数

  3.3.3 比较使用遗传算法前后的差别

  3.3.4 结果分析

3.4 延伸阅读

3.5 参考文献

3、主程序:

clc

clearall

closeall

%%加载神经网络的训练样本测试样本每列一个样本输入P输出T

%样本数据就是前面问题描述中列出的数据

loaddata

%初始隐层神经元个数

hiddennum=31;

%输入向量的最大值和最小值

threshold=[01;01;01;01;01;01;01;01;01;01;01;01;01;01;01];

inputnum=size(P,1);%输入层神经元个数

outputnum=size(T,1);%输出层神经元个数

w1num=inputnum*hiddennum;%输入层到隐层的权值个数

w2num=outputnum*hiddennum;%隐层到输出层的权值个数

N=w1num+hiddennum+w2num+outputnum;%待优化的变量的个数

%%定义遗传算法参数

NIND=40;%个体数目

MAXGEN=50;%最大遗传代数

PRECI=10;%变量的二进制位数

GGAP=0.95;%代沟

px=0.7;%交叉概率

pm=0.01;%变异概率

trace=zeros(N+1,MAXGEN);%寻优结果的初始值

FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)];%区域描述器

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

%%优化

gen=0;%代计数器

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

ObjV=Objfun(X,P,T,hiddennum,P_test,T_test);%计算目标函数值

whilegen

fprintf('%d\n',gen)

FitnV=ranking(ObjV);%分配适应度值

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

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

SelCh=mut(SelCh,pm);%变异

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

ObjVSel=Objfun(X,P,T,hiddennum,P_test,T_test);%计算子代的目标函数值

[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代到父代,得到新种群

X=bs2rv(Chrom,FieldD);

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

%获取每代的最优解及其序号,Y为最优解,I为个体的序号

[Y,I]=min(ObjV);

trace(1:

N,gen)=X(I,:

);%记下每代的最优值

trace(end,gen)=Y;%记下每代的最优值

end

%%画进化图

figure

(1);

plot(1:

MAXGEN,trace(end,:

));

gridon

xlabel('遗传代数')

ylabel('误差的变化')

title('进化过程')

bestX=trace(1:

end-1,end);

bestErr=trace(end,end);

fprintf(['最优初始权值和阈值:

\nX=',num2str(bestX'),'\n最小误差err=',num2str(bestErr),'\n'])

第4章基于遗传算法的TSP算法

1、案例背景

    TSP(旅行商问题—TravelingSalesmanProblem),是典型的NP完全问题,即其最坏情况下的时间复杂性随着问题规模的增大按指数方式增长,到目前为止不能找到一个多项式时间的有效算法。

遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。

遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。

实践证明,遗传算法对于解决TSP问题等组合优化问题具有较好的寻优性能。

2、案例目录:

第4章  基于遗传算法的TSP算法

4.1理论基础

4.1.1  遗传算法概述

4.1.2  TSP问题介绍

4.2案例背景

4.2.1  问题描述

4.2.2解决思路及步骤

4.2.2.1算法流程

4.2.2.2遗传算法实现

1.编码

2.种群初始化

3.适应度函数

4.选择操作

5.交叉操作

6.变异操作

7.进化逆转操作

4.3MATLAB程序实现

4.3.1  种群初始化

4.3.2适应度函数

4.3.3  选择操作

4.3.4  交叉操作

4.3.5  变异操作

4.3.6  进化逆转操作

4.3.7  画路线轨迹图

4.3.8  遗传算法主函数

4.3.9  结果分析

4.4延伸阅读

4.4.1  应用扩展

4.4.2  遗传算法的改进

4.4.3  算法的局限性

4.5参考文献

3、案例实例及结果:

本案例以14个城市为例,假定14个城市的位置坐标为:

                                            表4.1  14个城市的位置坐标

城市编号

X坐标

Y坐标

1

16.47

96.1

2

16.47

94.44

3

20.09

92.54

4

22.39

93.37

5

25.23

97.24

6

22

96.05

7

20.47

97.02

8

17.2

96.29

9

16.3

97.38

10

14.05

98.12

11

16.53

97.38

12

21.52

95.59

13

19.41

97.13

14

20.09

92.55

从某个城市出发访问每个城市一次且仅一次, 最后回到出发城市,如何安排才使其所走路线最短。

结果:

优化前的一个随机路线轨迹图

图4.1  随机路线图

随机路线为:

11—>7—>10—>4—>12—>9—>14—>8—>13—>5—>2—>3—>6—>1—>11

总距离:

71.1144

优化后的路线图:

图4.2  最优解路线图

最优解路线:

5—>4—>3—>14—>2—>1—>10—>9—>11—>8—>13—>7—>12—>6—>5

总距离:

29.3405

优化迭代过程:

图4.3  遗传算法进化过程图

4、主程序:

clear

clc

closeall

loadCityPosition1;%个城市坐标位置

NIND=100;%种群大小

MAXGEN=200;

Pc=0.9;%交叉概率

Pm=0.05;%变异概率

GGAP=0.9;%代沟(Generationgap)

D=Distanse(X);%生

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2