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

读取数据

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

计算距离

def calculate_distance(row): member_lat = row['会员GPS纬度'] member_lon = row['会员GPS经度'] product_lat = row['商品GPS纬度'] product_lon = row['商品GPS经度'] distance = np.sqrt((member_lat - product_lat)**2 + (member_lon - product_lon)**2) return distance

data['距离'] = data.apply(calculate_distance, axis=1)

筛选距离小于0.1的数据

filtered_data = data[data['距离'] < 0.1]

定义目标函数

def objective(x): k, m, n = x y = k * q1 * (q2m) / (rn) return -y

获取成功和失败的数据

success_data = filtered_data[filtered_data['任务执行情况'] == 1] failure_data = filtered_data[filtered_data['任务执行情况'] == 0]

获取成功数据中最小的商品价格

q1 = success_data['任务标价'].min()

获取失败数据中最大的商品价格

q2 = failure_data['任务标价'].max()

设置初始值

x0 = np.array([1, 1, 1])

优化求解最小引力子

res = minimize(objective, x0)

获取最小引力子和对应的常量

min_y = -res.fun k, m, n = res.x

输出结果

print("最小引力子: ", min_y) print("常量k: ", k) print("常量m: ", m) print("常量n: ", n) print("带常量的公式: y = {} * q1 * (q2^{}) / (r^{})".format(k, m, n))

DpythonProject3会员信息附件二:会员信息数据xlsx其中文件中‘商品GPS纬度’和‘商品GPS经度’两列的数据组成商品的位置信息‘会员GPS纬度’和‘会员GPS经度’两列数据组成会员的位置信息根据位置信息算出距离r且只保留距离小于01的r文件中‘预订任务限额’是每个会员对应的任务限额文件中‘任务标价’那列的数据代表商品的价格文件中‘任务执行情况’一列的数据分为0和1当任务执行情况为0

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

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