Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Задачи линейного программированияВ предыдущих главах мы занимались только методологией исследования операций — классификацией задач, подходами к их решению и т. д., оставляя в стороне математический аппарат. В этой и последующих главах мы бегло рассмотрим некоторые из математических методов, широко применяемых в исследовании операций. В подробности этих методов не будем входить (научиться их применять по этой книжке нельзя); главное внимание обратим на их принципиальные основы. Выше мы уже упоминали о самых простых задачах, где выбор показателя эффективности (целевой функции) W достаточно явно диктуется целевой направленностью операции, а ее условия известны заранее (детерминированный случай). Тогда показатель эффективности зависит только от двух групп параметров: заданных условий а и элементов решения х, т. е. W=W (a, x). (7.1) Напомним, что в числе заданных условий ос фигурируют и ограничения, налагаемые на элементы решения. Пусть решение х представляет собой совокупность п элементов решения х1, x2, ..., xn (иначе — n-мерный вектор): x = (x1, x2, …, xn ). Требуется найти такие значения х1, х2, ..., xn, которые обращают величину W в максимум или в минимум (оба слова в математике объединяются под одним термином «экстремум»). Такие задачи — отыскания значений параметров, обеспечивающих экстремум функции при наличии ограничений, наложенных на аргументы, носят общее название задач математического программирования 1). Трудности, возникающие при решении задач математического программирования, зависят: а) от вида функциональной зависимости, связывающей W с элементами решения, б) от «размерности» задачи, т. е. от количества элементов решения х1, х2, ..., xn, и в) от вида и количества ограничений, наложенных на элементы решения.
1) Слово «программирование» заимствовано из зарубежной литературы и попросту означает «планирование».
Среди задач математического программирования самыми простыми (и лучше всего изученными) являются так называемые задачи линейного программирования. Характерно для них то, что: а) показатель эффективности (целевая функция) W линейно зависит от элементов решения х1, х2, ..., xn и б) ограничения, налагаемые на элементы решения, имеют вид линейных равенств или неравенств относительно х1, х2, ..., xn. Такие задачи довольно часто встречаются на практике, например, при решении проблем, связанных с распределением ресурсов, планированием производства, организацией работы транспорта и т. д. Это и естественно, так как во многих задачах практики «расходы» и «доходы» линейно зависят от количества закупленных или утилизированных средств (например, суммарная стоимость партии товаров линейно зависит от количества закупленных; единиц; оплата перевозок производится пропорционально весам перевозимых грузов и т. д.). Разумеется, нельзя считать, что все встречающиеся на практике типы зависимостей линейны; можно ограничиться более скромным утверждением, что линейные (и близкие к линейным) зависимости встречаются часто, а это уже много значит. Приведем несколько примеров задач линейного программирования. 1. Задача о пищевом рационе. Ферма производит откорм скота с коммерческой целью. Для простоты допустим, что имеется всего четыре вида продуктов: П1, П2, П3, П4; стоимость единицы каждого продукта равна соответственно с1, с2, с3,, с4. Из этих продуктов требуется составить пищевой рацион, который должен содержать: белков — не менее b1 единиц; углеводов — не менее b2 единиц; жиров — не менее b3 единиц. Для продуктов П1, П2, П3, П4 содержание белков, углеводов и жиров (в единицах на единицу продукта) известно и задано в таблице 7.1, где aij (i==1, 2, 3, 4; j=1, 2, 3) — какие-то определенные числа; первый индекс указывает номер продукта, второй — номер элемента (белки, углеводы, жиры)1). Требуется составить такой пищевой рацион (т. е. назначить количества продуктов П1, П2, П3, П4, входящих в него), чтобы условия по белкам, углеводам и жирам были выполнены и при этом стоимость рациона была минимальна.
Таблица 7.1
Составим математическую модель (в данном случае это очень просто). Обозначим х1, х2, x3, x4 количества продуктов П1, П2, П3, П4, входящих в рацион. Показатель эффективности, который требуется минимизировать,— стоимость рациона (обозначим ее L); она линейно зависит от элементов решения х1, х2, x3,, x4: L = c1x1+c2x2+c3x3+c4x4, или, короче, L =
Итак, вид целевой функции известен и она линейна. Запишем теперь в виде формул ограничительные условия по белкам, углеводам и жирам. Учитывая, что в одной единице продукта П1 содержится а11 единиц белка, в х1 единицах—а11 х1 единиц белка, в х2 единицах продукта П2 содержится а21 х2 единиц белка и т. д., получим три неравенства:
Эти линейные неравенства представляют собой ограничения, накладываемые на элементы решения x1, x2, x3, x4,.
1) Разумеется, мы могли бы для «оживления» материала задать как числа b1, b2, b3,, так и числа аij вполне конкретными значениями, но это все равно не создало бы у читателя впечатления, что автор — специалист по откорму скота.
Таким образом, поставленная задача сводится к следующей: найти такие неотрицательные значения переменных х1, x2, x3, x4, чтобы они удовлетворяли ограничениям — неравенствам (7.3) и одновременно обращали в минимум линейную функцию этих переменных: L ==
Перед нами — типичная задача линейного программирования. Не останавливаясь покуда на способах ее решения, приведем еще три примера аналогичных задач.
Таблица 7.2
2. Задача о планировании производства. Предприятие производит изделия трех видов: U1, U2, U3. По каждому виду изделия предприятию спущен план, по которому оно обязано выпустить не менее b1 единиц изделия U1, не менее b2 единиц изделия U2 и не менее b3 единиц изделия U3. План может быть перевыполнен, но в определенных границах; условия спроса ограничивают количества произведенных единиц каждого типа: не более соответственно При реализации одно изделие U1 приносит предприятию прибыль c1, U2 — прибыль c2, U3 — прибыль c3. Требуется так спланировать производство (сколько каких изделий производить), чтобы план был выполнен или перевыполнен (но при отсутствии «затоваривания»), а суммарная прибыль обращалась в максимум. Запишем задачу в форме задачи линейного программирования. Элементами решения будут x1, x2, x3, — количества единиц изделий U1, U2, U3, которые мы произведем. Обязательность выполнения планового задания запишется в виде трех ограничений-неравенств:
x1 .
Отсутствие излишней продукции (затоваривания) даст нам еще три ограничения-неравенства:
Кроме того, нам должно хватить сырья. Соответственно четырем видам сырья будем иметь четыре ограничения-неравенства:
Прибыль, приносимаяпланом (x1, x2, x3) , будет равна
L = c1x1 + c2x2 + c3x3. (7.7)
Таким образом, мы снова получили задачу линейного программирования: найти (подобрать) такие неотрицательные значения переменных x1, x2, x3, чтобы они удовлетворяли неравенствам-ограничениям (7.4), (7.5), (7.6) и, вместе с тем, обращали в максимум линейную функцию этих переменных:
L = c1x1 + c2x2 + c3x3 =>max. (7.8)
Задача очень похожа на предыдущую, разница в том, что неравенств-ограничений здесь больше и вместо «минимума» стоит «максимум» (а мы уже знаем, что это несущественно). В следующей задаче мы уже встретимся с другого вида ограничениями. 3. Задача о загрузке оборудования. Ткацкая фабрика располагает двумя видами станков, из них N1 станков типа 1 и N2 станков типа 2. Станки могут производить три вида тканей: Т1, Т2, Т3, но с разной производительностью. Данные я„ производительности станков даны в таблице 7.3 (первый индекс — тип станка, второй — вид ткани). Каждый метр ткани вида Т1 приносит фабрике доход с1, вида Т2 – доход с2, Т3 – доход с3. Фабрике предписан план, согласно которому она должна производить в месяц не менее b1 метров ткани Т1, b2 метров ткани Т2, b3 метров ткани Т3; количество метров каждого вида ткани не должно превышать соответственно
Таблица 7.3
На первый (легкомысленный) взгляд поставленная здесь задача — родная сестра предыдущей. Рука так и тянется обозначить x1, х2, х3 количества тканей Т1, Т2, Т3 в плане и максимизировать суммарный доход с1 х1 + c2x2 + c3x3. Но не торопитесь и спросите себя: а где же тут возможности оборудования? Поразмыслив, мы увидим, что в этой задаче элементы решения — не количества тканей каждого вида, а количества станков типов 1 и 2, занятых производством тканей каждого вида. Здесь удобно обозначить элементы решения буквами х с двумя индексами (первый — тип станка, второй — вид ткани). Всего будет шесть элементов решения:
Здесь x11 — количество станков типа 1, занятых изготовлением ткани Т1, x12 — количество станков типа 1, занятых изготовленном ткани Т2, и т. д. Перед нами — еще одна задача линейного программирования. Запишем сначала условия-ограничения, наложенные на элементы решения хij. Прежде всего обеспечим выполнение плана. Это даст нам три неравенства-ограничения:
После этого ограничим перевыполнение плана; это даст нам еще три неравенства-ограничения:
Теперь запишем ограничения, связанные с наличием оборудования и его полной загрузкой. Суммарное количество станков типа 1, занятых изготовлением всех тканей, должно быть равно N1; типа 2 — N2. Отсюда еще два условия — на этот раз равенства:
Теперь запишем суммарный доход от производства всех видов тканей. Суммарное количество метров ткани T1, произведенное всеми станками, будет равно a11x11 + a21x21 .и принесет доход с1 (а11 х11 + а21 х21). Рассуждая аналогично, найдем суммарный доход фабрики за месяц при плане (7.9):
L = c1 (a11x11 + a21x21 ) + c2 (a12x12 + a22x22) + c3 (a13x13 + a23x23), или, гораздо короче,
Эту линейную функцию шести аргументов мы хотим обратить в максимум: L => max. Перед нами — опять задача линейного программирования: найти такие неотрицательные значения переменных x11, x12, ..., x23, которые, во-первых, удовлетворяли бы ограничениям-неравенствам (7.10), (7.11), во-вторых — ограничениям-равенствам (7.12) и, наконец, обращали бы в максимум линейную функцию этих переменных (7.13). В этой задаче линейного программирования шесть ограничений-неравенств и два ограничения-равенства. 4. Задача о снабжении сырьем. Имеются три промышленных предприятия: П1, П2, П3, требующих снабжения определенным видом сырья. Потребности в сырье каждого предприятия равны соответственно а1, а2, а3 единиц. Имеются пять сырьевых баз, расположенных от предприятий па каких-то расстояниях и связанных с ними путями сообщения с разными тарифами. Единица сырья, получаемая предприятием Пi с базы Бj обходится предприятию в cij рублей (первый индекс — номер предприятия, второй — номер базы, см. таблицу 7.4). Таблица 7.4
Возможности снабжения сырьем с каждой базы ограничены ее производственной мощностью: базы Б1, Б2, Б3, Б4, могут дать не более b1, b2, b3, b4, b5 единиц сырья. Требуется составить такой план снабжения предприятий сырьем (с какой базы, куда и какое количество сырья везти), чтобы потребности предприятий были обеспечены при минимальных расходах на сырье. Опять поставим задачу линейного программирования. Обозначим хij количество сырья, получаемое i-м предприятием с j-и базы. Всего план будет состоять из 15 элементов решения:
Введем ограничения по потребностям. Они состоят в том, что каждое предприятие получит нужное ему количество сырья (ровно столько, сколько ему требуется):
Далее напишем ограничения-неравенства, вытекающие из производственных мощностей баз:
Наконец, запишем суммарные расходы на сырье, которые мы хотим минимизировать. С учетом данных табл. 7.4 получим (пользуясь знаком двойной суммы):
L =
Опять перед нами задача линейного программирования: найти такие неотрицательные значения переменных xij которые удовлетворяли бы ограничениям-равенствам (7.15), ограничениям-неравенствам (7.16) и обращали бы в минимум их линейную функцию (7.17). Таким образом, мы рассмотрели несколько задач линейного программирования. Все они сходны между собой, разнятся только том, что в одних требуется обратить линейную функцию в максимум, в других — в минимум; в одних ограничения — только неравенства, в других — как равенства, так и неравенства. Бывают задачи линейного программирования, где все ограничения — равенства. Эти различия несущественны, так как от ограничений-неравенств легко переходить к ограничениям-равенствам и обратно, как будет показано в следующем параграфе. |
|||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2016-06-09 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |