人工智能matlab仿真.docx

上传人:b****3 文档编号:2957842 上传时间:2022-11-16 格式:DOCX 页数:19 大小:357.39KB
下载 相关 举报
人工智能matlab仿真.docx_第1页
第1页 / 共19页
人工智能matlab仿真.docx_第2页
第2页 / 共19页
人工智能matlab仿真.docx_第3页
第3页 / 共19页
人工智能matlab仿真.docx_第4页
第4页 / 共19页
人工智能matlab仿真.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

人工智能matlab仿真.docx

《人工智能matlab仿真.docx》由会员分享,可在线阅读,更多相关《人工智能matlab仿真.docx(19页珍藏版)》请在冰豆网上搜索。

人工智能matlab仿真.docx

人工智能matlab仿真

1.函数优化

该二元6次函数式一个多峰函数,共有6个极值,其中有两个极值点对应的函数取值为最小值。

试求解函数的极值点。

(1)设计思路

本题采用遗传算法,遗传算法搜索最优解的方法是模仿生物的进化过程,遗传算法主要使用选择算子、交叉算子与变异算子来模拟生物进化,从而产生一代又一代的种群。

遗传算法具有通用、并行、稳健、简单与全局优化能力强等突出优点,适用于解决复杂、困难的全局优化问题。

(2)程序流程图

(3)实验程序

functionobjV=objectFunction(pop)

m=size(pop,1);

fori=1:

mobjV(i,1)=4*pop(i,1)^2-2.1*pop(i,1)^4+(1/3)*pop(i,1)^6+pop(i,1)*pop(i,2)-4*pop(i,2)^2+4*pop(i,2)^4;

end

%%初始化

clc;

clear;

pc=0.7;%交叉率

pm=0.05;%变异率

NIND=20;%个体数目

MAXGEN=1000;%最大遗传代数

NVAR=2;%变量维数

PRECI=40;%变量二进制数

GGAP=0.9;%代沟

trace_min=zeros(MAXGEN,1);%每代极小值

trace_max=zeros(MAXGEN,1);%每代极大值

%%种群初始化

FieldD=[rep(PRECI,[1,NVAR]);[-1,-1;1,1];rep([1;0;1;1],[1,NVAR])];%区域扫描

Chrom=crtbp(NIND,NVAR*PRECI);%创建初始种群

%%计算第0代函数适应度,寻找最优个体

gen=0;

pop=bs2rv(Chrom,FieldD);%将二进制初始种群转化为十进制

objV=objectFunction(pop);%计算函数适应度

minY=min(objV);%函数适应度最小值即函数最小值

maxY=max(objV);

POP(:

:

gen+1)=pop(1:

end,1:

end);

%%进化过程

whilegen

FitnV=ranking(-objV);

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

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

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

popnew=bs2rv(SelCh,FieldD);%新一代种群

objVSel=objectFunction(popnew);%计算子代目标函数值

[Chrom,objV]=reins(Chrom,SelCh,1,1,objV,objVSel);

gen=gen+1;

ifminY>min(objV)%寻找当前极小值

minY=min(objV);

[y,i]=min(objV);

x=bs2rv(Chrom,FieldD);

xmin(1,:

)=x(i,:

);

disp(['对应最小自变量取值:

',num2str(x(i,:

))])%输出最优个体

disp(['对应最小值:

',num2str(y)])%输出最优个体

end

ifmaxY

maxY=max(objV);

[Y,I]=max(objV);

X=bs2rv(Chrom,FieldD);

xmax(1,:

)=X(I,:

);

disp(['对应最大自变量取值:

',num2str(X(I,:

))])%输出最优个体

