社区
C语言
帖子详情
tsp问题求解
anjilabibi
2016-12-15 09:37:57
我用最临近法求解tsp问题但是结果出不来,求教。
...全文
317
3
打赏
收藏
tsp问题求解
我用最临近法求解tsp问题但是结果出不来,求教。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小灸舞
版主
2016-12-16
打赏
举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
anjilabibi
2016-12-15
打赏
举报
回复
程序贴上去了希望有大佬能给解决一下。
anjilabibi
2016-12-15
打赏
举报
回复
#include "stdafx.h" # include<time.h> # include<math.h> # include<stdio.h> # include<stdlib.h> # define Max 11 int cn, tt, start; // 要经过的城市个数,,起点 double arry1[Max][Max]; // 邻接矩阵,存放两两城市间的距离 double fn = 0, gn = 0, hn = 0; // 启发函数 double f1 = 0, g1 = 0, h1 = 0; int arry3[Max]; // 存放已历经的城市名 int arry4[Max]; // 标志位数组,cn个城市中已历经的置,未历经的置 // 定义顶点数据类型 struct Vertex { int x; int y; }City[Max]; /////////////////////////////////////////////////////////////////////////////////////////// // 主函数 void main() { void RandNum(int); void CityCoordinate(); double CityCost(int, int); void TSP(); double MaxLengh(); int i, j; CityCoordinate(); // 随机生成并显示个城市及其坐标 printf("\n"); printf("\n"); for (i = 1; i<Max; i++) // 随机生成并显示表示两城市间距离的邻接矩阵 { tt = 0; for (j = i; j<Max; j++, tt++) { if (i == j) arry1[i][j] = 0; else arry1[i][j] = CityCost(i, j); } } TSP(); // 用最小生成树查找最短路径 printf("\n从%d出发的最佳路径为:%d→", start, start); for (i = 2; i <= cn; i++) printf("%d→", arry3[i]); printf("%d\n", arry3[cn + 1]); printf("总路径长度为:%f\n", fn); } /////////////////////////////////////////////////////////////////////////////////////////// // 随机数产生器 int RandNum(int max) { int m; m = rand() % (max - 1) + 1; // 产生一个~20的随机数 return m; } // 生成并显示城市坐标 void CityCoordinate() { int i, j, hh = 0; srand((unsigned)time(NULL)); // 使用当前时间作为种子 City[1].x = RandNum(Max); // 生成并显示第个城市的坐标 City[1].y = RandNum(Max); printf("City[1]的坐标: (%d,%d); ", City[1].x, City[1].y); for (i = 2; i<Max; i++) // 生成第~10个城市的坐标 { City[i].x = RandNum(Max); City[i].y = RandNum(Max); for (j = 1; j<i; j++) // 检查重合坐标,有重合时重新生成 if (City[i].x == City[j].x&& City[i].y == City[j].y) i = i - 1; hh++; // 换行 if (0 != i % 2) hh = 0; if (0 == hh) printf("\n"); printf("City[%d]的坐标: (%d,%d); ", i, City[i].x, City[i].y);// 显示第i个城市的坐标 } } // 计算并显示城市间的欧式距离 double CityCost(int i, int j) { int x1, x2, y1, y2, hh = 0; double Distance, t; x1 = City[i].x; x2 = City[j].x; y1 = City[i].y; y2 = City[j].y; t = (x1 - x2)* (x1 - x2) + (y1 - y2)* (y1 - y2); Distance = sqrt(t); arry1[i][j] = Distance; hh++; if (0 != tt % 2) hh = 0; // 换行 if (0 == hh) printf("\n"); printf("%d与%d的距离:%3.2f ", i, j, Distance); return arry1[i][j]; } // 用最邻近法找最短路径 void TSP(){ int Mnode; // 起点,当前搜索层的父节点 int h, i, k, l, m, j; double min; int x, y = 0; int arry2[Max] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };;// 标志位数组,已历经的置0,未历经的置1 double temp1 = 100, temp2 = 100; printf("\n请输入要经过的城市个数:"); scanf_s("%d", &cn); printf("\n"); printf("请输入要历经的城市:\n"); for (h = 1; h <= cn; h++) // 输入历经节点 { scanf_s("%d", &x); if (0 == arry2[x]) arry2[x] = 1; // 避免重复 else if (1 == arry2[x]) h = h - 1; } printf("\n"); for (i = 1; i<Max; i++) // 显示历经节点 if (1 == arry2[i]) printf("%d ", i); printf("\n"); printf("请输入出发城市:"); // 输入出发点 scanf_s("%d", &start); printf("\n"); arry2[start] = 0; // 初始化 arry3[1] = start; arry3[cn + 1] = start; //首尾端点一致 Mnode = arry3[1]; ////////////////////////////////////////寻找最近的点 for (k = 1, l = 1; k < Max&&arry2[k] == 1; k = m){ for (j = 1; j < Max; j++){ if (arry2[j] == 1 && j != k) { min = arry1[k][j]; if (arry1[k][j] <= min){ min = arry1[k][j]; m = j; arry3[++l] = j; } } } fn += min; } }
基于NN最近邻优化算法的
TSP问题
求解
matlab仿真
1.版本:matlab2022A。 2.领域:
TSP问题
3.仿真效果:仿真效果可以参考博客同名文章《基于NN最近邻优化算法的
TSP问题
求解
matlab仿真》 4.内容:基于NN最近邻优化算法的
TSP问题
求解
matlab仿真。最近邻算法(Nearest Neighbor, NN)是一种简单且直观的贪婪算法,经常用于解决TSP(旅行商问题)的近似解。该算法从一个城市开始,然后每次选择距离当前城市最近的未访问城市作为下一个访问的城市,直到所有城市都被访问过,并且旅行商返回到起始城市。 5.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置。
基于MATLAB的遗传算法程序设计及
TSP问题
求解
基于MATLAB的遗传算法程序设计及
TSP问题
求解
基于kmeans聚类和遗传优化算法的
TSP问题
求解
matlab仿真【包括程序操作视频】
1.版本:matlab2022A,包含仿真操作录像,中文注释,操作录像使用windows media player播放。 2.领域:
TSP问题
求解
3.仿真效果:仿真效果可以参考博客同名文章《基于kmeans聚类和遗传优化算法的
TSP问题
求解
matlab仿真》 4.内容:基于kmeans聚类和遗传优化算法的
TSP问题
求解
matlab仿真。解决旅行商问题(Traveling Salesman Problem, TSP)通常涉及寻找一条遍历所有给定城市的最短路径,同时保证每个城市只访问一次且最终回到起点。K-means聚类和遗传优化算法是两种不同的计算方法,可以结合使用以
求解
TSP问题
。 5.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
基于GA遗传优化算法的
TSP问题
求解
matlab仿真
1.版本:matlab2022A,包含仿真操作录像,操作录像使用windows media player播放。 2.领域:
TSP问题
求解
3.仿真效果:仿真效果可以参考博客同名文章《基于GA遗传优化算法的
TSP问题
求解
matlab仿真》 4.内容:基于GA遗传优化算法的
TSP问题
求解
matlab仿真。通过遗传优化算法,搜索最优的行驶路径。 5.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
基于MATLAB的遗传算法程序设计及
TSP问题
求解
-基于MATLAB的遗传算法程序设计及
TSP问题
求解
.rar
基于MATLAB的遗传算法程序设计及
TSP问题
求解
-基于MATLAB的遗传算法程序设计及
TSP问题
求解
.rar 与大家共享
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章