(C题老外游中国)2024年华数杯大学生数学建模竞赛解题思路完整代码论文集合

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合,专为本次赛题设计,旨在帮助您深入理解数学建模的每一个环节。

让我们来分析C题!

华数杯大学生数学建模竞赛(ABC三题)完整内容均可以在文章末尾领取!

因此,游客的游玩路线可以表示为: n = arg max (S1, S2, ..., S50) T = Σ (Si * Di) / 250 C = Σ Si + Σ (Di * 0.5)

其中,n为最大游玩城市数量,T为总花费时间,C为总门票和交通费用。

#导入所需要的库
import pandas as pd
import numpy as np
from itertools import combinations
from collections import defaultdict

#读取数据集
city_data = pd.read_csv("city_data.csv")

#将城市数据按照城市和景点评分进行分组
city_group = city_data.groupby(['City','Score'])

#创建一个字典,用于存储每个城市最佳景点的信息
city_best = defaultdict(list)

#遍历每个城市的数据
for city, group in city_group:
    #获取当前城市的所有景点信息
    city_info = group.iloc[0]
    #将当前城市的最佳景点信息存储到字典中
    city_best[city].append(city_info)

#计算352个城市中所有景点评分的最高分(Best Score,简称BS)
best_score = max(city_data['Score'])

#统计获评了最高评分(BS)的景点数量
count = 0
#存储获评了最高评分(BS)的景点所在的城市
cities = []
#遍历每个城市

省略

#打印结果
print("352个城市中所有景点评分的最高分为:", best_score)
print("获评了最高评分(BS)的景点数量为:", count)
print("获评了最高评分(BS)景点最多的城市有:", cities)

#计算每个城市拥有最高评分(BS)的景点数量
city_count = defaultdict(int)
#遍历每个城市
for city in cities:
    #遍历当前城市的最佳景点信息
    for info in city_best[city]:
        #统计当前城市拥有最高评分(BS)的景点数量
        city_count[city] += 1

#按照拥有最高评分(BS)景点数量的多少进行排序
city_count = sorted(city_count.items(), key = lambda x:x[1], reverse = True)

#打印前10个城市
print("前10个拥有最高评分(BS)景点数量的城市为:")
for i in range(10):
    print(i+1, "、", city_count[i][0], "(拥有", city_count[i][1], "个最高评分(BS)的景点)")

#第三个问题:规划游玩路线
#设置游客要求的最大游玩城市数量
max_city = 50
#设置游客的出发城市
start_city = "广州"
#设置游客的游玩时长(小时)
time = 144
#设置游客的最大总费用(元)
max_cost = 10000

#创建一个字典,用于存储城市之间的距离信息
city_distance = {}

#遍历每个城市
for city in cities:
    #计算当前城市与出发城市的距离
    distance = city_data.loc[city_data['City'] == start_city]['Distance'].values[0]
    #将距离信息存储到字典中
    city_distance[city] = distance

#按照距离进行排序
city_distance = sorted(city_distance.items(), key = lambda x:x[1])

#创建一个列表,用于存储游客要游玩的城市
tour_cities = []

#遍历排序后的距离信息
for city in city_distance:
    #如果当前城市还没有被选为游客要游玩的城市
    if city[0] not in tour_cities:
        #将当前城市添加到列表中
        tour_cities.append(city[0])
        #如果游客要游玩的城市数量已经达到最大值
        if len(tour_cities) == max_city:
            #结束遍历
            break

#创建一个列表,用于存储游客的游玩路线
tour_route = []

#设置游客当前所在城市为出发城市
current_city = start_city
#设置游客已经游玩的总花费(元)
total_cost = 0
#设置游客已经游玩的总时间(小时)
total_time = 0

#遍历游客要游玩的城市
for city in tour_cities:
    #计算当前城市与上一个城市之间的距离
    distance = city_data.loc[city_data['City'] == current_city]['Distance'].values[0]
    #计算当前城市游玩的时间(小时)
    city_time = city_data.loc[city_data['City'] == city]['Duration'].values[0]
    #计算当前城市游玩的花费(元)
    city_cost = city_data.loc[city_data['City'] == city]['Cost'].values[0]
    #如果游客已经游玩的总时间加上当前城市游玩的时间超过了最大游玩时长
    if total_time + city_time > time:
        #结束遍历
        break
    #如果游客已经游玩的总费用加上当前城市游玩的花费超过了最大总费用
    if total_cost + city_cost > max_cost:
        #结束遍历
        break
    #将当前城市添加到游客的游玩路线中
    tour_route.append(city)
    #更新游客已经游玩的总时间
    total_time += city_time
    #更新游客已经游玩的总费用
    total_cost += city_cost
    #更新游客当前所在城市
    current_city = city

#打印游客的游玩路线
print("游客的游玩路线为:")
for i in range(len(tour_route)):
    print(i+1, "、", tour_route[i])

#打印游客的游玩路线的总花费(元)
print("游客的游玩路线的总花费为:", total_cost)
#打印游客的游玩路线的总时间(小时)
print("游客的游玩路线的总时间为:", total_time)
#打印游客可以游玩的景点数量
print("游客可以游玩的景点数量为:", len(tour_route))

通过使用遗传算法等优化方法,我们可以得到最优解,即游客在144小时内最多可以游览的山景数量,以及对应的游玩路线和总费用。

由于篇幅过长

更多内容具体可以看看我的下方名片!
里面包含有本次竞赛一手资料与分析!
另外在赛中,我们也会陪大家一起解析建模比赛
记得关注Tina表姐哦~

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的内容可以得知,2023华数杯全国大学生数学建模竞赛目是一个基于雅鲁藏布江未来五十发展规划的优化类问。这个比赛与美赛的MCM型相似,都是偏向自然和理工方面的数学建模竞赛。一般MCM竞赛目较具体,表述简洁,要求明确,并且会提供大量的表格数据进行处理。而华数杯的A则需要参赛者自行收集数据进行建模规划。因此,对于本次华数杯的A,数据的收集是一个重要的问。 引用中提到华数杯是一个国家级的数学建模比赛,举办到第四届,参与人数越来越多,认可度也越来越高。比赛的含金量和规模都不错,可以作为国赛前的模拟比赛进行参与练手,有助于对国赛有更深入的了解和准备。 综上所述,2023华数杯全国大学生数学建模竞赛目涉及到基于雅鲁藏布江未来五十发展规划的优化类问。这是一个国家级的数学建模比赛,具有较高的认可度和含金量,可以作为国赛前的模拟比赛参与练习。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [2023华数杯”国际大学生数学建模A完整思路](https://blog.csdn.net/qq_33690821/article/details/128860643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [2023华数杯全国大学生数学建模竞赛思路模型代码](https://blog.csdn.net/weixin_45499067/article/details/131838529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值