如何在Python中创建动态解算器(优化函数)

如何在Python中创建动态解算器(优化函数),python,pandas,optimization,solver,pulp,Python,Pandas,Optimization,Solver,Pulp,现在,我有一个关于动态约束的问题。我有原始价格,但我需要检查他们是否遵守业务规则,当有违反时,我会更改价格,但我希望总的绝对更改最小化 我的表列如下所示: Opt_Price = LpVariable.dics("optprices", range(df.shape[0])) 项目:字符串 尺寸:浮子 总金额:整数 原价:浮动 最优价格:浮动(空白,因为这是决策变量) D1(空白,但有公式可获取) D2(相同) 绝对值(空白,这是决策变量也是目标列) 我的问题是: 决

现在,我有一个关于动态约束的问题。我有原始价格,但我需要检查他们是否遵守业务规则,当有违反时,我会更改价格,但我希望总的绝对更改最小化

我的表列如下所示:

Opt_Price = LpVariable.dics("optprices", range(df.shape[0]))
  • 项目:字符串
  • 尺寸:浮子
  • 总金额:整数
  • 原价:浮动
  • 最优价格:浮动(空白,因为这是决策变量)
  • D1(空白,但有公式可获取)
  • D2(相同)
  • 绝对值(空白,这是决策变量也是目标列)
我的问题是:

  • 决策变量:
  • 最优价格
  • 绝对_值(但这仍然是一个线性函数,请参见以下内容)
    • 目标:最小化绝对值之和。总和(绝对值)
    • 限制条件:
  • 绝对值>=差值1
  • 绝对值>=差值2
  • 最优价格>=0
  • 相同物品,较大尺寸的最优价格>=较小尺寸的最优价格
  • 同样大小的物品也有价格规则
  • 目前,我正在努力实现前三个约束。我可以很容易地在Excel中完成这项工作,但要将其移动到Python中却非常困难

    问题是,我试图计算差分_1和差分_2,但这需要我将决策变量,即最优价格引入函数。功能类似于:

    • 差额1=(原价-最优价)*总金额
    • 差额2=(最优价格-原价)*总金额
    我们这样做的原因是得到一个线性解,而不是使用绝对函数

    我试着用纸浆来创建这个优化函数,但当我试着在差异计算中加入LpVariable时

    for i in range(df.shape[0]):
        D1[i] = (Opt_Price[i]-df['Original_Price'][i])*df['Total_Amount'][i]
        D2[i] = (df['Original_Price'][i]-Opt_Price[i])*df['Total_Units'][i]
    
    上面说

    TypeError: 'LpVariable' object is not subscriptable
    
    我也试过:

    D1 = (Opt_Price-df['Original_Price'])*df['Total_Amount']
    D2 = (df['Original_Price']-Opt_Price)*df['Total_Amount']
    

    提前谢谢

    看起来您将
    Opt_Price
    作为一个变量,而不是包含它们的字典。使用
    LpVariable.dicts
    从键列表中创建变量字典是相当标准的,如下所示:

    Opt_Price = LpVariable.dics("optprices", range(df.shape[0]))
    

    谢谢你的回复!我厌倦了这个代码,但是我得到了这样的Opt_Price
    {0:Opt_Price\u 0,1:Opt_Price\u 1,2:Opt_Price\u 2,3:Opt_Price\u 3,4:Opt_Price\u 4,5:Opt_Price\u 5,6:Opt_Price\u 6,7:Opt_Price\u 7…}
    这是一个名称列表,我不知道如何将其添加到计算函数中。。。