【进阶六】Python实现SDVRPTW常见求解算法——离散粒子群算法(DPSO)

DPSO算法与基本PSO的MATLAB实现指南及源码 本文还有配套的精品资源,点击获取 简介:离散粒子群优化算法(DPSO)是面向离散空间的全局优化方法,适用于如组合优化、调度等离散问题。DPSO算法通过模拟群体行为,在离散搜索空间中寻找最优解。MATLAB源码实现DPSO算法的关键步骤包括初始化、更新规则、适应度函数评估、更新最佳位置、迭代循环,以及输出最终的最优解。本课程设计项目旨在帮助学生和研究者深入理解DPSO算法,并... 阅读详情

基于python语言,采用经典离散粒子群算法(DPSO)对 带硬时间窗的需求拆分车辆路径规划问题(SDVRPTW) 进行求解。

往期优质资源


经过一年多的创作,目前已经成熟的代码列举如下,如有需求可私信联系,表明需要的 **问题与算法**,原创不宜,有偿获取。
VRP问题GAACOALNSDEDPSOQDPSOTSSA
CVRP√√√√√√√√
VRPTW√√√√√√√√
MDVRP√√√√√√√√
MDHVRP√√√√√√√√
MDHVRPTW√√√√√√√√
SDVRP√√√√√√√√
SDVRPTW√√√√√

1. 适用场景

  • 求解SDVRPTW
  • 车辆类型单一
  • 车辆容量小于部分需求节点需求
  • 单一车辆基地
  • 带硬时间窗

2. 代码调整


2.1 需求拆分


与SDVRP问题相比,SDVRPTW问题不仅允许客户需求大于车辆载重,而且考虑了客户节点的时间窗约束。为了使得每个客户的需求得到满足,必须派遣一辆或多辆车辆在规定时间窗内对客户进行服务。对于需求节点的拆分,这里依然采取先验拆分策略,本文采用文献[1]提出的先验分割策略,表述如下:

(1)20/10/5/1拆分规则

  • m20 =max{ m ∈ Z + ∪ { 0 } ∣ 0.20 Q m < = D i m\in Z^+ \cup \{0\} | 0.20Qm <= D_i m∈Z+∪{0}∣0.20Qm<=Di​ }
  • m10 =max{ m ∈ Z + ∪ { 0 } ∣ 0.10 Q m < = D i − 0.20 Q m 20   m\in Z^+ \cup \{0\} | 0.10Qm <= D_i-0.20Qm_{20}~ m∈Z+∪{0}∣0.10Qm<=Di​−0.20Qm20​  }
  • m5 =max{ m ∈ Z + ∪ { 0 } ∣ 0.05 Q m < = D i − 0.20 Q m 20 − 0.10 Q m 10 m\in Z^+ \cup \{0\} | 0.05Qm <= D_i-0.20Qm_{20}-0.10Qm_{10} m∈Z+∪{0}∣0.05Qm<=Di​−0.20Qm20​−0.10Qm10​ }
  • m1 =max{ m ∈ Z + ∪ { 0 } ∣ 0.01 Q m < = D i − 0.20 Q m 20 − 0.10 Q m 10 − 0.05 Q m 5 m\in Z^+ \cup \{0\} | 0.01Qm <= D_i-0.20Qm_{20}-0.10Qm_{10}-0.05Qm_{5} m∈Z+∪{0}∣0.01Qm<=Di​−0.20Qm20​−0.10Qm10​−0.05Qm5​ }

