2024年第五届“华数杯”全国大学生数学建模竞赛C题-老外游中国(代码+成品论文+讲解)

目录

💕一、问题重述💕

🐸问题 1🐸

🐸问题 2🐸

🐸问题 3🐸

🐸问题 4🐸

🐸问题 5🐸

💕二、解题思路💕

🤡问题 1

🤡问题 2 使用模糊综合评价法

🤡问题 3 使用模拟退火算法

🤡问题 4 在问题 3 基础上进行优化

🤡问题 5 按照我的方法进行优化

💕三、解题代码和结果💕

🙌问题 1🙌

 🙌问题 2🙌

 🙌问题 3🙌

 🙌问题 4🙌 

 🙌问题 5🙌  

 💕解题代码和成品论文获取💕

🐹解题代码详细讲解(Bil:white学长努力中)🐹

🐹解题代码(面包多)

🐹成品论文(面包多)🐹 

 🐹联系方式(Q)🐹


💕一、问题重述💕

最近, “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 个城市。

💕二、解题思路💕

🤡问题 1

  • 目标:找出352个城市中35200个景点的最高评分(BS)、获得此评分的景点数量以及具有最多这种评分景点的城市。
  • 方法:首先,你需要从每个城市的CSV文件中提取所有景点的评分,并找出最高评分(BS)。之后,计算达到最高评分的景点数量,并统计每个城市获得该评分的景点数量。最后,按照这种评分的景点数量对城市进行排序,列出前10个城市。

🤡问题 2 使用模糊综合评价法

  • 目标:使用模糊综合评价法(Fuzzy Comprehensive Evaluation, FCE)对352个城市进行综合评价,选择最吸引外国游客的50个城市。
  • 方法    
    1. 确定评价因素和等级:选择影响城市吸引力的因素,如城市规模、环境保护、人文底蕴、交通便利、气候、美食等。
    2. 构建模糊关系矩阵:基于专家评分或数据统计,为每个城市的每个因素分配一个隶属度值。
    3. 定义权重向量:确定各因素的权重,可以使用专家评分、问卷调查等方法确定。
    4. 模糊综合评价:通过权重向量与模糊关系矩阵的模糊合成,计算每个城市的总体评价值。
    5. 选择和排序:根据总体评价值选择得分最高的50个城市。

🤡问题 3 使用模拟退火算法

  • 目标:为一名从广州入境的外国游客规划144小时内的最佳旅游路线,访问“最令外国游客向往的50个城市”中尽可能多的城市。
  • 方法
    1. 定义状态空间:每个状态表示一个可能的旅行路线。
    2. 目标函数:定义目标函数来评估每条路线的质量,包括访问的城市数量和综合体验评分。
    3. 邻域结构:定义如何从一个状态转移到另一个状态,例如更换一个城市的访问顺序。
    4. 模拟退火过程:从初始解开始,通过随机扰动生成新状态,根据目标函数和温度参数接受或拒绝新状态,逐渐降低温度直到收敛。

🤡问题 4 在问题 3 基础上进行优化

  • 目标:在尽可能多地游览城市的同时,尽量减少门票和交通的总费用。
  • 方法:在模拟退火算法的基础上,调整目标函数来同时考虑游览城市数量和总成本(门票+交通)。通过调整成本和数量的权重,找到最佳的权衡方案。

🤡问题 5 按照我的方法进行优化

  • 目标:为主要想游览中国山景的外国游客定制144小时内的旅游路线。
  • 方法
    1. 数据准备:识别每个城市中评分最高的山。
    2. 路径优化算法:使用模拟退火算法,定义状态为游览的城市和山,目标函数为最大化游览的山数量和最小化总成本。
    3. 邻域结构:可以通过更改访问城市的顺序或替换城市来生成新状态。
    4. 实施细节:需要结合高铁时刻表和城市间距离来优化路线,考虑山景开放时间和门票费用。

💕三、解题代码和结果💕

🙌问题 1🙌

