有没有办法在构造问题时创建一批变量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')
。这样的事情可能吗?