python - 如何在“pyscipopt”中创建变量向量?
问题描述
有没有办法在构造问题时创建一批变量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')
。这样的事情可能吗?
解决方案
推荐阅读
- laravel - 将表连接到多对多表
- javascript - 根据 {liked :true} 、距离然后按 avg_rating 对数组对象进行多重排序
- php - 如何在 mysqli 结果中使用 html 标签使用准备好的语句?
- docker - 在 windows10 上推送到本地 docker 注册表时权限被拒绝
- git - 如何使用 JGit 搜索与特定模式匹配的标签
- jestjs - Jest 的测试匹配没有选择我的测试文件
- c# - 创建 DbContext 时 Xamarin.Forms iOS 实体框架 SQLite 异常
- zeromq - 多处理器多核服务器中的 zeromq 高延迟
- java - 如何从 firebase 数据库中检索数组数据?
- r - 了解 Sparklyr 中的 Spark 1.6.3 <-> JDBC (Oracle) 连接