import matplotlib# 设置Matplotlib支持中文字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
matplotlib.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题#%%import pandas as pd
import glob
import matplotlib.pyplot as plt# 指定包含所有CSV文件的文件夹路径
folder_path = '附件/'  
def read_data(folder_path):# 使用glob模块找到文件夹中的所有csv文件file_paths = glob.glob(folder_path + '*.csv')print(f"Found {len(file_paths)} files.")  # 打印找到的文件数量data_frames = []for path in file_paths:print(f"Reading {path}")  # 打印正在读取的文件名df = pd.read_csv(path, usecols=[6])  # 只读取评分所在的第G列,索引为6df.columns = ['评分']  # 重命名列为"评分"df['City'] = path.split('/')[-1].split('.')[0]  # 提取城市名data_frames.append(df)if data_frames:  # 检查是否有数据框存在all_data = pd.concat(data_frames)return all_dataelse:return pd.DataFrame()  # 如果没有数据框,则返回空的数据框def analyze_data(data):if data.empty:print("No data to analyze.")return None, None# 数据清洗:确保评分列为数值类型data['评分'] = pd.to_numeric(data['评分'], errors='coerce')  # 将无法转换为数值的转换为NaNdata.dropna(subset=['评分'], inplace=True)  # 删除包含NaN的行# 找到最高评分best_score = data['评分'].max()print(f"最高评分(Best Score, BS): {best_score}")# 计算获得最高评分的景点数量best_score_count = data[data['评分'] == best_score].shape[0]print(f"获得最高评分的景点数量: {best_score_count}")# 找到获得最高评分的景点最多的城市best_score_cities = data[data['评分'] == best_score].groupby('City').size().sort_values(ascending=False)print("获得最高评分的景点最多的城市:")print(best_score_cities.head(10))return best_score_cities.head(10), best_scoredef plot_top_cities(best_score_cities, best_score):if best_score_cities is not None:plt.figure(figsize=(10, 6))best_score_cities.plot(kind='bar', color='skyblue')plt.title(f'评分{best_score}的旅游景点最多的城市')plt.xlabel('城市')plt.ylabel('旅游景点数量')plt.xticks(rotation=45)plt.tight_layout()plt.show()# 执行分析
data = read_data(folder_path)
top_cities, best_score = analyze_data(data)
plot_top_cities(top_cities, best_score)

 🙌问题 2🙌

import matplotlib.pyplot as plt# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体为SimHei
plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号# 选择前10个城市进行展示
top_10_cities = evaluation_results.head(10)# 绘制前10个城市的情感得分条形图
evaluation_results.index = evaluation_results.index.str.replace('附件\\', '')# 选择前10个城市进行展示
top_10_cities = evaluation_results.head(10)# 绘制前10个城市的情感得分条形图
plt.figure(figsize=(10, 6))
plt.barh(top_10_cities.index, top_10_cities['Sentiment'], align='center')# 保持y轴的刻度标签,但去掉 '附件\' 前缀
plt.xlabel('平均情感得分')
plt.title('前10个城市的情感得分')
plt.gca().invert_yaxis()
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.show()# 绘制情感得分的直方图
plt.figure(figsize=(10, 6))
plt.hist(evaluation_results['Sentiment'], bins=20, color='skyblue', edgecolor='black')
plt.xlabel('情感得分')
plt.ylabel('频率')
plt.title('各城市情感得分分布')
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()# 绘制情感得分的箱型图
plt.figure(figsize=(10, 6))
plt.boxplot(evaluation_results['Sentiment'], vert=False)
plt.xlabel('情感得分')
plt.title('情感得分箱型图')
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.show()

 🙌问题 3🙌

 🙌问题 4🙌 

 🙌问题 5🙌  

 💕解题代码和成品论文获取💕

🐹解题代码详细讲解(Bil:white学长努力中)🐹

🐹解题代码(面包多)

http://app.niucodata.com/mianbaoduo/recommend.php?id=63307icon-default.png?t=N7T8http://app.niucodata.com/mianbaoduo/recommend.php?id=63307

