【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 问题二、三、四、五

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/391437.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MS1112驱动开发(iio框架)

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

【Java】深度解析Java的反射机制

反射(Reflection) 一、 反射的基本概念二、 获取类的信息三、 获取类的成员四、 动态创建对象五、 动态调用方法六、 动态访问和修改字段 总结 一、 反射的基本概念 反射是一种运行时机制,允许程序在运行时检查和操作类、方法、字段等。通过…

JavaFX布局-TabPane

JavaFX布局-TabPane 常用属性paddingsidetabClosingPolicytabDragPolicy 实现方式Java实现fxml实现 组织一组tab的容器,可以设置关闭,拖拽等每个tab内容可以设置不同容器数据 常用属性 padding 内边距,可以单独设置上、下、左、右的内边距 …

docker部署java项目(war包方式)

场景描述:java项目war包,在开发开电脑上使用dockerfile构建镜像,上传镜像到客户服务器中使用docker加载docker镜像,然后部署。 目录 一、本地环境安装 docker git 二、服务器环境安装 docker 三、构建docker镜像(win系统) 四、注意事项 (1)系统架构 (2)使…

如何准备专利申请书的摘要部分?

如何准备专利申请书的摘要部分?

【EI会议征稿通知】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

重要信息 会议官网:www.icbase.org(查看详情) 中文主页:【往届会后3个月检索】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)_艾思科蓝_学术一站式服务平台 会议时间:2024年9月2…

C++笔记---类和对象(中)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。 一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,分别为:构造函数,析构函数,拷贝构…

C#中的Winform基础

program 每个Windows应用程序都会有一个Program类——程序入口点 [STAThread] ----指示应用程序的COM线程模型是单线程单元(如果无此特性,无法工作) static voidMain() —— 入口 System.Windows.Forms.Application类提供一系列静态方法和…

Bootstrap框架介绍

1、Bootstrap框架的下载和使用 Bootstrap框架是基于HTML、CSS、JavaScript的CCS/HTML框架,是一种封装好的前端框架。它包括js、css、front字体样式库。该框架下载链接:https://v3.bootcss.com/getting-started/#download,并选择下载源码。 建一个BootstrapDemo文件夹,将js…

GoAccess实战秘籍:从新手到高手,跨越那些“坑”与“惑”!

GoAccess实战秘籍:从新手到高手,跨越那些“坑”与“惑”! 致读者: 点击上方 “雪之梦技术驿站” → 点击右上角“ … ”→ 点选“设为星标★ ” 加上星标,就不会找不到我啦! 偷偷溜进文章的小广告,别害羞,点进去瞅瞅,说不定能发现什么宝藏呢!文末那个也别错过,说不定…

鼻咽癌综述

小罗碎碎念 本期推文主题:鼻咽癌综述 这篇文章提供了一个全面的综述,探讨了鼻咽癌(NPC)的关键研究进展,包括病理机制、治疗、筛查和生物标志物的发展。 文章首先强调了NPC在特定地理区域的流行情况,并讨论了…

nginx反向代理和负载均衡+安装jdk-22.0.2

ps -aux|grep nginx //查看进程 nginx 代理 nginx代理是负载均衡的基础 主机:192.168.118.60 这台主机只发布了web服务,没有做代理的任何操作 修改一下index.html中的内容 echo "this is java web server" > /usr/local/nginx/htm…

Java游戏源码:象棋网络对战版

学习java朋友们,福利来了,今天小编给大家带来了一款象棋网络对战版源码。 源码搭建和讲解 源码分为客户端和服务器,采用java原生 java.net.Socket 实现,服务器主循环代码: import java.net.ServerSocket; import jav…

【吊打面试官系列-Dubbo面试题】Dubbo 配置文件是如何加载到 Spring 中的 ?

大家好,我是锋哥。今天分享关于 【Dubbo 配置文件是如何加载到 Spring 中的 ?】面试题,希望对大家有帮助; Dubbo 配置文件是如何加载到 Spring 中的 ? Spring 容器在启动的时候,会读取到 Spring 默认的一些…

nodejs多版本随心切换-windows

nodejs多版本控制 1. 安装 nvm github下载地址 不需要卸载已安装的nodejs,安装时会让你选择nodejs的位置,可修改为你已经安装的路径,会自动搜索已安装版本,并进行弹窗询问,选择托管即可 2. 修改配置文件 在 nvm 安装…

案例分享|Alluxio在自动驾驶数据闭环中的应用

分享嘉宾: 孙涛 - 中汽创智智驾工具链数据平台开发专家 关于中汽创智: 中汽创智科技有限公司(以下简称“中汽创智”)由中国一汽、东风公司、南方工业集团、长安汽车和南京江宁经开科技共同出资设立。聚焦智能底盘、新能动力、智…

K8S可视化管理平台KubeSphere

什么是 KubeSphere ? KubeSphere 是一款开源项目,在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时&#xff…

7.怎么配置一个axios来拦截前后端请求

首先创建一个axios.js文件 导入我们所需要的依赖 import axios from "axios"; import Element from element-ui import router from "./router"; 设置请求头和它的类型和地址 注意先注释这个url,还没有解决跨域问题,不然会出现跨域 // axios.defaults.…

计算机网络-http协议和https的加密原理

HTTP(HyperText Transfer Protocol,超文本传输协议)是用于在万维网(World Wide Web)上传输超文本的基础协议。它定义了客户端(通常是浏览器)和服务器之间的文本数据传输格式和规则。以下是HTTP的…

假如家里太大了,wifi连不上了怎么办

最近有个土豪朋友抱怨,他家里太大了,一个路由器的Wi-Fi信号根本无法覆盖他们家的每个房间,都没办法上网看奥运会比赛了。(还好我是穷人,就没有这种烦恼T_T)。 然后我问他为何不用一个路由器作主路由器&…