【发布时间】:2018-12-18 13:01:38
【问题描述】:
我有一个相当大的模型(大约 500 万个变量和约束)。
构建时间是几分钟,求解时间也是几分钟(使用 gurobi)
但是写模型需要很长时间(大约2小时)
如果我使用model.write('model.lp', io_options={'symbolic_solver_labels': True}) 可以记录它,这是时候
如果我直接使用pyomo的模型SolverFactory和solve,时间差不多
这里有一个小样本,我知道这个模型对于 gurobi 来说是微不足道的,所以我没有在这里比较求解时间和构建时间,但我不明白为什么它这么长,我认为问题可能来自磁盘写入速度,但似乎磁盘从不超载,几乎没有使用
import pyomo.environ as pyo
import time
size = 500000
model = pyo.ConcreteModel()
model.set = pyo.RangeSet(0, size)
model.x = pyo.Var(model.set, within=pyo.Reals)
model.constrList = pyo.ConstraintList()
for i in range(size):
model.constrList.add(expr = model.x[i] >= 1)
model.obj = pyo.Objective(expr=sum(model.x[i] for i in range(size)), sense=pyo.minimize)
opt = pyo.SolverFactory('gurobi')
_time = time.time()
res = opt.solve(model)
print(">>> total time () in {:.2f}s".format(time.time() - _time))
print(res)
结果是整个求解函数的时间为27 s,而gurobi的求解时间仅为4 s。
【问题讨论】:
标签: pyomo