我的问题很简单。是否可以删除我已经创建的变量?
或者我唯一的希望是不要创建变量开始?
我想如果你可以打印一个变量然后使用:
del prob.variable
会删除它。但我无法准确找到它,Python 说:
prob.variables
不可下标。
我的问题很简单。是否可以删除我已经创建的变量?
或者我唯一的希望是不要创建变量开始?
我想如果你可以打印一个变量然后使用:
del prob.variable
会删除它。但我无法准确找到它,Python 说:
prob.variables
不可下标。
prob
可以在 中找到与 PuLP LP 问题相关的变量prob._variables
,这是一个列表,因此您认为可以var
使用删除变量
prob._variables.remove(var)
但是,这只是删除了 prob._variables 中的第一个变量,因为出于某种原因,Python 不区分==
. 我的意思是,如果var1
和var2
是任何两个与 相关联的变量prob
,
if var1 == var2:
print('Equal')
总是返回“相等”。(不要尝试var1 == var2
;这将被解释为等式)。这意味着如果您尝试找到var
using的索引
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
。我认为这对您的情况没有帮助(我不太了解),但是如果您想删除一个变量,然后引入一个与旧变量同名的新变量,这是必要的。