0

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

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

我想如果你可以打印一个变量然后使用:

del prob.variable

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

prob.variables

不可下标。

4

1 回答 1

0

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

prob._variables.remove(var)

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

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

总是返回“相等”。(不要尝试var1 == var2;这将被解释为等式)。这意味着如果您尝试找到varusing的索引

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。我认为这对您的情况没有帮助(我不太了解),但是如果您想删除一个变量,然后引入一个与旧变量同名的新变量,这是必要的。

于 2018-02-05T20:16:13.567 回答