【2024年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现

Better Bench 2024-09-20 10:35:01 阅读 75

【2024 年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现

更新时间:2024-8-6 所有数学模型和代码实现,已更新完毕

1 题目

最近,“city 不 city”这一网络流行语在外国网红的推动下备受关注。随着我国过境免签政策的落实,越来越多外国游客来到中国,通过网络平台展示他们在华旅行的见闻,这不仅推动了中国旅游业的发展,更是在国际舞台上展现了一个真实而生动的中国,一举多得。

假设外国游客入境后能在中国境内逗留 144 小时,且能从任一城市附近的机场出境。由于每个城市景点较多,为了便于外国游客能够游览到更多的城市,现假定“每个城市只选择一个评分最高的景点游玩”,称之为“城市最佳景点游览原则”。

现有一个包含中国(不含港澳台)352 个城市的旅游景点的数据集,每个城市的 csv 文件中有 100 个景点,每个景点的信息包含有景点名称、网址、地址、景点介绍、开放时间、图片网址、景点评分、建议游玩时长、建议游玩季节、门票信息、小贴士等。

请建立数学模型,回答下列问题:

问题 1 请问 352 个城市中所有 35200 个景点评分的最高分(Best Score,简称 BS)是多少?全国有多少个景点获评了这个最高评分(BS)?获评了这个最高评分(BS)景点最多的城市有哪些?依据拥有最高评分(BS)景点数量的多少排序,列出前 10 个城市。

问题 2 假如外国游客遵循“城市最佳景点游览原则”,结合城市规模、环境环保、人文底蕴、交通便利,以及气候、美食等因素,请你对 352 个城市进行综合评价,选出“最令外国游客向往的 50 个城市”。

问题 3 现有一名外国游客从广州入境,他想在 144 小时以内游玩尽可能多的城市,同时要求综合游玩体验最好,请你规划他的游玩路线。需要结合游客的要求给出具体的游玩路线,包括总花费时间,门票和交通的总费用以及可以游玩的景点数量。他的要求有:

① 遵循城市最佳景点游览原则;

② 城市之间的交通方式只选择高铁;

③ 只在“最令外国游客向往的 50 个城市”中选择要游玩的城市。

问题 4 如果将问题 3 的游览目标改为:既要尽可能的游览更多的城市,又需要使门票和交通的总费用尽可能的少。请重新规划游玩路线,并给出门票和交通的总费用,总花费时间以及可以游玩的城市数量。

问题 5 现有一名外国游客只想游览中国的山景,他乘飞机入境中国的城市不限。请你为他选择入境的机场和城市,并个性化定制他的 144 小时旅游路线, 既要尽可能的游览更多的山,又需要使门票和交通的总费用尽可能的少。需要结合游客的要求给出具体的游玩路线,包括总花费时间,门票和交通的总费用以及可以游玩的景点数量。他的要求有:

① 每个城市只游玩一座评分最高的山;

② 城市之间的交通方式只选择高铁;

③ 旅游城市不局限于“最令外国游客向往的 50 个城市”,游览范围拓展到352 个城市。

2 问题重述

问题1:主要关注所有城市中景点评分的最高分及分布情况。

问题2:评价城市的综合吸引力,选择最令外国游客向往的50个城市。

问题3:在144小时内规划最优的游玩路线,以最大化游玩的城市数量和体验。

问题4:在144小时内游览尽可能多的城市,重点降低门票和交通总费用。

问题5:专注于景点的游览,入境城市不限,要求在144小时内尽可能多地游览山景,且控制费用。

3 思路分析

3.1 问题一

第一题是统计问题,用python遍历所有景点的评分列,找到其中的最大值,过滤出评分等于最高评分(BS)的所有景点,并统计其数量。按城市分组,统计每个城市中评分等于最高评分(BS)的景点数量。根据统计结果,按景点数量排序,获取前10个城市。实现过程见以下第4部分。

3.2 问题二

