Прикладные задачи математического программирования

Прикладные задачи математического программирования

Учебное пособие

Омск

Издательство ОмГТУ

Рассказова Марина Николаевна, доцент

Рыженко Любовь Степановна, старший преподаватель

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

Печатается по решению редакционно-издательского совета

Омского государственного технического университета

Редактор

ИД___________ от ___________

Подписано в печать . Бумага офсетная. Формат 60х84 1/16

Отпечатано на дупликаторе. Усл. печ. л. . Уч.-изд. л. .

Тираж 50 экз. Заказ .

__________________________________________________________

Издательство ОмГТУ. 644050, г. Омск, пр-т Мира, 11

Типография ОмГТУ

«В мире не происходит ничего, в чем бы не был бы виден смысл какого-нибудь максимума или минимума»

Леонард Эйлер

ГЛАВА I

ГЛАВА II

Основные типы задач линейного
программирования и методы их решения

Задача 4 (о рационе).

Необходимо составить рацион, включающий не менее 33 единиц вещества А, не менее 23 единиц питательного вещества В, не менее 12 единиц С. Для этого используются 3 вида продуктов. Данные о содержании питательных веществ в каждом виде продукта заданы таблицей 2.3. Также известны стоимости одной единицы каждого продукта. Нужно составить наиболее дешевый рацион.

Таблица 2.3

продукты Вещества Стоимость 1 ед. продукта
А В С
I
II
III

Для понимания задачи можете представить себе, что вещества А, В, С – это жиры, белки, углеводы, а продукты I, II, III. Тогда первая строка таблицы показывает содержание в 1 ед. продукта I: 4 ед. белка, 3 ед. жиров, 1 ед. углеводов; вторая строка содержание белков, жиров, углеводов в 1 ед. продукта II и т. д.

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

Обозначим за Прикладные задачи математического программирования - student2.ru количество продуктов вида I в рационе, за Прикладные задачи математического программирования - student2.ru количество продуктов вида II, и соответственно Прикладные задачи математического программирования - student2.ru количество III-го вида продукта в рационе. Тогда, вещества А при потреблении продуктов типа I получается Прикладные задачи математического программирования - student2.ru , при потреблении II вида продукта – Прикладные задачи математического программирования - student2.ru , при потреблении III – Прикладные задачи математического программирования - student2.ru Всего вещества А необходимо употребить по условию задачи не менее 33 единиц, следовательно: Прикладные задачи математического программирования - student2.ru . Аналогично рассуждая с веществом В, имеем: Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru для С.

Таким образом, получим систему ограничений:

Прикладные задачи математического программирования - student2.ru (7)

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

Прикладные задачи математического программирования - student2.ru т. к. 20, 20, 10 – стоимость одной единицы продуктов I, II, III типов соответственно, а в рационе их содержится Прикладные задачи математического программирования - student2.ru единиц.

Система ограничений (7) и целевая функция составляют математическую модель исходной задачи. Решить ее, значит, найти такие Прикладные задачи математического программирования - student2.ru , удовлетворяющие системе ограничений и обращающие значение функции F в минимальное.

Задача 5 (о раскрое).

Пусть из заготовок для замков-молний длиной 1 метр выпускаются замочки размером 12 см, 18 см и 35 см. Известны различные варианты раскроя метровых заготовок на замочки и остатки для каждого варианта. Также заданы минимальные потребности в замочках каждой длины. Необходимо определить: сколько заготовок нужно раскроить по каждому возможному варианту раскроя, чтобы получить необходимое количество замочков, при этом количество отходов должно быть минимальным.

Рассмотрим несколько возможных вариантов раскроя (в таблице 2.4 указано три), заметьте, что перечислены не все.

Таблица 2.4

Типы замков-молний Варианты раскроя Потребности в замках
12 см
18 см
35 см
отходы  

Построение модели.

Обозначим за Прикладные задачи математического программирования - student2.ru – количество метровых заготовок, раскраиваемых по 1-му варианту, за Прикладные задачи математического программирования - student2.ru – количество метровых заготовок, раскраиваемых по 2-му варианту, за Прикладные задачи математического программирования - student2.ru – количество метровых заготовок, раскраиваемых по 3-му варианту.

