PuLP-OR:你能删除已创建的变量吗?

时间:2016-08-19 17:17:49

标签: python optimization integer-programming pulp operations-research

我的问题非常简单。是否可以删除我已经创建的变量?

或者我唯一的希望是不开始创建变量?

我猜你是否可以打印变量然后使用:

del prob.variable

会删除它。但是我无法准确地找到它,Python说:

prob.variables

不可订阅。

1 个答案:

答案 0 :(得分:0)

可以在prob中找到与PuLP LP问题prob._variables相关联的变量,这是一个列表,因此您认为可以使用var >

prob._variables.remove(var)

但是,这只是删除了prob._variables中的第一个变量,因为由于某种原因,Python不区分==级别的问题变量。我的意思是,如果var1var2是与prob相关联的任何两个变量,

if var1 == var2:
    print('Equal')

始终返回'Equal'。 (不要尝试var1 == var2;这将被解释为等式)  。这意味着如果您尝试使用

找到var的索引
prob._variables.index(var)

输出始终为0.

比我更了解Python的人将不得不解释什么是开心,但这是一个解决方法:

for i, v in enumerate(prob._variables):
    if v is var:
        del prob._variables[i]

这不会从涉及它的任何约束中删除变量,并且似乎PuLP将解决LP问题,就好像变量仍然存在一样。所以我认为这一切都是改变属性prob._variables。我不认为这对你的情况有帮助(我不太了解),但是如果你想删除一个变量,然后引入一个与旧变量同名的新变量,这是必要的。