資源簡介
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? 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? 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
評論
共有 條評論