福州大学人工智能作业Word格式.docx

上传人:b****3 文档编号:6492727 上传时间:2023-05-06 格式:DOCX 页数:37 大小:905.09KB
下载 相关 举报
福州大学人工智能作业Word格式.docx_第1页
第1页 / 共37页
福州大学人工智能作业Word格式.docx_第2页
第2页 / 共37页
福州大学人工智能作业Word格式.docx_第3页
第3页 / 共37页
福州大学人工智能作业Word格式.docx_第4页
第4页 / 共37页
福州大学人工智能作业Word格式.docx_第5页
第5页 / 共37页
福州大学人工智能作业Word格式.docx_第6页
第6页 / 共37页
福州大学人工智能作业Word格式.docx_第7页
第7页 / 共37页
福州大学人工智能作业Word格式.docx_第8页
第8页 / 共37页
福州大学人工智能作业Word格式.docx_第9页
第9页 / 共37页
福州大学人工智能作业Word格式.docx_第10页
第10页 / 共37页
福州大学人工智能作业Word格式.docx_第11页
第11页 / 共37页
福州大学人工智能作业Word格式.docx_第12页
第12页 / 共37页
福州大学人工智能作业Word格式.docx_第13页
第13页 / 共37页
福州大学人工智能作业Word格式.docx_第14页
第14页 / 共37页
福州大学人工智能作业Word格式.docx_第15页
第15页 / 共37页
福州大学人工智能作业Word格式.docx_第16页
第16页 / 共37页
福州大学人工智能作业Word格式.docx_第17页
第17页 / 共37页
福州大学人工智能作业Word格式.docx_第18页
第18页 / 共37页
福州大学人工智能作业Word格式.docx_第19页
第19页 / 共37页
福州大学人工智能作业Word格式.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

福州大学人工智能作业Word格式.docx

《福州大学人工智能作业Word格式.docx》由会员分享,可在线阅读,更多相关《福州大学人工智能作业Word格式.docx(37页珍藏版)》请在冰点文库上搜索。

福州大学人工智能作业Word格式.docx

pH_1_FE2=((LN2*oH_1)/(1+LN2*oH_1));

ifC1==1%初始证据CP公式

