|
【2024年华数杯全国大学生数学建模竞赛】C题:老外游中国问题思路分析及Python代码实现更新时间:2024-8-6所有数学模型和代码实现,已更新完毕1题目最近,“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个城市。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问题一importosimportpandasaspd#定义数据文件夹路径folder_path='附件'#初始化一个空的数据框all_data=pd.DataFrame()#遍历文件夹中的所有CSV文件并加载数据forfile_nameinos.listdir(folder_path):iffile_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_data123456789101112131415161718192021222324252627#确保'景点评分'列为浮点数类型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)1234567891011121314151617181920最高评分(BS):5.0获得最高评分(BS)的景点总数:2563获得最高评分(BS)景点最多的前10个城市:城市景点数量4三沙3625五家渠28224玉溪21233益阳2091天门19310阿拉尔18215潍坊18220烟台1884大兴安岭18283邢台1712345678910111213144.2问题二、三、四、五
|
|