2024年“华数杯”全国大学生数学建模竞赛C题解析(含数据与代码)

该题目主要考察数据收集、综合评价及多目标规划的能力。

数据

在这里插入图片描述

在这里插入图片描述

为大家分享2024年华数杯数学建模竞赛C题的完整数据与第一问代码,关注公众号 云顶数模 领取相关资料
详细的问题分析、实现代码及参考论文,完整代码与2w字的参考论文持续更新中~

解题思路

问题一

在第一问,题目要求找到35200个景点中评分的最高分,并对最高分的景点数按照城市进行统计。最后得出拥有最高评分景点数量的前十个城市。在这一问中,主要选手的考察数据查询能力,按照题目的要求遍历各个表格进行查询即可。

问题二

在第二问中,要求遵循城市最佳景点游览原则,结合多个因素对352个城市进行综合评价,选出50个城市。在这道题中,需要建立一个综合评价模型对多个因素进行综合评价。在这里可以考虑建立AHP-TOPSIS模型或者熵权法-TOPSIS模型。在构建各个城市的评分指标表格后,可以基于因子分析法或者主成分分析法进行降维,然后利用所构建的综合评价模型计算各个城市的评分。

问题三

在第三问中,假设一名游客从广州入境,要求建立一个优化模型,优化目标是在144小时内游玩尽可能多的城市,同时要求综合游玩体验最好。在这里需要建立一个游玩体验的评价模型,以计算第二个目标值。模型的约束条件包括:需要遵循城市最佳景点游览原则,且交通方式只能选择高铁,同时解空间被限制在50个最令外国游客向往的城市内。对于这一问,可以建立一个双目标优化模型,并通过NSGA-Ⅱ等多目标优化算法进行求解。

问题四

在第四问中,要求将优化目标改为既要尽可能的游览更多的城市,又需要使门票和交通的总费用尽可能的少。对于这个问题,可以直接对问题三中的双目标优化模型进行修改,然后同样基于一样的方法进行求解。

问题五

在第五问中,要求将游览的目的地改为山景。在这一问中,可选的旅游城市不再局限于50个城市,故需要先对有山景的城市进行筛选,然后划定解空间的范围。这一问的优化目标为:尽可能浏览更多的山以及总费用更小。约束条件包括每个城市只能游玩一座评分最高的山,而且不同城市之间的交通方式只能选择高铁,所以在这一问中只能选择高铁可以到达的城市。在明确解空间后,可以建立双目标优化模型并基于多目标优化算法进行求解。

代码

问题一

(1)使用python遍历每一个.csv文件并将其合并为一个文件
(2)对缺失值和异常值进行处理
(3)基于DSA(Data Structure Analysis)得出最大值,画出数据分布直方图 (解决 BS是多少?全国有多少个景点获评了BS)
在这里插入图片描述
(4)基于DT(decision tree)-Spearman得出 获评BS景点最多的城市,相关性越高获评越多。(DT对数据进行分类,分类因素有两个:城市和得分;然后将分类结果作spearman相关性分析。)
在这里插入图片描述
Score 三沙 五家渠 玉溪 益阳 天门 阿拉尔 大兴安岭 潍坊 烟台 邢台
5 36 28 21 20 19 18 18 18 18 17

# 导入软件包
import pandas as pd
import numpy as np

from sklearn.tree import DecisionTreeClassifier
import seaborn as sns
import matplotlib.pyplot as plt

# 热力图可视化

# 1. 过滤掉警告的意思
import warnings
warnings.filterwarnings("ignore")

# 2. 导入数据

data=pd.read_excel('hsc.xlsx')

# 3. 用来查看数据框的列名
data.head()

# 图片显示中文
plt.rcParams['font.sans-serif']=['SimHei']
# 减号unicode编码
plt.rcParams['axes.unicode_minus'] =False
# 删除无关的列
data.drop([], axis=1, inplace=True)

# 4. 计算各变量之间的相关系数
corr = data.corr(method='spearman')


# 5. 调整画布大小
ax = plt.subplots(figsize=(9, 9))

# 6. 画热力图   annot=True 表示显示系数
ax = sns.heatmap(corr, vmax=.9, square=True, annot=False, cmap="YlGnBu")

# 7. 设置刻度字体大小
plt.xticks(fontsize=8)
plt.yticks(fontsize=8)
plt.show()

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值