%开始计算
count=0;%计数器
v=zeros(City_number,City_number+2); while (1)
for x=1:City_number for i=1:City_number
v(x,i+1)=0.5*(1+tanh(u(x,i)/u0)); %超过上限视作1 if v(x,i+1)>=Up v(x,i+1)=1.0; end
%低于下限视作0
if v(x,i+1)<=Down v(x,i+1)=0.0; end end end
%为便于计算对v的首尾两列赋值 for x=1:City_number
v(x,1)=v(x,City_number+1); v(x,City_number+2)=v(x,2); end
%计算能量函数 a1=0; b1=0; c1=0; d1=0;
for x=1:City_number for i=1:City_number-1 for j=i+1:City_number a1=a1+v(x,i+1)*v(x,j+1); end end end
for i=1:City_number for x=1:City_number-1 for y=x+1:City_number b1=b1+v(x,i+1)*v(y,i+1); end end end
for x=1:City_number for i=1:City_number c1=c1+v(x,i+1); end
end
for x=1:City_number for y=1:City_number for i=1:City_number
d1=d1+d(x,y)*v(x,i+1)*(v(y,i+2)+v(y,i)); end end end
E=(A*a1+B*b1+C*(c1-City_number)*(c1-City_number)+D*d1)/2; %达到极小点判定
if abs(E_old-E)<=Min_value break; end E_old=E; count=count+1; %达到迭代次数上限判定 if count>=1500 break; end
%计算u=u+du/dt*delta du=zeros(City_number); for x=1:City_number for i=1:City_number du(x,i)=-u(x,i)/tor; a2=0;
for j=1:City_number if j~=i
a2=a2+v(x,j+1); end end b2=0;
for y=1:City_number if y~=x
b2=b2+v(y,i+1); end end
c2=-City_number; for y=1:City_number for j=1:City_number c2=c2+v(y,j+1); end end d2=0;
for y=1:City_number
d2=d2+d(x,y)*(v(y,i+2)+v(y,i));
end
du(x,i)=du(x,i)-(A*a2+B*b2+C*c2+D*d2); u(x,i)=u(x,i)+du(x,i)*delta; end end end
%将仅缺失不多于1个序列位置的解可行化 for x=1:City_number for i=1:City_number if v(x,i+1)>0.4 v(x,i+1)=1; end
if v(x,i+1)<0.4 v(x,i+1)=0; end end end
hang=Max_value; lie=Max_value; for x=1:City_number a1=0;
for i=1:City_number a1=a1+v(x,i+1); end if a1<1 hang=x; end end
for i=1:City_number b1=0;
for x=1:City_number b1=b1+v(x,i+1); end if b1<1 lie=i; end end
if (hang<=City_number & lie<=City_number) v(hang,lie+1)=1; end
%给出该可行解(也可能有部分是非法解)并计算其时间及迭代次数 for x=1:City_number
v(x,1)=v(x,City_number+1); v(x,City_number+2)=v(x,2); end
d1=0;
for x=1:City_number for y=1:City_number for i=1:City_number
d1=d1+d(x,y)*v(x,i+1)*(v(y,i+2)+v(y,i)); end end end
%判断第k次的运算结果是否为有效解,当其总时间最小时赋值给ddd,v矩阵赋值给vv if(((d1/2)
%输出最短路程值 ddd
%输出最短路程对应的换位矩阵 vv
附录二
问题一各个线路旅游的具体行程,以及线路的目的地省的各景区间的花费时间表在本附录中给出。
1.西安-安徽(江苏、陕西)
西安→阜阳市颍上县八里河→安庆潜山县天柱山风景区→黄山市黟县皖南古村落→宣城市绩溪县龙川景区→黄山市古徽州文化旅游区→黄山市黄山风景区→池州青阳县九华山风景区→合肥→六安市金寨县天堂寨旅游→南京市区→西安大雁塔-大唐芙蓉园景区→西安市区
表6 各景区间的花费时间表 安徽省 黄山市黄山风景区 池州青安庆潜阳县九山县天华山风柱山风景区 景区 黄山市黟县皖南古村落 六安市金寨县天堂寨旅游景区 宣城市绩溪县龙川景区 阜阳黄山合肥 市颍市古上县徽州八里文化河风旅游景区 区 黄山市黄山风0 景区 9.85 12.15 9.2 14.75 10.4 9.4 5.05 11.3 10.7 10.9 13.67 11.5 8.3 6.17 10.5 12.2 12.05 13 0 8.3 8.07 10.5 池州青阳县九9.85 0 华山风景区 安庆潜山县天12.2 10.7 0 柱山风景区 黄山市黟县皖9.2 10.9 12.2 南古村落 15.3 10.33 10 5.45 12.3 15.4 8.3 10.8 11.3 六安市金寨县14.8 13.67 12.05 15.3 0 天堂寨旅游景区 宣城市绩溪县10.4 11.5 13 龙川景区 10.3 15.4 0 10 5.35 13.2 9.5 10.1 11.6 阜阳市颍上县13.4 12.3 12.25 14 八里河风景区 12.3 14.15 0 黄山市古徽州9.05 10.17 12.07 9.45 14.83 9.35 9.5 0 文化旅游区 合肥 天出发出发地 数 时间 1 7:00 西安 2 7:00 西安 12:00 阜阳市颍上县八里河 11.3 10.5 10.5 12.3 11.3 13.2 10 11.6 0 表7具体行程表 行车行车到达游览游览完游览景区 时间 里程 时间 时间 毕时间 阜阳市颍上县八里河 阜阳市颍上县八里河 安庆潜山县天柱山风景区 8:00 0 15:00 0:00 15:00 1:00 820 8:00 4:00 12:00 4:00 345 16:00 0 0 16:00 安庆潜山县天柱山风安庆潜山县天柱山风景3 8:00 景区 区 0 8:00 8:00 16:00
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2015年全国研究生数学建模竞赛答案 - 图文(6)在线全文阅读。
相关推荐: