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

Python_差分进化算法入门学习_代码例程 差分进化算法DE是一种高效的全局优化算法。它也是基于群体的启发式搜索算法,群中的每个个体对应一个解向量。差分进化算法的进化流程则与遗传算法非常类似,都包括变异、杂交和选择操作,但这些操作的具体定义与遗传算法有所不同。这一点格外需要注意,特别是刚从遗传算法过度到差分进化算法的小伙伴。本文会跟大家一起学习,对基础概念进行简单讲解,最后以一个案例作为载体进行代码编写,熟悉差分进化算法。 阅读详情

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

往期优质资源

1. 适用场景

  • 求解VRPTW
  • 车辆类型单一
  • 车辆容量不小于需求节点最大需求
  • 车辆路径长度或运行时间无限制
  • 需求节点服务成本满足三角不等式
  • 节点时间窗至少满足车辆路径只包含一个需求节点的情况
  • 单一车辆基地
  • 各车场车辆总数满足实际需求

2. 求解效果

(1)收敛曲线
在这里插入图片描述

(2)车辆路径

在这里插入图片描述

3. 代码分析

应用TS算法求解MDVRPTW时保留了已有代码的架构与思路,为能够求解带有时间窗的(多车场)车辆路径规划问题,这里参考既有文献对路径分割算法进行了改进("splitRoutes"函数),在分割车辆路径时不仅考虑了车辆容量限制,还考虑了节点的时间窗约束,以此使得分割后的路径可行。在此改进下继承了大量原有代码,降低了代码改进量。

4. 数据格式

以csv文件储存数据,其中demand.csv文件记录需求节点数据,共包含需求节点id,需求节点横坐标,需求节点纵坐标,需求量;depot.csv文件记录车场节点数据,共包含车场id,车场横坐标,车场纵坐标,车队数量。需要注意的是:需求节点id应为整数,车场节点id任意,但不可与需求节点id重复。 可参考github主页相关文件。

5. 分步实现

(1)数据结构
定义Sol()类,Node()类,Model()类,其属性如下表:

  • Sol()类,表示一个可行解
属性描述
obj优化目标值
node_id_list需求节点id有序排列集合
cost_of_distance距离成本
cost_of_time时间成本
action_id解所对应的算子id,用于禁用算子
route_list车辆路径集合,对应MDVRPTW的解
timetable_list车辆节点访问时间集合,对应MDVRPTW的解
  • Node()类,表示一个网络节点
属性描述
id物理节点id,需唯一
x_coord物理节点x坐标
y_coord物理节点y坐标
demand物理节点需求
depot_capacity车辆基地车队规模
start_time最早开始服务(被服务)时间
end_time最晚结束服务(被服务)时间
service_time需求节点服务时间
  • Model()类,存储算法参数
属性描述
best_sol全局最优解,值类型为Sol()
demand_dict需求节点集合(字典),值类型为Node()
depot_dict车场节点集合(字典),值类型为Node()
depot_id_list车场节点id集合
demand_id_list需求节点id集合
distance_matrix节点距离矩阵
time_matrix节点旅行时间矩阵
number_of_demands需求节点数量
opt_type优化目标类型,0:最小旅行距离,1:最小时间成本
vehicle_cap车辆容量
vehicle_speed车辆行驶速度,用于计算旅行时间
tabu_list禁忌表
TL算子禁忌长度

(2)文件读取

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:
            node = Node()
            node.id = row['id']
            node.x_coord = float(row['x_coord'])
            node.y_coord = float(row['y_coord'])
            node.depot_capacity = float(row['capacity'])
            node.start_time=float(row['start_time'])
            node.end_time=float(row['end_time'])
            model.depot_dict[node.id] = node
            model.depot_id_list.append(node.id)

(3)计算距离&时间矩阵