(2)25/10/5/1拆分规则

  • m25 =max{ m ∈ Z + ∪ { 0 } ∣ 0.25 Q m < = D i m\in Z^+ \cup \{0\} | 0.25Qm <= D_i m∈Z+∪{0}∣0.25Qm<=Di​ }
  • m10 =max{ m ∈ Z + ∪ { 0 } ∣ 0.10 Q m < = D i − 0.25 Q m 25   m\in Z^+ \cup \{0\} | 0.10Qm <= D_i-0.25Qm_{25}~ m∈Z+∪{0}∣0.10Qm<=Di​−0.25Qm25​  }
  • m5 =max{ m ∈ Z + ∪ { 0 } ∣ 0.05 Q m < = D i − 0.25 Q m 25 − 0.10 Q m 10 m\in Z^+ \cup \{0\} | 0.05Qm <= D_i-0.25Qm_{25}-0.10Qm_{10} m∈Z+∪{0}∣0.05Qm<=Di​−0.25Qm25​−0.10Qm10​ }
  • m1 =max{ m ∈ Z + ∪ { 0 } ∣ 0.01 Q m < = D i − 0.25 Q m 25 − 0.10 Q m 10 − 0.05 Q m 5 m\in Z^+ \cup \{0\} | 0.01Qm <= D_i-0.25Qm_{25}-0.10Qm_{10}-0.05Qm_{5} m∈Z+∪{0}∣0.01Qm<=Di​−0.25Qm25​−0.10Qm10​−0.05Qm5​ }

在实现过程中,对于需求超过车辆容量的客户必须进行需求拆分,而对于未超过车辆容量的客户可以拆分也可以不拆分,这里设置了参数比例进行限制。

2.2 需求拆分后的服务时长取值问题


节点的服务时长会影响车辆的行进时间,进而会影响与节点时间窗的匹配问题。一般来说,节点的服务时长与需求量成正比关系,在进行节点需求拆分后,新节点的需求量降低,其服务时长理应也降低。但从标准数据集来看,各需求节点的服务时长均采用同一数值。因此本文在代码实现过程中也采用固定值,不考虑新节点服务时长的变化。当然,如有需要,也可以设置单位货物的服务时长,根据拆分后节点的具体需求量设置相应的服务时长。


3. 求解结果


(1)收敛曲线

在这里插入图片描述

(2)车辆路径

在这里插入图片描述

(3)输出内容

在这里插入图片描述


4. 代码片段


(1)数据结构

# 数据结构:解
class Sol():
    def __init__(self):
        self.obj=None # 目标函数值
        self.node_no_seq=[] # 解的编码
        self.route_list=[] # 解的解码
        self.timetable_list=[] # 车辆访问各点的时间
        self.route_distance_list = None
# 数据结构:需求节点
class Node():
    def __init__(self):
        self.id=0 # 节点id
        self.x_coord=0 # 节点平面横坐标
        self.y_coord=0  # 节点平面纵坐标
        self.demand=0 # 节点需求
        self.start_time=0 # 节点开始服务时间
        self.end_time=1440 # 节点结束服务时间
        self.service_time=0 # 单次服务时长
        self.vehicle_speed = 0 # 行驶速度
# 数据结构:车场节点
class Depot():
    def __init__(self):
        self.id=0 # 节点id
        self.x_coord=0 # 节点平面横坐标
        self.y_coord=0  # 节点平面纵坐标
        self.start_time=0 # 节点开始服务时间
        self.end_time=1440 # 节点结束服务时间
        self.v_speed = 0 # 行驶速度
        self.v_cap = 80 # 车辆容量
# 数据结构:全局参数
class Model():
    def __init__(self):
        self.best_sol=None # 全局最优解
        self.sol_list=[] # 解的集合
        self.demand_dict = {}  # 需求节点集合
        self.depot = None  # 车场节点集合
        self.demand_id_list = [] # 需求节点id集合
        self.distance_matrix = {}  # 距离矩阵
        self.time_matrix = {}  # 时间矩阵
        self.number_of_demands = 0 # 需求点数量
        self.demand_id_list_ = []  # 经先验需求分割后的节点集合
        self.demand_dict_ = {}  # 需求分割后的节点需求集合
        self.distance_matrix_ = {}  # 原始节点id间的距离矩阵
        self.time_matrix_ = {}  # 原始节点id间的时间矩阵
        self.mapping = {}  # 需求分割前后的节点对应关系
        self.split_rate = 0.5 # 控制需求分割的比例(需求超出车辆容量的除外)
        self.popsize = 100 # 种群规模
        self.pl=[] # 个体历史最优解
        self.pg=None # 种群历史最优解
        self.v=[] # 速度集合
        self.Vmax=5 # 最大移动速度
        self.w=0.8 # 惯性权重
        self.c1=2 # 信息启发式因子
        self.c2=2 # 信息启发式因子

(2)距离矩阵

