2024第二届国际高校数学建模竞赛 A题:金字塔石块的运输 Chatgpt-4 详细思路和代码

271 篇文章 488 订阅 ¥59.90 ¥99.00
import math

def calculate_min_transport_rounds_optimized(vehicles, capacities, distances, total_stones, strategy='max_capacity'):
    n = len(vehicles)
    if strategy == 'max_capacity':
        # 按承载能力降序排序
        vehicles_capacities = sorted(zip(vehicles, capacities), key=lambda x: x[1], reverse=True)
    elif strategy == 'longest_distance':
        # 按距离降序排序
        vehicles_distances = sorted(zip(vehicles, distances), key=lambda x: x[1], reverse=True)
    
    min_rounds = 0
    stones_left = total_stones
    
    while stones_left > 0:
        min_rounds += 1
        if strategy == 'max_capacity':
            # 每次尽可能多地运输石头
            capacity_used = 0
            for vehicle, capacity in vehicles_capacities:
                if stones_left <= 0:
                    break
                if capacity >= stones_left:
                    capacity_used = stones_left
                    stones_left = 0
                else:
                    capacity_used += capacity
                    stones_left -= capacity
        elif strategy == 'longest_distance':
            # 优先运输距离较长的石头
            for vehicle, distance in vehicles_distances:
                if stones_left <= 0:
                    break
                capacity = capacities[vehicles.index(vehicle)]
                if capacity >= stones_left:
                    stones_left = 0
                else:
                    stones_left -= capacity

    return min_rounds

# 示例数据
vehicles = ["船", "马车", "外星飞船"]
capacities = [1000, 500, 2000]  # 对应每辆车的承载能力
distances = [50, 20, 80]  # 对应每块石头到达施工现场的距离
total_stones = 10000  # 假设需要运输的石头总数

# 计算最小运输次数(按每次尽可能多地运输石头策略)
min_rounds_max_capacity = calculate_min_transport_rounds_optimized(vehicles, capacities, distances, total_stones, strategy='max_capacity')
print(f"按每次尽可能多地运输石头策略,完成运输任务所需的最小运输次数为: {min_rounds_max_capacity}")

# 计算最小运输次数(按优先运输距离较长的石头策略)
min_rounds_longest_distance = calculate_min_transport_rounds_optimized(vehicles, capacities, distances, total_stones, strategy='longest_distance')
print(f"按优先运输距离较长的石头策略,完成运输任务所需的最小运输次数为: {min_rounds_longest_distance}")

问题一思路代码

问题1:建立数学模型,收集相关数据,以最大的赫夫金字塔为例 ,计算在给定的运输车辆数量和载重量下,完成石料运输任务所需的最小运输次数。


                
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

个人笔记(bug,思路,总结)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值