Главная > Математика > Исследование операций: задачи, принципы, методология
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

ГЛАВА 3. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ

§ 7. Задачи линейного программирования

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

Выше мы уже упоминали о самых простых задачах, где выбор показателя эффективности (целевой функции) W достаточно явно диктуется целевой направленностью операции, а ее условия известны заранее (детерминированный случай). Тогда показатель эффективности зависит только от двух групп параметров: заданных условий а и элементов решения т. е.

Напомним, что в числе заданных условий а фигурируют и ограничения, налагаемые на элементы решения. Пусть решение представляет собой совокупность элементов решения (иначе -мерный вектор):

Требуется найти такие значения которые обращают величину W в максимум или в минимум (оба слова в математике объединяются под одним термином «экстремум»).

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

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

Среди задач математического программирования самыми простыми (и лучше всего изученными) являются так называемые задачи линейного программирования. Характерно для них то, что: а) показатель эффективности (целевая функция) W линейно зависит от элементов решения , и б) ограничения, налагаемые на элементы решения, имеют вид линейных равенств или неравенств относительно

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

Разумеется, нельзя считать, что все встречающиеся на практике типы зависимостей линейны; можно ограничиться более скромным утверждением, что линейные (и близкие к линейным) зависимости встречаются часто, а это уже много значит.

Приведем несколько примеров задач линейного программирования.

1. Задача о пищевом рационе.

Ферма производит откорм скота с коммерческой целью. Для простоты допустим, что имеется всего четыре вида продуктов: ; стоимость единицы каждого продукта равна соответственно Из этих продуктов требуется составить пищевой рацион, который должен содержать: белков — не менее единиц; углеводов — не менее единиц; жиров — не менее единиц. Для продуктов содержание белков, углеводов и жиров (в единицах на единицу продукта) известно и задано в таблице 7.1, где — какие-то определенные числа; первый индекс указывает номер продукта, второй — номер элемента (белки, углеводы, жиры).

Требуется составить такой пищевой рацион (т. е. назначить количества продуктов , входящих в него), чтобы условия по белкам, углеводам и жирам были выполнены и при этом стоимость рациона была минимальна.

Таблица 7.1

Составим математическую модель (в данном случае это очень просто). Обозначим количества продуктов входящих в рацион. Показатель эффективности, который требуется минимизировать, — стоимость рациона (обозначим ее L); она линейно зависит от элементов решения

или, короче,

Итак, вид целевой функции известен и линейна. Запишем теперь в виде формул ограничительные условия по белкам, углеводам и жирам. Учитывая, что в одной единице продукта содержится единиц белка, в единицах единиц белка, в единицах продукта содержится единиц белка и т. д., получим три неравенства:

Эти линейные неравенства представляют собой ограничения, накладываемые на элементы решения

Таким образом, поставленная задача сводится к следующей: найти такие неотрицательные значения переменных , чтобы они удовлетворяли ограничениям — неравенствам (7.3) и одновременно обращали в минимум линейную функцию этих переменных:

Перед нами — типичная задача линейного программирования. Не останавливаясь покуда на способах ее решения, приведем еще три примера аналогичных задач.

Таблица 7.2

2. Задача о планировании производства.

Предприятие производит изделия трех видов: По каждому виду изделия предприятию спущен план, по которому оно обязано выпустить не менее единиц изделия не менее единиц изделия и не менее единиц изделия План может быть перевыполнен, но в определенных границах; условия спроса ограничивают количества произведенных единиц каждого типа: не более соответственно единиц. На изготовление изделий идет какое-то сырье; всего имеется четыре вида сырья: причем запасы ограничены числами единиц каждого вида сырья. Теперь надо указать, какое количество сырья каждого вида идет на изготовление каждого вида изделий. Обозначим количество единиц сырья вида , потребное на изготовление одной единицы изделия . Первый индекс у числа — вид изделия, второй — вид сырья. Значения сведены в таблицу (матрицу) — см. таблицу 7.2.

При реализации одно изделие приносит предприятию прибыль — прибыль — прибыль . Требуется так спланировать производство (сколько каких изделий производить), чтобы план был выполнен или перевыполнен (но при отсутствии «затоваривания»), а суммарная прибыль обращалась в максимум.

Запишем задачу в форме задачи линейного программирования. Элементами решения будут — количества единиц изделий которые мы произведем. Обязательность выполнения планового задания запишется в виде трех ограничений-неравенств:

Отсутствие излишней продукции (затоваривания) даст нам еще три ограничения-неравенства:

Кроме того, нам должно хватить сырья. Соответственно четырем видам сырья будем иметь четыре ограничения-неравенства:

Прибыль, приносимая планом будет равна

Таким образом, мы снова получили задачу линейного программирования: найти (подобрать) такие неотрицательные значения переменных чтобы они удовлетворяли неравенствам-ограничениям (7.4), (7.5), (7.6) и, вместе с тем, обращали в максимум линейную функцию этих переменных:

Задача очень похожа на предыдущую, разница в том, что неравенств-ограничений здесь больше и вместо «минимума» стоит «максимум» (а мы уже знаем, что это несущественно).

В следующей задаче мы уже встретимся с другого вида ограничениями.

3. Задача о загрузке оборудования.

Ткацкая фабрика располагает двумя видами станков, из них станков типа 1 и станков типа 2. Станки могут производить три вида тканей: но с разной производительностью. Данные производительности станков даны в таблице 7.3 (первый индекс — тип станка, второй — вид ткани).

Каждый метр ткани вида приносит фабрике доход вида — доход — доход

Фабрике предписан план, согласно которому она должна производить в месяц не менее метров ткани метров ткани метров ткани количество метров каждого вида ткани не должно превышать соответственно метров. Кроме того, все без исключения станки должны быть загружены.

Требуется так распределить загрузку станков производством тканей , чтобы суммарный месячный доход был максимален.

Таблица 7.3

На первый (легкомысленный) взгляд поставленная здесь задача — родная сестра предыдущей. Рука так и тянется обозначить количества тканей в плане и максимизировать суммарный доход Но не торопитесь и спросите себя: а где же тут возможности оборудования? Поразмыслив, мы увидим, что в этой задаче элементы решения — не количества тканей каждого вида, а количества станков типов 1 и 2, занятых производством тканей каждого вида. Здесь удобно обозначить элементы решения буквами с двумя индексами (первый — тип станка, второй — вид ткани). Всего будет шесть элементов решения:

(7.9)

Здесь — количество станков типа 1, занятых изготовлением ткани — количество станков типа 1, занятых изготовлением ткани и т. д.

Перед нами — еще одна задача линейного программирования. Запишем сначала условия-ограничения, наложенные на элементы решения Прежде всего обеспечим выполнение плана. Это даст нам три неравенства-ограничения:

После этого ограничим перевыполнение плана; это даст нам еще три неравенства-ограничения:

Теперь запишем ограничения, связанные с наличием оборудования и его полной загрузкой. Суммарное количество станков типа 1, занятых изготовлением всех тканей, должно быть равно типа Отсюда еще два условия — на этот раз равенства:

Теперь запишем суммарный доход от производства всех видов тканей. Суммарное количество метров ткани произведенное всеми станками, будет равно и принесет доход . Рассуждая аналогично, найдем суммарный доход фабрики за месяц при плане (7.9):

или, гораздо короче,

Эту линейную функцию шести аргументов мы хотим обратить в максимум:

Перед нами — опять задача линейного программирования: найти такие неотрицательные значения переменных которые, во-первых, удовлетворяли бы ограничениям-неравенствам (7.10), (7.11), во-вторых — ограничениям-равенствам (7.12) и, наконец, обращали бы в максимум линейную функцию этих переменных (7.13). В этой задаче линейного программирования шесть ограничений-неравенств и два ограничения-равенства.

4. Задача о снабжении сырьем.

Имеются три промышленных предприятия: требующих снабжения определенным видом сырья.

Потребности в сырье каждого предприятия равны соответственно единиц. Имеются пять сырьевых баз, расположенных от предприятии на каких-то расстояниях и связанных с ними путями сообщения с разными тарифами. Единица сырья, получаемая предприятием с базы обходится предприятию в рублей (первый индекс — номер предприятия, второй — номер базы, см. таблицу 7.4).

Таблица 7.4

Возможности снабжения сырьем с каждой базы ограничены ее производственной мощностью: базы могут дать не более единиц сырья. Требуется составить такой план снабжения предприятий сырьем (с какой базы, куда и какое количество сырья везти), чтобы потребности предприятий были обеспечены при минимальных расходах на сырье.

Опять поставим задачу линейного программирования. Обозначим количество сырья, получаемое предприятием с 7-й базы. Всего план будет состоять из 15 элементов решения:

Введем ограничения по потребностям. Они состоят в том, что каждое предприятие получит нужное ему количество сырья (ровно столько, сколько ему требуется):

Далее напишем ограничения-неравенства, вытекающие из производственных мощностей баз:

Наконец, запишем суммарные расходы на сырье, которые мы хотим минимизировать. С учетом данных табл. 7.4 получим (пользуясь знаком двойной суммы):

(7.17)

Опять перед нами задача линейного программирования: найти такие неотрицательные значения переменных которые удовлетворяли бы ограничениям-равенствам (7.15), ограничениям-неравенствам (7.16) и обращали бы в минимум их линейную функцию (7.17).

Таким образом, мы рассмотрели несколько задач линейного программирования. Все они сходны между собой, разнятся только тем, что в одних требуется обратить линейную функцию в максимум, в других — в минимум; в одних ограничения — только неравенства, в других — как равенства, так и неравенства. Бывают задачи линейного программирования, где все ограничения — равенства. Эти различия несущественны, так как от ограничений-неравенств легко переходить к ограничениям-равенствам и обратно, как будет показано в следующем параграфе.

<< Предыдущий параграф Следующий параграф >>
Оглавление