def calDistanceTimeMatrix(model):
    for i in range(len(model.demand_id_list)):
        from_node_id = model.demand_id_list[i]
        for j in range(i + 1, 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.distance_matrix[to_node_id, from_node_id] = dist
            model.time_matrix[from_node_id,to_node_id] = math.ceil(dist/model.vehicle_speed)
            model.time_matrix[to_node_id,from_node_id] = math.ceil(dist/model.vehicle_speed)
        for _, depot in model.depot_dict.items():
            dist = math.sqrt((model.demand_dict[from_node_id].x_coord - depot.x_coord) ** 2
                             + (model.demand_dict[from_node_id].y_coord - depot.y_coord) ** 2)
            model.distance_matrix[from_node_id, depot.id] = dist
            model.distance_matrix[depot.id, from_node_id] = dist
            model.time_matrix[from_node_id,depot.id] = math.ceil(dist/model.vehicle_speed)
            model.time_matrix[depot.id,from_node_id] = math.ceil(dist/model.vehicle_speed)

(4)目标值计算
适应度计算依赖" splitRoutes "函数对有序节点序列行解分割得到车辆行驶路线,同时在得到各车辆形式路线后在满足车场车队规模条件下分配最近车场,之后调用 " calTravelCost "函数确定车辆访问各路径节点的到达和离开时间点,并计算旅行距离成本和旅行时间成本。


def calTravelCost(route_list,model):
    timetable_list=[]
    cost_of_distance=0
    cost_of_time=0
    for route in route_list:
        timetable=[]
        for i in range(len(route)):
            if i == 0:
                depot_id=route[i]
                next_node_id=route[i+1]
                travel_time=model.time_matrix[depot_id,next_node_id]
                departure=max(0,model.demand_dict[next_node_id].start_time-travel_time)
                timetable.append((departure,departure))
            elif 1<= i <= len(route)-2:
                last_node_id=route[i-1]
                current_node_id=route[i]
                current_node = model.demand_dict[current_node_id]
                travel_time=model.time_matrix[last_node_id,current_node_id]
                arrival=max(timetable[-1][1]+travel_time,current_node.start_time)
                departure=arrival+current_node.service_time
                timetable.append((arrival,departure))
                cost_of_distance = cost_of_distance + model.distance_matrix[last_node_id,current_node_id]
                cost_of_time += model.time_matrix[last_node_id,current_node_id] + current_node.service_time\
                                +max(current_node.start_time-timetable[-1][1]+travel_time,0)
            else:
                last_node_id = route[i - 1]
                depot_id=route[i]
                travel_time = model.time_matrix[last_node_id,depot_id]
                departure = timetable[-1][1]+travel_time
                timetable.append((departure,departure))
                cost_of_distance +=model.distance_matrix[last_node_id,depot_id]
                cost_of_time+=model.time_matrix[last_node_id,depot_id]
        timetable_list.append(timetable)
    return timetable_list,cost_of_time,cost_of_distance

def calObj(sol,model):

    node_id_list=copy.deepcopy(sol.node_id_list)
    num_vehicle, sol.route_list = splitRoutes(node_id_list, model)
    # travel cost
    sol.timetable_list,sol.cost_of_time,sol.cost_of_distance =calTravelCost(sol.route_list,model)
    if model.opt_type == 0:
        sol.obj=sol.cost_of_distance
    else:
        sol.obj=sol.cost_of_time

(5)初始解生成

def generateInitialSol(node_id_list):
    node_id_list_=copy.deepcopy(node_id_list)
    random.seed(0)
    random.shuffle(node_id_list_)
    return node_id_list_

(6)定义邻域生成算子

def createActions(n):
    action_list=[]
    nswap=n//2
    #第一种算子(Swap):前半段与后半段对应位置一对一交换
    for i in range(nswap):
        action_list.append([1,i,i+nswap])
    #第二中算子(DSwap):前半段与后半段对应位置二对二交换
    for i in range(0,nswap,2):
        action_list.append([2,i,i+nswap])
    #第三种算子(Reverse):指定长度的序列反序
    for i in range(0,n,4):
        action_list.append([3,i,i+3])
    return action_list

(7)生成邻域

def doAction(node_id_list,action):
    node_id_list_=copy.deepcopy(node_id_list)
    if action[0]==1:
        index_1=action[1]
        index_2=action[2]
        node_id_list_[index_1],node_id_list_[index_2]=node_id_list_[index_2],node_id_list_[index_1]
        return node_id_list_
    elif action[0]==2:
        index_1 = action[1]
        index_2 = action[2]
        temporary=[node_id_list_[index_1],node_id_list_[index_1+1]]
        node_id_list_[index_1]=node_id_list_[index_2]
        node_id_list_[index_1+1]=node_id_list_[index_2+1]
        node_id_list_[index_2]=temporary[0]
        node_id_list_[index_2+1]=temporary[1]
        return node_id_list_
    elif action[0]==3:
        index_1=action[1]
        index_2=action[2]
        node_id_list_[index_1:index_2+1]=list(reversed(node_id_list_[index_1:index_2+1]))
        return node_id_list_

(8)绘制收敛曲线

def plotObj(obj_list):
    plt.rcParams['font.sans-serif'] = ['SimHei'] #show chinese
    plt.rcParams['axes.unicode_minus'] = False  # Show minus sign
    plt.plot(np.arange(1,len(obj_list)+1),obj_list)
    plt.xlabel('Iterations')
    plt.ylabel('Obj Value')
    plt.grid()
    plt.xlim(1,len(obj_list)+1)
    plt.show()

(9)绘制车辆路线

def plotRoutes(model):
    for route in model.best_sol.route_list:
        x_coord=[model.depot_dict[route[0]].x_coord]
        y_coord=[model.depot_dict[route[0]].y_coord]
        for node_id in route[1:-1]:
            x_coord.append(model.demand_dict[node_id].x_coord)
            y_coord.append(model.demand_dict[node_id].y_coord)
        x_coord.append(model.depot_dict[route[-1]].x_coord)
        y_coord.append(model.depot_dict[route[-1]].y_coord)
        plt.grid()
        if route[0]=='d1':
            plt.plot(x_coord,y_coord,marker='o',color='black',linewidth=0.5,markersize=5)
        elif route[0]=='d2':
            plt.plot(x_coord,y_coord,marker='o',color='orange',linewidth=0.5,markersize=5)
        else:
            plt.plot(x_coord,y_coord,marker='o',color='b',linewidth=0.5,markersize=5)
    plt.xlabel('x_coord')
    plt.ylabel('y_coord')
    plt.show()

(10)输出结果

def outPut(model):
    work=xlsxwriter.Workbook('result.xlsx')
    worksheet=work.add_worksheet()
    worksheet.write(0, 0, 'cost_of_time')
    worksheet.write(0, 1, 'cost_of_distance')
    worksheet.write(0, 2, 'opt_type')
    worksheet.write(0, 3, 'obj')
    worksheet.write(1,0,model.best_sol.cost_of_time)
    worksheet.write(1,1,model.best_sol.cost_of_distance)
    worksheet.write(1,2,model.opt_type)
    worksheet.write(1,3,model.best_sol.obj)
    worksheet.write(2,0,'vehicleID')
    worksheet.write(2,1,'route')
    worksheet.write(2,2,'timetable')
    for row,route in enumerate(model.best_sol.route_list):
        worksheet.write(row+3,0,'v'+str(row+1))
        r=[str(i)for i in route]
        worksheet.write(row+3,1, '-'.join(r))
        r=[str(i)for i in model.best_sol.timetable_list[row]]
        worksheet.write(row+3,2, '-'.join(r))
    work.close()

(11)主函数

def run(demand_file,depot_file,epochs,v_cap,opt_type):
    """
    :param demand_file: demand file path
    :param depot_file: depot file path
    :param epochs: Iterations
    :param v_cap: Vehicle capacity
    :param opt_type: Optimization type:0:Minimize the number of vehicles,1:Minimize travel distance
    :return: 无
    """
    model=Model()
    model.vehicle_cap=v_cap
    model.opt_type=opt_type
    readCSVFile(demand_file,depot_file,model)
    calDistanceTimeMatrix(model)
    action_list=createActions(len(model.demand_id_list))
    model.tabu_list=np.zeros(len(action_list))
    history_best_obj=[]
    sol=Sol()
    sol.node_id_list=generateInitialSol(model.demand_id_list)
    calObj(sol,model)
    model.best_sol=copy.deepcopy(sol)
    history_best_obj.append(sol.obj)
    for ep in range(epochs):
        local_new_sol=Sol()
        local_new_sol.obj=float('inf')
        for i in range(len(action_list)):
            if model.tabu_list[i]==0:
                new_sol=Sol()
                new_sol.node_id_list=doAction(sol.node_id_list,action_list[i])
                calObj(new_sol,model)
                new_sol.action_id=i
                if new_sol.obj<local_new_sol.obj:
                    local_new_sol=copy.deepcopy(new_sol)
        sol=local_new_sol
        for i in range(len(action_list)):
            if i==sol.action_id:
                model.tabu_list[sol.action_id]=model.TL
            else:
                model.tabu_list[i]=max(model.tabu_list[i]-1,0)
        if sol.obj<model.best_sol.obj:
            model.best_sol=copy.deepcopy(sol)
        history_best_obj.append(model.best_sol.obj)
        print("%s/%s: best obj: %s"%(ep,epochs,model.best_sol.obj))
    plotObj(history_best_obj)
    plotRoutes(model)
    outPut(model)

6. 完整代码

有偿,私信

元启发式算法实战指南:从原理到工业级VRPTW优化 元启发式算法是一类面向NP-Hard组合优化问题的智能搜索范式,核心在于通过可调控的邻域探索、解质量评估与自适应接受机制,在有限时间内逼近高质量可行解。它不依赖目标函数可导性或精确数学建模,天然适配物流路径规划、生产调度、能源管理等含离散变量、多冲突约束与黑盒目标的实际场景。相比传统整数规划求解器,其技术价值体现在可控计算开销、强业务规则嵌入能力及全程可观测的搜索过程。典型应用如带时间窗的车辆路径问题(VRPTW),可通过自适应大邻域搜索(ALNS)框架实现秒级响应与20%以上运营指标提升。本文聚焦工程落地 阅读详情

相关推荐

数学建模竞赛:从资料库构建到实战求解的系统化备赛指南

数学建模是运用数学工具解决实际问题的核心方法,其原理在于通过抽象、假设和构建模型来模拟复杂系统。在工程实践与科研中,数学建模的价值在于将模糊的现实问题转化为可量化、可计算、可优化的科学问题。其应用场景广泛,覆盖物流优化、金融预测、资源调度等多个行业领域。本文聚焦于数学建模竞赛的实战流程,深入探讨如何高效利用**Python编程**与**优化算法**等关键技术,构建从赛题解析、模型构建、算法实现到论文撰写的完整技术闭环,旨在帮助参赛者将零散资料转化为系统性解题能力,从而在有限时间内产出高质量解决方案。

weixin_34268843的博客 339

[基因遗传算法]进阶之六:VRP的进阶经典问题的解码如何写

这里是对车辆进行了限制?与VRPTW相比,其结构上的变化,应该只是解码过程的变化. 解码后的route_list结构不变,所以后续的求距离时间成本,和计算适应度方法,都是几乎不改变的. 因此,这里重点讨论 如何对MDVRPTW进行解码.例如:node_id_list=[3,4,2,0,1,9,8,7,6,5],分割为[ [3,4],[2,0,1,9,8],[7,6,5]]splitRoutes(node_id_list,model) :根据车容量限制要求,分割为多个route.各车场车辆总数满足实际需求。

panbaoran913的博客 1702

Python-运筹优化领域常见问题模型-VRP

在运筹优化领域,车辆路径问题(VRP)是一个经典且重要的问题。VRP 一般指的是对一系列发货点和收货点,组织调用一定的车辆,安排适当的行车路线,使车辆有序地通过它们,在满足指定的约束条件下,力争实现一定的目标。最基本的 VRP 问题叫做带容量约束的车辆路径规划问题(Capacitated Vehicle Routing Problem,CVRP)。在 CVRP 中,需要考虑每辆车的容量约束、车辆的路径约束和装载量约束。

百态·数智思维 | 聚焦大数据、量化与未来AI 456

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

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

Better.C的博客 9932

差分进化算法Python实现.zip

差分进化算法 Python 实现。除此之外,还有这些算法的集合:差分进化算法、遗传算法、粒子群算法、模拟退火算法、蚁群算法、免疫优化算法、鱼群算法

python实现VRPTW求解禁忌搜索算法.rar_VRP 禁忌_python实现vrptw_sleptwfl_vrp_时间

采用禁忌搜索算法解决问题,解决带时间窗的VRP问题

【进阶六】Python实现SDVRPTW(需求拆分)常见求解算法——禁忌搜索+模拟退火算法(TS+SA)

基于python语言,采用经典禁忌搜索(TS)+模拟退火(SA)对 带硬时间窗的需求拆分车辆路径规划问题(SDVRPTW) 进行求解。

Better.C的博客 1376

基于粒子群算法的带有时间窗口的路径优化,基于粒子群算法的VRPTW问题求解,pso-VRPTW(代码完整,数据齐全)

基于MATLAB编程,粒子群算法的带有时间窗口的路径优化,代码完整,包含数据,有注释,方便扩展应用 1,如有疑问,不会运行,可以私信, 2,需要创新,或者修改可以扫描二维码联系博主, 3,本科及本科以上可以下载应用或者扩展, 4,内容不完全匹配要求或需求,可以联系博主扩展。

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——禁忌搜索+模拟退火算法(TS+SA)

基于python语言,采用经典禁忌搜索(TS)+模拟退火(SA)对 需求拆分车辆路径规划问题(SDVRP) 进行求解。

Better.C的博客 1431

使用改进的 PSO(粒子 群优化)算法解决 VRPTW 问题_python_代码_下载

什么是PSO算法 基本算法(PSO,Particlewarm Optimization)是在1995年由Eberhart博士和肯尼迪博士共同提出的,它是对鸟群捕食行为的研究。整个群体的问题到了既定的问题中,从根本上解决了问题的产生过程,从而使最优化的过程。 什么是 VRPTW 车辆路径问题 (VRP) 是一个组合优化和整数规划问题,它询问“为了交付给给定的一组客户,车队要穿越的最佳路线集是什么?”。它概括了著名的旅行商问题(TSP)。它首次出现在 George Dantzig 和 John Ramser 于 1959 年的一篇论文中,[1] 其中第一个算法方法被编写并应用于汽油运输。通常,上下文是将位于中央仓库的货物交付给已订购此类货物的客户。而VRPTW意味着每个客户限制一个时间窗口[开始服务器时间,结束服务器时间]。 更多详情、使用方法,请下载后阅读README.md文件

差分进化(DE)算法的Python实现

差分进化算法 差分进化算法(Differential Evolution Algorithm,DE)是一种高效的全局优化算法。它也是基于群体的启发式搜索算法,群中的每个个体对应一个解向量。 简单来说DE算法可用于求函数的极值点,例如:函数 求得极值点在(512.95, 404.43) 作者:Light-V

【改进篇】Python实现VRP常见求解算法——禁忌搜索+模拟退火算法(TS+SA)

基于python语言,实现经典禁忌搜索(TS)+模拟退火(SA)对车辆路径规划问题(CVRP)进行求解, 优化代码结构,改进Split函数。

Better.C的博客 1638

YOLOv5模型转换陷阱:从PT到RKNN的置信度异常与乱框问题深度解析

本文深度解析了YOLOv5模型从PT到RKNN转换过程中的置信度异常与检测框错乱问题,揭示了NPU硬件特性与模型结构不匹配的根本原因。通过详细的解决方案和实操步骤,包括模型修改、转换流程配置和验证技巧,帮助开发者有效解决这一常见部署难题,提升模型在瑞芯微芯片上的推理性能。

weixin_29062255的博客 907

数学建模竞赛实战:从VRP问题到启发式算法求解全流程解析

车辆路径问题(VRP)是运筹学与组合优化领域的经典问题,其核心目标是在满足一系列约束条件下,为多辆车规划访问多个客户点的最优行驶路线,以最小化总成本或最大化效率。该问题属于NP-hard难题,无法在多项式时间内求得精确最优解,因此在实际工程中广泛采用启发式与元启发式算法进行近似求解。这类算法,如模拟退火、遗传算法和禁忌搜索,通过模拟自然过程或利用历史搜索信息,在可接受的时间内寻找高质量可行解,在物流配送、供应链管理、网络路由等场景具有极高的技术价值。本文以数学建模竞赛为背景,深入探讨了模拟退火算法在求解带时

weixin_34356555的博客 309

【暂时完结】Prescan学习笔记

Prescan学习记录1. Prescan基础知识1.1 Conventions·坐标1.2 Road segment·道路片段1.2.1 让一个路段连接其他两个路段1.2.2 配置车道线1.2.3 Road marking·道路标志1.3 Trajectory·轨迹1.3.1 建立一个Path·路径1.3.2 配置Speedprofile1.3.3 Synchronization of Trajectories·轨迹同步1.3.4 Multiple trajectories · 多轨迹分配 1. Pres

dreautumn的博客 1万+

用于可靠的钙钛矿薄膜瞬时光致发光模拟的拟合程序

简介 对光激发后的电荷载流子动态的研究对于确定太阳能电池的几个特性至关重要,例如,体和界面重组的数量以及向电荷传输层转移过程的速度。 瞬态光致发光(trPL)是用于研究这些特性的最流行的表征方法之一。 该实验是通过在样品上照射几纳秒的激光脉冲,并记录一段时间内的发光情况来进行的。辐射性重组的光生电荷载流子将引起太阳能电池的光子发射,而非辐射性重组的电荷载流子将不会对发光作出贡献。因此,可以测量到强度随时间递减的光致发光瞬态。(见图1表示trPL的测量和它的输出)。 图1. 一...

FluximAG的博客 2363

VRP问题

最近一个物流配送车辆调度系统的项目要求带VRP的功能,以下是一些开源框架、API,和重点尝试的禁忌搜索。 用c-w节约启发式算法解决的单车型送货非满载vsp问题 https://www.write-bug.com/article/173.html API: http://demo.smartvrp.com/eu https://georepublic.info/en/product...

越开源越幸运 1万+

InTouch历史报警与操作记录高效查询控件V4.0实战指南(一键下载即用)

本文详细介绍了InTouch历史报警与操作记录高效查询控件V4.0的实战应用。该控件针对原生AlmDbViewCtrl控件的查询效率低下、功能单一等问题,提供了智能查询、可视化统计、视图定制和一键导出Excel等强大功能,旨在帮助工程师快速处理海量历史数据,大幅提升工控运维效率。

g9h0i1的博客 960

物流路线优化实战:基于整数规划与图论的车辆路径问题(VRP)求解

车辆路径问题(VRP)是运筹学与组合优化领域的经典问题,旨在为多辆车辆规划访问一系列客户点的最优路线,以最小化总成本或距离。其核心原理是通过图论将现实路网抽象为顶点与边构成的网络,并运用整数规划(特别是0-1整数规划)建立数学模型,定义决策变量、目标函数及容量、时间窗等约束条件。该技术的核心价值在于通过数学建模与优化算法,实现物流配送资源的科学配置,从而显著降低运输成本、提升车辆利用率和客户服务水平。其应用场景广泛,涵盖快递配送、城市货运、生鲜冷链及共享出行调度等领域。本文将以带容量约束(CVRP)和时间窗

weixin_33861800的博客 409

QCC304x系列开发教程(实战篇)之5.2 QCC3040之提示音

earbud_init.c中,初始化table中UiPrompts_Init /*! \brief Table of initialisation functions */ static const init_table_entry_t appInitTable[] = { ......... {UiPrompts_Init, 0, NULL}, ......... } ui_prompts.c中是提示音音处理的主要逻辑和配置源文件 函数static void uiPro...

心跳包的博客 2395

【华为OD机试真题】6、数组去重和排序 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

题目描述 >给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序

KJ.JK 3890

华为杯数学建模竞赛E题全流程解析:从问题拆解到模型实现

数学建模是解决复杂工程与科学问题的核心方法,其本质是将现实世界的问题抽象为数学模型,并通过算法求解。其原理在于运用数学语言描述系统要素间的逻辑关系,从而进行量化分析与优化。这项技术的价值在于为资源调度、路径规划、生产排程等决策提供科学依据,显著提升效率与效益。在物流配送、交通管理、智能制造等应用场景中,数学建模发挥着至关重要的作用。本文以华为杯研究生数学建模竞赛中的典型优化问题为例,深入探讨了问题归类、模型构建与算法选型的完整流程。针对涉及动态调度和多目标优化的复杂问题,文中详细分析了如何识别核心矛盾,并运

weixin_30882895的博客 388

【图像去噪】论文复现:Mamba没Out!MaIR的Pytorch源码复现,跑通全流程,轻松解决环境配置问题,图文结合,明确MaIR创新点,与MambaIR对比,示意图与源码对应,清晰易懂,注释详细!

论文题目:MaIR: A Locality- and Continuity-Preserving Mamba for Image Restoration —— MaIR:用于图像恢复的局部性和连续性保持 Mamba【图像去噪】论文精读:MaIR: A Locality- and Continuity-Preserving Mamba for Image Restoration【图像去噪】论文复现:Man!

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1115

数学建模实战指南:从问题解析到论文撰写的全流程精解

数学建模是将现实世界复杂问题抽象为数学模型,并通过算法求解以支持决策的核心方法。其原理在于运用优化、预测、仿真等数学工具,对问题进行结构化定义与量化分析。这一过程的技术价值在于能够系统化地处理不确定性,在资源约束下寻求最优或满意解,从而提升决策的科学性与效率。在物流路径规划、资源调度、趋势预测等应用场景中,数学建模发挥着关键作用。本文以车辆路径规划等经典问题为例,深入剖析了模型构建、算法实现与结果分析的全过程,并分享了在数据预处理和团队协作中的实用技巧,为读者提供了一套从理论到实践的完整框架。

weixin_34375251的博客 315

2024年下半年网络规划设计师论文真题

3、深入论述自身参与的工业网络是如何实施的,为实现制造业的智能化,如何实现数据的跨系统互通,促进各种工业数据的充分流动和无缝集成以及数据安全。3、结合自身参与的网络建设,详细叙述针对该网络“去NAT”的规划和设计方案。4、在实施过程中遇到的问题以及如何处理,项目实施后的效果和评价。2、大型园区网络“去NAT”改造和业务融合的整体架构。1、“网络去NAT”对推进ipv6演进和应用的意义。4、改造过程中遇到的问题及解决方案。2、简要叙述自身参与的制造网络建设。1、网络规划在智能制造中的意义。

鹿鸣天涯 2371

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 【进阶二】Python实现VRPTW常见求解算法——遗传算法(GA)
下一篇: 【进阶二】Python实现VRPTW常见求解算法——蚁群算法(ACO)
Better.C
博客等级 码龄9年 1万+粉丝 72原创
评论 8
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值