python - 优化模型的 GLPK 的 MemUsage / CPU 使用率
问题描述
我正在使用名为 GLPK 的求解器优化 2 个 pyomo 能量模型。
当您让求解器通过以下方式写入其输出时:result = optim.solve(model, tee=True)
Solver 在 cmd 中给出的输出为:
GLPSOL: GLPK LP/MIP Solver, v4.65
Parameter(s) specified in the command line:
--write /home/okan/Desktop/urbs-oemof/tmpk76ybo_5.glpk.raw --wglp /home/okan/Desktop/urbs-oemof/tmp8qv9hajy.glpk.glp
--cpxlp /home/okan/Desktop/urbs-oemof/tmpa9k8e86c.pyomo.lp
Reading problem data from '/home/okan/Desktop/urbs-oemof/tmpa9k8e86c.pyomo.lp'...
1519 rows, 1155 columns, 3894 non-zeros
9618 lines were read
Writing problem data to '/home/okan/Desktop/urbs-oemof/tmp8qv9hajy.glpk.glp'...
7210 lines were written
GLPK Simplex Optimizer, v4.65
1519 rows, 1155 columns, 3894 non-zeros
Preprocessing...
1159 rows, 1011 columns, 2979 non-zeros
Scaling...
A: min|aij| = 4.705e-03 max|aij| = 7.964e+02 ratio = 1.693e+05
GM: min|aij| = 4.065e-01 max|aij| = 2.460e+00 ratio = 6.052e+00
EQ: min|aij| = 1.652e-01 max|aij| = 1.000e+00 ratio = 6.052e+00
Constructing initial basis...
Size of triangular part is 1156
0: obj = 1.914903944e+07 inf = 8.143e+06 (60)
68: obj = 7.130756139e+10 inf = 0.000e+00 (0)
* 266: obj = 2.358801019e+10 inf = 1.920e-10 (0) 1
OPTIMAL LP SOLUTION FOUND
Time used: 0.0 secs
Memory used: 1.6 Mb (1728515 bytes)
Writing basic solution to '/home/okan/Desktop/urbs-oemof/tmpk76ybo_5.glpk.raw'...
2683 lines were written
我想比较两个模型的 GLPKMemory used
和Time used
。我将如何得到这个Memory used
以及Time used
作为 python 中的浮点值?有办法吗?或者你还能给我什么,最终做同样的事情?
解决方案
我不知道是否有更直接的方法,但这就是我从求解器日志中检索信息的方式。:
解决问题,同时将求解器日志文件保存在您以后可以获取的位置。
results = opt.solve(model, logfile='MySolverLogFile.txt')
- 使用 python 文件阅读器打开日志文件并将整个文件作为字符串检索。
- 在字符串中搜索您的关键字。确保进行非常严格的搜索。这意味着,如果你的内存使用情况是这样
"Memory used: "
,不要只搜索"Memory"
,搜索整个单词,包括双点和空格,以避免出现错误。 - 通过将文本“已用内存:”存储到变量中,使找到的值成为已用内存量。
如果您对其进行编码以使其接受其他关键字,您将能够检索许多其他信息。但是,如果您更改求解器,则必须更改从求解器日志中检索这些信息的方式。
推荐阅读
- javascript - Javascript - 捕获离开站点用户的离开并取消操作
- pandas - 按日期或匿名函数过滤 Panda 系列
- rest - 返回服务器可用内容类型的 HTTP 标头
- c# - C# 将钱的小数转换为整数
- android - AndroidStudio 仍然认为 drawable 的 id 被丢失的资源占用
- node.js - 使用 VueJs 从 USB 扫描仪进行文档扫描
- c++ - 标准 cpp 数据结构和 pthread 互斥锁?
- javascript - 带有单选按钮和 jQuery 的下拉菜单
- python-3.x - Dask - 试图读取 hdfs 数据得到错误 ArrowIOError: HDFS 文件不存在
- django - 重定向到绝对 URL