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

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

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

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 问题一

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')# 合并到总数据框中all_data = pd.concat([all_data, city_data], ignore_index=True)
all_data

在这里插入图片描述

# 确保 '景点评分' 列为浮点数类型
all_data['评分'] = pd.to_numeric(all_data['评分'], errors='coerce')# 获取最高评分
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='景点数量')# 按景点数量排序,获取前10个城市
top_10_cities = best_score_by_city.sort_values(by='景点数量', ascending=False).head(10)# 打印结果
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 问题二、三、四、五

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言初阶(12)
  • 周鸿祎回应将成三六零第一大股东:会和公司一起走下去
  • 学习硬件测试04:触摸按键+PWM 驱动蜂鸣器+数码管(P62~P67、P71、P72)
  • mysql介绍
  • 1、.Net UI框架:WPF - .Net宣传系列文章
  • 反转链表(LeetCode)
  • 重燃代码之光:在PyCharm中恢复自动高亮的秘籍
  • Linux系统中的高级内核模块调试技术
  • override的作用和好处
  • Yarn:一个快速、可靠且安全的JavaScript包管理工具
  • 日期类的习题
  • 2024华数杯C题解题思路、参考论文已出(无偿分享)~
  • [QT开发_音乐播放器项目笔记01]
  • PyFilesystem2 - Python 操作文件系统
  • Django中的模型小总结:
  • (三)从jvm层面了解线程的启动和停止
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • es6要点
  • Java Agent 学习笔记
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • oldjun 检测网站的经验
  • Python 基础起步 (十) 什么叫函数?
  • python大佬养成计划----difflib模块
  • SAP云平台里Global Account和Sub Account的关系
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue ES6 Jade Scss Webpack Gulp
  • 笨办法学C 练习34:动态数组
  • 机器学习中为什么要做归一化normalization
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 浅谈Golang中select的用法
  • 驱动程序原理
  • 三分钟教你同步 Visual Studio Code 设置
  • 山寨一个 Promise
  • 提醒我喝水chrome插件开发指南
  • 微信开源mars源码分析1—上层samples分析
  • 中文输入法与React文本输入框的问题与解决方案
  • 做一名精致的JavaScripter 01:JavaScript简介
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​Java基础复习笔记 第16章:网络编程
  • ​字​节​一​面​
  • ###C语言程序设计-----C语言学习(3)#
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (175)FPGA门控时钟技术
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (ZT)出版业改革:该死的死,该生的生
  • (二)丶RabbitMQ的六大核心
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (七)Knockout 创建自定义绑定
  • (算法)Game
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (自用)gtest单元测试
  • .Mobi域名介绍
  • .NET C# 使用GDAL读取FileGDB要素类