要对352个城市进行综合评价,选出最向往的50个城市,简单的话可以采用加权评分模型,将城市规模、环境环保、人文底蕴、交通便利、气候、美食等因素量化并赋予不同权重,综合计算每个城市的综合评分,选择得分最高的前50个城市。或者建立多属性决策分析(MADA),应用MADA方法,如TOPSIS或AHP,对城市进行多属性评价。将每个因素转换为标准化的评分,并根据决策矩阵进行排名,从而选出最受欢迎的城市。或者使用聚类算法将城市按综合特征进行分组,分析每个群体的特点,选出代表性最强的50个城市。或者利用主成分分析算法将多个因素的影响降维至少量主成分,通过主成分得分对城市进行排名,选出得分最高的前50个城市。复杂一点的话,从推荐系统的角度去做,建立基于内容的推荐系统或协同过滤系统,结合外国游客的历史游览数据和对城市的偏好,预测并推荐最受欢迎的城市。这个角度的推荐算法比较多,创新性搞,新颖一些。

在这里插入图片描述

参考文献

[1]杨小玲.多属性决策分析及其在洪灾风险评价中的应用研究[D].华中科技大学,2012.[2]廖思思,朱锦程.陕甘宁20个旅游城市旅游竞争力评价[J].绿色科技,2023,25(15):221-226.DOI:10.16663/j.cnki.lskj.2023.15.048.[3]高珺.基于子空间聚类算法的湖南旅游推荐研究[D].中南林业科技大学,2023.DOI:10.27662/d.cnki.gznlc.2023.000899.[4]陈红玲,叶玫,卢淑萍,等.基于旅游资源画像的个性化旅游推荐系统[J].信息技术与信息化,2022,(11):115-118.[5]陈源鹏.基于序列挖掘的个性化旅游景点推荐研究[D].桂林电子科技大学,2020.DOI:10.27049/d.cnki.ggldc.2020.000496.[6]张诗梦.基于“城市画像”与“用户画像”的个性化旅游推荐系统实践[D].东北财经大学,2019.DOI:10.27006/d.cnki.gdbcu.2019.000861.

3.3 问题

这个问是路径规划问题,经典的代表性算法有旅行商问题(TSP)优化问题,将城市视为图中的节点,使用旅行商问题算法(如遗传算法、模拟退火等)优化游客的游玩路径。在限制条件下(如总时间和交通方式),找到最优路线,以最大化景点数量和体验。

在这里插入图片描述

[1]王梦甜.基于遗传算法的南京周边城市旅游规划研究[J].市场周刊,2021,34(02):180-181+188.

[2]唐存花,汤可宗.求旅行商问题的幂律变换优化蚁群算法[J].软件导刊,2024,23(02):74-83.

[3]丁增良,陈珏,邱禧荷.一种应用于旅行商问题的莱维飞行转移规则蚁群优化算法[J].计算机应用研究,2024,41(05):1420-1427.DOI:10.19734/j.issn.1001-3695.2023.09.0450.

[4]边锦华,张晓霞.求解TSP问题的一种变领域遗传算法[J].福建电脑,2023,39(12):24-27.DOI:10.16707/j.cnki.fjpc.2023.12.005.

3.4 问题四

问题3的基础上,建立一个多目标优化模型,将游览城市数量和总费用作为优化目标,使用线性规划、整数规划或混合整数规划方法。模型中需要包括时间限制(144小时),门票和交通费用的约束。通过求解优化模型,可以找到在总费用最小的情况下游览最多城市的最佳路线,同时计算总花费时间、门票和交通费用及游玩城市数量。论文的写作上,在数学模型上差异较小,创新点注重在求解算法上的创新。

在这里插入图片描述

参考文献

