资源简介
1.设计一个文件保存地图信息,地图中标明各个城市之间是否有路及它们的距离。
2.利用图形展示地图信息。
3.手工输入起始城市
4.用红线标出从起始城市开始遍历所有城市的最短路径
代码片段和文件信息
package CityTraversal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Algorithm {
/*public static float wayLength = 0;
List OKList=new ArrayList() ;
List sss=new ArrayList();
private int haveWay=1;
Way way=new Way();
public List newLoop(String cityName) {
float T_min=0.1f;
//double K=Math.pow(1.3806505 -23);
int k = 0 m = 0;
float T=55.0f;
List list = way.showCity(cityName);//得到该城市的列表
float sum0=3000sum1=0dE;
int M = list.size();
while(T>T_min){
System.out.println(m);
k = this.getRandom(M);
m = this.getRandom(M);
while (!testSame(k m)) {
k = this.getRandom(M);
m = this.getRandom(M);//随机取两个节点进行位置交换
}
if (k < m) {
list = this.backMiddleS(list k m);
} else {
list = this.backBottom(list k m);
}
if(!this.testHaveWay(list cityName)){
continue;
}
sum1 = this.getWayLength(list cityName);
dE=sum0-sum1;
System.out.println(dE);
if ( dE >=0 ) //表达移动后得到更优解,则总是接受移动
sum0= sum1; //接受从Y(i)到Y(i+1)的移动
else{
if(Math.exp(dE/T)>Math.random()){
sum0=sum1;
System.out.println(“exp:“+Math.exp(dE/T));
}
}
System.out.println(sum0);
T=0.85f*T;
}
OKList.clear();
OKList.addAll(list);
wayLength=sum0;
return OKList;
}
*/
public static float wayLength = 0;
private Way way = new Way();
List OKList=new ArrayList() ;
List sss=new ArrayList();
List newlist=new ArrayList();
private int haveWay=1;
static float sum0=40000sum1=0dE;
// 获得新路径序列
static String Name;
public List newLoop(String cityName) {
int k = 0 m = 0;
List list = way.showCity(cityName);//得到该城市的列表
int M = list.size();
System.out.println(m);
k = this.getRandom(M);
m = this.getRandom(M);
while (!testSame(k m)) {
k = this.getRandom(M);
m = this.getRandom(M);//随机取两个节点进行位置交换
}
if (k < m) {
list = this.backMiddleS(list k m);
} else {
list = this.backBottom(list k m);
}
if(!this.testHaveWay(list cityName)){
this.newLoop(cityName);//再执行一次
}
sum1 = this.getWayLength(list cityName);
System.out.println(“sum1:“+sum1);
dE=sum0/10-sum1/10;
OKList.clear();
OKList.addAll(list);
return OKList;
}
public List listway(String cityName){
Name=cityName;
float T_min=0.01f;
float T=150.0f;
newlist=this.newLoop(Name);
while(T>T_min){
System.out.println(“de:“+dE);
System.out.println(“概率限制“+Math.exp(dE/(T)));
if ( dE >=0 ) {//表达移动后得到更优解,则总是接受移动
sum0= sum1; //接受从Y(i)到Y(i+1)的移动
newlist=this.newLoop(Name);
}
else{
if(Math.e
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-01-12 17:09 CityTraversal\
文件 5881 2017-01-11 15:59 CityTraversal\Algorithm.java
文件 1704 2017-01-11 09:19 CityTraversal\City.java
文件 1434 2017-01-12 12:48 CityTraversal\Location.java
文件 5188 2017-01-11 11:01 CityTraversal\UI.java
文件 3977 2017-01-11 15:10 CityTraversal\Way.java
- 上一篇:springboot简单分页
- 下一篇:以车速里程测量为主的多功能课程设计.rar
评论
共有 条评论