🐹成品论文(面包多)🐹 

http://app.niucodata.com/mianbaoduo/recommend.php?id=63306icon-default.png?t=N7T8http://app.niucodata.com/mianbaoduo/recommend.php?id=63306

 🐹联系方式(Q)🐹

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

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

相关文章

图解RocketMQ之如何实现顺序消息

大家好,我是苍何。 顺序消息是业务中常用的功能之一,而 RocketMQ 默认发送的事普通无序的消息,那该如何发送顺序消息呢? 要保证消息的顺序,要从生产端到 broker 消息存储,再到消费消息都要保证链路的顺序…

【C++】二维数组 数组名

二维数组名用途 1、查看所占内存空间 2、查看二维数组首地址 针对第一种用途&#xff0c;还可以计算数组有多少行、多少列、多少元素 针对第二种用途&#xff0c;数组元素、行数、列数都是连续的&#xff0c;且相差地址是有规律的 下面是一个实例 #include<iostream&g…

Spring源码解析(29)之AOP动态代理对象创建过程分析

一、前言 在上一节中我们已经介绍了在createBean过程中去执行AspectJAutoProxyCreator的after方法&#xff0c;然后去获取当前bean适配的advisor&#xff0c;如果还不熟悉的可以去看下之前的博客&#xff0c;接下来我们分析Spring AOP是如何创建代理对象的&#xff0c;在此之前…

【目标检测类】YOLOv5网络模型结构基本原理讲解

1. 基本概念 YOLOv5模型结构主要包括以下组成部分&#xff1a;‌ 输入端&#xff1a;‌YOLOv5的输入端采用了多种技术来增强模型的性能&#xff0c;‌包括Mosaic数据增强、‌自适应锚框计算、‌以及自适应图片缩放。‌这些技术有助于提高模型的泛化能力和适应不同尺寸的输入图…

MySQL基础操作全攻略:增删改查实用指南(中)

本节目标&#xff1a; NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列&#xff08;或两个列多个列的结合&#xff09;有唯一标 识&am…

【C++】模拟实现stack

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 ​ 目录 一.了解项目功能 &#x1f4cc;了解stack官方标准 &#x1f4cc;了解模拟实现stack 二.逐步实现项目功能模块及其逻辑详解 &#x1f4cc;实现stack成员变量 &…

【Linux】进程间通信(管道通信、共享内存通信)

一.什么是进程间通信 进程间通信这五个字很好理解&#xff0c;就是进程和进程之间通信。 那么为什么要有进程间通信呢&#xff1f; 1.数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 2.资源共享&#xff1a;多个进程之间共享同样的资源 3.通知事件&#xff1a;一…

遗传算法与深度学习实战——生命模拟与进化论

遗传算法与深度学习实战——生命模拟与进化论 0. 前言1. 模拟进化1.1 代码实现1.2 代码改进 2. 达尔文进化论3. 自然选择和适者生存3.1 适者生存3.2 进化计算中的生物学 小结系列链接 0. 前言 生命模拟通过计算机模拟生物体的基本特征、遗传机制、环境互动等&#xff0c;试图模…

WPF 依赖属性 IsHitTestVisible

IsHitlTestVisible 仅影响本身的元素&#xff08;含内部包含的子元素&#xff09;&#xff0c;不影响父元素效果&#xff0c;且事件会传递到父元素。 Eg&#xff1a; 如父元素有click事件&#xff0c; 子元素设置了IsHitTestVisiblefalse&#xff0c; 当鼠标单击这个子元素时&…

Android 埋点信息分析——内存篇

源码基于&#xff1a;Android U 0. 前言 在前一篇《Android statsd 埋点简析》一文中简单剖析了Android 埋点采集、传输的框架&#xff0c;本文在其基础对埋点信息进行解析&#xff0c;来看下Android 中埋下的内存信息有哪些。 1. 通过代码剖析google 埋点内容 1.1 PROCESS_M…

BootStrap前端面试常见问题

