【发布时间】:2019-11-16 05:19:35
【问题描述】:
有时我的 Python Gekko 应用程序使用一个求解器比另一个求解器解决得更好。很难预测哪个求解器的性能最好。因为 Python Gekko 支持使用 m.GEKKO(server='http://{address}') 在不同服务器上进行本地或远程求解,是否可以创建一个并行的 Gekko 应用程序,该应用程序将在任意数量的计算机(包括本地)上同时尝试所有求解器,然后在第一个进程时终止其他进程一个成功返回?我一直在研究 Python 的多线程和并行包。有没有可以与 Gekko 一起很好地进行并行求解的方法?这是一个顺序原型:
from gekko import GEKKO
m = GEKKO()
x = m.Var(); y = m.Var()
m.Equation(x**2+y**2==1)
m.Maximize(x+y)
# try all solvers
for i in range(1,4):
m.options.SOLVER = i
m.solve()
if m.options.APPSTATUS==1:
print('Success: ' + str(i))
【问题讨论】:
-
这有帮助吗? apmonitor.com/me575/index.php/Main/ParallelComputing 我不确定是使用
multiprocessing进行并行处理还是使用threading进行多线程应用程序是最好的。如果您在联网的计算机集群上求解,多线程似乎会更好,因为您的主脚本可以按顺序生成这些脚本,然后等待第一个返回。 -
这里有一些关于如何在一个线程完成后终止其他线程的信息:stackoverflow.com/questions/17564804/…
标签: python parallel-processing gekko