Проблема с DoCplex MILP: параллельный запуск Benders

#python #linear-programming #cplex #mixed-integer-programming #docplex

#питон #линейное программирование #cplex #смешанное целочисленное программирование #docplex

Вопрос:

Я работаю над моделью MILP (в DoCplex), и решатель быстрее достигает решения с помощью метода Benders, а иногда и с использованием Branch amp; Bound. Есть ли простой способ запустить оба метода решения параллельно без изменения имен переменных (клонирование модели) на одной и той же модели. И используйте выходные данные из одного из решений.

Ответ №1:

Вы не можете решить одну и ту же модель с помощью двух алгоритмов одновременно. Однако должно быть легко создать одну и ту же модель дважды, а затем решить ее одновременно в двух разных потоках или процессах. Для этого вам придется использовать модули threading или multiprocessing Python.

Одним из очень простых и удобных способов в Unix-подобной операционной системе (например, Linux или macOS) было бы использовать os.fork() для создания нового процесса для каждого решения, а затем управлять ими из начального процесса. fork() неявно клонирует модель, поэтому это может сэкономить вам несколько строк программирования.

Комментарии:

1. Для // run вы также можете взглянуть на github.com/PhilippeCouronne/docplex_contribs/blob/master / … в linkedin.com/pulse /…