当前位置: 首页 > 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

相关文章:

  • 计算机网络 : 网络基础
  • NAT转换和ICMP
  • AGI大模型(19):下载模型到本地之ModelScope(魔搭社区)
  • 运维实施31-NFS服务
  • 研华服务器ASMB-825主板无法识别PCIE-USB卡(笔记本)
  • 牛客网NC22222:超半的数
  • 【云实验】搭建个人网盘实验
  • leetcode0215. 数组中的第K个最大元素-medium
  • 1基·2台·3空间·6主体——蓝象智联解码可信数据空间的“数智密码”
  • 2025年长三角+山东省赛+ 认证杯二阶段论文发布!
  • 杰理ac696配置mic
  • QT6 源(104)篇一:阅读与注释QAction,其是窗体菜单栏与工具栏里的菜单项,先给出属性测试
  • 【Golang笔记01】Goland基础语法规则
  • 数字经济犯罪案件中的“双刃剑”电子数据
  • Spring2:应用事务+连接池形成的工具类
  • 【匹配】Hirschberg
  • ​小店推客系统开发SEO全攻略:从技术架构到流量裂变,打造私域增长引擎
  • 代码随想录算法训练营第三十八天打卡
  • 文章记单词 | 第86篇(六级)
  • Guided Filtering相关记录
  • 2025年上海科技节开幕,人形机器人首次登上科学红毯
  • 朱雀二号改进型遥二运载火箭发射成功
  • 蒲慕明院士:未来数十年不是AI取代人,而是会用AI的人取代不会用的
  • 当智慧农场遇见绿色工厂:百事如何用科技留住春天的味道?
  • 定制基因编辑疗法治愈罕见遗传病患儿
  • 中华人民共和国和巴西联邦共和国关于强化携手构建更公正世界和更可持续星球的中巴命运共同体,共同维护多边主义的联合声明