%我们通过使用蚁群算法虽得出整体情况下,我们旅游时最短路径(也就是游玩时间(包括路程时间)最多)。
%但这得出的最优解其实并没有把旅游时间(限制因素,也是变量范围(0-168h))作为约束条件,给总体的时间定范围
%因此本算法着重在已知较优解的情况下再次筛选,获取满足题目要求的最优解
all_time=120%总时间
overflow_time=138%超出时间
more_choose=[1 14 16 15 10 19 17 2 18 12 3 8 4 7 6 11 13 9 5 1];%从一开始(一为杭州)
A={Inf,18.0332000000000,2.19393333333333,4.05833333333333,5.83466666666667,2.55200000000000,24.4926666666667,4.60933333333333,9.02200000000000,7.00800000000000,9.61066666666667,4.65733333333333,6.83200000000000,6.78866666666667,1.95466666666667,4.08600000000000,13.9620000000000,4.89466666666667,9.71600000000000,3.56000000000000;7.03320000000000,Inf,2.16266666666667,4.08160000000000,5.86800000000000,2.58400000000000,24.5313333333333,4.59200000000000,9.01133333333333,6.99466666666667,9.65266666666667,4.69466666666667,6.85000000000000,6.81666666666667,2.09600000000000,4.09266666666667,13.9626666666667,4.88400000000000,9.80600000000000,3.57733333333333;7.19393333333333,18.1626666666667,Inf,4.21466666666667,6.01733333333333,2.75066666666667,24.6920000000000,4.69133333333333,8.88066666666667,6.87800000000000,9.78933333333333,4.82600000000000,6.97266666666667,6.96933333333333,2.07066666666667,4.06866666666667,13.9046666666667,4.78133333333333,9.91466666666667,3.68533333333333;7.05833333333333,18.0816000000000,2.21466666666667,Inf,5.79533333333333,2.49600000000000,24.4586666666667,4.53333333333333,8.99800000000000,6.98066666666667,9.57466666666667,4.61600000000000,6.78266666666667,6.74866666666667,2.03733333333333,4.03333333333333,13.8726666666667,4.84866666666667,9.69133333333333,3.49200000000000;8.83466666666667,19.8680000000000,4.01733333333333,5.79533333333333,Inf,3.31266666666667,25.3706666666667,3.52333333333333,10.4000000000000,8.40866666666667,7.88333333333333,2.91133333333333,7.01333333333333,7.04666666666667,2.91800000000000,4.90800000000000,14.7473333333333,6.01733333333333,8.79866666666667,2.87400000000000;7.55200000000000,18.5840000000000,2.75066666666667,4.49600000000000,5.31266666666667,Inf,25.0940000000000,4.08000000000000,9.23533333333333,7.22866666666667,9.06533333333333,4.11066666666667,6.28133333333333,6.26666666666667,1.98733333333333,3.98000000000000,13.9580000000000,5.03333333333333,9.23800000000000,3.03133333333333;7.49266666666667,18.5313333333333,2.69200000000000,4.45866666666667,5.37066666666667,3.09400000000000,Inf,3.98666666666667,9.33333333333333,7.34866666666667,9.16000000000000,4.19666666666667,6.37000000000000,6.31000000000000,2.16666666666667,4.16066666666667,14.1200000000000,5.17800000000000,9.39200000000000,3.18866666666667;8.60933333333333,19.5920000000000,3.69133333333333,5.53333333333333,4.52333333333333,3.08000000000000,24.9866666666667,Inf,10.2986666666667,8.30066666666667,8.38733333333333,3.42466666666667,6.83266666666667,6.81333333333333,2.91733333333333,4.90933333333333,14.8326666666667,6.01533333333333,9.14400000000000,3.15333333333333;8.02200000000000,19.0113333333333,2.88066666666667,4.99800000000000,6.40000000000000,3.23533333333333,25.3333333333333,5.29866666666667,Inf,6.02200000000000,9.99666666666667,5.02000000000000,7.47000000000000,7.48333333333333,1.62133333333333,3.62800000000000,13.0520000000000,3.87866666666667,10,3.74533333333333;8.00800000000000,18.9946666666667,2.87800000000000,4.98066666666667,6.40866666666667,3.22866666666667,25.3486666666667,5.30066666666667,8.02200000000000,Inf,9.99133333333333,5.02000000000000,7.45666666666667,7.47933333333333,1.63333333333333,3.64000000000000,13.0720000000000,3.88466666666667,9.98000000000000,3.75666666666667;9.61066666666667,20.6526666666667,4.78933333333333,6.57466666666667,4.88333333333333,4.06533333333333,26.1600000000000,4.38733333333333,10.9966666666667,8.99133333333333,Inf,2.03666666666667,7.80533333333333,7.84266666666667,3.40933333333333,5.40000000000000,15.0400000000000,6.46000000000000,9.01733333333333,3.24333333333333;9.65733333333333,20.6946666666667,4.82600000000000,6.61600000000000,4.91133333333333,4.11066666666667,26.1966666666667,4.42466666666667,11.0200000000000,9.02000000000000,7.03666666666667,Inf,7.83866666666667,7.88400000000000,3.43400000000000,5.42666666666667,15.0786666666667,6.46666666666667,9.04000000000000,3.26000000000000;7.83200000000000,18.8500000000000,2.97266666666667,4.78266666666667,5.01333333333333,2.28133333333333,24.3700000000000,3.83266666666667,9.47000000000000,7.45666666666667,8.80533333333333,3.83866666666667,Inf,6.07066666666667,2.12866666666667,4.12133333333333,14.0886666666667,5.22200000000000,9.04133333333333,2.85400000000000;7.78866666666667,18.8166666666667,2.96933333333333,4.74866666666667,5.04666666666667,2.26666666666667,24.3100000000000,3.81333333333333,9.48333333333333,7.47933333333333,8.84266666666667,3.88400000000000,6.07066666666667,Inf,2.17733333333333,4.17000000000000,14.1333333333333,5.26666666666667,9.11333333333333,2.92133333333333;7.95466666666667,19.0960000000000,3.07066666666667,5.03733333333333,5.91800000000000,2.98733333333333,25.1666666666667,4.91733333333333,8.62133333333333,6.63333333333333,9.40933333333333,4.43400000000000,7.12866666666667,7.17733333333333,Inf,4.40000000000000,12.9733333333333,4.13800000000000,9.39800000000000,3.18400000000000;8.08600000000000,19.0926666666667,3.06866666666667,5.03333333333333,5.90800000000000,2.98000000000000,25.1606666666667,4.90933333333333,8.62800000000000,6.64000000000000,9.40000000000000,4.42666666666667,7.12133333333333,7.17000000000000,2.40000000000000,Inf,12.9713333333333,4.14000000000000,9.36000000000000,3.17333333333333;8.96200000000000,19.9626666666667,3.90466666666667,5.87266666666667,6.74733333333333,3.95800000000000,26.1200000000000,5.83266666666667,9.05200000000000,7.07200000000000,10.0400000000000,5.07866666666667,8.08866666666667,8.13333333333333,1.97333333333333,3.97133333333333,Inf,3.53733333333333,10.0806666666667,3.90000000000000;8.89466666666667,19.8840000000000,3.78133333333333,5.84866666666667,7.01733333333333,4.03333333333333,26.1780000000000,6.01533333333333,8.87866666666667,6.88466666666667,10.4600000000000,5.46666666666667,8.22200000000000,8.26666666666667,2.13800000000000,4.14000000000000,12.5373333333333,Inf,10.4046666666667,4.25133333333333;8.71600000000000,19.8060000000000,3.91466666666667,5.69133333333333,4.79866666666667,3.23800000000000,25.3920000000000,4.14400000000000,10,7.98000000000000,8.01733333333333,3.04000000000000,7.04133333333333,7.11333333333333,2.39800000000000,4.36000000000000,14.0806666666667,5.40466666666667,Inf,2.24466666666667;8.56000000000000,19.5773333333333,3.68533333333333,5.49200000000000,4.87400000000000,3.03133333333333,25.1886666666667,4.15333333333333,9.74533333333333,7.75666666666667,8.24333333333333,3.26000000000000,6.85400000000000,6.92133333333333,2.18400000000000,4.17333333333333,13.9000000000000,5.25133333333333,8.24466666666667,Inf};
Grade=[93.80,73.80,94.96,81.66,78.65,75.80,90.59,76.83,93.83,77.91,87.83,84.88,95.64,96.82,97.80,74.889,75.81,98.82,89.73,86.92];
all_value=423;%总价值
flag=1;
best_grade=0;%最高分数
best_route=[];%
value_list=[];
delete=1;%每次依次减少的景点(在原基础上)
%价值对应表
while(flag>0)
if(delete>length(more_choose))
break;
end
start=1;
terminal=1;
for i0=2:length(more_choose(:))-1
w=zeros(length(more_choose),length(more_choose));%邻接矩阵
array=zeros(length(more_choose())-2,1);
flag1=1;
%遍历每一个元素,重新组成array
for k=1:length(more_choose())-2
if k==i0
continue;
else
array(flag1)=more_choose(k);
flag1=flag1+1;
end
end
%构建邻接矩阵
for i1=1:length(arra