преимущества cplex в pyomo по сравнению с cplex в python

Я давно использую GAMS, но не могу использовать весь функционал CPLEX под GAMS. Можете ли вы сделать это с помощью Pyomo? или используя CPLEX прямо в Python? Спасибо!


person Salva    schedule 21.04.2017    source источник


Ответы (1)


Преимущество использования Pyomo заключается в том, что это язык моделирования, который не зависит от базового решателя, который используется для решать проблему. Например, вы можете написать свою модель, а затем решить ее с помощью glpk. Изменив параметр командной строки, вы можете решить ту же модель с помощью CPLEX, Gurobi и т. Д. Он предоставляет множество возможностей, таких как поддержка распределенной оптимизации и позволяет вам использовать свой собственный решатель, если хотите (см. Документацию).

CPLEX Python API находится на другом конце спектра. Это не язык моделирования. Это относительно легкий слой, который охватывает нижележащий Вызываемая библиотека CPLEX (C API). Переменные, ограничения и т. Д. Упоминаются по индексу или имени. Это позволяет вам делать практически все, что можно сделать в вызываемой библиотеке. В этом смысле он дает вам максимальный доступ к функциям CPLEX (даже к расширенным возможностям, таким как обратные вызовы).

Вариант, который находится где-то посередине, - это DOCplex. DOCplex - это язык моделирования с открытым исходным кодом, предоставляемый IBM, который позволяет решать задачи в облаке или локально. Он поддерживает CPLEX для математического программирования, а также CP Optimizer для программирования ограничений.

person rkersh    schedule 21.04.2017
comment
Спасибо, rkersh! Знаете ли вы, как pyomo сравнивается с gams с точки зрения доступа к функциональности CPLEX? Например, в разделе gams вы можете останавливать алгоритм браша и привязки каждый раз, когда будет найдено новое действующее решение. Можно ли это сделать и под pyomo? - person Salva; 23.04.2017
comment
Я сомневаюсь, что. Вот некоторое указание, хотя речь идет о другом большом коммерческий решатель. Это также нехарактерно для языков оптимизации высокого уровня, особенно для языков с открытым исходным кодом. Единственный, о котором я знаю, это JuMP. Но это явно не питон. - person sascha; 23.04.2017