Решить линейное уравнение с ограничениями - PullRequest
0 голосов
/ 09 апреля 2019

Я довольно новичок в предмете линейного программирования и буду признателен за любые указатели.

У меня есть немного сложное уравнение, но вот более простая версия задачи:

x1 + x2 = 10 
#subject to the following constraints: 
0 <= x1 <= 5 and 
3x1 <= x2 <= 20 

В основном x2 должно иметь значение, которое в 3 раза больше значения x1. Так что в этом случае решения: x1 = [0,1,2] и соответственно x2 = [10, 9, 8]

Существует много материала для минимизации или максимизации целевой функции, но это не один из них. Что вы называете решением проблем такого типа, а также каков рекомендуемый способ решения этой проблемы, предпочтительно с использованием некоторых библиотек из Python, которые находят одно или несколько возможных решений?

1 Ответ

0 голосов
/ 12 апреля 2019

Ваша проблема может быть обозначена как

min 0*x1+0*x2 ("zero coefficients")

в зависимости от

x1+x2=10
3x1-x2<=0
x2<=20 (note that this constraint follows from x1,x2>=0 and their sum being 10)

Это может быть легко передано в линейный программный пакет, такой как целлюлоза . Я скорее пользователь R, чем пользователь Python, поэтому не могу предоставить подробности. Вы можете решить это также онлайн без какого-либо программирования.

РЕДАКТИРОВАТЬ: перечитывая ваш вопрос, я вижу, что ваши желаемые решения не являются непрерывными (например, кажется, что вы не ищете [2.5, 7.5] как решение), а ограничены целочисленными значениями. Тогда проблему назвали бы «смешанной целочисленной задачей» вместо «линейной задачи». Однако Pulp должен решить эту проблему, если вы можете объявить переменные x1, x2 как целые числа.

Еще один момент, если вы после ВСЕХ целочисленных решений с учетом ограничений. были некоторые дискуссии об этом здесь на стеке, но я не уверен, что целлюлоза может сделать это из коробки.

...