Тогда посчитаем количество замков:
длиной 12 см: Прикладные задачи математического программирования - student2.ru
длиной 18 см: Прикладные задачи математического программирования - student2.ru (8)
длиной 35 см: Прикладные задачи математического программирования - student2.ru

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

Прикладные задачи математического программирования - student2.ru

Система ограничений (8) вместе с целевой функцией составляют математическую модель задачи о раскрое.

Случай 1.

Прикладные задачи математического программирования - student2.ru При перемещении прямой Прикладные задачи математического программирования - student2.ru«вход» или «выход» произойдет по стороне многоугольника (как на рисунке). Это случится, если в многоугольнике есть стороны, параллельные прямой Прикладные задачи математического программирования - student2.ru.

В этом случае точек «выхода» («входа») бесконечное множество, а именно любая точка отрезка Прикладные задачи математического программирования - student2.ru .

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

Случай 2.

Прикладные задачи математического программирования - student2.ru Рассмотрим случай, когда область допустимых значений открыта, как в примере 3 § 2.3.

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

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

Рассмотрим графический способ решения на примере задачи 3 (о составлении плана) §2.1, смотри ниже рис.2.5.

Необходимо найти максимальное значение целевой функции Прикладные задачи математического программирования - student2.ru при системе ограничений:

Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru

Рис. 2.5 Графическое решение задачи ЛП

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

Прикладные задачи математического программирования - student2.ru полуплоскость ниже прямой Прикладные задачи математического программирования - student2.ru (обозначена цифрой 1);

Прикладные задачи математического программирования - student2.ru полуплоскость ниже прямой Прикладные задачи математического программирования - student2.ru (2);

Прикладные задачи математического программирования - student2.ru прямая, параллельная оси OY (3); Прикладные задачи математического программирования - student2.ru полуплоскость левее (3);

Прикладные задачи математического программирования - student2.ru параллельна оси OX (4), Прикладные задачи математического программирования - student2.ru полуплоскость ниже Прикладные задачи математического программирования - student2.ru ;

Прикладные задачи математического программирования - student2.ru ось OY; Прикладные задачи математического программирования - student2.ru – полуплоскость правее оси OY;

Прикладные задачи математического программирования - student2.ru ось OX; Прикладные задачи математического программирования - student2.ru – полуплоскость выше оси OX.

2. Пересечением всех этих полуплоскостей является, очевидно, пятиугольник ОАВСД с вершинами в точках О(0;0), А(0;9), В(6;9), С(12;6), Д(12;0). Этот пятиугольник и образует область допустимых значений задачи.

3. Рассмотрим целевую функцию задачи Прикладные задачи математического программирования - student2.ru

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

Значит, при Прикладные задачи математического программирования - student2.ru функция F достигает своего максимального значения и равна Прикладные задачи математического программирования - student2.ru . Точка (12; 6) удовлетворяет всем неравенствам системы ограничений, и в ней значение целевой функции оптимально: Прикладные задачи математического программирования - student2.ru (оптимальное значение будем обозначать «*»). Задача решена.

Ответ: необходимо выпустить 12 изделий I вида и 6 изделий II вида, при этом прибыль составит 84 ед.

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

Каноническая форма задач ЛП

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

Определение. Задача ЛП имеет каноническую форму, если:

1) все ограничения системы состоят только из уравнений,

2) переменные неотрицательны,

3) целевую функцию необходимо максимизировать.

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

Любая общая задача ЛП может быть приведена к канонической форме. Выполнение первого условия достигается путем введения новых (или их называют дополнительными) переменных. Вернемся к задаче 3. Система ограничений (3) этой задачи состоит из четырех неравенств. Введя дополнительные переменные: Прикладные задачи математического программирования - student2.ru можно перейти к системе ограничений:

Прикладные задачи математического программирования - student2.ru (9)

