• 大小: 7KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-17
  • 语言: 其他
  • 标签: 遍历问题  

资源简介

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

评论

共有 条评论