import pandas as pd
import math

# 加载商品信息表和会员信息表
product_info = pd.read_excel('D:\pythonProject3\商品信息\商品打包.xlsx')
member_info = pd.read_excel('D:\pythonProject3\打包问题\会员信息.xlsx')

# 对商品信息表按照经纬度排序
product_info.sort_values(by=['新商品GPS经度', '新商品GPS纬度'], inplace=True)

# 初始化会员挑选到商品的数量
member_info['挑选商品数量'] = 0

# 遍历每个会员
for i in range(len(member_info)):
    member = member_info.iloc[i]

    # 获取会员的GPS经纬度
    member_latitude = member['会员GPS纬度']
    member_longitude = member['会员GPS经度']

    # 获取会员的预订商品限额
    limit = member['预订商品限额']

    # 初始化商品数量和总距离
    selected_quantity = 0
    total_distance = 0

    # 遍历每个商品
    for j in range(len(product_info)):
        product = product_info.iloc[j]

        # 获取商品的GPS经纬度和打包数量
        product_latitude = product['新商品GPS纬度']
        product_longitude = product['新商品GPS经度']
        quantity = product['打包数量']

        # 计算商品与会员之间的距离
        distance = math.sqrt((member_latitude - product_latitude) ** 2 + (member_longitude - product_longitude) ** 2)

        # 判断商品与会员之间的距离是否满足要求
        if distance <= 1:
            # 判断挑选该商品是否会超过预订商品限额
            if selected_quantity + quantity <= limit:
                # 更新商品数量和总距离
                selected_quantity += quantity
                total_distance += distance
            else:
                break

    # 更新会员挑选到商品的数量
    member_info.at[i, '挑选商品数量'] = selected_quantity

# 输出每个会员挑选到商品的数量
print(member_info[['会员编号', '会员GPS纬度', '会员GPS经度', '信誉值', '预订商品比例', '挑选商品数量']])
member_info.to_excel('D:\pythonProject3\打包问题\会员信息 - 副本.xlsx', index=False, columns=['会员编号', '会员GPS纬度', '会员GPS经度', '信誉值', '预订商品比例', '挑选商品数量'])
Python基于地理位置和预订限制的商品分配算法

原文地址: https://www.cveoy.top/t/topic/fAuA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录