Я довольно новичок в Pyomo и оптимизации. Я пытаюсь решить итеративный алгоритм локального поиска, где мне приходится решать «относительно небольшие» задачи оптимизации несколько раз. На данный момент я реализовал цикл, в котором каждый раз формулирую задачу оптимизации и решаю ее с помощью Gurobi. Однако мне было интересно, есть ли «параллельный» способ справиться с этим, поскольку результаты локальных поисков не влияют друг на друга. Я посмотрел как ThreadPoolExecutor и ProcessPoolExecutor. Первый не улучшает скорость, а второй дает мне некоторую ошибку. Есть ли у вас предложения? Это несколько строк кода, чтобы дать представление. Спасибо.
def task(input)
###optimization formulation
#optimization solver (gurobi)
return (result_optimization)
def main():
with concurrent.futures.ProcessPoolExecutor(max_workers=2) as executor:
future_task={executor.submit(task,number): number for number i list_local_searches}
for future in concurrent.futures.as_completed(future_task):
results_local_searches.append(future.result())
if __name__ == '__main__':
main()