disp(['对应最大值:

',num2str(Y)])%输出最优个体

end

trace_min(gen,1)=minY;%保存当前极小值

trace_max(gen,1)=maxY;%保存当前极大值

end

%%画图

figure

(1)%画进化过程图

plot(1:

gen,trace_min(:

1));

holdon

plot(1:

gen,-1.031570364,'r-');%目标函数在区间内最小值

figure

(2)

plot(1:

gen,trace_max(:

1));

holdon

plot(1:

gen,3.2333,'r-');%目标函数在区间内最大值

(4)运行结果

 

优化函数如图所示:

由优化函数图可知,此函数存在2个极小值点,4个极大值点。

4个最大值为:

对应x1,x2最大自变量取值:

-0.99543-0.91298对应函数最大值:

2.5798

对应x1,x2最大自变量取值:

-0.92829-0.99328对应函数最大值:

2.97

对应x1,x2最大自变量取值:

-0.989-0.99817对应函数最大值:

3.1879

对应x1,x2最大自变量取值:

-0.99168-0.99925对应函数最大值:

3.2047

2个最小值为:

对应x1,x2最小自变量取值:

-0.0447820.76447对应函数最小值:

-0.99772

对应x1,x2最小自变量取值:

0.11984-0.66623对应函数最小值:

-1.0102

2.体重约70kg的某人在短时间内喝下2瓶啤酒后,隔一段时间测量他的血液中酒精含量(mg/100mL),得到以下数据:

时间/(h)

0.25

0.5

0.75

1

1.5

2

2.5

3

3.5

4

4.5

5

6

7

酒精含量/

30

68

75

82

82

77

68

68

58

51

50

41

38

35

时间/(h)

8

9

10

11

12

13

14

15

16

酒精含量

28

25

18

15

12

10

7

7

4

根据酒精在人体血液分解的动力学规律可知,血液中酒精浓度与时间的关系可表示为:

试根据表中数据求出参数

(1)设计思路

本题采用遗传算法,遗传算法搜索最优解的方法是模仿生物的进化过程,遗传算法主要使用选择算子、交叉算子与变异算子来模拟生物进化,从而产生一代又一代的种群。

遗传算法具有通用、并行、稳健、简单与全局优化能力强等突出优点,适用于解决复杂、困难的全局优化问题。

(2)程序流程图

(3)实验程序:

%%求函数适应度子程序

functionobjV=objectFunction(pop,Data)

m=size(pop,1);

n=size(Data,1);

fori=1:

m

forj=1:

n

C(j,1)=abs(pop(i,1)*(exp(pop(i,2)*(-1)*Data(j,1))-exp(pop(i,3)*(-1)*Data(j,1)))-Data(j,2));

end

objV(i,1)=mean(C);

end

%%求方差子程序

functionRESM=variance(a,a_1)

M=size(a,1);

y=0;

y_1=0;

fori=1:

M

y_1=y_1+(a(i,1)-a_1(i,1))^2;

end

RESM=sqrt(y_1/M);

%%主程序

loadData

%%初始化

pc=0.7;%交叉率

pm=0.05;%变异率

NIND=500;%个体数目

MAXGEN=2000;%最大遗传代数

NVAR=3;%变量维数

PRECI=20;%变量二进制数

GGAP=0.9;%代购

trace=zeros(MAXGEN,1);%每代最优值

%%种群初始化

FieldD=[rep(PRECI,[1,NVAR]);[100,0,0;150,1,3];rep([1;0;1;1],[1,NVAR])];%区域扫描

Chrom=crtbp(NIND,NVAR*PRECI);%创建初始种群

%%计算第0代函数适应度,寻找最优个体

gen=0;

pop=bs2rv(Chrom,FieldD);%将二进制初始种群转化为十进制

objV=objectFunction(pop,Data);%计算函数适应度

minY=min(objV);%函数适应度最小值即最优值

%%进化过程

whilegen

FitnV=ranking(-objV);

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

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

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

popnew=bs2rv(SelCh,FieldD);%新一代种群

objVSel=objectFunction(popnew,Data);%计算子代目标函数值

[Chrom,objV]=reins(Chrom,SelCh,1,1,objV,objVSel);

gen=gen+1;

ifminY>min(objV)%寻找当前最优个体

minY=min(objV);

end

trace(gen,1)=minY;%保存当前最优个体

end

%%结果输出

[Y,I]=min(objV);

X=bs2rv(Chrom,FieldD);

Xmin(1,:

)=X(I,:

);

disp(['对应自变量取值:

',num2str(X(I,:

))])%输出最优个体

m=size(Data,1);

fori=1:

m%输出最优个体的函数拟合值

Y(i,1)=Xmin(1,1)*(exp((-1)*Xmin(1,2)*(Data(i,1)))-exp((-1)*Xmin(1,3)*(Data(i,1))));

ARE(i,1)=Data(i,2)-Y(i,1);

end

RESM=variance(Data(:

2),Y);%计算方差

disp(['方差:

',num2str(RESM)])

%%画图

figure

(1)%画进化过程图

plot(1:

gen,trace(:

1));

figure

(2);%画出期望值与拟合值曲线

plot(Data(:

1),Data(:

2),'rd-');

holdon

plot(Data(:

1),Y,'b*-')

xlabel('时间');

ylabel('酒精含量');

legend('期望值','拟合值');

figure(3)

plot(Data(:

1),ARE,'rd-')

xlabel('时间');

ylabel('误差');

(4)运行结果

 

进行20次的多项式拟合后图如下:

所以,对应自变量取值:

k=113.3353q=0.1841013r=2.206932

方差:

3.3748

3.设计一个神经网络,并对输入信号进行预测。

输入为一线性调频信号,信号采样时间为2s,采样频率为1000Hz,起始到信号的瞬时为0Hz,1s时的瞬时频率为150Hz。

(1)本题采用三层BP神经网络。

第一步,网络初始化。

给各连接权值分别赋一个区间内的随机数,设定误差函数e,给定计算精度值和最大学习次数M。

第二步,随机选取第2000个输入样本,前1900作为训练样本最后100做测试。

第三步,计算隐含层各神经元的输入和输出。

第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1