資源簡(jiǎn)介
1.設(shè)計(jì)一個(gè)文件保存地圖信息,地圖中標(biāo)明各個(gè)城市之間是否有路及它們的距離。
2.利用圖形展示地圖信息。
3.手工輸入起始城市
4.用紅線標(biāo)出從起始城市開(kāi)始遍歷所有城市的最短路徑

代碼片段和文件信息
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);//隨機(jī)取兩個(gè)節(jié)點(diǎn)進(jìn)行位置交換
}
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?)?//表達(dá)移動(dòng)后得到更優(yōu)解,則總是接受移動(dòng)
sum0=?sum1;?//接受從Y(i)到Y(jié)(i+1)的移動(dòng)
?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);//隨機(jī)取兩個(gè)節(jié)點(diǎn)進(jìn)行位置交換
}
if?(k? list?=?this.backMiddleS(list?k?m);
}?else?{
list?=?this.backBottom(list?k?m);
}
if(!this.testHaveWay(list?cityName)){
this.newLoop(cityName);//再執(zhí)行一次
}
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?)?{//表達(dá)移動(dòng)后得到更優(yōu)解,則總是接受移動(dòng)
sum0=?sum1;?//接受從Y(i)到Y(jié)(i+1)的移動(dòng)
?newlist=this.newLoop(Name);
}
?else{
?
?if(Math.e
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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
評(píng)論
共有 條評(píng)論