PuLP代码编译耗时过长,寻求高效改写优化方案
PuLP约束构建性能优化求助
我发现以下PuLP代码块的约束编译时间极长,有没有更高效的改写方式?
for item in supplylist: cn_coal_problem += (supplyitembynode[item]+ lpSum([massflowtype[(i,j,ct)] for (i,j,ct) in flowslist if (j,ct) == item]) >= lpSum([massflowtype[(i,j,ct)] for (i,j,ct) in flowslist if (i,ct) == item]))
这段代码编译耗时长达9小时,完全无法满足需求。我还有多个类似代码块,急需找到性能更优的改写方法。变量规模如下:
massflowtot length: 41631 massflowtype length: 499572 supplyitembynode length: 149988
编辑补充:我已经做了一些修改,但速度仍不理想:
counter = len(supplylist) for item in supplylist: counter-=1 if counter%100 == 0: print(counter, datetime.now()-start_build) cn_coal_problem += supplyitembynode[item]+lpSum(massflowtype[(i,j,ct)] for (i,j,ct) in flowslist if (j,ct) == item) >=lpSum(massflowtype[(i,j,ct)] for (i,j,ct) in flowslist if (i,ct) == item)
对应的输出日志:
Started building at 12:40:20 149900 0:00:19.364037 149800 0:00:35.527059 149700 0:00:51.487889 149600 0:01:06.100106 149500 0:01:21.067001 149400 0:01:36.128091 149300 0:01:50.552957 149200 0:02:04.867231 149100 0:02:19.259758 149000 0:02:33.862139
内容的提问来源于stack exchange,提问作者Alex Turnbull
相关产品推荐
相关产品推荐