# 读取csv文件
def readCSVFile(demand_file,depot_file,model):
    with open(demand_file,'r') as f:
        demand_reader=csv.DictReader(f)
        for row in demand_reader:
            node = Node()
            node.id = int(row['id'])
            node.x_coord = float(row['x_coord'])
            node.y_coord = float(row['y_coord'])
            node.demand = float(row['demand'])
            node.start_time=float(row['start_time'])
            node.end_time=float(row['end_time'])
            node.service_time=float(row['service_time'])
            model.demand_dict[node.id] = node
            model.demand_id_list.append(node.id)
        model.number_of_demands=len(model.demand_id_list)

    with open(depot_file, 'r') as f:
        depot_reader = csv.DictReader(f)
        for row in depot_reader:
            depot = Depot()
            depot.id = row['id']
            depot.x_coord = float(row['x_coord'])
            depot.y_coord = float(row['y_coord'])
            depot.start_time=float(row['start_time'])
            depot.end_time=float(row['end_time'])
            depot.v_speed = float(row['v_speed'])
            depot.v_cap = float(row['v_cap'])
            model.depot = depot
# 初始化参数:计算距离矩阵时间矩阵
def calDistanceTimeMatrix(model):
    for i in range(len(model.demand_id_list)):
        from_node_id = model.demand_id_list[i]
        for j in range(len(model.demand_id_list)):
            to_node_id = model.demand_id_list[j]
            dist = math.sqrt((model.demand_dict[from_node_id].x_coord - model.demand_dict[to_node_id].x_coord) ** 2
                             + (model.demand_dict[from_node_id].y_coord - model.demand_dict[to_node_id].y_coord) ** 2)
            model.distance_matrix[from_node_id, to_node_id] = dist
            model.time_matrix[from_node_id,to_node_id] = math.ceil(dist/model.depot.v_speed)
        dist = math.sqrt((model.demand_dict[from_node_id].x_coord - model.depot.x_coord) ** 2 +
                         (model.demand_dict[from_node_id].y_coord - model.depot.y_coord) ** 2)
        model.distance_matrix[from_node_id, model.depot.id] = dist
        model.distance_matrix[model.depot.id, from_node_id] = dist
        model.time_matrix[from_node_id,model.depot.id] = math.ceil(dist/model.depot.v_speed)
        model.time_matrix[model.depot.id,from_node_id] = math.ceil(dist/model.depot.v_speed)

(3)邻域搜索

# 更新位置
def updatePosition(model):
    w=model.w
    c1=model.c1
    c2=model.c2
    pg = model.pg
    for id,sol in enumerate(model.sol_list):
        x=sol.node_no_seq
        v=model.v[id]
        pl=model.pl[id].node_no_seq
        r1=random.random()
        r2=random.random()
        new_v=[]
        for i in range(model.number_of_demands):
            v_=w*v[i]+c1*r1*(pl[i]-x[i])+c2*r2*(pg[i]-x[i])
            if v_>0:
                new_v.append(min(v_,model.Vmax))
            else:
                new_v.append(max(v_,-model.Vmax))
        new_x=[min(int(x[i]+new_v[i]),model.number_of_demands-1) for i in range(model.number_of_demands) ]
        new_x=adjustRoutes(new_x,model)
        model.v[id]=new_v

        timetable_list, new_obj, route_distance,route_list=calObj(new_x,model)
        if new_obj<model.pl[id].obj:
            model.pl[id].node_no_seq=copy.deepcopy(new_x)
            model.pl[id].obj=new_obj
            model.pl[id].route_list=route_list
            model.pl[id].route_distance = route_distance
            model.pl[id].timetable_list = timetable_list
        if new_obj<model.best_sol.obj:
            model.best_sol.obj=copy.deepcopy(new_obj)
            model.best_sol.node_no_seq=copy.deepcopy(new_x)
            model.best_sol.route_list=copy.deepcopy(route_list)
            model.best_sol.route_distance = copy.deepcopy(route_distance)
            model.best_sol.timetable_list = copy.deepcopy(timetable_list)
            model.pg=copy.deepcopy(new_x)
        model.sol_list[id].node_no_seq = copy.deepcopy(new_x)
        model.sol_list[id].obj = copy.deepcopy(new_obj)
        model.sol_list[id].route_list = copy.deepcopy(route_list)
        model.sol_list[id].routes_distance = copy.deepcopy(route_distance)
        model.sol_list[id].timetable_list = copy.deepcopy(timetable_list)
