我正在尝试使用 4 个具有数据列表的变量进行简单的优化。我想要做的就是将前 3 个变量相乘,然后将结果除以第 4 个变量。然后我希望二进制变量为 1 或 0,将其乘以结果以确定“行”是否包含在求和结果中或排除在求和结果中。我唯一的限制是变量 4,它从 1 或 0 求和时不能超过一个数字。
import pulp as pl
x1 = [.1, .8, .2, .15, .6]
x2 = [5000, 8000, 10000, 4500, 2200]
x3 = [.1, .1, .15, .08, .1]
x4 = [5, 3, 8, 10, 2]
x5 = pl.LpVariable('x5', cat=pl.LpBinary)
res = [(x1[i] * x2[i] * x3[i]) / x4[i] for i in range(5)]
test = pl.LpProblem('test_this', pl.LpMaximize)
test += pl.lpSum([res[i] for i in range(len(res))] * x5)
test += pl.lpSum([x4[i] for i in range(5)] * x5) <= 20
test.solve()
print(x5.value())
我想通了 - 我必须列出决策变量列表....呃。