[1]梁健恒.基于改进蚁群算法的旅游园区观光路径规划优化[J].控制与信息技术,2024,(03):80-85.DOI:10.13889/j.issn.2096-5427.2024.03.011.[2]董玮明,邱灿华.基于时间优化的旅游园区路径规划研究[J].信息技术与信息化,2023,(04):203-205+209.[3]崔喜宁.基于蚁群算法的陕西红色旅游线路优化[J].信息技术与信息化,2021,(11):170-172.[4]周生超.基于蚁群算法的寿光市文化旅游路径优化研究[J].潍坊工程职业学院学报,2021,34(03):100-103.[5]李磊,张延星,谢超.基于旅游线路规划的蚁群优化算法研究[J].现代电子技术,2020,43(17):115-118.DOI:10.16652/j.issn.1004-373x.2020.17.026.[6]李梦丹.基于蚁群算法西安旅游路线的优化研究[J].价值工程,2020,39(20):136-137.DOI:10.14018/j.cnki.cn13-1085/n.2020.20.058.

3.5 问题

这个问和以上几个问有一些不同,是一个综合优化问题。这一问专注于景点的游览,入境城市是不限的,要求在144小时内尽可能多地游览山景,且控制费用。在山景游览的基础上,进一步复杂化了问题,包括选择入境城市和城市之间的高铁交通限制,同时要求控制费用。在问题4的多目标优化模型中加入山景因素,考虑山景数量、门票和交通费用。重新设计目标函数,平衡山景数量与费用。利用问题3和4中的路径优化方法,筛选出入境城市,并在全范围内规划山景游览路线。综合考虑高铁路线、时间限制和山景优化。对问题5中的复杂情况,应用动态规划方法进行路线规划,同时剪枝以减少计算量。结合山景的特点,优化选择城市和游玩顺序。使用启发式搜索算法和模拟退火技术优化山景游览路线,调整入境城市和游玩城市,以实现山景数量最多且费用最低的目标。

总之,这一问需要使用问题1中的景点评分数据、问题2中的城市选择、问题3和4中的路径规划方法。问题1的数据用于确定山景的评分,问题2的城市排名可作为入境城市的参考,问题3和4的优化技术可以应用于问题5的路线规划。

4 代码实现

4.1 问题一

<code>import os

import pandas as pd

# 定义数据文件夹路径

folder_path = '附件'

# 初始化一个空的数据框

all_data = pd.DataFrame()

# 遍历文件夹中的所有CSV文件并加载数据

for file_name in os.listdir(folder_path):

if file_name.endswith('.csv'):

file_path = os.path.join(folder_path, file_name)

# 提取城市名称(去掉文件扩展名)

city_name = os.path.splitext(file_name)[0]

# 读取CSV文件

city_data = pd.read_csv(file_path)

# 为数据框添加城市列

city_data['城市'] = city_name

# 确保 '景点评分' 列为浮点数类型

city_data['评分'] = pd.to_numeric(city_data['评分'], errors='coerce')code>

# 合并到总数据框中

all_data = pd.concat([all_data, city_data], ignore_index=True)

all_data

在这里插入图片描述

<code># 确保 '景点评分' 列为浮点数类型

all_data['评分'] = pd.to_numeric(all_data['评分'], errors='coerce')code>

# 获取最高评分

best_score = all_data['评分'].max()

# 统计获得最高评分的景点数量

best_score_count = all_data[all_data['评分'] == best_score].shape[0]

# 按城市分组,统计每个城市中评分等于最高评分的景点数量

best_score_by_city = all_data[all_data['评分'] == best_score].groupby('城市').size().reset_index(name='景点数量')code>

# 按景点数量排序,获取前10个城市

top_10_cities = best_score_by_city.sort_values(by='景点数量', ascending=False).head(10)code>

# 打印结果

print(f"最高评分(BS):{ best_score}")

print(f"获得最高评分(BS)的景点总数:{ best_score_count}")

print("获得最高评分(BS)景点最多的前10个城市:")

print(top_10_cities)

最高评分(BS):5.0

获得最高评分(BS)的景点总数:2563

获得最高评分(BS)景点最多的前10个城市:

城市 景点数量

4 三沙 36

25 五家渠 28

224 玉溪 21

233 益阳 20

91 天门 19

310 阿拉尔 18

215 潍坊 18

220 烟台 18

84 大兴安岭 18

283 邢台 17

4.2 问题二、三、四、五

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。