Matlabs Linprog слишком медленно - PullRequest
2 голосов
/ 24 декабря 2008

Я работаю над приложением matlab, для которого мне нужна значительно улучшенная скорость. Я использую linprog для решения линейной программы с двумя ограничениями, содержащей около 10000 переменных, ограниченных нулем и единицей. Linprog очень медленный для моего приложения. Есть ли способ, которым я могу переформулировать, чтобы улучшить скорость? Или вы знаете какой-нибудь совместимый с Matlab условно-бесплатный программный продукт (у меня ограниченный бюджет), который был бы полезен?

Ответы [ 2 ]

1 голос
/ 17 июля 2012

, если вы не возражаете против реализации, которая не находится в Matlab, но имеет интерфейс, использующий MEX, возможно, glpk и glpkmex могут помочь

http://glpkmex.sourceforge.net/

В качестве альтернативы, lpsolve может также помочь, но это не так хорошо, как библиотека glpk для крупномасштабных задач: http://web.mit.edu/lpsolve/doc/MATLAB.htm

Если вы сможете в этом разобраться, IBM ILOG CPLEX на самом деле является одним из лучших для решения крупномасштабных задач. Имеется интерфейс для matlab (http://www -01.ibm.com / software / интеграции / оптимизация / cplex-optimizer / connectors /), и вы можете попробовать получить расширенную пробную версию, если у вас нет лицензии.

В особых случаях может оказаться возможным значительно упростить вашу задачу, посмотрев на коэффициенты в целевой функции и определив, какое ограничение будет активным в зависимости от ваших ограничений. Переменные, которые не участвуют в активных ограничениях, могут быть установлены на минимальное или максимальное значение (0 или 1, согласно вашему описанию) в зависимости от того, являются ли их коэффициенты в целевой функции положительными или отрицательными, при условии, что вы минимизируете свою целевую функцию. Если вы делаете максимизацию, делайте наоборот. Это уменьшает количество переменных =).

0 голосов
/ 24 июня 2010

Для меня это звучит как линейная программа с рамочными ограничениями (можно назвать связанными ограничениями). Правильно ли вы установили эти ограничения? См. справочник для получения дополнительной информации.

...