在前端面试中&#xff0c;关于Bootstrap的问题通常围绕其基本概念、使用方式、特性以及实际应用等方面展开。以下是一些常见的问题及其详细解答&#xff1a; 1. Bootstrap是哪家公司研发的&#xff1f; 回答&#xff1a;Bootstrap是由Twitter的Mark Otto和Jacob Thornton合作…

脊髓损伤小伙伴的活力重启秘籍! 让我们一起动起来,拥抱不一样的精彩生活✨

Hey小伙伴们~&#x1f44b; 今天咱们来聊聊一个超级重要又温暖的话题——脊髓损伤后的锻炼大法来啦&#xff01;&#x1f389; 记住&#xff0c;无论遇到什么挑战&#xff0c;我们都要像打不死的小强一样&#xff0c;活力满满地面对每一天&#xff01;&#x1f4aa; 首先&#…

2024实验班选拔考试(热身赛)

比赛传送门 邀请码&#xff1a;2024wksyb A. 简单的数列问题 签到&#xff0c;记得开long long。 #include<bits/stdc.h> #define rep(i,a,b) for (int ia;i<b;i) #define per(i,a,b) for (int ia;i>b;--i) #define se second #define fi first #define endl …

【C#语音文字互转】.NET的TTS文本转语音合成

官方文档给出环境为Visual Studio 2017及以上&#xff1b;C#SDK为.NET4.8及以上 本文章环境介绍&#xff1a; Visual Studio 2022&#xff1b;C#SDK为.NET6.0 语音转文字请移步&#xff1a;【C#语音文字互转】C#语音转文字&#xff08;方法一&#xff09; 一. 启动 Visual Stud…

【OceanBase系列】—— OceanBase应急三板斧

作者&#xff1a; 花名&#xff1a;洪波&#xff0c; OceanBase 数据库解决方案架构师 目前随着OceanBase数据库越来越流行&#xff0c;社区已经有很多用户在生产环境使用了OceanBase&#xff0c;也有不少用户的核心业务用到了OceanBase数据库&#xff0c;在使用OceanBase数据库…

新址·新征程|美创科技北京中心喜迎乔迁

7月30日&#xff0c;北京暴雨倾城 连绵大雨和隆隆雷声 却像是在为一场新征程洗礼 这一天&#xff0c;我们迎来了重要的时刻 ——美创科技北京中心搬新家啦&#xff01; 新址&#xff1a;北京市海淀区庚坊国际大厦6层 喜迎新址&#xff0c;一场简单但喜气盈盈、温馨十足的乔…

【Python学习手册(第四版)】学习笔记16-函数基础

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文主要介绍Python中函数的基本概念&#xff0c;作用域以及参数传递&#xff0c;函数语法以及def和return语句的操作&#xff0c;函数调用表达式的行为&#xff…

Delphi5实现DLL的编写、调用

效果图 显式跟隐式调用差不多的&#xff0c;就重新画了窗体&#xff0c;画的有点粗糙。 DLL文件 DLL文件是一种包含了可执行代码的库文件&#xff0c;但它不能独立运行&#xff0c;必须由其他程序&#xff08;如EXE文件&#xff09;显式或隐式地加载并调用。DLL文件通常用于实…

全国地铁路线及站点SHP数据

数据是GIS的血液&#xff01; 我们在《126M全球手机基站SHP数据分享》一文中&#xff0c;为你分享过全球手机基站分布数据。 现在再为你分享全国地铁轻轨路线与站点SHP数据&#xff0c;你可以在文末查看该数据的领取方法。 全球地铁路线及站点数据 截至2023年12月31日&…

LAVIS在Mac,M1PRO芯片下的安装实战

LAVIS在Mac,M1PRO芯片下的安装实战 契机 ⚙ 本地想装个图片理解的大模型&#xff0c;看了下blip2感觉比较合适&#xff0c;macos安装的时候有点坑需要注意下&#xff0c;但是最终也无法使用mps加速&#xff0c;比较蛋疼。这里记录下安装步骤。 安装 LAVIS/projects/blip2 a…