Линейное программирование - один из первых и наиболее подробно изученных разделов математического программирования. Именно линейное программирование явилось тем разделом, с которого начала развиваться сама дисциплина «математическое программирование». Термин «программирование» в названии дисциплины ничего общего с термином «программирование (т.е. составление программ) для ЭВМ» не имеет, так как дисциплина «линейное программирование» возникла еще до того времени, когда ЭВМ стали широко применяться при решении математических, инженерных, экономических и др. задач. Термин «линейное программирование» возник в результате неточного перевода английского «linear programming». Одно из значений слова «programming» - составление планов, планирование. Следовательно, правильным переводом «linear programming» было бы не «линейное программирование», а «линейное планирование», что более точно отражает содержание дисциплины. Однако, термин линейное программирование, нелинейное программирование и т.д. в нашей литературе стали общепринятыми.

Итак, линейное программирование возникло после Второй Мировой Войны и стал быстро развиваться, привлекая внимание математиков, экономистов и инженеров благодаря возможности широкого практического применения, а так же математической «стройности».

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

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

Линейное программирование представляет собой наиболее часто используемый метод оптимизации. К числу задач линейного программирования можно отнести задачи:

  • · рационального использования сырья и материалов; задачи оптимизации раскроя;
  • · оптимизации производственной программы предприятий;
  • · оптимального размещения и концентрации производства;
  • · составления оптимального плана перевозок, работы транспорта;
  • · управления производственными запасами;
  • · и многие другие, принадлежащие сфере оптимального планирования.

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

Постановка задачи оптимизации предполагает существование конкурирующих свойств процесса, например:

  • · количество продукции - расход сырья
  • · количество продукции - качество продукции

Выбор компромиcного варианта для указанных свойств и представляет собой процедуру решения оптимизационной задачи.

При постановке задачи оптимизации необходимо:

1. Наличие объекта оптимизации и цели оптимизации. При этом формулировка каждой задачи оптимизации должна требовать экстремального значения лишь одной величины, т.е. одновременно системе не должно приписываться два и более критериев оптимизации, т.к. практически всегда экстремум одного критерия не соответствует экстремуму другого. Приведем примеры.

Типичный пример неправильной постановки задачи оптимизации:

«Получить максимальную производительность при минимальной себестоимости».

Ошибка заключается в том, что ставится задача поиска оптимальности 2-х величин, противоречащих друг другу по своей сути.

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

  • а) получить максимальную производительность при заданной себестоимости;
  • б) получить минимальную себестоимость при заданной производительности;

В первом случае критерий оптимизации - производительность, а во втором - себестоимость.

  • 2. Наличие ресурсов оптимизации, под которыми понимают возможность выбора значений некоторых параметров оптимизируемого объекта.
  • 3. Возможность количественной оценки оптимизируемой величины, поскольку только в этом случае можно сравнивать эффекты от выбора тех или иных управляющих воздействий.
  • 4. Учет ограничений.

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

Критерием оптимальности называется количественная оценка оптимизируемого качества объекта.

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

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

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

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

В общем виде модель записывается следующим образом:

Целевая функция:

При этом aij, bi, cj () - заданные постоянные величины.

Задача состоит в нахождении оптимального значения функции (1.1) при соблюдении ограничений (1.2) и (1.3).

Систему ограничений (1.2) называют функциональными ограничениями задачи, а ограничения (1.3) - прямыми.

Вектор, удовлетворяющий ограничениям (1.2) и (1.3), называется допустимым решением (планом) задачи линейного программирования. План, при котором функция (1.1) достигает своего максимального (минимального) значения, называется оптимальным.

Модели линейного программирования

Многие задачи, с которыми приходится иметь дело в повседневной практике, являются многовариантными. К таким задачам относятся:

Задача об оптимальном использовании ограниченных ресурсов (сырьевых, трудовых, временных);

Задача сетевого планирования и управления;

Задачи массового обслуживания;

Задачи составления расписания (календарного планирования);

Задачи выбора маршрута и другие.

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

