我的问题非常简单。是否可以删除我已经创建的变量?
或者我唯一的希望是不开始创建变量?
我猜你是否可以打印变量然后使用:
del prob.variable
会删除它。但是我无法准确地找到它,Python说:
prob.variables
不可订阅。
答案 0 :(得分:0)
可以在prob
中找到与PuLP LP问题prob._variables
相关联的变量,这是一个列表,因此您认为可以使用
prob._variables.remove(var)
但是,这只是删除了prob._variables中的第一个变量,因为由于某种原因,Python不区分==
级别的问题变量。我的意思是,如果var1
和var2
是与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
。我不认为这对你的情况有帮助(我不太了解),但是如果你想删除一个变量,然后引入一个与旧变量同名的新变量,这是必要的。