DpythonProject3会员信息附件二:会员信息数据xlsx其中文件中‘商品GPS纬度’和‘商品GPS经度’两列的数据组成商品的位置信息‘会员GPS纬度’和‘会员GPS经度’两列数据组成会员的位置信息根据位置信息算出距离r且只保留距离小于01的r文件中‘预订任务限额’是每个会员对应的任务限额文件中‘任务标价’那列的数据代表商品的价格文件中‘任务执行情况’一列的数据分为0和1当任务执行情况为0
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))
原文地址: https://www.cveoy.top/t/topic/ixN5 著作权归作者所有。请勿转载和采集!