Математическое программирование - область математики, разрабатывающая теорию и численные методы решения многомерных экстремальных задач с ограничениями, т. е. задач на экстремум функции многих переменных с ограничениями на область изменения этих переменных.
Функцию, экстремальное значение которой нужно найти в условиях экономических возможностей, называют целевой, показателем эффективности или критерием оптимальности. Экономические возможности формализуются в виде системы ограничений. Все это составляет математическую модель. Математическая модель задачи - это отражение оригинала в виде функций, уравнений, неравенств, цифр и т. д. Модель задачи математического программирования включает:
1) совокупность неизвестных величин, действуя на которые, систему можно совершенствовать. Их называют планом задачи (вектором управления, решением, управлением, стратегией, поведением и др.);
2) целевую функцию (функцию цели, показатель эффективности, критерий оптимальности, функционал задачи и др.). Целевая функция позволяет выбирать наилучший вариант - из множества возможных. Наилучший вариант доставляет целевой функции экстремальное значение. Это может быть прибыль, объем выпуска или реализации, затраты производства, издержки обращения, уровень обслуживания или дефицитности, число комплектов, отходы и т. д.;
Эти условия следуют из ограниченности ресурсов, которыми располагает общество в любой момент времени, из необходимости удовлетворения насущных потребностей, из условий производственных и технологических процессов. Ограниченными являются не только материальные, финансовые и трудовые ресурсы. Таковыми могут быть возможности технического, технологического и вообще научного потенциала. Нередко потребности превышают возможности их удовлетворения. Математически ограничения выражаются в виде уравнений и неравенств. Их совокупность образует область допустимых решений (область экономических возможностей). План, удовлетворяющий системе ограничений задачи, называется допустимым . Допустимый план, доставляющий функции цели экстремальное значение, называется оптимальным. Оптимальное решение, вообще говоря, не обязательно единственно, возможны случаи, когда оно не существует, имеется конечное или бесчисленное множество оптимальных решений.
Оптимизационная задача, в которой целевая функция и неравенства (уравнения), входящие в систему ограничений являются линейными функциями, называется задачей линейного программирования, а соответствующая ей экономико-математическая модель – оптимизационной моделью линейного программирования

Методы и модели линейного программирования широко применяются при оптимизации процессов во всех отраслях народного хозяйства: при разработке производственной программы предприятия, распределении ее по исполнителям, при размещении заказов между исполнителями и по временным интервалам, при определении наилучшего ассортимента выпускаемой продукции, в задачах перспективного, текущего и оперативного планирования и управления; при планировании грузопотоков, определении плана товарооборота и его распределении; в задачах развития и размещения производительных сил, баз и складов систем обращения материальных ресурсов и т. д. Особенно широкое применение методы и модели линейного программирования получили при решении задач экономии ресурсов (выбор ресурсосберегающих технологий, составление смесей, раскрой материалов), производственно-транспортных и других задач.
Начало линейному программированию было положено в 1939 г. советским математиком-экономистом Л. В. Канторовичем в работе «Математические методы организации и планирования производства». Появление этой работы открыло новый этап в применении математики в экономике. Спустя десять лет американский математик Дж. Данциг разработал эффективный метод решения данного класса задач - симплекс-метод. Общая идея симплексного метода (метода последовательного улучшения плана) для решения ЗЛП состоит в следующем:
1) умение находить начальный опорный план;
2) наличие признака оптимальности опорного плана;
3) умение переходить к нехудшему опорному плану.

Ее применяют для определения оптимального способа распределения дефицитных ресурсов при наличии конкурирующих потребностей. Согласно опросу журналом «Форчун» вице-президентов по производству из 500 фирм, модели линейного программирования и управления запасами пользуются в промышленности наибольшей популярностью. Линейное программирование обычно используют специалисты штабных подразделений для разрешения производственных трудностей. Некоторые типичные применения этого метода в управлении производством перечислены в табл. 4.

Таблица 4. Типичные варианты применения линейного программирования в управлении производством

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

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

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

Управление технологическим процессом. Сведение к минимуму выхода стружки при резке стали, отходов кожи или ткани в рулоне или полотнище.

Регулирование запасов. Определение оптимального сочетания продуктов на складе или в хранилище.

Календарное планирование производства. Составление календарных планов, минимизирующих издержки с учетом расходов на содержание запасов, оплату сверхурочной работы и заказов на стороне.

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

Определение оптимального местоположения нового завода. Определение наилучшего пункта местоположения путем оценки затрат на транспортировку между альтернативными местами размещения нового завода и местами его снабжения и сбыта готовой продукции.

Календарное планирование транспорта. Минимизация издержек подачи грузовиков под погрузку и транспортных судов к погрузочным причалам.