Эти дополнительные переменные Прикладные задачи математического программирования - student2.ru имеют конкретный экономический смысл, а именно означают величину неиспользованного времени работы (простоя) машины Прикладные задачи математического программирования - student2.ru го вида. Например, если бы машины первого вида работали все 18 ч., то Прикладные задачи математического программирования - student2.ru следовательно, Прикладные задачи математического программирования - student2.ru Но мы допускаем возможность неполного использования времени работы 1-й машины Прикладные задачи математического программирования - student2.ru В этом случае Прикладные задачи математического программирования - student2.ru приобретает положительное значение и может рассматриваться как неиспользованный лимит времени. Например, зная решение этой задачи из результатов § 2.3, Прикладные задачи математического программирования - student2.ru мы можем из системы ограничений (9) сделать вывод, что Прикладные задачи математического программирования - student2.ru а Прикладные задачи математического программирования - student2.ru . То есть машины 1-го , 2-го, 3-го вида используют свое рабочее время полностью, а вот 4-я машина загружена лишь наполовину: 3 часа при заданном оптимальном плане простаивает. Возможно, после таких выводов руководителю предприятия захочется загрузить ее другой работой, сдать в аренду на это время и т. д.

Итак, введением дополнительных переменных мы можем любое ограничение типа неравенства привести к уравнению.

Рассмотрим задачу о смеси (4 из §2.1). Система ограничений имела вид Прикладные задачи математического программирования - student2.ru

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

Прикладные задачи математического программирования - student2.ru

Переменные Прикладные задачи математического программирования - student2.ru также будут иметь экономический смысл. Если вы вспомните практическое содержание задачи, то переменная Прикладные задачи математического программирования - student2.ru будет означать количество излишнего вещества А в смеси, Прикладные задачи математического программирования - student2.ru – количество излишков вещества В в смеси, Прикладные задачи математического программирования - student2.ru – количество излишков С в смеси.

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

Рис. 2.6  
Прикладные задачи математического программирования - student2.ru Посмотрите на рис. 2.6, если в какой-то точке Прикладные задачи математического программирования - student2.ru функция Прикладные задачи математического программирования - student2.ru достигает своего максимума, то функция Прикладные задачи математического программирования - student2.ru , симметричная ей относительно оси OX, в этой же точке Прикладные задачи математического программирования - student2.ru достигнет минимума, причем Прикладные задачи математического программирования - student2.ru при Прикладные задачи математического программирования - student2.ru .

Вып

Выполнение третьего условия – неотрицательности переменных достигается представлением отрицательной переменной в виде разности двух переменных, которые уже в свою очередь неотрицательны: Прикладные задачи математического программирования - student2.ru .

Идея симплексного метода

Симплексный метод является универсальным методом линейного программирования. Его алгоритм состоит из ряда шагов, следуя которым, вы приходите к решению задачи ЛП. Сейчас нас будет интересовать аналитическая идея этого метода, которая при общем взгляде на алгоритм или на «замурованную» программу в ЭВМ не столь ясна, как если бы рассмотреть ее на конкретном примере.

Итак, если мы решаем ЗЛП в канонической форме, то система ограничений – это обычная система линейных уравнений. При решении задач ЛП получаются системы линейных уравнений неопределенные, т.е имеющие множество решений.

Например, пусть есть система

Прикладные задачи математического программирования - student2.ru

Здесь число уравнений равно 2, а неизвестных 3, уравнений меньше ­­– система недоопределена. Выразим Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru через Прикладные задачи математического программирования - student2.ru :

Прикладные задачи математического программирования - student2.ru

Это общее решение системы. Если переменной Прикладные задачи математического программирования - student2.ru придавать любые, произвольные числовые значения, то будем находить частные решения системы. Например, Прикладные задачи математического программирования - student2.ru Имеем Прикладные задачи математического программирования - student2.ru частное решение. Пусть Прикладные задачи математического программирования - student2.ru другое частное решение. Таких частных решений бесконечно много.

Совокупность переменных Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru образует базис: Прикладные задачи математического программирования - student2.ru Переменные Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru называются базисными, а переменная Прикладные задачи математического программирования - student2.ru – свободной. Если Прикладные задачи математического программирования - student2.ru , то полученное частное решение (5,11,0) называется базиснымрешением, соответствующим базису Прикладные задачи математического программирования - student2.ru

Теоремы двойственности

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

Теорема 1 (первая теорема двойственности).

Если одна из пары двойственных задач I и II разрешима, то разрешима и другая, причем значения целевых функций на оптимальных планах совпадают, Прикладные задачи математического программирования - student2.ru где Прикладные задачи математического программирования - student2.ru оптимальные решения задачи I и II.

