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

简介: 本文提供了2024年华数杯全国大学生数学建模竞赛C题“老外游中国”的解题思路分析和Python代码实现,涉及景点评分统计、城市综合评价、游玩路线规划以及特定条件下的旅游优化问题。

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

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
AI 代码解读

在这里插入图片描述

# 确保 '景点评分' 列为浮点数类型
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)
AI 代码解读
最高评分(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
AI 代码解读

4.2 问题二、三、四、五

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关文章
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
1月前
|
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
71 5
Python高性能编程:五种核心优化技术的原理与Python代码
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
128 80
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
176 59
|
2月前
|
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
56 14
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
127 2
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
71 10

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等