# 调整不可行解
def adjustRoutes(node_no_seq,model):
    all_node_id_list=copy.deepcopy(model.demand_id_list_)
    repeat_node=[]
    for id,node_no in enumerate(node_no_seq):
        if node_no in all_node_id_list:
            all_node_id_list.remove(node_no)
        else:
            repeat_node.append(id)
    for i in range(len(repeat_node)):
        node_no_seq[repeat_node[i]]=all_node_id_list[i]
    return node_no_seq

参考

【1】 A novel approach to solve the split delivery vehicle routing problem

离散粒子群优化算法在覆盖阵列生成中的应用与C++实现详解 PSO是一种启发式的优化算法,受到鸟群觅食行为的启示。每个粒子表示在解空间中的一个点,通过迭代,粒子更新它们的速度和位置,寻找问题的最优解。与此不同,DPSO是为离散解空间设计的。例如,生成覆盖阵列的问题就是一个离散问题,其中的解由一系列的0和1表示。为了表示每个粒子,我们首先定义一个Particlepublic:// 粒子的当前位置// 粒子的最佳位置// 粒子的速度// 粒子的适应度值这个类中,position和velocity都是向量,代表粒子在解空间中的各个维度的值。 阅读详情

相关推荐

Matlab实现的离散粒子群算法(DPSO)完整教程

粒子群优化(PSO)算法是一种基于群体智能的优化技术,其通过模拟鸟群捕食行为来寻找最优解。离散PSO(DPSO)是PSO算法在离散搜索空间中的实现,适用于解决离散优化问题。在离散粒子群优化算法(DPSO)中,个人最佳位置(pBest)是指粒子在其生命周期内经历过的最好位置。更新pBest的条件通常是,如果一个粒子在当前迭代找到一个新位置,其适应度优于之前记录的最优适应度,那么这个位置就成为新的pBest。更新逻辑可以表述为:end在上述伪代码中,fitness。

weixin_35266799的博客 1259

【改进篇】Python实现VRP常见求解算法——粒子群算法(DPSO)

基于python语言,实现经典粒子群算法(DPSO)对车辆路径规划问题(CVRP)进行求解,优化代码结构,改进Split函数

Better.C的博客 1477

离散粒子群算法(DPSO)Matlab代码

离散粒子群算法的Matlab实现,欢迎大家下载学习,一起进行改善。

离散粒子群(DPSO)——任务分类

