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

2025电工杯数学建模竞赛B题 城市垃圾分类运输的路径优化与调度 保姆级教程讲解|模型讲解

完整内容请看文章最下面的推广群

2025电工杯数学建模竞赛 C题保姆级分析完整思路+代码+数据教学

2025全国大学生电工数学建模竞赛(电工杯)B题保姆级分析完整思路+代码+数据教学

2025电工杯 B题保姆级教程思路分析

DS数模-全国大学生电工数学建模(电工杯) B题保姆级教程思路分析

下面我将以背景介绍、数据集分析、问题分析的步骤来给大家讲解B题的具体思路。

1 背景介绍

该题聚焦于城市垃圾分类运输的路径优化与调度问题,涉及城市生活垃圾管理中的核心挑战:如何在垃圾分类、运输成本、碳排放、中转站选址等复杂约束下,设计高效且经济的运输方案。随着我国垃圾产量快速增长(2023年已达4亿吨),传统运输模式已难以满足需求,亟需通过数学模型优化路径规划与资源调度,以提升处理效率并降低环境负担。

这里需要注意几点:

2 数据集分析

题目给了这几个数据源,下面分别给出处理方法:

附件1:30个收集点坐标及总垃圾量

  • 收集点编号​:1~30(处理厂编号0,坐标为原点)
  • x坐标(km)​​:收集点的横坐标(相对于处理厂)
  • y坐标(km)​​:收集点的纵坐标
  • 垃圾量(吨)​​:每日总垃圾产生量

预处理步骤​:

  1. 坐标转换​:将坐标转换为距离矩阵(欧氏距离或实际路网距离)。
  2. 数据验证​:检查垃圾量非负且合理。
  3. 归一化​(可选):若不同量纲影响模型求解,需标准化。

Python代码如下:

import pandas as pd
# 模拟附件1前5行数据(实际需读取Excel)
data_attachment1 = {"收集点编号": [0, 1, 2, 3, 4],"x坐标(km)": [0, 12, 5, 20, 25],"y坐标(km)": [0, 8, 15, 30, 10],"垃圾量(吨)": ["-", 1.2, 2.3, 1.8, 3.1]  # 处理厂垃圾量为占位符"-"
}
df1 = pd.DataFrame(data_attachment1)
df1["垃圾量(吨)"] = pd.to_numeric(df1["垃圾量(吨)"], errors="coerce")  # 处理非数值
print("附件1前5行:\n", df1.head())

附件2:4类运输车辆参数

  • 车辆类型k​:1~4(对应4类垃圾)
  • 垃圾类型​:分类名称(如厨余垃圾)
  • 载重(吨)​​:车辆最大载重
  • 容积(m³)​​:车辆容积限制
  • 距离成本(元/km)​​:每公里运输成本
  • 碳排放系数(kg/km)​​:空载时单位距离碳排放
  • 碳排放系数(kg/吨)​​:载货时单位重量碳排放

预处理步骤​:

  1. 参数映射​:将车辆参数存储为字典或类对象,便于模型调用。
  2. 单位统一​:确保载重、容积单位与问题描述一致。

代码如下:

# 模拟附件2数据(4类车辆)
data_attachment2 = {"车辆类型k": [1, 2, 3, 4],"垃圾类型": ["厨余垃圾", "可回收物", "有害垃圾", "其他垃圾"],"载重(吨)": [8, 6, 3, 10],"容积(m³)": [20, 25, 10, 18],"距离成本(元/km)": [2.5, 2, 5, 1.8],"碳排放系数(kg/km)": [0.8, 0.6, 1.2, 0.7],"碳排放系数(kg/吨)": [0.3, 0.2, 0.5, 0.25]
}
df2 = pd.DataFrame(data_attachment2)
print("\n附件2:\n", df2)

附件3:30个收集点的4类垃圾量分布

  • 收集点编号​:1~30
  • ​厨余垃圾、可回收物、有害垃圾、其他垃圾(吨)​​:四类垃圾的具体产量

预处理步骤​:

  1. 数据校验​:确保每行四类垃圾总和等于附件1中的总垃圾量。
  2. 类型拆分​:按车辆类型分类存储垃圾量数据。

代码如下:

