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

【未】[启发式算法]含初始解要求的有:TS, GA, SA, DPSO

在解决相关的TSP,VRP,PDP等方法中使用启发式算法中,需要借用初始解的有以下方法:

0. 算法简介

0.1 TS: 禁忌搜索算法

  • 禁忌搜索算法(TS)
  • 搞懂什么是禁忌搜索算法Tabu Search【附应用举例】

0.2 GA:遗传算法

构造初始种群(100个) → \to 种群根据适应度适者生存 → \to 种群的发展:交叉+突变 → \to 保留有效基因,提高适应度,从而逼近最优解.

  • [基因遗传算法]原理思想和python代码的结合理解之(一) :单变量
  • 遗传算法原理及其python实现

0.3 SA: 模拟退化算法

  • 模拟退火算法(SA)

0.4 DPSO:粒子群算法

  • 最优化算法之粒子群算法(PSO)

0.5 ALNS: 自适应大领域算法

单个初始解–破坏+修复–>新解,计算obj值不断的优化

  • 自适应大领域搜索算法(ALNS) 详解及python示例
0.6 ACO:蚁群算法
  • 蚁群算法java实现以及TSP问题蚁群算法求解

一、 初始解的构造

1.1随机构造法

demand_id_list=np.arange(10) 
random.shuffle(demand_id_list) 

在这里插入图片描述

1. 2. 插入法

  • 原文:《求解PDPTW问题的快速LNS》

设L LL为所有未安排的客户集合。(或:未拜访过的站点集合)
对每个未安排的客户,找出它在当前构造的解中插入代价最小的客户,将其插入当前解中,如果是第一个客户或者没有可行插入位置,则新安排一辆车给此客户
从L LL中删除被插入的客户。
如果L为空,停止;否则跳转到步骤2

LNS中破坏和修复,其修复过程也可以看作是插入节点的过程.如何插入可以快速得到最优解则是快速LNS的核心. 有点类同于ALNS.

二、解的解码

2.1 分割法

看Better.C所提供的方法

2.2 导弹发射算法

2.3 快速插入法

####2opt局部搜索

import randomfrom utils import distance_matrix, objclass LocalSearch():def __init__(self):passdef solve(self, points):num = len(points)distance_matrix_ = distance_matrix(points, num)current_solution = [i for i in range(num)]random.shuffle(current_solution)current_distance = obj(points, current_solution)while True:best_length = 100000000best_solution = []for index1 in range(num - 1):for index2 in range(index1 + 1, num - 1):temp_solution, temp_distance = self.one_step(num, current_solution, distance_matrix_,current_distance, index1, index2)if temp_distance < best_length:best_length = temp_distancebest_solution = [temp_solution]elif temp_distance == best_length:best_solution.append(temp_solution)if best_length >= current_distance:breakelse:# print(best_length)current_distance = best_lengthcurrent_solution = random.sample(best_solution, 1)[0]return current_solutiondef one_step(self, num, current_solution, distance_matrix, current_distance, index1, index2):a = current_solution[:index1]b = current_solution[index1:index2 + 1][::-1]c = current_solution[index2 + 1:]new_solution = a + b + cnew_distance = current_distance - distance_matrix[current_solution[(index1 - 1) % num]][current_solution[index1]] - distance_matrix[current_solution[index2]][current_solution[(index2 + 1) % num]] + \distance_matrix[current_solution[(index1 - 1) % num]][current_solution[index2]] + \distance_matrix[current_solution[index1]][current_solution[(index2 + 1) % num]]return new_solution, new_distance

ddd


def distance_matrix(points, num):distance_matrix = np.zeros([num, num])for i in range(num):for j in range(num):distance_matrix[i][j] = length(points[i], points[j])return distance_matrixdef obj(points, solution):obj = length(points[solution[-1]], points[solution[0]])for index in range(0, len(points) - 1):obj += length(points[solution[index]], points[solution[index + 1]])return obj
http://www.xdnf.cn/news/479971.html

相关文章:

  • WebSocket 客户端 DLL 模块设计说明(基于 WebSocket++ + Boost.Asio)
  • Core Web Vitals 全链路优化:从浏览器引擎到网络协议深度调优
  • linux下tcp/ip网络通信笔记1,
  • uniapp-商城-57-后台 新增商品(弹窗属性数据添加父级)
  • uniapp婚纱预约小程序
  • 一键清理功能,深度扫描本地存储数据
  • RK3588 ADB使用
  • 品铂科技在UWB行业地位综述(2025年更新)
  • Python线性回归:从理论到实践的完整指南
  • 大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN
  • 学习海康VisionMaster之直方图工具
  • MySQL中innodb的ACID
  • python中函数定义下划线代表什么意思,一个下划线,两个下划线什么意思
  • entity线段材质设置
  • 学习以任务为中心的潜动作,随地采取行动
  • Elasticsearch 分词与字段类型(keyword vs. text)面试题
  • 深入浅出 MinIO:身份管理与权限配置实战 !
  • AI与产品架构设计系列(2):Agent系统的应用架构与落地实
  • GpuGeek 网络加速:破解 AI 开发中的 “最后一公里” 瓶颈
  • vhca_id 简介,以及同 pf, vf 的关系
  • QT6 源(103)篇三:阅读与注释 QPlainTextEdit,给出源代码
  • 基于OpenCV的SIFT特征匹配指纹识别
  • 基于 CSS Grid 的网页,拆解页面整体布局结构
  • MCP协议的核心机制和交互过程
  • Review --- 框架
  • #跟着若城学鸿蒙# web篇-获取定位
  • 医学图像分析中的大规模基准测试与增强迁移学习|文献速递-深度学习医疗AI最新文献
  • 2025蓝桥杯JAVA编程题练习Day8
  • Java 后端给前端传Long值,精度丢失的问题与解决
  • 【pbootcms】打开访问首页显示未检测到您服务器环境的sqlite3数据库拓展,请检查php.ini中是否已经开启该拓展