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

读取Excel文件

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

数据预处理

data['距离'] = np.sqrt((data['商品GPS纬度'] - data['会员GPS纬度'])**2 + (data['商品GPS经度'] - data['会员GPS经度'])**2) data_success = data[data['任务执行情况'] == 1] data_fail = data[data['任务执行情况'] == 0]

定义目标函数

def objective(x): k, m, n = x[0], x[1], x[2] y_success = data_success['预订任务限额'] * k * data_success['任务标价'] * (data_success['预订任务限额']**m) / (data_success['距离']**n) y_fail = data_fail['预订任务限额'] * k * data_fail['任务标价'] * (data_fail['预订任务限额']**m) / (data_fail['距离']**n) min_y_success = np.min(y_success) max_y_fail = np.max(y_fail) return max_y_fail - min_y_success

定义约束条件

def constraint(x): return x[0] - 0.01

设置初始值

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

优化求解

bounds = [(0, None), (0, None), (0, None)] constraints = [{'type': 'ineq', 'fun': constraint}] result = minimize(objective, x0, method='SLSQP', bounds=bounds, constraints=constraints)

输出结果

k, m, n = result.x[0], result.x[1], result.x[2] formula = f'y = {k}pq1*(q2**{m})/(r**{n})' min_y_success = np.min(data_success['预订任务限额'] * k * data_success['任务标价'] * (data_success['预订任务限额']**m) / (data_success['距离']**n)) print('带常量的公式:', formula) print('成功的最小引力子:', min_y_success)


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

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