Иногда мое приложение 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))
multiprocessing
или многопоточное приложение сthreading
. Кажется, что многопоточность была бы лучше, если бы вы решали в сетевом кластере компьютеров, потому что ваш основной скрипт может порождать их последовательно, а затем ждать возврата первого. - person John Hedengren   schedule 16.11.2019