import pandas as pd
import math

# 读取Excel文件
df = pd.read_excel('会员信息数据.xlsx')  # 请将文件名替换为实际文件名

# 提取所需的列数据
product_latitude = df['商品GPS纬度']
product_longitude = df['商品GPS经度']
member_latitude = df['会员GPS纬度']
member_longitude = df['会员GPS经度']
task_limit = df['预订任务限额']
product_price = df['任务标价']

# 初始化最小引力子和常量的值
min_gravity = float('inf')
best_k = 0
best_n = 0
best_m = 0

# 遍历数据,寻找最佳常量
for m in range(1, 4):  # 假设m的取值范围为1到3,可根据实际情况调整
    for n in range(1, 4):
        for i in range(len(df)):
            q1 = product_price[i]
            q2 = task_limit[i]
            r = math.sqrt((product_latitude[i] - member_latitude[i]) ** 2 + (product_longitude[i] - member_longitude[i]) ** 2)

            # 根据公式计算引力子
            gravity = (q1 * (q2 ** m)) / (r ** n)

            # 更新最小引力子和对应的常量
            if gravity < min_gravity:
                min_gravity = gravity
                best_k = 1  # k值不影响最小引力子的确定,这里设为1
                best_n = n
                best_m = m

# 输出带常量的公式
formula = f'y = {best_k}*q1*(q2^{best_m})/(r^{best_n})'
print('带常量的公式:', formula)

# 输出最小引力子的值
print('最小引力子的值:', min_gravity)

代码说明:

  1. 读取数据: 使用pandas库读取Excel文件中的会员和商品信息。
  2. 初始化变量: 初始化最小引力子为正无穷,以及用于存储最佳常量的变量。
  3. 遍历数据: 为了找到最佳的m和n值,我们使用嵌套循环遍历可能的取值范围,并计算每个组合下的引力子。
  4. 计算引力子: 根据给定的公式计算引力子,其中r代表会员与商品之间的距离。
  5. 更新最小值: 如果计算得到的引力子小于当前的最小引力子,则更新最小引力子以及对应的常量k、m和n。
  6. 输出结果: 最后,输出找到的最佳常量和最小引力子,并给出最终的引力模型公式。

注意:

  • 以上代码中的 '会员信息数据.xlsx' 请替换为实际文件名。
  • m和n的取值范围可以根据实际情况进行调整。
  • 该代码假设k值不影响最小引力子的确定,因此将其设为1。您可以根据实际需求修改k值的处理方式。

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

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