параллельная оптимизация pyomo-gurobi - PullRequest
0 голосов
/ 08 сентября 2018

Я довольно новичок в 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()

1 Ответ

0 голосов
/ 09 сентября 2018

Вы можете столкнуться с проблемами лицензирования, в зависимости от вашей лицензии Gurobi. Имея академическую лицензию, в настоящее время я могу запускать только один процесс Gurobi на машину за один раз.

Существует лицензия на сайт, которая может устранить эту проблему, но вы обязаны обладать полномочиями для ее правильной настройки.

...