【发布时间】:2020-09-13 18:22:37
【问题描述】:
我正在尝试为 PuLP 中的成本优化制定一个目标函数,其中将数组的最大值添加到目标函数中。请忽略缩进。
#Decision Variables
allocation_vars = LpVariable.dicts(
'Allocation',
[(i,j,k) for i in TruckTypes for j in Days for k in RS],
0,
LpInteger
)
#Objective Function
for i in TruckTypes:
for j in Days:
prob += max(allocation_vars[(i, j, k)] * TransCost[i][k] for k in RS)
我在尝试运行上述内容时收到以下错误:
prob += max(allocation_vars[(i, j, k)] * TransCost[i][k] for k in RS)
TypeError: '>' not supported between instances of 'LpAffineExpression' and 'LpAffineExpression'
【问题讨论】:
-
max()不是线性函数,因此这违反了对线性目标函数的要求......你将不得不重新制定。 -
根据问题的逻辑,重新制定似乎是不可行的。你能推荐一个可以解决上述整数非线性优化问题的python包/求解器吗?
标签: python optimization linear-programming pulp integer-programming