
正文
tsp问题java代码 tsp问题最好的算法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
菜鸟在Java 的tsp问题插入一个节点遇到了一个问题
while(temp.next!=null){
if(temp.next.p.distanceTo(p)minDis){
nearestNode = temp;
}
temp = temp.next;
}
如果我没看错的话 temp.next!=null 这句代码已经执行了指针指向下一个了。当然有可能是我搞错了。
问题解决了吗?采纳一下我的答案吧。谢谢。
相关问答
Q1: 基于粒子群算法的TSP问题,JAVA实现,高分求源码,好的再加200
此消息也许对tsp问题java代码你有所启发tsp问题java代码,TSP-PSO下载 收藏√ [ 5 4 3 2 1 ] 所属分类: matlab 开发工具: matlab 文件大小: 33 KB 上传时间: 2009-06-13 下载次数: 625 提 供 者: 灞埚媷 详细说明:用混合粒子群算法求解TSP问题,自带GUI界面,共有9中算法,可解决各种TSP问题,效果不错。-Using hybrid particle swarm algorithm to solve TSP problems, bring their own GUI interface, a total of 9 in the algorithm, to resolve the various TSP problems, good results.
[上传源码成为会员下载此文件] [成为VIP会员下载此文件]文件列表(点击判断是否您需要tsp问题java代码的文件,如果是垃圾请在下面评价投诉):
TSP-PSO
.......\bayg29.txt
.......\burma14.txt
.......\ch130.txt
.......\ch150.txt
.......\dist.m
.......\eil51.txt
.......\fbnum.m
.......\fitness.asv
.......\fitness.m
.......\gr96.txt
.......\hs_err_pid160.log
.......\hs_err_pid528.log
.......\Oliver30.txt
.......\pr226.txt
.......\pr76.txt
.......\PSO.asv
.......\PSO.fig
.......\PSO.m
Q2: 用java解决tsp问题用什么算法最简单
package noah;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class TxTsp {
private int cityNum; // 城市数量
private int[][] distance; // 距离矩阵
private int[] colable;//代表列,也表示是否走过,走过置0
private int[] row;//代表行,选过置0
public TxTsp(int n) {
cityNum = n;
}
private void init(String filename) throws IOException {
// 读取数据
int[] x;
int[] y;
String strbuff;
BufferedReader data = new BufferedReader(new InputStreamReader(
new FileInputStream(filename)));
distance = new int[cityNum][cityNum];
x = new int[cityNum];
y = new int[cityNum];
for (int i = 0; i cityNum; i++) {
// 读取一行数据,数据格式1 6734 1453
strbuff = data.readLine();
// 字符分割
String[] strcol = strbuff.split(" ");
x[i] = Integer.valueOf(strcol[1]);// x坐标
y[i] = Integer.valueOf(strcol[2]);// y坐标
}
data.close();
// 计算距离矩阵
// ,针对具体问题,距离计算方法也不一样,此处用的是att48作为案例,它有48个城市,距离计算方法为伪欧氏距离,最优值为10628
for (int i = 0; i cityNum - 1; i++) {
distance[i][i] = 0; // 对角线为0
for (int j = i + 1; j cityNum; j++) {
double rij = Math
.sqrt(((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j])
* (y[i] - y[j])) / 10.0);
// 四舍五入,取整
int tij = (int) Math.round(rij);
if (tij rij) {
distance[i][j] = tij + 1;
distance[j][i] = distance[i][j];
} else {
distance[i][j] = tij;
distance[j][i] = distance[i][j];
}
}
}
distance[cityNum - 1][cityNum - 1] = 0;
colable = new int[cityNum];
colable[0] = 0;
for (int i = 1; i cityNum; i++) {
colable[i] = 1;
}
row = new int[cityNum];
for (int i = 0; i cityNum; i++) {
row[i] = 1;
}
}
public void solve(){
int[] temp = new int[cityNum];
String path="0";
int s=0;//计算距离
int i=0;//当前节点
int j=0;//下一个节点
//默认从0开始
while(row[i]==1){
//复制一行
for (int k = 0; k cityNum; k++) {
temp[k] = distance[i][k];
//System.out.print(temp[k]+" ");
}
//System.out.println();
//选择下一个节点,要求不是已经走过,并且与i不同
j = selectmin(temp);
//找出下一节点
row[i] = 0;//行置0,表示已经选过
colable[j] = 0;//列0,表示已经走过
path+="--" + j;
//System.out.println(i + "--" + j);
//System.out.println(distance[i][j]);
s = s + distance[i][j];
i = j;//当前节点指向下一节点
}
System.out.println("路径:" + path);
System.out.println("总距离为:" + s);
}
public int selectmin(int[] p){
int j = 0, m = p[0], k = 0;
//寻找第一个可用节点,注意最后一次寻找,没有可用节点
while (colable[j] == 0) {
j++;
//System.out.print(j+" ");
if(j=cityNum){
//没有可用节点,说明已结束,最后一次为 *--0
m = p[0];
break;
//或者直接return 0;
}
else{
m = p[j];
}
}
//从可用节点J开始往后扫描,找出距离最小节点
for (; j cityNum; j++) {
if (colable[j] == 1) {
if (m = p[j]) {
m = p[j];
k = j;
}
}
}
return k;
}
public void printinit() {
System.out.println("print begin....");
for (int i = 0; i cityNum; i++) {
for (int j = 0; j cityNum; j++) {
System.out.print(distance[i][j] + " ");
}
System.out.println();
}
System.out.println("print end....");
}
public static void main(String[] args) throws IOException {
System.out.println("Start....");
TxTsp ts = new TxTsp(48);
ts.init("c://data.txt");
//ts.printinit();
ts.solve();
}
}
关于tsp问题java代码和tsp问题最好的算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







