在pysciopt
中构造问题时,有没有办法创建一批变量?我正在构建一个整数规划问题,我当前的解决方案涉及一个循环,该循环为我需要的任意数量的变量调用 addVar
。我有数百万个像素作为变量,因此多次调用函数的pythonic开销主导了这个问题。这是我的代码现在所做的:
from pyscipopt import quicksum
def main():
"""Entry point."""
print('build problem')
N = 10000
model = Model()
x_list = []
y_list = []
for i in range(N):
x_list.append(model.addVar(f'x{i}',vtype='B'))
y = float(i)
y_list.append(y)
model.addCons(quicksum(x_list) <= int(N*.1))
model.setObjective(
quicksum(x_list[i]*y_list[i] for i in range(N)),"maximize")
print('start optimize')
model.optimize()
sol = model.getBestsol()
print('solved')
print(sum(sol[x_list[i]]*y_list[i] for i in range(N)))
我想做的是用 model.addVectorOfVar(n=N,pre='x',vtype='B')
之类的东西替换循环。这样的事情有可能吗?