4

如何从 GEKKO 获得关于解决我的模型需要多长时间的输出?我知道基于Python 中经过的测量时间,我可以让我的代码打印运行我的代码所花费的总时间,但我不知道如何隔离求解器时间。

from gekko import GEKKO
import time
start = time.time()
m = GEKKO(remote=False)
x = m.Var(value=0)
y = m.Var(value=1)
m.Equations([x + 2*y==0, x**2+y**2==1])
s1 = time.time()
m.solve(disp=True)
e1 = time.time()
print([x.value[0],y.value[0]])
end = time.time()
print('Total Elapsed: ' + str(end-start))
print('Solver Time 1: ' + str(e1-s1))

求解器时间 1 列为0.18468秒,但这与 IPOPT 报告的0.0156秒时间不同。如何以编程方式获取求解器报告的时间?

EXIT: Optimal Solution Found.

 The solution was found.

 The final value of the objective function is  0.

 ---------------------------------------------------
 Solver         :  IPOPT (v3.12)
 Solution time  :  0.0156 sec
4

1 回答 1

3

您可以查看求解器报告的时间,m.options.SOLVETIME例如:

print('Solver Time 2: ', m.options.SOLVETIME)

Solver Time 1包括设置和解决方案转移。您可以通过不显示求解器输出disp=False并在本地求解而不是在远程服务器上使用remote=False. 本地解决方案通常会减少发送到服务器和检索解决方案所需的时间,但本地解决方案的求解器选项较少。

于 2019-11-21T19:52:40.757 回答