Вопрос

Я использую IDE lpluve, чтобы решить проблему LP.Я должен проверить модель против 10 или 20 наборов разных параметров и сравнить их.

Есть ли для меня, чтобы удерживать общую модель, но указать константы, как я желаю?Например, если у меня есть следующие ограничения:

A >= [c]*B

Я хочу проверить, как модель ведет себя, когда [c] = 10, [c] = 20 и так далее.На данный момент я просто готовлю разные файлы .lp через поиск и заменить, но:

a) Это не кажется слишком эффективным

b) В какой-то момент мне нужно рассмотреть ограничение формы A >= B/[c] // =(1/[c]*B).Похоже, однако, что LPERVOLVE не оказывает воспроизведение оператора дивизии.Указывает 1/[c] прямо каждый раз, когда единственный вариант?

Это было полезно?

Решение

Не совсем понятно, какой формат вы используете с lp_solve. Например, с форматом CPLEX LP, нет лучшего способа: вы не можете использовать разделение для коэффициента (или даже умножения на этот вопрос), и нет функции «включить» другой файл или ввести символические имена для параметра. Это очень простой язык, а не подходит для любой сложной задачи.

Есть несколько решений для вашей проблемы; Это зависит, если вы заинтересованы в чем-то быстром реализации, или «чистый», многоразовый и с короткой средой выполнения (конечно, это компромисс).

  1. У вас есть возможность генерировать ваши файлы LP с другого языка, например, Python, Bash и т. Д. Это «быстрое и грязное» решение: очень медленно во время выполнения, но, вероятно, тем быстрее реализовать.

  2. Как знаешь каждый вилвер Lp, lp_solve поставляется с несколькими интерфейсами моделирования: вы можете, например, использовать GNU MP формат вместо текущего. Он распознает умножение, подразделения, условные условия и т. Д. (Все, что вы ищете, см. Раздел 3.1 «Числовые выражения»)

  3. Наконец, у вас есть возможность использовать непосредственно интерфейс lp_solve с другого языка программирования (например, c), который будет самым гибким вариантом, но это может потребоваться немного больше работы.

  4. Смотрите

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top