S1=input('

请输入E1的可信度:

ifS1>

pH_1_S1=(pH_1+(pH_1_E1-pH_1)/5*S1);

else

pH_1_S1=(pH_1_FE1+(pH_1-pH_1_FE1)*(S1/5+1));

end

else%中间结论EH公式

pE1=input('

请输入E1的先验概率:

pE1_S1=input('

请输入E1的后验概率:

ifpE1_S1>

=pE1

pH_1_S1=(pH_1+(pH_1_E1-pH_1)/(1-pE1)*(pE1_S1-pE1));

pH_1_S1=(pH_1_FE1+(pH_1-pH_1_FE1)/(pE1)*(pE1_S1));

end

ifC2==1

S2=input('

请输入E2的可信度:

ifS2>

pH_1_S2=(pH_1+(pH_1_E2-pH_1)/5*S2);

pH_1_S2=(pH_1_FE2+(pH_1-pH_1_FE2)*(S2/5+1));

else

pE2=input('

请输入E2的先验概率:

pE2_S2=input('

请输入E2的后验概率:

ifpE2_S2>

=pE2

pH_1_S2=(pH_1+(pH_1_E2-pH_1)/(1-pE2)*(pE2_S2-pE2));

pH_1_S2=(pH_1_FE2+(pH_1-pH_1_FE2)/(pE2)*(pE2_S2));

oH_1_S1=((pH_1_S1)/(1-pH_1_S1));

oH_1_S2=((pH_1_S2)/(1-pH_1_S2));

oH_2=((oH_1_S1/oH_1)*(oH_1_S2/oH_1)*oH_1);

pH_2=(oH_2/(1+oH_2));

fprintf('

H的先验几率=%f\n'

oH_1)

H的先验概率=%f\n'

pH_1)

H的后验几率=%f\n'

oH_2)

H的后验概率=%f\n'

pH_2)

elseifU==0%更新算法¨

ifC1==1

pH_1_S1_E2=((LS2*oH_1_S1)/(1+LS2*oH_1_S1));

pH_1_S1_FE2=((LN2*oH_1_S1)/(1+LN2*oH_1_S1));

pH_1_S1S2=(pH_1_S1+(pH_1_S1_E2-pH_1_S1)/5*S2);

pH_1_S1S2=(pH_1_S1_FE2+(pH_1_S1-pH_1_S1_FE2)*(S2/5+1));

pH_1_S1S2=(pH_1_S1+(pH_1_S1_E2-pH_1_S1)/(1-pE2)*(pE2_S2-pE2));

pH_1_S1S2=(pH_1_S1_FE2+(pH_1_S1-pH_1_S1_FE2)/(pE2)*(pE2_S2));

oH_1_S1S2=((pH_1_S1S2)/(1-pH_1_S1S2));

oH_1_S1S2)

pH_1_S1S2)

end

二、分别编写遗传算法和粒子群算法程序完成Camel函数寻优

Camel函数描述为:

该函数有六个局部极小点,其中(-0.0898,0.7126)和(0.0898,0.7126)为全局最小点,最小值为-1.031628。

本题题目有误:

第一项

的偶次幂故取正负无影响,第三项

同理。

但是对于第二项

取-0.0898和0.0898时算出的

不可能一样。

故这题结论是错误的,全局最小点为(-0.0898,0.7126)。

A.遗传算法

A.2.1编程思路

对种群进行初始化,解码并且计算目标值和适应度。

比例运算,交叉运算,变异运算

生成新的种群并且输出目标值。

A.2.2计算结果

上图为一次计算结果,可以看出基本接近于题目中的结论。

算法测试结果:

由于时间有限,一共做了100次测试得出结果是:

最大与最小的差值仅仅只有0.003的差值,可见算法的精度还是比较高的。

A.2.3问题与思考

由于自己编写的GA算法一直在目标函数与适应度函数的转化上出现错误导致无法得出正常结果,故在参照同学的程序上进行了进一步的修改得到下面的算法程序。

但是同时也有一些问题无法得到理解与解决。

1、程序中并没有对适应度进行非负的转化

2、由于负数的适应度存在导致在比例选择中总的适应度降低,从而进一步导致正数的适应度间接增大,而负数的适应度丢失。

3、即使存在上述两点的问题,算法的结果依然是接近于正确,导致本人对此感到匪夷所思,然而时间和能力的有限使得本人并没有进一步研究与探讨。

A.2.4算法程序

function[]=GA

clearall

closeall

%参数

Size=150;

G=300;

L=10;

xmax=3;

xmin=-3;

ymax=2;

ymin=-2;

pc=0.60;

pm=0.01;

%初始化

E=round(rand(Size,2*L));

%主程序

fork=1:

1:

G

time(k)=k;

fors=1:

Size

m=E(s,:

t1=0;

t2=0;

%解码

m1=m(1:

L);

fori=1:

L

t1=t1+m1(i)*2^(i-1);

x(s)=(xmax-xmin)*t1/(2^L-1)+xmin;

m2=m(L+1:

2*L);

t2=t2+m2(i)*2^(i-1);

y(s)=(ymax-ymin)*t2/(2^L-1)+ymin;

F(s)=(4-2.1*x(s)^2+x(s)^4/3)*x(s)^2+x(s)*y(s)+(-4+4*y(s)^2)*y(s)^2;

%从大到小排序

fi=F;

[Oderfi,Indexfi]=sort(fi,'

descend'

Bestfi=Oderfi(Size);

BestS=E(Indexfi(Size),:

BestX=x(Indexfi(Size));

BestY=y(Indexfi(Size));

bfi(k)=Bestfi;

%比例选择法

fi_sum=sum(fi);

fi_Size=(Oderfi/fi_sum)*Size;

fi_S=floor(fi_Size);

kk=1;

forj=1:

fi_S(i)

TempE(kk,:

)=E(Indexfi(i),:

kk=kk+1;

%交叉运算

n=ceil(20*rand);

2:

(Size-1)

temp=rand;

ifpc>

=temp

forj=n:

20

TempE(i,j)=E(i+1,j);

TempE(i+1,j)=E(i,j);

TempE(Size,:

)=BestS;

%保留优秀个体

E=TempE;

%变异运算

2*L

ifpm>

ifTempE(i,j)==0

TempE(i,j)=1;

TempE(i,j)=0;

%新种群

Min_Value=Bestfi;

最小值=%f\n'

Min_Value)

X=%f\n'

BestX)

Y=%f\n'

BestY)

figure

(1);

plot(time,bfi);

xlabel('

times'

ylabel('

BestF'

B.粒子群算法

B.2.1编程思路

参数、种群初始化

计算各个粒子的适应度,初始化全局最优跟个体最优。

学习因子更新、速度更新、种群更新、适应度更新、最优更新

输出结果

B.2.2计算结果

函数最小值=-1.030325

x=-0.085016;

y=0.700078

B.2.3算法测试

上图为200次粒子群算法测试,可以看出最大最小之间误差大约为0.03,并且出现最大误差的次数大约为3%,可见算法可靠性还算可以。

B.2.4算法程序

function[]=Pso

%输入变量

N=2;

%('

解空间的维度='

M=20;

c1max=2.5;

c1min=0.5;

c2max=2.5;

c2min=0.5;

%初始化种群

fori=1:

M

pop(i,1)=3*rands(1,1);

%1行一列[-33]的随机数

pop(i,2)=2*rands(1,1);

V(i,:

)=rand(1,2);

%计算各个粒子的适应度,并初始化pbest跟gbest

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

[bestfitnessbestindex]=min(fitness);

%min返回两个值第一个为最小值,第二个为最小值位置

zbest=pop(bestindex,:

%全局最佳

gbest=pop;

%个体最佳

fitnessgbest=fitness;

%个体最佳适应度值

fitnesszbest=bestfitness;

%全局最佳适应度值

%迭代寻优

%学习因子更新

c1=c1max-(c1max-c1min)*i/G;

c2=c2min+(c2max-c2min)*i/G;

V(j,:

)=V(j,:

)+c1*rand*(gbest(j,:

)-pop(j,:

))+c2*rand*(zbest-pop(j,:

));

%速度更新

pop(j,:

)=pop(j,:

)+V(j,:

%种群更新

fitness(j)=((4-2.1*(pop(j,1)^2)+(pop(j,1)^4)/3)*((pop(j,1)^2)))+((pop(j,1)*pop(j,2)))+((-4+4*(pop(j,2)^2))*(pop(j,2)^2));

%适应度更新

iffitness(j)<

fitnessgbest(j)%个体最优更新

gbest(j,:

)=pop(j,:

fitnessgbest(j)=fitness(j);

fitnesszbest%群体最优更新

zbest=pop(j,:

fitnesszbest=fitness(j);

G_best(i)=fitnesszbest;

fprintf('

函数最小值=%f\n'

fitnesszbest)

x=%f\n'

zbest

(1))

y=%f\n'

zbest

(2))

三、编写蚁群算法程序完成31个城市的TSP问题寻优

31个城市 

坐标为:

[13042312;

36391315;

41772244;

37121399;

34881535;

33261556;

32381229;

41961004;

4312790;

4386570;

30071970;

25621756;

27881491;

23811676;

1332695;

37151678;

39182179;

40612370;

37802212;

36762578;

40292838;

42632931;

34291908;

35072367;

33942643;

34393201;

29353240;

31403550;

25452357;

27782826;

23702975]

3.1编程思路

初始化:

计算距离矩阵,蚂蚁位置初始化

选择城市:

计算选择概率,转盘选择,更新禁忌表

计算路径长度,记录本次迭代最佳路线

更新信息素,禁忌表清空

输出结果,绘制路线图

3.2计算结果

最短距离=16038.794579

最佳路径为:

15-14-12-13-11-23-16-5-6-7-2-4-8-9-10-17-3-18-21-22-19

-24-20-25-26-28-27-30-31-29-1-15

3.3算法程序

function[]=Aco

C=[1304,2312;

3639,1315;

4177,2244;

3712,1399;

3488,1535;

3326,1556;

3238,1229;

4196,1004;

4312,790;

4386,570;

3007,1970;

2562,1756;

2788,1491;

2381,1676;

1332,695;

3715,1678;

3918,2179;

4061,2370;

3780,2212;

3676,2578;

4029,2838;

4263,2931;

3429,1908;

3507,2367;

3394,2643;

3439,3201;

2935,3240;

3140,3550;

2545,2357;

2778,2826;

2370,2975];

%C为坐标,n乘2矩阵

m=20;

%蚂蚁个数约等于(城市个数/1.5)

NC_max=200;

%最大迭代次数

A=1;

%信息素重要程度

B=5;

%启发因子重要程度

Q=10;

%信息素增强强度系数

R=0.7;

%信息素蒸发系数

%初始化变量

n=size(C,1);

%n为城市的数量1表示行数

D=zeros(n,n);

%D为邻接矩阵

n

ifi~=j

D(i,j)=(((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5);

%两两城市间的距离

D(i,j)=eps;

%防止启发因子分母为0

D(j,i)=D(i,j);

E=1./D;

%E为启发因子,距离的倒数

T=ones(n,n);

%T为信息素矩阵

Tabu=zeros(m,n);

%Tabu为禁忌表

NC=1;

%迭代计数器

road_best=zeros(NC_max,n);

length_best=inf.*ones(NC_max,1);

length_avg=zeros(NC_max,1);

whileNC<

=NC_max

%把m只蚂蚁放在n个城市上

Randpos=[];

i_c=ceil(m/n);

ifi_c==1

Randpos=[Randpos,randsample(randperm(n),m)];

(i_c-1)

Randpos=[Randpos,randperm(n)];

Randpos=[Randpos,randsample(randperm(n),(n-(n*(i_c-1))))];

Tabu(:

1)=(Randpos(1,1:

m))'

;

%将蚂蚁的起始城市加入禁忌表的第一列

%m只蚂蚁选择城市

forj=2:

n%旅游次数

m%蚂蚁数量

visited=Tabu(i,1:

(j-1));

%记录已访问的城市

J=zeros(1,(n-j+1));

%待访问的城市

P=J;

%待访问城市的选择概率

Jc=1;

sum_p=0;

iflength(find(visited==k))==0%开始时置0

J(Jc)=k;

Jc=Jc+1;

length(J)

p(k)=((T(visited(end),J(k))^A)*(E(visited(end),J(k))^B));

sum_p=(sum_p+p(k));

P(k)=p(k)/sum_p;

Pcum=cumsum(P);

%元素累加求和

select=find(Pcum>

=rand);

to_visit=J(select

(1));

Tabu(i,j)=to_visit;

ifNC>

=2

Tabu(1,:

)=road_best(NC-1,:

%记录本次迭代最佳路线

L=zeros(m,1);

m

road=Tabu(i,:

(n-1)

L(i)=L(i)+D(road(j),road(j+1));

L(i)=L(i)+D(road

(1),road(n));

length_best(NC)=min(L);

pos=find(L==length_best(NC));

road_best(NC,:

)=Tabu(pos

(1),:

length_avg(NC)=mean(L);

%mean为求数组平均值

NC=NC+1;

%更新信息素

Delta_T=zeros(n,n);

%信息素变化量

Delta_T(Tabu(i,j),Tabu(i,j+1))=Delta_T(Tabu(i,j),Tabu(i,j+1))+Q/L(i);

Delta_T(Tabu(i,n),Tabu(i,1))=Delta_T(Tabu(i,n),Tabu(i,1))+Q/L(i);

T=(1-R).*T+R.*Delta_T;

%禁忌表清空

%输出结果

Pos=find(length_best==min(length_best));

R_best=road_best(Pos

(1),:

L_best=length_best(Pos

(1));

最短距离=%f\n'

L_best)

最佳路径为'

%d-'

R_best(i))

%d\n'

R_best

(1))

subplot(1,2,1)

%路线图绘制

N=length(R_best);

scatter(C(:

1),C(:

2));

holdon

plot([C(R_best

(1),1),C(R_best(N),1)],[C(R_best

(1),2)

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

当前位置:首页 > 表格模板 > 合同协议

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

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