import pandas as pd import numpy as np from scipy.optimize import minimize

读取Excel文件

data = pd.read_excel(r'D:\pythonProject3\会员信息\附件二:会员信息数据.xlsx')

计算商品与会员之间的欧氏距离

data['Distance'] = np.sqrt((data['商品GPS纬度'] - data['会员GPS纬度'])**2 + (data['商品GPS经度'] - data['会员GPS经度'])**2)

筛选距离小于0.1的数据

filtered_data = data[data['Distance'] < 0.1]

根据距离从小到大排序

filtered_data.sort_values(by='Distance', inplace=True)

获取预订任务限额

q2 = filtered_data['预订任务限额'].values[0]

定义引力子函数

def gravity_function(q1): return (0.17074800590158568 * q1 * (q2 ** 6.0973538046874465)) / (filtered_data['Distance'] ** (-7.64598152989214))

定义目标函数

def objective_function(q1): gravity = gravity_function(q1) return np.sum(gravity[gravity > 0.0002065832682235432])

优化计算,找到使目标函数最小的q1

result = minimize(objective_function, x0=1, bounds=[(0, None)])

获取最小价格

min_price = result.x[0]

输出每个商品对应的价格q1

filtered_data['价格q1'] = min_price

输出结果

print(filtered_data[['商品编号', '价格q1']])


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

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