Теорема 2(вторая теорема двойственности).

Планы Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru оптимальны в задачах I и II тогда и только тогда, когда при подстановке их в систему ограничений задачи I и II соответственн, хотя бы одно из любой пары сопряженных неравенств обращается в равенство.

Доказательства теорем опускаем, а на конкретном примере нашей задачи покажем, как они работают. Теорема 2 позволяет по решению одной задачи находить решение двойственной.

Итак, имеем оптимальное решение Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru задачи I. Найдем решение двойственной задачи II Прикладные задачи математического программирования - student2.ru не прибегая к симплекс-методу, а воспользовавшись второй теоремой двойственности и известным оптимальным планом Прикладные задачи математического программирования - student2.ru

Для этого необходимо подставить оптимальное решение Прикладные задачи математического программирования - student2.ru в каждое неравенство системы ограничений и посмотреть, как оно выполняется: строго или нет.

Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru

Поскольку 1, 5, 7 неравенства строгие (имеют знак «<» или «>»), то соответствующие им неравенства в задаче II из пары сопряженных по II теореме двойственности обязаны обратиться в равенства, имеем:

Прикладные задачи математического программирования - student2.ru Решаем систему, находим Прикладные задачи математического программирования - student2.ru

т.е. Прикладные задачи математического программирования - student2.ru оптимальное решение. Заметим, что действительно I-я теорема двойственности справедлива: Прикладные задачи математического программирования - student2.ru .

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

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

основные дополнительные

       
  Прикладные задачи математического программирования - student2.ru   Прикладные задачи математического программирования - student2.ru
 

Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru

дополнительные основные

Установив такую связь, внимательный читатель заметит, что, решив задачу I симплекс-методом, и получив последнюю симплекс–таблицу (табл. 2.15), мы фактически решим и задачу II. Запишем таблицу 2.16, учитывая соответствие между переменными Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru

Таблица 2.16

    Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru  
свободные базис   Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru правые части
Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru        
Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru        
Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru        
  Прикладные задачи математического программирования - student2.ru

Если последняя симплекс-таблица известна, то, пользуясь соответствием, можно найти решение двойственной задачи. Переменные, которые в левом столбце: Прикладные задачи математического программирования - student2.ru обязаны равняться 0, т.к. Прикладные задачи математического программирования - student2.ru строго. А переменные из верхней строки Прикладные задачи математического программирования - student2.ru принимают значения нижней строки 1, 1, 0, 4 соответственно, т.к. им соответствующие переменные Прикладные задачи математического программирования - student2.ru равны 0 как свободные. Итак, из последней таблицы задачи II, не проводя никаких вычислений, и пользуясь лишь соответствием переменных, можно определить Прикладные задачи математического программирования - student2.ru оптимальное решение. Прикладные задачи математического программирования - student2.ru

Необходимо знать оба способа решения двойственной задачи. Т.к. если исходная задача решалась на компьютере, например, в приложении Excel , и вы не имеете симплекс-таблиц, но знаете оптимальный план, по второй теореме двойственности найдете решение. Если же вы находили исходный план вручную, нет необходимости решать систему линейных уравнений, достаточно посмотреть в последнюю симплекс-таблицу. Итак, мы научились по решению исходной задачи находить решения двойственной. Это возможно благодаря глубокой связи между переменными Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru . Осталось разобраться, каково экономическое содержание этих взаимосвязей.

И теории двойственности

Исходная задача I имела следующий экономический смысл: основные переменные Прикладные задачи математического программирования - student2.ru обозначали количество произведенной продукции i-го вида, дополнительные переменные обозначали излишек соответствующего вида ресурсов, каждое из неравенств выражало собой расход определенного вида сырья в сравнении с запасом этого сырья. Целевая функция определяла прибыль при реализации всей продукции. Предположим теперь, что предприятие имеет возможность реализовывать сырье на сторону. Поставим вопрос: какую минимальную цену надо установить за единицу каждого вида сырья при условии, что доход от реализации всех его запасов должен быть не меньше дохода от реализации продукции, которая может быть выпущена из этого сырья. Иначе говоря, выгодно было бы продавать сырье, чем производить изделия. Переменные двойственной задачи Прикладные задачи математического программирования - student2.ru имеют смысл – это условные относительные (теневые) цены за ресурсы 1, 2, 3 вида соответственно. Тогда доход от продажи видов сырья, расходуемого на производство одной единицы продукции I, равен: Прикладные задачи математического программирования - student2.ru Но, если мы хотим, чтобы доход от продажи сырья был не меньше, чем от реализации продукции, то должно быть Прикладные задачи математического программирования - student2.ru Именно в силу такого экономического толкования система ограничений двойственной задачи принимает вид

