#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 /…