Иллюстрированный самоучитель по Mathematica

Решение задач линейного программирования


Две последние функции решают типовые задачи линейного программирования. В дополнение к ним может использоваться функция

LinearProgramming[с, m, b]

которая ищет вектор х, минимизирующий величину с. х в соответствии с условиями m.x>=b и х>=0.

Рассмотрим типичный пример на линейное программирование. Пусть цех малого предприятия должен изготовить 100 изделий трех типов, причем не менее 20 штук каждого. На изготовление этих изделий уходит, соответственно, 4, 3,4 и 2 кг металла. Имеющийся в наличии запас материала — 700 кг. Спрашивается, сколько изделий xl, х2 и хЗ каждого типа надо выпустить для обеспечения максимальной стоимости продукции, если цена изделий равна, соответственно, 4, 3 и 2 рубля.



Ниже представлено решение этой задачи с помощью функции ConstrainedMax:

ConstrainedMax [

4 * xl + 3 * x2 + 2 * хЗ ,

{xl >= 20, x2 >= 20, хЗ >= 20,

4 * xl + 3 . 4 * x2 + 2 * x3 <= 340 ,

4 .75 * xl + 11 * x2 + 2 * x3 < = 700 ,

xl + x2 + x3 == 100},

{xl, x2, x3}]

{332., {xl^ 56^x2^ 20., x3^24.}}

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

Задачи минимизации традиционно относятся к сложным задачам программирования — особенно при поиске глобального минимума. Наличие в ядре системы Mathematica их реализаций делает систему привлекательной для решения задач этого класса.



Содержание раздела