Прикладные задачи математического программирования - student2.ru

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

Еще раз обратим внимание на то, что Прикладные задачи математического программирования - student2.ru – это лишь условные, предполагаемые, а не реальные цены на сырье. Иначе, читателю может показаться странным, что например, Прикладные задачи математического программирования - student2.ru . Этот факт вовсе не означает, что реальная цена 1–го ресурса нулевая, ничего бесплатного в этом мире нет. Равенство нулю условной цены означает лишь, что этот ресурс не израсходован полностью, имеется в излишке, недефицитен. Действительно, посмотрим на 1-е неравенство в системе ограничений задачи I, в котором подсчитывается расход 1-го ресурса: Прикладные задачи математического программирования - student2.ru . Его избыток составляет Прикладные задачи математического программирования - student2.ru ед. при данном оптимальном плане производства, и поэтому для производителя он недефицитен, его условная цена равна 0, его не надо закупать. Наоборот, ресурсы 2-й и 3-й используются полностью, причем Прикладные задачи математического программирования - student2.ru а Прикладные задачи математического программирования - student2.ru , т.е. сырье третьего вида более дефицитно, чем второго, его условная цена больше. Если производитель продукции имел бы возможность приобретать дополнительно сырье к уже имеющемуся, с целью получения максимального дохода от производства, то, увеличив сырье 2-го вида на 1 единицу, он бы получил дополнительно доход в Прикладные задачи математического программирования - student2.ru денежных единиц, а увеличив на 1 ед. сырье 3-го вида, значение целевой функции увеличилось бы на Прикладные задачи математического программирования - student2.ru ед.

Если перед производителем стоит вопрос: «выгодно ли производить какую-либо новую продукцию, при условии, что затраты на 1 единицу продукции составят 3, 1, 4 единицы сырья соответственно, а прибыль от реализации равна 23 единицам?», то в силу экономического истолкования задачи ответить на этот вопрос несложно. Поскольку затраты и условные цены ресурсов известны: затраты равны 3, 1, 4, а цены Прикладные задачи математического программирования - student2.ru значит можно посчитать суммарную условную стоимость ресурсов, необходимых для производства этой новой продукции: Прикладные задачи математического программирования - student2.ru Т.е. продукцию производить выгодно, т.к. прибыль от реализации превышает затраты на ресурсы, в противном случае, ответ бы на этот вопрос был отрицательным.

Замечание. Иногда при решении задач ЛП применяют двойственный симплекс-метод. Этот метод удобно применять при решении задачи о рационе, задачи о раскрое и некоторых других. Поскольку, решая исходную задачу, мы автоматически получаем решение двойственной, то иногда удобно выбирать, какую из задач решать. Двойственный симплекс–метод основан на очень простой идее. К данной задаче нужно построить двойственную, решить двойственную, а затем по её решению найти решение исходной.

Можно продемонстрировать на примере уже рассмотренной нами задачи о рационе.

I. Прикладные задачи математического программирования - student2.ru II. Прикладные задачи математического программирования - student2.ru

Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru

Решаем симплекс–методом задачу II (смотри табл.2.17-19).

Таблицы 2.17 Таблица 2.18

Баз. Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прав.части
Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru
Прикладные задачи математического программирования - student2.ru
Прикладные задачи математического программирования - student2.ru
Прикладные задачи математического программирования - student2.ru -33 -23 -12
Баз. Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прав.части
Прикладные задачи математического программирования - student2.ru 1/4 3/4 1/4
Прикладные задачи математического программирования - student2.ru -3/4 -1/4 1/4
Прикладные задачи математического программирования - student2.ru -1/2 -1/2 Прикладные задачи математического программирования - student2.ru
Прикладные задачи математического программирования - student2.ru 33/4 7/4 -15/4