一、题目要求 在[0,100]*[0,100]的二维平面上有10个物体需要搬运,共有4个机器人。 现在需要将10个物体分配给4个机器人,使得机器人移动的总距离最小,如何分配? 每个机器人最多搬运3个物体。 10个物体和4个机器人的初始位置。 global task_position; task_position = [[75.7740 ,82.3458]; [74.3132,69.4829]; [39.2227,31.7099];

龙晨天的博客 6880

【优化调度】基于混合整数线性规划的电力系统机组组合优化(Matlab实现)

本文详细介绍了基于混合整数线性规划(MILP)的电力系统机组组合优化方法,通过Matlab实现高效调度决策。内容涵盖目标函数构建、约束条件设置及求解器调优,帮助降低发电成本并提升系统稳定性。适用于电力系统调度员和能源优化研究人员,实现从理论到实践的完整解决方案。

weixin_29050271的博客 585

潜流式人工湿地计算_复合人工湿地净化水产养殖污水技术

技术概论1. 定义与分类人工湿地是指用人工筑成水池或沟槽,底面铺设防渗漏隔水层,充填一定深度的基质层,种植水生植物,利用基质、植物、微生物的物理、化学、生物三重协同作用使污水得到净化的系统。当池塘养殖污水进入人工湿地时,其污染物被床体吸附、过滤、分解而达到水质净化作用。按照水体流动方式,人工湿地分为表面流人工湿地、水平潜流人工湿地、垂直潜流人工湿地以及由前面几种湿地混合搭配的组合式人工湿...

weixin_42365490的博客 4249

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——离散粒子群算法(DPSO)

基于python语言,采用经典离散粒子群算法(DPSO)对 需求拆分车辆路径规划问题(SDVRP) 进行求解。

Better.C的博客 1474

解密美团外卖API:mtgsig和waimai_sign参数生成原理与Python实现

本文深入解析了美团外卖API中核心风控参数mtgsig和waimai_sign的生成原理与实现方法。文章详细拆解了waimai_sign作为业务数据签名、mtgsig作为请求环境签名的不同角色与生成逻辑,并通过Python代码示例演示了如何通过逆向工程、Frida动态Hook等技术手段模拟签名生成过程,为开发者理解移动端API安全机制提供了实战参考。

weixin_29325515的博客 554

【PSO】离散粒子群算法(DPSO)和离散二进制粒子群算法(BPSO )

1. 什么是离散粒子群算法? 普通粒子群算法(Particle Swarm Optimization Algorithm,PSO)的粒子初始位置、更新速度都是连续函数,与之对应,位置和速度更新均为离散值的算法是离散PSO算法(Discrete Particle Swarm Optimization Algorithm,DPSO); 一般就是在跟新粒子位置后,对粒子进行离散点处理; 比如:你

小白兔的窝 5万+

雷赛控制卡全方位使用指南:从硬件连接到高级应用

雷赛控制卡以其接口简单、编程便捷、性价比高的特点,成为中小自动化设备的理想选择。使用时需注意:硬件连接需注重抗干扰设计(屏蔽线、接地);软件开发需合理配置运动参数(脉冲当量、加减速);调试阶段需充分利用 DMCStudio 工具验证性能。通过本文介绍的方法,可快速实现从硬件搭建到复杂运动控制的全流程开发,满足雕刻、切割、装配等多场景的自动化需求。

品质生活,极致编程。 3775

如何使用Calibre PERC抽出 点到点/p2p 电阻

@[TOC](如何使用Calibre PERC抽点到点(p2p)电阻) 一、前言 需要实现的功能是从gds中抽出net的点到点的电阻。如下图这样。 二、准备工作 lvs rule pex rule(必要时可以自己定义RC rule) gds p2p点的坐标 定义prode.defs 因为p2p的点是变化的,所以每次prode定义都要重新出,对应的perc rule也是根据每个p2p点的定义来的,perc rule也是每次都要重新出。如果需要可以写一个脚本自动出这些定义文件。 PROBE_POINTS

kobayashiyou的博客 1万+

粒子群优化算法(2)离散粒子群算法

在上一篇博客 粒子群优化算法(1)中介绍了基本的粒子群算法,基本粒子群算法是基于连续空间(区间)进行搜索,然而在一些实际的工程应用中,我们的待求解的变量可能并不是历需的,而实一种离散型的变量。这就需要对基本的粒子群算法做出一些相应的改进。 在离散粒子群算法中,将离散问题空间映射到连续粒子运动空间,并做适当的修改。任然保留经典粒子群算法的速度-位置更新策略。粒子在状态空间的...

开到荼蘼的博客 2万+

在 ABAP 平台配置 OAuth 2.0 Client(OA2C_CONFIG):一份可落地的全景实践

本文详细介绍了在ABAP平台中配置OAuth 2.0客户端的完整流程。重点讲解了四种授权类型(Client Credentials、Authorization Code、SAML 2.0 Bearer Assertion、Resource Owner Password Credentials)的适用场景和配置要点,以及客户端认证的三种方式(Client Secret、Client Certificate、mTLS)。文章提供了操作步骤、排错建议和工程实践指导,包括端点配置、回调地址管理、scopes设置等关

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 358

基于离散粒子群算法(DPSO)求解路径规划 附Matlab代码

路径规划作为人工智能和机器人技术领域的核心问题之一,其目标是在给定环境下找到一条从起点到终点的最优或近似最优路径,同时避开障碍物和满足特定约束条件。传统的路径规划算法,例如 Dijkstra 算法、A* 算法及其变体,在静态、低维环境中表现良好,但在高维、动态或复杂环境中,往往面临计算复杂度高、易陷入局部最优等问题。近年来,智能优化算法凭借其全局搜索能力和适应性,在路径规划领域得到了广泛应用。

qq_59747472的博客 1574

从 Token 到 Agent:一文串起 AI 大模型核心概念

摘要:本文系统解析了现代AI系统的八大核心概念:Token(语言处理的最小单位)、Context(AI的短期记忆)、Prompt(指令接口)、Tool(能力扩展器)、MCP(工具生态协议)、Agent(自主智能体)和AgentSkill(专业技能封装)。文章揭示了这些概念如何共同构成AI从基础语言理解到自主决策的技术脉络,重点阐述了Token对计算成本的影响、Prompt工程的重要性、Tool如何突破AI的能力边界,以及Agent如何通过"感知-规划-执行-反思"循环完成复杂任务。最后指

jundao1997的专栏 251

Camunda 7.x 系列【22】全局监听器

Camunda支持义一个全局ExecutionListener和一个全局TaskListener,会捕获流程中发生的所有事件的通知,这样可以定义一个全局的审批人检查监听器,作用于所有用户任务。

记录知识、锤炼自我 2942

离散粒子群算法(DPSO)求解路径规划(Matlab代码实现)

离散粒子群算法(DPSO)求解路径规划(Matlab代码实现)

weixin_46039719的博客 3228

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【进阶六】Python实现SDVRPTW常见求解算法——遗传算法(GA)

基于python语言,采用经典遗传算法(GA)对 带硬时间窗的需求拆分车辆路径规划问题(SDVRP) 进行求解。

Better.C的博客 1547

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【进阶一】Python实现MDCVRP常见求解算法——离散粒子群(DPSO)

基于python语言,实现离散粒子群算法(DPSO)对多车场车辆路径规划问题(MDCVRP)进行求解。

Better.C的博客 2066

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【进阶六】Python实现SDVRPTW常见求解算法——自适应大邻域算法(ALNS)

基于python语言,采用经典自适应大邻域算法(ALNS)对 带硬时间窗的需求拆分车辆路径规划问题(SDVRPTW) 进行求解。

Better.C的博客 1718

粒子群优化算法及其离散二进制粒子群优化算法总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、什么是粒子群优化算法?二、粒子群算法基本形式标准粒子群算法粒子群拓扑结构离散二进制粒子群算法(Binary PSO)背景算法BPSO得出的结论 前言 总结一下粒子群优化算法的一些知识点,回顾综述的文章,这将对我下一篇在写的论文有帮助!仅供学习共勉! 本文的知识点引用的文章和博客将会标注给出,如有不适合请指出! 一、什么是粒子群优化算法? 粒子群算法的思想源于对鸟/鱼群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过.

xiaoliangpi_的博客 8865

【进阶二】Python实现VRPTW常见求解算法——禁忌搜索(TS)

基于python语言,实现经典禁忌搜索算法(TS)对带有时间窗的车辆路径规划问题(VRPTW )进行求解。

Better.C的博客 4038

【粒子群算法】离散粒子群优化算法原理及Python实现

本文系统介绍了离散粒子群优化算法(DPSO)的原理及实现。首先阐述了PSO算法的基本原理及其在连续空间优化中的局限性,在此基础上引出针对离散问题的DPSO算法。重点解析了DPSO的核心创新点:1)采用位串表示离散位置;2)重新定义速度概念,引入变异率等参数控制位置更新。随后详细展示了Python实现DPSO的具体步骤,包括粒子类设计、速度位置更新规则以及收敛条件设置。文章还列举了DPSO在图像分割、生产调度、编译器优化等领域的成功应用案例。最后

大雨淅淅的博客 1192

Python实现VRP常见求解算法——离散粒子群(DPSO)

基于python语言,实现经典粒子群算法(DPSO)对车辆路径规划问题(CVRP)进行求解。

Better.C的博客 6227

BPSO离散二进制粒子群算法解决背包问题

讲述 离散二进制原理 ,以背包问题具体讲解离散二进制粒子群。代码语言:python、MATLAB。

总裁余(余登武)博客 4508
上一篇: 【进阶六】Python实现SDVRPTW常见求解算法——差分进化算法(DE)
下一篇: 【进阶六】Python实现SDVRPTW常见求解算法——量子粒子群算法(QDPSO)
Better.C
博客等级 码龄9年 1万+粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Better.C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值