gpt4 book ai didi

python - 如何仅访问 PuLP 问题中的特定变量?

转载 作者:行者123 更新时间:2023-12-02 03:29:24 24 4
gpt4 key购买 nike

例如,在我用 python 中的 PuLP 求解的 LP 模型中,我有两组决策变量

#Variables x 
x = LpVariable.dicts("Decision_x",(range(3),range(3)),0,1,LpInteger)
#Variables y
y = LpVariable.dicts("Decision_y",(range(3),range(3)),0,1,LpInteger)

求解模型后,我只对 x[i][j] 值为 1 的变量感兴趣。我知道

for v in prob.variables():
if v.varValue == 1:
print(v)

我可以打印所有值等于 1 的变量。因此,所有值等于 1 的 x 和所有 y 变量都会被打印。如何设法仅访问 x 变量,以便不打印 y 变量?我尝试了 prob.variables(x)prob.variables()[x] 但到目前为止没有任何效果。

然后在下一步中,我想提取 x 等于 1 的 x 变量的索引。例如,如果 x[1][3] == 1 那么我想找到索引 1 和 3。PuLP 中有什么聪明的方法可以实现这一点吗?

最佳答案

x 是一个字典。给定 x[i][j] 处的两个索引 i,j,您将得到一个 pulp.LpVariable
您事先知道 x 变量的索引,因此一种方法如下

for i,j in itertools.product(range(3),range(3)):
if x[i][j].varValue > 0:
print((i,j), x[i][j].name, x[i][j].varValue)

或者如果您希望保留索引:

x_vars_indices = [(i,j) for i,j in itertools.product(range(3),range(3)) if x[i][j].varValue > 0]

另一种方法是迭代嵌套字典x并获取变量,这些变量是字典最后一层中的值。

x = {0: {0: Decision_x_0_0, 1: Decision_x_0_1, 2: Decision_x_0_2},...
^ ^ ^
| | |
LpVariable

关于python - 如何仅访问 PuLP 问题中的特定变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52242960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com