Таблица 2.19

Баз. Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru Своб.
Прикладные задачи математического программирования - student2.ru     -1/6
Прикладные задачи математического программирования - student2.ru     -1/6
Прикладные задачи математического программирования - student2.ru -1/3 1/3 2/3
Прикладные задачи математического программирования - student2.ru 1/2 5/2

Выписываем решение Прикладные задачи математического программирования - student2.ru . Найдем решение исходной, пользуясь II теоремой двойственности. Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru
Так как неравенство Прикладные задачи математического программирования - student2.ru то Прикладные задачи математического программирования - student2.ru

Найдем Прикладные задачи математического программирования - student2.ru и Прикладные задачи математического программирования - student2.ru из системы Прикладные задачи математического программирования - student2.ru

Итак, Прикладные задачи математического программирования - student2.ru Прикладные задачи математического программирования - student2.ru решение исходной задачи о рационе.

Еще раз отметим, что мы воспользовались тем, что двойственная задача имела специальный вид, и ее удобно было решать, а затем уже вернуться к исходной. Но в силу тесной связи между этими двумя парами задач, на самом деле симплекс–таблицы, полученные сейчас, и ранее см.§ 2.7, совпадают с точностью до транспонирования. Фактически мы лишь упростили внешний вид табл. 2.10-2.12, избавив себя от излишних «минусов».

ГЛАВА III

Алгоритм метода потенциалов

Алгоритм состоит из трех основных шагов:

1) построение первоначального опорного плана.

2) проверка плана на оптимальность.

3) улучшение плана.

Шаг 1. Построение первоначального опорного плана.

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

Идея метода наименьшей стоимости проста и отражается в названии метода. Сначала следует организовать перевозки к тем поставщикам, где стоимость минимальна. Рассмотрим конкретный пример.

Транспортная задача. Пусть имеется 4 поставщика некоторой продукции и 5 потребителей. Стоимости перевозок от i-го поставщика к j-му потребителю, а также потребности потребителей и возможности поставщиков заданы табл. 3.1

Таблица 3.1

  В1 В2 В3 В4 В5 запасы
А1
А2
А3
А4
потребности

Эта транспортная задача является закрытой или сбалансированной, т.к. 24+12+18+16=60 и 11+13+26+10+10=60 – потребности равны запасам. Будем заполнять первую распределительную таблицу. Стоимости перевозок в новой таблице будем располагать в правом верхнем углу клеток, а в центр клеток помещать числа, соответствующие первоначальному опорному плану перевозок.

Итак, минимальная стоимость перевозки – это число 1, оно встречается на двух местах, с номерами (2, 4) и (3, 2). Выберем любое, к примеру, (2, 4). Рассуждаем: у поставщика Прикладные задачи математического программирования - student2.ru имеется запас товара 12 ед., а потребителю Прикладные задачи математического программирования - student2.ru требуется 10 ед., можем удовлетворить его потребности и привезти ему 10. Тогда у Прикладные задачи математического программирования - student2.ru останется в запасах 12-10=2 ед. Поместим в клетку (2, 4) наименьшее из чисел 10 и 12, т.е. перевозку 10. При этом заметим, потребности потребителя Прикладные задачи математического программирования - student2.ru удовлетворены, можем вычеркнуть 4-й столбец из рассмотрения, запомнив сбоку, что запасов осталось на втором складе 2 ед. (см.табл. 3.2).

Таблица 3.2

  В1 В2 В3 В4 В5 запасы
А1 21 19 11 -12 12
А2 26 29 14 10 1 26 12/2
А3 39 1 22 - 8 25
А4 53 23 40 -26 28
потребности 10/0  

В табл. 3.2 теперь снова ищем минимальный по стоимости элемент, это опять 1 на месте (3, 2). Записываем в эту клетку число 13, как наименьшее из чисел 13 и 18 и вычеркиваем 2-й столбец, потребности В2 удовлетворены (табл. 3.3).

Таблица 3.3

  В1 В2 В3 В4 В5 запасы
А1 21 19 11 - 12 12
А2 26 29 14 10 1 26 12/2
А3 39 131 22 - 8 25 18/5
А4 53 23 40 26 28
потребно<

Наши рекомендации