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模型优化路径与车辆调度,结合启发式算法(如遗传算法)高效求解,同时需权衡模型简化与实际复杂性的差距。后续思路、代码等持续更新。

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

相关推荐
是紫焅呢3 小时前
O数据可视化基础.py
python·青少年编程·信息可视化·数据分析·学习方法·数据可视化·visual studio code
是紫焅呢5 小时前
N数据分析pandas基础.py
python·青少年编程·数据挖掘·数据分析·pandas·学习方法·visual studio code
学掌门9 小时前
用Python做数据分析之数据处理及数据提取
开发语言·python·数据分析
芳菲菲其弥章11 小时前
【数据分析三:Data Storage】数据存储
数据库·数据挖掘·数据分析
IT古董14 小时前
【第一章:人工智能基础】04.数学建模基本方法-(2)矩阵运算与线性代数
人工智能·线性代数·数学建模
clarance201814 小时前
别再纠结!ThoughtSpot Cloud与DataFocus Cloud对比全揭秘
数据分析·数据可视化
用余生去守护14 小时前
vba学习系列(11)--批退率&通过率等数据分析
学习·数据分析
lilye6620 小时前
精益数据分析(101/126):SaaS商业模式优化与用户生命周期价值提升策略
大数据·数据挖掘·数据分析
終不似少年遊*3 天前
【数据可视化】Pyecharts-家乡地图
python·信息可视化·数据挖掘·数据分析·数据可视化·pyecharts
仟濹3 天前
「Matplotlib 入门指南」 Python 数据可视化分析【数据分析全栈攻略:爬虫+处理+可视化+报告】
python·信息可视化·数据分析·matplotlib