Gurobi:获取优化运行时间

4 投票
1 回答
9203 浏览
提问于 2025-04-18 02:48

我想知道在用Python运行gurobi进行数学优化问题时,找到模型m的最佳解决方案花了多少时间。

到目前为止,我使用的是

runtime = m.Runtime
print("The run time is %f" % runtime)

但是,返回的运行时间总是0.0,无论解决模型花了多长时间,而且在没有达到任何时间限制之前也是这样。

    m.setParam("TimeLimit", timeLimit)

我该如何通过gurobipy在gurobi中获取实际的运行时间呢?我看过Gurobi参考手册,但没有成功。

1 个回答

5

我刚刚尝试在assignment.py这个示例文件中添加了一行代码,结果它似乎能正常打印出运行时间。

print m.Runtime

你确定你是在调用m.optimize()之后,但在调用m.update()或者其他任何会重置模型运行时间的操作之前调用它吗?试着在m.optimize()之后立即打印运行时间。

补充说明:我刚意识到assignment.py是我自己的代码,而不是示例问题。

from gurobipy import *
from numpy import *

numT = 300;
numC = 300;

Assignment = random.random((numT,numC))

m=Model("Assignment")

X = []
for t in range(numT):
    X.append([])
    for c in range(numC):
        X[t].append(m.addVar(vtype=GRB.BINARY,name="X%d%d"% (t, c)))
m.update()
m.modelSense = GRB.MAXIMIZE
constraintT = []
constraintC = []
for t in range(numT):
    constraintT.append(m.addConstr(quicksum(X[t][c] for c in range(numC)) == 1 ,'constraintT%d' % t))

for c in range(numC):
    constraintT.append(m.addConstr(quicksum(X[t][c] for t in range(numT)) == 1 ,'constraintC%d' % t))

m.setObjective(quicksum(quicksum([X[t][c]*Assignment[t][c] for c in range(numC)]) for t in range(numT)))

m.update()
m.optimize()

print 'runtime is',m.Runtime

撰写回答