Распределение рабочих. Минимизация издержек при распределении рабочих по станкам и рабочим местам.

Перегрузка материалов. Минимизация издержек при маршрутизации движения средств перегрузки материалов (например, автопогрузчиков) между отделениями завода и доставке материалов с открытого склада к местам их переработки на грузовых автомобилях разной грузоподъемности с разными технико-экономическими характеристиками.

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

1. В наличии имеется только 40 тыс. фунтов исходных реагентов - 10 тыс. фунтов реагента А, 18 тыс. фунтов реагента В и 12 тыс. фунтов реагента С.

2. Общее время работы оборудования 30 тыс. ч.

3. На один галлон краски типа 1 расходуется один фунт реагента А, 3/4 фунта реагента В и 1 1/2 фунта реагента С, а также 1/8 ч времени работы оборудования. На один галлон краски типа 2 требуется один фунт реагента А, 1/2 фунта реагента В и 3/4 фунта реагента С, а также 1/4 ч работы оборудования. На один галлон краски типа 3 идет 1 1/4 фунта реагента А, 1 1/4 фунта реагента В и 1 1/2 реагента С при 1/6 ч времени работы оборудования.

4. Чистая прибыль от продажи одного галлона краски типов 1,2 и 3 составляет 0,80, 0,65 и 1,25 долл. соответственно.

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

Рис. 7. Модель линейного программирования (линейное программирование применяется для решения задач с несколькими переменными, как например, задачи об ассортименте красок в тексте).

Модели линейного программирования используются: а) при коммерческих воздушных сообщениях для составления графиков полетов и графиков выходов летного состава;

б) для оптимизации составных частей смесей при разработке пищевых рационов;

в) дня оптимизации параметров производственных процессов в промышленности;

г) коммерческими банками при управлении финансовыми балансами;

д) при перспективном планировании производственных мощностей предприятия;

е) для оптимизации портфеля заказов фирм при инвестировании; ж) для оптимизации транспортных потоков.

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

Пример разработки модели линейного программирования для производства двух изделий

Предположим, что химический завод производит два вида товаров - А и Б в количестве, соответственно равной X и У. Менеджер проработали соответствующую информацию, получили данные, сведенные в таблицу 5.9. Его целью является получение максимальной прибыли (Пр). При этом целевая функция имеет вид:

Таблица 5.9. Стоимостные показатели товаров

ФОРМУЛИРОВКИ ОГРАНИЧЕНИЙ

Рабочее время оборудования при производстве товаров характеризуется следующими цифрами:

Рисунок 5.20. Графический решение линейной оптимизационной модели (5.17) - (5.22)

Привлекательность использования резервных переменных (в нашем случае - это продолжительность простоев оборудования) можно продемонстрировать на следующем примере. Предположим, что товара А произведено 9 единиц, а товара Б - 14 единиц. Тогда, на основе уравнения (5.23) получаем, что

Транспортная задача

Стоимость перевозок 1 т груза в гривнах с каждого пункта отправления А1 и А2 в каждый пункт назначения В1, В2 и ВЗ задана в таком виде (цифры условные):

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

Обозначим через Х1, Х2 и Х3 количество грузов, которые нужно перевезти из пункта А1, соответственно в пункты В1, В2 и В3, а через Y1, Y2 и Y3 - количество грузов, которые нужно перевезти из пункта А2 в пункты В1, В2 и В3 . Запишем это в таком виде:

Таким образом, математическая формулировка транспортной задачи (по критерию стоимости транспортных перевозок) имеет вид данной системы пяти уравнений первой степени с шестью неизвестными

ГЕОМЕТРИЧЕСКОЕ РЕШЕНИЯ ТРАНСПОРТНОЙ ЗАДАЧИ

Рассмотрим систему (а). Если сложить почленно первые три уравнения и отнять четвертых, то получим пятый уравнения. Это означает, что в системе (а) пятую уравнения лишнее. О таком уравнения говорят, что оно - результат четырех уравнений, а о всей системе говорят, что она линейно зависима. Если исключить пятого уравнения, то четыре уравнения, оставшиеся являются линейно независимыми. Таким образом, получаем четыре линейно независимые уравнения первой степени с шестью неизвестными. В этих уравнениях четыре неизвестные можно выразить через два последние. В этом случае говорят, что система имеет четыре зависимые неизвестные и два свободных неизвестны. Выберем свободными неизвестными Х1 и Х2 и получаем:

Среди решений системы (а ") нужно найти такой, при котором линейная форма F приобретает малейшего значения. Для решения этой задачи возьмем на плоскости прямоугольную систему координат и построим многоугольник abсd возможных решений системы неравенств а "(рисунок 5.21). Запишем целевую функцию в матричном виде:

Рисунок 5.21. Графическое решение транспортной задачи

На рисунке 5.21 целевая функция изображена штриховыми линиями F. Значение функции уменьшается с увеличением абсолютной величины свободного члена в уравнении целевой функции. Смешивая линию целевой функции вправо параллельно самой себе и отдаляя ее при этом от начала координат, видим, что наименьшее значение она имеет в точке пересечения прямых (I) и (III). Это соответствует оптимальному решения: Х1 = 200, Х2 = 200 (точка С). При этом F = 12000. Из уравнений (а ") находим, что Х3 = 0, Y1 = 0, Y2 = 400, К3 = 200 Таким образом, оптимальным планом перевозки грузов такой доставка из пункта А1 по 200 т в В1 и в В2, а из пункта А2 400 т в В2 и 200 т в В3. Стоимость перевозок при этом наименьшее (12000 грн.).

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

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

Пример 3.10
Рассмотрим химическую фирму, производящую полиуретан. Производитель имеет заказы на поставку полиуретана в количестве d i тонн в месяц на ближайшие четыре месяца (i=1,2,…,4). Пусть затраты на производство одной тонны полиуретана составляют C i тыс. рублей, а максимальный объем производства полиуретана по месяцам ограничен и равен K i тонн в месяц. Производственная фирма имеет возможность хранить продукцию на складе, причем стоимость хранения одной тонны продукции за месяц составляет n i тыс. рублей. На начальный период времени запас полиуретана на складе составлял L 0 тонн. Менеджеру компании требуется составить план производства полиуретана по месяцам, который бы обеспечил выполнение заказов при минимальной стоимости производства и хранения продукта.
Решение
Заметим, что если бы не было возможности хранить продукцию на складе, то задача разбилась бы на четыре независимые статические задачи и потеряла бы для нас всякий смысл.
Составим уравнение материального баланса, позволяющего вычислить количество продукции, хранящееся на складе в течение i-го месяца. Пусть x i – количество полиуретана, произведенного в i-й временной период. Тогда в течение первого месяца товарный запас на складе будет равен L 1 =L 0 +x 1 -d 1 . Товарный запас второго месяца


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

. (3.24)
После того как мы вывели уравнение (3.24), описывающее поведение товарных запасов, легко записать математическую модель задачи:

(3.25)
Поставленная задача (3.25) является типичной задачей линейного программирования и может быть достаточно легко решена с помощью программы Поиск решения. Используя численные значения удельных затрат производства


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

Табличная модель задачи управления запасами
Табличная модель задачи после нахождения оптимального решения приведена на рис. 21.


Рис. 21. Табличная модель задачи динамического программирования


Следует сказать несколько слов и об отчете по устойчивости для этой модели, приведенном на рис. 22.


Рис. 22. Отчет по устойчивости для динамической модели


Если используется простое ограничение на значение оптимизируемых переменных (x i ≤K i в нашем случае), то в отчете по устойчивости теневые цены для этих ограничений помещаются в столбце нормированная стоимость, а информация о допустимом диапазоне теневых цен для этих ограничений не выводится. Таким образом, если увеличить на одну тонну производственные мощности в январе, то общие затраты уменьшатся на 1,7 тыс. рублей.
Требует дополнительных пояснений и столбец Целевой коэффициент отчета по устойчивости. Приведенные здесь значения Excel вычисляет самостоятельно. Смысл целевого коэффициента при переменной состоит в том, что он показывает, насколько увеличится значение целевой функции при увеличении оптимального значения переменной на единицу.
В этом легко убедиться на практике. Оптимальное значение производства полиуретана в январе – 60 тонн, а суммарные затраты равны 4 776,45 тыс. рублей. Если в качестве оптимального значения за январь подставить число 61 и пересчитать суммарные затраты, то получим новое значение – 4 805,50. Разность этих чисел как раз и равна 29,05 – целевому коэффициенту при переменной объема производства в январе.
Широко известны и другие постановки задач динамического программирования. Некоторые из них (модель замены оборудования и модель инвестиций) будут рассмотрены на практических занятиях.