Методы оптимизации
Конспект лекций
назад | содержание | вперед

Тема 2.  Введение в теорию оптимизации. Линейное программирование

2.1  Понятие о теории оптимизации

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

Теория оптимизации — широкий раздел математики, в котором рассматриваются соответствующие задачи.

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

Самая общая формулировка такого рода задач может быть записана в виде

,

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

В математическом анализе изучается и другой частный случай указанной проблемы, когда W задается как множество решений некоторой системы уравнений вида

,

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

,

гдеyi — новые переменные, которые и называются множителями Лагранжа.

Собственно задачи математического программирования, которые условно можно было бы назвать «неклассическими» задачами на условный экстремум, отличаются от «классических» тем, что уравнения заменяются неравенствами.

Следует отметить, что математическая база для исследования этого нового класса задач на условный экстремум получена еще в начале XX столетия. Так, лемма Фаркаша, лежащая в основе теории линейных задач математического программирования (линейного программирования), получена уже в 1902 г. Появление нового раздела в теории оптимизации «запаздывало» ввиду отсутствия социального заказа. Именно потребности экономических исследований и явились заказом такого рода. Можно сказать, что своим рождением математическое программирование обязано экономике.

Среди первых исследователей, стоявших у истоков нового направления, следует назвать Джона фон Неймана, в 20-х гг. положившего начало изучению задачи матричных игр, которая эквивалентна задаче линейного программирования. Он рассмотрел также линейную модель расширяющейся экономики, носящую теперь его имя.

В 30-х годах В. В. Леонтьев начал изучать линейные балансовые модели применительно к экономике Америки.

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

Несколько позже, в 1947 г., американский математик Дж. Данциг предложил свой метод решения задач линейного программирования, получивший название «симплекс-метода». После этого начался период бурного развития нового направления, его методов и приложений в разных областях конкретной экономики: нефтепереработке, пищевой промышленности, сельском хозяйстве, металлургии, металлообработке, на транспорте и т.д.

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

Работы Л. В. Канторовича получили высокую оценку мировой научной общественности — в 1975 г. ему была присуждена Нобелевская премия по экономике.



2.2 Примеры моделей, приводящих к задачам линейного программирования

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

 

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

 Фирма выпускает два вида изделий: А и В. Для выпуска каждого изделия необходимо израсходовать определенное количество трех видов ресурсов: сырья, оборудования и труда. Нормы расхода ресурсов, их наличные объемы и цены изделий приведены в таблице 2.1.

Таблица 2.1 –  Данные к задаче выбора производственной программы

Вид
ресурса

Единица
измерения

Нормы расхода на изделие

Объем ресурса

А

В

1. Сырье

Кг

1

4

90

2. Оборудование

ст./час

4

2

80

3. Труд

чел./час

2

4

140

Цена изделия

тыс. руб.

9

8

 

 

Таким образом, для выпуска единицы изделия А нужно затратить 1 кг сырья, 4 ст./часа работы оборудования и 2 чел./часа рабочей силы, а его продажа принесет фирме 9 тыс. руб. выручки. Аналогичная информация для изделия В содержится в соседнем столбце таблицы.

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

Построим математическую модель этой ситуации.

а) Переменные

Необходимо найти объемы выпуска каждого изделия. Поэтому модель должна содержать две переменные: х1 — количество выпускаемых изделий А и х2 — количество выпускаемых изделий В. Тогда план выпуска изделий задается вектором х = (х1х2).

б) Ограничения

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

 

    расход ресурса для выпуска изделий наличный объем ресурса (*)

 

Подсчитаем, сколько сырья понадобится для выпуска плана х. Чтобы выпустить х1 единиц изделия А, нужно затратить х1 кг сырья; а выпуск х2 единиц изделия В потребует 4х2 кг сырья. Значит, всего для выполнения плана х требуется х1 + 4х2 кг сырья. Его наличный запас равен 90 кг. Поэтому ресурсное ограничение (*) для сырья имеет вид:

х1 + 4х2 ≤ 90.

Ограничения по остальным ресурсам выглядят так:

4х1 + 2х2 ≤ 80 (оборудование),

2х1 + 4х2 ≤ 140 (труд).

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

х≥ 0 и х≥ 0.

Любая пара неотрицательных чисел х1 и х2, удовлетворяющая всем ресурсным ограничениям, определяет допустимый (выполнимый) план выпуска.

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

Пусть х = (х1х2) — некоторый план выпуска. Выручка Z от продажи х1 единиц изделия А и х2 единиц изделия В вычисляется по формуле

Z(х1х2) = 9х1 + 8х2.

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

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

                                     Z = 9х1 + 8х2 ® max,                                      

                                             х1 + 4х2≤ 90,                                           

                                          4х1 + 2х2 ≤ 80,                                           

                                          2х1 + 4х2 ≤ 140,                                         

                                             х≥ 0, х≥ 0.                             

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

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

Задача о диете

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

 

Таблица 2.2 – Данные к задаче о диете

Продукт

1

2

Суточная потребность

Е

5

2

10

F

3

4

12

РР

1

5

5

Стоимость единицы продуктов соответственно 13 и 8 денежных единиц.

Обозначим через x1 количество первого продукта, а через x2 — количество второго продукта, включаемых в ежедневный рацион. Приходим к задаче

.

Классическая транспортная задача

Рассмотрим простейшую задачу, возникающую при моделировании транспортных потоков. Для простоты рассматривается вопрос об организации перевозок лишь какого-то одного продукта от пунктов, в которых он производится (или складируется), к потребителям, расположенным в других пунктах. Пусть имеется m пунктов производства и n пунктов потребления. Известно, что в i-м пункте производства имеется di единиц рассматриваемого продукта, а объем его потребления в j-м пункте потребления составляет hj единиц. Для простоты предположим, что затраты на перевозку продукта из i-го пункта производства в j-й пункт потребления пропорциональны объему поставки, а значит, легко вычисляются, если заданы величины Cij, указывающие стоимость перевозки единицы продукта. Пусть эти величины известны. Требуется спланировать перевозки так, чтобы суммарные затраты на реализацию предлагаемого плана были как можно меньше. Ясно, что задачу имеет смысл рассматривать лишь в предположении, что суммарный объем производства не меньше суммарного объема потребления, т. е..

Обозначим через xij объем планируемой поставки продукта из i-го пункта производства в j-й пункт потребления. Тогда суммарный объем вывоза из i-го пункта производства будет равен , а суммарный объем поставки в j-й пункт потребления составит . Затраты на реализацию всех перевозок будут задаваться формулой . В результате получаем следующую математическую задачу:


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



2.3 Общая схема моделирования

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

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

Выделив и перенумеровав все факторы, учитываемые в модели, которые принято называть ингредиентами, мы получим множество их номеров М = {1, ..., m}.

2. Когда ингредиенты модели уже выделены и упорядочены, мы можем любому технологическому процессу сопоставить упорядоченную совокупность балансовых итогов процесса по всем ингредиентам, т. е. некоторый m-мерный вектор а.

Если компонента аi оказалась положительной, то это означает, что i-го ингредиента произведено в данном процессе на аi больше, чем затрачено. Наоборот, если аi< 0, то это означает, что перед началом процесса по i-му ингредиенту был некоторый запас в объеме |а*|, который в процессе полностью израсходован (хотя, может быть, этот ингредиент по ходу процесса не только затрачивался, но и производился).

3. Для нас представляют интерес лишь те технологические процессы, в организации которых имеется определенная свобода выбора. Математически это выражается в существовании некоторых управляющих параметров х1, ..., хn, от которых зависит результирующий вектор процесса а. Вводя вектор параметров х, мы пишем а = а(х).

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

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

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

минимизировать c(x)при условиях



Это будет задача линейного программирования, если множества V и W указанного выше простейшего вида, а зависимости а(х) и с(х) — линейные. В этом случае задача принимает вид



Следует подчеркнуть качественную особенность процессов, моделирование которых приводит к задачам линейного программирования. Оно состоит в том, что весь процесс а(х) «рассыпается» на простейшие технологии аjj), каждая из которых зависит лишь от одного (своего) параметра, и зависимость эта линейная: аjj) = аjхj (т.е. результат процесса пропорционален значению управляющего параметра). Таким образом, при моделировании нужно лишь выявить эти элементарные технологические процессы, которые и позволяют уже описать весь управляемый процесс а(х). В задаче раскроя, например, роль таких элементарных процессов выполняли элементарные крои и элементарный процесс комплектации изделий, который описывается вектором (-1,-1).




наверх


назад | содержание | вперед