DpythonProject3会员信息附件二:会员信息数据xlsx其中文件中‘商品GPS纬度’和‘商品GPS经度’两列的数据组成商品的位置信息‘会员GPS纬度’和‘会员GPS经度’两列数据组成会员的位置信息利用位置信息通过欧氏距离算距离r经纬度不要转化距离不要转化为实际距离且只保留r01的数据同时统计该会员周围商品的数量商品根据相对于会员的距离从小到大排序商品数量不能超过预订任务限额。文件中有‘预
import pandas as pd import numpy as np from scipy.optimize import minimize
读取Excel文件
df = pd.read_excel(r"D:\pythonProject3\会员信息\附件二:会员信息数据.xlsx")
计算距离r和周围商品数量
def calculate_distance(row): member_lat = row['会员GPS纬度'] member_lon = row['会员GPS经度'] df['距离'] = np.sqrt((df['商品GPS纬度'] - member_lat)**2 + (df['商品GPS经度'] - member_lon)**2) num_products = df[df['距离'] < 0.1].shape[0] return num_products
df['周围商品数量'] = df.apply(calculate_distance, axis=1)
获取预订任务限额
q2 = df['预订任务限额'].values[0]
定义引力子函数
def gravity_function(q1, r): return (0.17074800590158568 * q1 * (q26.0973538046874465)) / (r(-7.64598152989214))
优化计算每个商品满足条件的价格
def optimize_price(row): r = row['距离'] res = minimize(lambda q1: -gravity_function(q1, r), 0, bounds=[(0, None)]) return res.x[0]
df['最优价格'] = df.apply(optimize_price, axis=1)
选取每个商品的最小价格
df_min_price = df.groupby('商品名称')['最优价格'].min().reset_index()
输出每个商品及其对应价格
print(df_min_price[['商品名称', '最优价格']])
原文地址: https://www.cveoy.top/t/topic/ixPl 著作权归作者所有。请勿转载和采集!