# 模拟附件3前5行数据(四类垃圾量)
data_attachment3 = {"收集点编号": [1, 2, 3, 4, 5],"厨余垃圾": [0.72, 1.38, 1.08, 1.55, 1.62],"可回收物": [0.12, 0.23, 0.18, 0.31, 0.27],"有害垃圾": [0.06, 0.05, 0.04, 0.06, 0.05],"其他垃圾": [0.3, 0.64, 0.5, 1.18, 0.76]
}
df3 = pd.DataFrame(data_attachment3)
print("\n附件3前5行:\n", df3.head())

附件4:中转站候选位置及参数

  • 中转站编号​:31~35
  • 建设成本(万元)​​:固定投资成本
  • 时间窗口(小时)​​:允许停靠的时间段(如[6,18])
  • 存储容量(吨)​​:按类型1-4的容量限制(如[20,15,5,30])

预处理步骤​:

  1. 解析时间窗口​:拆分为start_time和end_time列。
  2. 解析存储容量​:拆分为四列(类型1~4容量)。
  3. 数值转换​:将列表字符串转换为数值列表。

预处理总结:

3 问题分析

问题一分析与求解:

建模思路​:

建模过程:

算法推荐:

两阶段启发式算法

第一阶段:路径构造(TSP+分割)​

  1. 生成全局TSP路径​:使用遗传算法或LKH求解器生成访问所有30点的近似最优路径。
  2. 按Q分割行程​:
  • 沿TSP路径累加垃圾量,当累计量超过Q时截断,形成子路径,剩余点作为新起点。
  • 重复直至所有点被分配。

第二阶段:车辆分配与时间约束处理

  1. 计算每段子路径的行驶时间​:距离/40。
  2. 贪心分配车辆​:
  • 按子路径时间降序排列,依次分配车辆,确保每辆车总时间≤12小时。
  • 若无法分配,增加车辆数。

改进遗传算法

编码设计​:

  • 染色体​:排列30个收集点编号,表示访问顺序。
  • 分割符​:标记行程分割点,如基因段[1,5,9,...]表示子路径0→1→2→3→4→0,0→5→6→7→8→0等。

适应度函数​:

Fitness=Total Distance+M⋅Penalty

超载或超时行程的惩罚系数M。

问题一需通过多行程VRP模型优化路径与车辆调度,结合启发式算法(如遗传算法)高效求解,同时需权衡模型简化与实际复杂性的差距。后续思路、代码等持续更新。

其中更详细的思路,各题目思路、代码、讲解视频、成品论文及其他相关内容,可以点击下方群名片哦!

http://www.xdnf.cn/news/606853.html

相关文章:

  • Missashe线代题型总结
  • 编译器ar命令参数
  • java中多线程的实现方式
  • 【算法篇】二分查找算法:基础篇
  • AES加密模式详解及OpenSSL C库函数指南
  • 【SSL部署与优化​】​​OCSP Stapling配置指南:减少证书验证延迟​​
  • 相机坐标系、图像坐标系和世界坐标系
  • redis 基本命令-17 (KEYS、EXISTS、TYPE、TTL)
  • 新手SEO高效入门实战精要
  • 40 岁 Windows 开启 AI 转型:从系统到生态的智能重构
  • 「MATLAB」计算校验和 Checksum
  • C++:动态刷新打印内容
  • 使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第二部分)
  • 【Elasticsearch】给所索引创建多个别名
  • 【Bluedroid】蓝牙HID Host disconnect流程源码解析
  • UE4游戏查找本地角色数据的方法-SDK
  • 从零开始的抽奖系统创作(4)
  • FPGA 42 ,时序约束深度解析与实战应用指南( FPGA 时序约束 )
  • 分享|16个含源码和数据集的计算机视觉实战项目
  • VMware虚拟机突然无法ssh连接
  • Spring Boot WebFlux流式返回全攻略:从基础到企业级实践
  • PHP7内核剖析 学习笔记 第八章 命名空间
  • Python打卡DAY34
  • 亚马逊搜索代理: 终极指南
  • 线性回归中涉及的数学基础
  • 嵌入式学习笔记 - freeRTOS链表中pxIndex->pxPrevious 与pxIndex->pxPrevious->的区别
  • DB-GPT扩展自定义Agent配置说明
  • 微信小程序调用蓝牙API “wx.writeBLECharacteristicValue()“ 报 errCode: 10008 的解决方案
  • GMP模型入门
  • Lyra学习笔记1地图角色加载流程