2016-06-09 1 views
1

Есть ли какая-либо реализация модели линейной оптимизации в python, которая позволяет явно определять типы моих переменных. Например, я хочу, чтобы моя переменная была целыми. Я могу определить это при использовании lpSolve в R нравится:Модель линейной оптимизации с указанными типами для переменной

set.type(model, 1:18,type = "integer") 

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

Существует реализация scipy linprog, но она не позволяет определить тип моих переменных.

ответ

2

Поскольку IP (Целочисленное программирование) и LP (линейное программирование) решаются с помощью самых разных алгоритмов, вполне закономерно, что некоторые решатели не позволяют смешивать оба (IMO): IP имеет экспоненциальную сложность и LP - полиномиальную сложность. Ваша проблема - это MILP (смешанное целочисленное линейное программирование), которое, таким образом, является экспоненциальной сложностью, поэтому вам нужен MILP solver for Python. Но имейте в виду, что если вы вводите множество целочисленных переменных, даже небольшие проблемы могут стать очень трудными для решения. Linprog от Scipy - это просто решатель LP в соответствии с документацией.

И, кстати, похоже, что есть и python interface to lpsolve, и еще один интерфейс pylpsolve, который выглядит более современным. Я дал pylpsolve попробовать и смог клонировать из репозитория github и устанавливать его, вы можете взглянуть на эту функцию (согласно тому, что я сказал ранее, вы заметите, что имена запутаны ...)

>>> from pylpsolve import LP 
>>> help(LP.setInteger) 
Смежные вопросы