如何在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=(最优价格-原价)*总金额
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…}
这是一个名称列表,我不知道如何将其添加到计算函数中。。。