如何在纸浆问题中只访问特定变量?

2024-10-01 15:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,在我用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的变量感兴趣。我知道

^{pr2}$

我可以打印值为1的所有变量。因此,将打印值为1的所有x和y变量。我怎样才能只访问x变量,从而不打印y变量?我试过prob.variables(x),或者{},但是到目前为止没有任何效果。在

然后在下一步中,我想提取x变量的指数,其中x等于1。例如,如果x[1][3] == 1,那么我想找到这些索引1和3。他们有什么聪明的方法来达到这个目的吗?在


Tags: 模型rangevariables感兴趣pulp决策lpdicts
1条回答
网友
1楼 · 发布于 2024-10-01 15:32:02

x是一个dict。给定i,jx[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)

或者,如果您喜欢保留索引:

^{pr2}$

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

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

相关问题 更多 >

    热门问题