错字已修复
我需要为我的时间序列中的每个时间步执行最小化优化。优化根据行中不同列中的值和一系列不等式约束来设置价格。
我的数据框在 48 年的时间序列中具有以下列:
['CAPEX_TOT', 'CAPEX_R', 'CAPEX_WS', 'debt_BP', 'principal','interest',
'debt_service', 'debt_EP', 'OPEX', 'OPEX_R', 'OPEX_WS',
'DELIVERY_BAWSCA', 'DELIVERY_OTHER_DEMAND',
'DELIVERY_SAN_FRANCISCO_CITY', 'DELIVERIES_WS', 'DELIVERIES_R',
'PRICE_crR', 'PRICE_crWS', 'REVENUE', 'FUND_BALANCE_BP',
'FUND_BALANCE_EP']
PRICE_crR 和 PRICE_crWS 代表两个不同客户类别的价格,纯粹基于成本回收。优化必须寻求实现成本回收(下面代码中的第一个约束),同时观察几个关键策略约束,这些约束由下面代码中的第二个和第三个约束表示。
这就是我到目前为止所拥有的。
最小化的目标函数
finance_df['revenue_R'] = finance_df.apply(lambda row: row * row.DELIVERIES_R)
约束
cons = ({'type': 'ineq', 'fun': finance_df.apply(lambda row: row - row.price_crR, axis=1)},
{'type': 'ineq', 'fun': finance_df.apply(lambda row: ((row * row.DELIVERIES_R) - row.OPEX_R + OTHER_REVENUE)\
/ (debt_CAPEX_ratio * row.debt_service), axis=1)},
{'type': 'ineq', 'fun': finance_df.apply(lambda row: (1.05 * row.price_crR) - row, axis=1)})
非负约束
bnds = ((0, None), (0, None))
一系列初始最佳猜测
price_0 = [7, 7.5, 8, 8.5, 9, 9.5, 10]
优化函数
res = minimize(finance_df['revenue_R'], price_0, method='SLSQP', bounds=bnds, constraints=cons)
运行上述脚本时,我收到以下错误消息:
("'Series' object has no attribute 'DELIVERIES_R'", 'occurred at index CAPEX_TOT')