当前位置: 首页 > news >正文

设计参考图网站免费公司建站

设计参考图网站,免费公司建站,铁岭免费移动网站建设,郑州房产信息网查询系统模拟退火算法求解TSP的步骤参考书籍《Matlab智能算法30个案例分析》。 问题描述 TSP问题描述在该书籍的第4章 算法流程 部分实现代码片段 坐标轴转换成两点之间直线距离长度的代码 coordinates np.array([(16.47, 96.10),(16.47, 94.44),(20.09, 92.54),(22.39, 93.37),(2…

模拟退火算法求解TSP的步骤参考书籍《Matlab智能算法30个案例分析》。

问题描述

TSP问题描述在该书籍的第4章

在这里插入图片描述

算法流程

在这里插入图片描述

部分实现代码片段

坐标轴转换成两点之间直线距离长度的代码

coordinates = np.array([(16.47, 96.10),(16.47, 94.44),(20.09, 92.54),(22.39, 93.37),(25.23, 97.24),(22.00, 96.05),(20.47, 97.02),(17.20, 96.29),(16.30, 97.38),(14.05, 98.12),(16.53, 97.38),(21.52, 95.59),(19.41, 97.13),(20.09, 92.55),])# 将距离坐标矩阵转换成两点之间实际的直线距离
city_num = coordinates.shape[0]def get_distanceGraph(coordinates):# 计算城市间的欧式距离diatance_graph = np.zeros((city_num, city_num))# 初始化生成矩阵for i in range(city_num):for j in range(i, city_num):diatance_graph[i][j] = diatance_graph[j][i] = np.linalg.norm(coordinates[i] - coordinates[j])print("diatance_graph", diatance_graph)return diatance_graph

求解TSP问题路径长度的代码

def cal_length(cur_solution, distance_graph):# 计算路线长度total_length = 0visited_city_list = [cur_solution[0]]for i in range(city_num):visited_city = visited_city_list[-1]cur_city = cur_solution[i]visited_city_id = visited_city - 1cur_city_id = cur_city - 1next_city_length = distance_graph[visited_city_id][cur_city_id]total_length += next_city_lengthvisited_city_list.append(cur_city)print("total_length", total_length)return total_length

使用一个路径长度矩阵相对简单,可以进行笔算验证解结果的算例,验证计算TSP路径长度的代码是可行的

可以笔算验证的算例代码

# 各个节点之间的欧氏距离
distance_list = [[0, 4.0, 6.0, 7.5, 9.0, 20.0, 10.0, 16.0, 8.0],[4.0, 0, 6.5, 4.0, 10.0, 5.0, 7.5, 11.0, 10.0],[6.0, 6.5, 0, 7.5, 10.0, 10.0, 7.5, 7.5, 7.5],[7.5, 4.0, 7.5, 0, 10.0, 5.0, 9.0, 9.0, 15.0],[9.0, 10.0, 10.0, 10.0, 0, 10.0, 7.5, 7.5, 10.0],[20.0, 5.0, 10.0, 5.0, 10.0, 0, 7.0, 9.0, 7.5],[10.0, 7.5, 7.5, 9.0, 7.5, 7.0, 0, 7.0, 10.0],[15.0, 11.0, 7.5, 9.0, 7.5, 9.0, 7.0, 0, 10.0],[8.0, 10.0, 7.5, 15.0, 10.0, 7.5, 10.0, 10.0, 0]]
demand_node_num = 9
supply_node_num = 0
city_num = 9
distance_graph = np.zeros((demand_node_num+supply_node_num, demand_node_num+supply_node_num))
for i in range(demand_node_num+supply_node_num):distance_graph[i] = np.array(distance_list[i])
cur_solution = [3, 9, 6, 4, 7, 8, 1, 5, 2]
length = cal_length(cur_solution, distance_graph)
print("length", length)

Metropolis准则函数

# Metropolis准则函数
def Metropolis_func(cur_solution, new_solution, distance_graph, cur_temp):# 计算新旧解之间的能量之差,如果能量降低:以概率1接受新解,如果能量升高,以一定概率接受劣化解dC = cal_length(new_solution, distance_graph) - cal_length(cur_solution, distance_graph)if dC < 0:cur_solution = new_solutioncur_length = cal_length(cur_solution, distance_graph)elif pow(math.e, -dC/cur_temp) >= np.random.rand():  # 大于一个随机生成的数:cur_solution = new_solutioncur_length = cal_length(cur_solution, distance_graph)else:cur_length = cal_length(cur_solution, distance_graph)return cur_solution, cur_length

算法迭代图形

在这里插入图片描述

算法程序还有待改进空间,生成的迭代图形和最优结果和书上的存在差异。

在这里插入图片描述

http://www.yayakq.cn/news/610647/

相关文章:

  • 郑州网站建设up188容易收录的网站
  • 音乐网站可做哪些内容做美食网站的素材
  • 西安最好的网站建设公司o2o平台模式
  • 婺源网站建制作辽宁省建设工程交易网
  • 网站数据库是什么互联网外包平台
  • 建站公司佛山网站直播是未开票收入怎么做
  • 静态网站开发的目的做网站py和php
  • wordpress外贸站国内最新新闻十篇
  • 单位网站开发合同范本网站基建建设
  • 像优酷这样的网站需要怎么做wordpress技术类模板下载
  • “青岛今晚12时封城”湖北seo公司
  • 定制网站开发接私活域名备案 个人 网站基本信息查询
  • wordpress多站点可视化网站建设的职称
  • 正能量晚上看的网站2021青岛营销型网站设计公司
  • 西安哪个公司可以做网站本科自考什么机构比较正规
  • 做网站你们用什么浏览器北京工装装修公司
  • tp5企业网站开发视频wordpress文章图片灯箱
  • 淘客做网站怎么备案深圳市建设工程交易服务中心宝安分中心
  • 网站建设综合实训心得体会西安有什么好玩的好吃的
  • 大连网站建站四库一平台建造师业绩查询
  • 有哪些档案网站可以自己做网站服务器不
  • 北京网站设计提供商虚拟主机怎么做网站
  • 想创办一个本地的人才招聘网站_如何做市场调查问卷黄金网站app免费视频下载
  • 石家庄网站建设求职简历烤漆 东莞网站建设
  • 做网站推广怎么做wordpress管理面板
  • 自学网站开发难吗企业网站分为哪三种类型
  • 长沙网站定制建设凡科快图网站
  • 想学网站搭建与推广烟台网站制作策划
  • 全国医院网站建设opencart做视频网站
  • 网站描述怎么设置网站模版 之星