找回密码
 会员注册
查看: 25|回复: 0

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

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-2 22:44:19 | 显示全部楼层 |阅读模式
目录💕一、问题重述💕🐸问题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个景点评分的最高分(BestScore,简称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使用模糊综合评价法目标:使用模糊综合评价法(FuzzyComprehensiveEvaluation,FCE)对352个城市进行综合评价,选择最吸引外国游客的50个城市。方法:    确定评价因素和等级:选择影响城市吸引力的因素,如城市规模、环境保护、人文底蕴、交通便利、气候、美食等。构建模糊关系矩阵:基于专家评分或数据统计,为每个城市的每个因素分配一个隶属度值。定义权重向量:确定各因素的权重,可以使用专家评分、问卷调查等方法确定。模糊综合评价:通过权重向量与模糊关系矩阵的模糊合成,计算每个城市的总体评价值。选择和排序:根据总体评价值选择得分最高的50个城市。🤡问题3使用模拟退火算法目标:为一名从广州入境的外国游客规划144小时内的最佳旅游路线,访问“最令外国游客向往的50个城市”中尽可能多的城市。方法:定义状态空间:每个状态表示一个可能的旅行路线。目标函数:定义目标函数来评估每条路线的质量,包括访问的城市数量和综合体验评分。邻域结构:定义如何从一个状态转移到另一个状态,例如更换一个城市的访问顺序。模拟退火过程:从初始解开始,通过随机扰动生成新状态,根据目标函数和温度参数接受或拒绝新状态,逐渐降低温度直到收敛。🤡问题4在问题3基础上进行优化目标:在尽可能多地游览城市的同时,尽量减少门票和交通的总费用。方法:在模拟退火算法的基础上,调整目标函数来同时考虑游览城市数量和总成本(门票+交通)。通过调整成本和数量的权重,找到最佳的权衡方案。🤡问题5按照我的方法进行优化目标:为主要想游览中国山景的外国游客定制144小时内的旅游路线。方法:数据准备:识别每个城市中评分最高的山。路径优化算法:使用模拟退火算法,定义状态为游览的城市和山,目标函数为最大化游览的山数量和最小化总成本。邻域结构:可以通过更改访问城市的顺序或替换城市来生成新状态。实施细节:需要结合高铁时刻表和城市间距离来优化路线,考虑山景开放时间和门票费用。💕三、解题代码和结果💕🙌问题1🙌importmatplotlib#设置Matplotlib支持中文字体matplotlib.rcParams['font.sans-serif']=['SimHei']#指定默认字体matplotlib.rcParams['axes.unicode_minus']=False#解决保存图像是负号'-'显示为方块的问题#%%importpandasaspdimportglobimportmatplotlib.pyplotasplt#指定包含所有CSV文件的文件夹路径folder_path='附件/'defread_data(folder_path):#使用glob模块找到文件夹中的所有csv文件file_paths=glob.glob(folder_path+'*.csv')print(f"Found{len(file_paths)}files.")#打印找到的文件数量data_frames=[]forpathinfile_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)ifdata_frames:#检查是否有数据框存在all_data=pd.concat(data_frames)returnall_dataelse:returnpd.DataFrame()#如果没有数据框,则返回空的数据框defanalyze_data(data):ifdata.empty:print("Nodatatoanalyze.")returnNone,None#数据清洗:确保评分列为数值类型data['评分']=pd.to_numeric(data['评分'],errors='coerce')#将无法转换为数值的转换为NaNdata.dropna(subset=['评分'],inplace=True)#删除包含NaN的行#找到最高评分best_score=data['评分'].max()print(f"最高评分(BestScore,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))returnbest_score_cities.head(10),best_scoredefplot_top_cities(best_score_cities,best_score):ifbest_score_citiesisnotNone: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🙌importmatplotlib.pyplotasplt#设置中文字体plt.rcParams['font.sans-serif']=['SimHei']#设置字体为SimHeiplt.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=63307http://app.niucodata.com/mianbaoduo/recommend.php?id=63307🐹成品论文(面包多)🐹 http://app.niucodata.com/mianbaoduo/recommend.php?id=63306http://app.niucodata.com/mianbaoduo/recommend.php?id=63306 🐹联系方式(Q)🐹
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 00:09 , Processed in 1.289604 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表