Составление симплекс таблицы. Пример решения задачи лп симплекс методом
Для изготовления трех видов рубашек используются нитки, пуговицы и ткань. Запасы ниток, пуговиц и ткани, нормы их расхода на пошив одной рубашки указаны в таблице. Найти максимальную прибыль и оптимальный план выпуска изделий ее обеспечивающий (найти ).
рубашка 1 | рубашка 2 | рубашка 3 | Запасы | нитки (м.) | 1 | 9 | 3 | 96 | пуговицы (шт.) | 20 | 10 | 30 | 640 | ткань ( | 1 | 2 | 2 | 44 | Прибыль (р.) | 2 | 5 | 4 |
Решение задачи
Построение модели
Через и количество рубашек 1-го, 2-го и 3-го вида, предназначенных к выпуску.
Тогда ограничения на ресурсы будут иметь следующий вид:
Кроме того, по смыслу задачи
Целевая функция, выражающая получаемую прибыль:
Получаем следующую задачу линейного программирования:
Приведение задачи линейного программирования к каноническому виду
Приведем задачу к каноническому виду. Введем дополнительные переменные. В целевую функцию все дополнительные переменные введем с коэффициентом, равным нулю. Дополнительные переменные прибавим к левым частям ограничений, не имеющих предпочтительного вида, и получим равенства.
Решение задачи симплекс-методом
Заполняем симплексную таблицу:
Так как мы решаем задачу на максимум – наличие в индексной строке отрицательных чисел при решении задачи на максимум свидетельствует о том, что нами оптимальное решение не получено и что от таблицы 0-й итерации необходимо перейти к следующей.
Переход к следующей итерации осуществляем следующим образом:
ведущий столбец соответствует
Ключевая строка определяется по минимуму соотношений свободных членов и членов ведущего столбца (симплексных отношений):
На пересечении ключевого столбца и ключевой строки находим разрешающий элемент, т.е. 9.
Теперь приступаем к составлению 1-й итерации: Вместо единичного вектора вводим вектор .
В новой таблице на месте разрешающего элемента пишем 1, все остальные элементы ключевого столбца –нули. Элементы ключевой строки делятся на разрешающий элемент. Все остальные элементы таблицы вычисляются по правилу прямоугольника.
Ключевой столбец для 1-й итерации соответствует
Разрешающим элементов является число 4/3. Вектор выводим из базиса и вводим вместо него вектор . Получаем таблицу 2-й итерации.
Ключевой столбец для 2-й итерации соответствует
Находим ключевую строку, для этого определяем:
Разрешающим элементов является число 10/3. Вектор выводим из базиса и вводим вместо него вектор . Получаем таблицу 3-й итерации.
№ | БП | c Б | A o | x 1 | x 2 | x 3 | x 4 | x 5 | x 6 | Симплексные | 2 | 5 | 4 | 0 | 0 | 0 | отношения | 0 | x 4 | 0 | 96 | 1 | 9 | 3 | 1 | 0 | 0 | 32/3 | x 5 | 0 | 640 | 20 | 10 | 30 | 0 | 1 | 0 | 64 | x 6 | 0 | 44 | 1 | 2 | 2 | 0 | 0 | 1 | 22 | F j - c j | 0 | -2 | -5 | -4 | 0 | 0 | 0 | 1 | x 2 | 5 | 32/3 | 1/9 | 1 | 1/3 | 1/9 | 0 | 0 | 32 | x 5 | 0 | 1600/3 | 170/9 | 0 | 80/3 | -10/9 | 1 | 0 | 20 | x 6 | 0 | 68/3 | 7/9 | 0 | 4/3 | -2/9 | 0 | 1 | 17 | F j - c j | 160/3 | -13/9 | 0 | -7/3 | 5/9 | 0 | 0 | 2 | x 2 | 5 | 5 | -1/12 | 1 | 0 | 1/6 | 0 | -1/4 | -- | x 5 | 0 | 80 | 10/3 | 0 | 0 | 10/3 | 1 | -20 | 24 | x 3 | 4 | 17 | 7/12 | 0 | 1 | -1/6 | 0 | 3/4 | 204/7 | F j - c j | 93 | -1/12 | 0 | 0 | 1/6 | 0 | 7/4 | 3 | x 2 | 5 | 7 | 0 | 1 | 0 | 1/4 | 1/40 | -3/4 | x 1 | 2 | 24 | 1 | 0 | 0 | 1 | 3/10 | -6 | x 3 | 4 | 3 | 0 | 0 | 1 | -3/4 | -7/40 | 17/4 | F j - c j | 95 | 0 | 0 | 0 | 1/4 | 1/40 | 5/4 |
В индексной строке все члены неотрицательные, поэтому получен следующее решение задачи линейного программирования (выписываем из столбца свободных членов):
Необходимо шить 24 рубашки 1-го вида, 7 рубашек 2-го вида и 3 рубашки 3-го вида. При этом получаемая прибыль будет максимальна и составит 95 руб.
Помощь в решении ваших задач по этому предмету вы можете найти, отправив сообщение в ВКонтакте , на Viber или заполнив форму . Стоимость решения домашней работы начинается от 7 бел.руб. за задачу (200 рос.руб.), но не менее 10 бел.руб. (300 рос.руб.) за весь заказ. Подробное оформление. Стоимость помощи на экзамене онлайн (в этом случае необходима 100% предоплата) - от 30 бел.руб. (1000 рос.руб.) за решение билета.
Лекция 3. Симплексные таблицы. Алгоритм симплексного метода.
§ 3 СИМПЛЕКСНЫЙ МЕТОД
3.1. Общая идея симплекс–метода. Геометрическая интерпретация
Графический способ применим к весьма узкому классу задач линейного программирования: эффективно им можно решать задачи, содержащие не более двух переменных. Были рассмотрены основные теоремы линейного программирования, из которых следует, что если задача линейного программирования имеет оптимальное решение, то оно соответствует хотя бы одной угловой точке многогранника решений и совпадает, по крайней мере, с одним из допустимых базисных решений системы ограничений. Был указан путь решения любой задачи линейного программирования: перебрать конечное число допустимых базисных решений системы ограничений и выбрать среди них то, на котором функция цели принимает оптимальное решение. Геометрически это соответствует перебору всех угловых точек многогранника решений. Такой перебор в конце концов приведет к оптимальному решению (если оно существует), однако его практическое осуществление связано с огромными трудностями, так как для реальных задач число допустимых базисных решений хотя и конечно, но может быть чрезвычайно велико.
Число перебираемых
допустимых базисных решений можно
сократить, если производить перебор не
беспорядочно, а с учетом изменений
линейной функции, т.е. добиваясь того,
чтобы каждое следующее решение было
"лучше" (или, по крайней мере, "не
хуже"), чем предыдущее, по значениям
линейной функции (увеличение ее при
отыскании максимума
,
уменьшение–
при отыскании минимума
).
Такой
перебор позволяет сократить число шагов
при отыскании оптимума. Поясним это
на графическом примере.
Пусть область допустимых решений изображается многоугольником ABCDE . Предположим, что его угловая точка А соответствует исходному допустимому базисному решению. При беспорядочном переборе пришлось бы испытать пять допустимых базисных решений, соответствующих пяти угловым точкам многоугольника. Однако из чертежа видно, что после вершины А выгодно перейти к соседней вершине В, а затем – к оптимальной точке С. Вместо пяти перебрали только три вершины, последовательно улучшая линейную функцию.
Идея последовательного улучшения решения легла в основу универсального метода решения задач линейного программирования – симплексного метода или метода последовательного улучшения плана.
Геометрический смысл симплексного метода состоит в последовательном переходе от одной вершины многогранника ограничений (называемой первоначальной) к соседней, в которой линейная функция принимает лучшее (по крайней мере, не худшее) значение по отношению к цели задачи; до тех пор, пока не будет найдено оптимальное решение – вершина, где достигается оптимальное значение функции цели (если задача имеет конечный оптимум).
Впервые симплексный метод был предложен американским ученым Дж. Данцигом в 1949 г., однако еще в 1939 г. идеи метода были разработаны российским ученым Л.В. Канторовичем.
Симплексный метод, позволяющий решить любую задачу линейного программирования, универсален. В настоящее время он используется для компьютерных расчетов, однако несложные примеры с применением симплексного метода можно решать и вручную.
Для реализации симплексного метода – последовательного улучшения решения – необходимо освоить три основных элемента:
способ определения какого-либо первоначального допустимого базисного решения задачи;
правило перехода к лучшему (точнее, не худшему) решению;
критерий проверки оптимальности найденного решения.
Для использования симплексного метода задача линейного программирования должна быть приведена к каноническому виду, т.е. система ограничений должна быть представлена в виде уравнений.
В литературе достаточно подробно описываются: нахождение начального опорного плана (первоначального допустимого базисного решения), тоже – методом искусственного базиса, нахождение оптимального опорного плана, решение задач с помощью симплексных таблиц.
3.2. Алгоритм симплекс–метода.
Рассмотрим решение ЗЛП симплекс-методом и изложим ее применительно к задаче максимизации.
1. По условию задачи составляется ее математическая модель.
2. Составленная модель преобразовывается к канонической форме. При этом может выделиться базис с начальным опорным планом.
3. Каноническая модель задачи записывается в форме симплекс-таблицы так, чтобы все свободные члены были неотрицательными. Если начальный опорный план выделен, то переходят к пункту 5.
Симплекс
таблица: вписывается система ограничительных
уравнений и целевая функция в виде
выражений, разрешенных относительно
начального базиса. Строку, в которую
вписаны коэффициенты целевой функции
,
называют
–строкой
или строкой целевой функции.
4.
Находят начальный опорный план, производя
симплексные преобразования с положительными
разрешающими элементами, отвечающими
минимальным симплексным отношениям, и
не принимая во внимание знаки элементов
–строки.
Если в ходе преобразований встретится
0-строка, все элементы которой, кроме
свободного члена, нули, то система
ограничительных уравнений задачи
несовместна. Если же встретится 0-строка,
в которой, кроме свободного члена, других
положительных элементов нет, то система
ограничительных уравнений не имеет
неотрицательных решений.
Приведение системы (2.55), (2.56) к новому базису будем называть симплексным преобразованием . Если симплексное преобразование рассматривать как формальную алгебраическую операцию, то можно заметить, что в результате этой операции происходит перераспределение ролей между двумя переменными, входящими в некоторую систему линейных функций: одна переменная из зависимых переходит в независимые, а другая наоборот – из независимых в зависимые. Такая операция известна в алгебре под названием шага жорданова исключения.
5. Найденный начальный опорный план исследуется на оптимальность:
а) если в
–строке
нет отрицательных элементов (не считая
свободного члена), то план оптимален.
Если при этом нет и нулевых, то
оптимальный план единственный; если же
есть хотя бы один нулевой, то оптимальных
планов бесконечное множество;
б) если в
–строке
есть хотя бы один отрицательный элемент,
которому соответствует столбец
неположительных элементов, то
;
в) если в
–строке
есть хотя бы один отрицательный элемент,
а в его столбце есть хотя бы один
положительный, то можно перейти к
новому опорному плану, более близкому
к оптимальному. Для этого указанный
столбец надо назначить разрешающим, по
минимальному симплексному отношению
найти разрешающую строку и выполнить
симплексное преобразование. Полученный
опорный план вновь исследовать на
оптимальность. Описанный процесс
повторяется до получения оптимального
плана либо до установления неразрешимости
задачи.
Столбец коэффициентов
при переменной, включаемой в базис,
называют разрешающим. Таким образом,
выбирая переменную, вводимую в базис
(или выбирая разрешающий столбец) по
отрицательному элементу
–строки,
мы обеспечиваем возрастание функции
.
Немного сложней определяется переменная, подлежащая исключению из базиса. Для этого составляют отношения свободных членов к положительным элементам разрешающего столбца (такие отношения называют симплексными) и находят среди них наименьшее, которое и определяет строку (разрешающую), содержащую исключаемую переменную. Выбор переменной, исключаемой из базиса (или выбор разрешающей строки), по минимальному симплексному отношению гарантирует, как уже установлено, положительность базисных компонент в новом опорном плане.
В пункте 3 алгоритма предполагается, что все элементы столбца свободных членов неотрицательны. Это требование не обязательно, но если оно выполнено, то все последующие симплексные преобразования производятся только с положительными разрешающими элементами, что удобно при расчетах. Если в столбце свободных членов есть отрицательные числа, то разрешающий элемент выбирают следующим образом:
1) просматривают строку, отвечающую какому-либо отрицательному свободному члену, например –строку, и выбирают в ней какой-либо отрицательный элемент, а соответствующий ему столбец принимают за разрешающий (предполагаем, что ограничения задачи совместны);
2) составляют отношения элементов столбца свободных членов к соответствующим элементам разрешающего столбца, имеющим одинаковые знаки (симплексные отношения);
3) из симплексных отношений выбирают наименьшее. Оно и определит разрешающую строку. Пусть ею будет, например, р –строка;
4) на пересечении разрешающих столбца и строки находят разрешающий элемент. Если разрешающим оказался элемент –строки, то после симплексного преобразования свободный член этой строки станет положительным. В противном случае на следующем шаге вновь обращаются к–строке. Если задача разрешима, то через некоторое число шагов в столбце свободных членов не останется отрицательных элементов.
Если в форму ЗЛП облечена некоторая реальная производственная ситуация, то дополнительные переменные, которые приходится вводить в модель в процессе преобразования ее к канонической форме, всегда имеют определенный экономический смысл.
Рассмотрим симплекс -метод
для решения задач линейного программирования (ЛП). Он основан на переходе от одного опорного плана к другому, при котором значение целевой функции возрастает.
Алгоритм симплекс-метода следующий:
- Исходную задачу переводим в канонический вид путем введения дополнительных переменных. Для неравенства вида ≤ дополнительные переменные вводят со знаком (+ ), если же вида ≥ то со знаком (— ). В целевую функцию дополнительные переменные вводят с соответствующими знаками с коэффициентом, равным 0 , т.к. целевая функция не должна при этом менять свой экономический смысл.
- Выписываются вектора P i из коэффициентов при переменных и столбца свободных членов. Этим действием определяется количество единичных векторов. Правило – единичных векторов должно быть столько, сколько неравенств в системе ограничений.
- После этого исходные данные вводятся в симплекс-таблицу. В базис вносятся единичные вектора, и исключая их из базиса, находят оптимальное решение . Коэффициенты целевой функции записывают с противоположным знаком.
- Признак оптимальности для задачи ЛП – решение оптимально, если в f – строке все коэффициенты положительны. Правило нахождения разрешающего столбца – просматривается f – строка и среди ее отрицательных элементов выбирается наименьшее. Вектор P i его содержащий становится разрешающим. Правило выбора разрешающего элемента – составляются отношения положительных элементов разрешающего столбца к элементам вектора Р 0 и то число, которое дает наименьшее отношение становится разрешающим элементом, относительно которого будет произведен пересчет симплекс-таблицы. Строка, содержащая этот элемент называется разрешающей строкой. Если в разрешающем столбце нет положительных элементов, то задача не имеет решения. После определения разрешающего элемента переходят к пересчету новой симплекс – таблицы.
- Правила заполнения новой симплекс – таблицы. На месте разрешающего элемента проставляют единицу, а другие элементы полагают равными 0 . Разрешающий вектор вносят в базис, из которого исключают соответствующий нулевой вектор, а остальные базисные вектора записывают без изменений. Элементы разрешающей строки делят на разрешающий элемент, а остальные элементы пересчитывают по правилу прямоугольников.
- Так поступают до тех пор, пока в f – строке все элементы не станут положительными.
Рассмотрим решение задачи с использованием рассмотренного выше алгоритма.
Дано:
Приводим задачу к каноническому виду:
Составляем вектора:
Заполняем симплекс – таблицу:
:
Пересчитаем первый элемент вектора Р 0
, для чего составляем прямоугольник из чисел: и получаем: .
Аналогичные расчеты выполним для всех остальных элементов симплекс – таблицы:
В полученном плане f – строка содержит один отрицательный элемент – (-5/3), вектора P 1 . Он содержит в своем столбце единственный положительный элемент, который и будет разрешающим элементом. Сделаем пересчет таблицы относительно этого элемента:
Отсутствие отрицательных элементов в f
– строке означает, что найден оптимальный план
:
F* = 36/5, Х = (12/5, 14/5, 8, 0, 0).
- Ашманов С. А. Линейное программирование, М: Наука, 1998г.,
- Вентцель Е.С. Исследование операций, М: Советское радио, 2001г.,
- Кузнецов Ю.Н., Кузубов В.И., Волошенко А.Б. Математическое программирование, М: Высшая школа, 1986г.
Решение линейного программирования на заказ
Заказать любые задания по этой дисциплине можно у нас на сайте. Прикрепить файлы и указать сроки можно на
- | x 1 | + | x 2 | - | S 1 | = | 1 | ||||||||||
x 1 | +3 | x 2 | + | S 2 | = | 15 | |||||||||||
- | 2 | x 1 | + | x 2 | + | S 3 | = | 4 |
- | x 1 | + | x 2 | - | S 1 | + | R 1 | = | 1 | |||||||||||
x 1 | +3 | x 2 | + | S 2 | = | 15 | ||||||||||||||
- | 2 | x 1 | + | x 2 | + | S 3 | = | 4 |
x 1 = 0 x 2 = 0 S 1 = 0 S 2 = 15 S 3 = 4 R 1 = 1 |
=> W = 1 |
x 1 | x 2 | S 1 | S 2 | S 3 | R 1 | св. член | Θ |
-1 | 1 | -1 | 0 | 0 | 1 | 1 | 1: 1 = 1 |
1 | 3 | 0 | 1 | 0 | 0 | 15 | 15: 3 = 5 |
-2 | 1 | 0 | 0 | 1 | 0 | 4 | 4: 1 = 4 |
1 | -1 | 1 | 0 | 0 | 0 | W - 1 | |
-1 | 1 | -1 | 0 | 0 | 1 | 1 | |
4 | 0 | 3 | 1 | 0 | -3 | 12 | |
-1 | 0 | 1 | 0 | 1 | -1 | 3 | |
0 | 0 | 0 | 0 | 0 | 1 | W - 0 |
- | x 1 | + | x 2 | - | S 1 | = | 1 | ||||||||||
4 | x 1 | + | 3 | S 1 | + | S 2 | = | 12 | |||||||||
- | x 1 | + | S 1 | + | S 3 | = | 3 |
x 1 | x 2 | S 1 | S 2 | S 3 | св. член | Θ |
-1 | 1 | -1 | 0 | 0 | 1 | |
4 | 0 | 3 | 1 | 0 | 12 | 12: 4 = 3 |
-1 | 0 | 1 | 0 | 1 | 3 | |
4 | 0 | 1 | 0 | 0 | F - 1 | |
-1 | 1 | -1 | 0 | 0 | 1 | |
1 | 0 | 3/4 | 1/4 | 0 | 3 | |
-1 | 0 | 1 | 0 | 1 | 3 | |
4 | 0 | 1 | 0 | 0 | F - 1 | |
0 | 1 | -1/4 | 1/4 | 0 | 4 | |
1 | 0 | 3/4 | 1/4 | 0 | 3 | |
0 | 0 | 7/4 | 1/4 | 1 | 6 | |
0 | 0 | -2 | -1 | 0 | F - 13 |
S 1 = 0 S 2 = 0 x 1 = 3 x 2 = 4 S 3 = 6 |
=> F - 13 = 0 => F = 13 |
Задач линейного программирования. Он в последовательном построении , характеризующей рассматриваемый процесс. Решение разбивается на три основных этапа: выбор переменных, построение системы ограничений и поиск целевой функции.
Исходя из этого разделения, условие задачи можно перефразировать следующим образом: экстремум целевой функции Z(X) = f(x1, x2, … ,xn) → max (min) и соответствующие переменные, если известно, что они удовлетворяют системе ограничений: Φ_i (x1, x2, … ,xn) = 0 при i = 1, 2, …, k;Φ_i (x1, x2, … ,xn)) 0 при i = k+1, k+2, …, m.
Систему ограничений нужно привести к каноническому виду, т.е. к системе линейных уравнений, где число переменных больше числа уравнений (m > k). В этой системе обязательно найдутся переменные, которые можно выразить через другие переменные, а если это не так, то их можно ввести искусственно. В этом случае первые называются базисом или искусственным базисом, а вторые – свободными.
Удобнее рассмотреть симплекс-метод на конкретном примере. Пусть дана линейная функция f(x) = 6x1 + 5x2 + 9x3 и система ограничений:5x1 + 2x2 + 3x3 ≤ 25;x1 + 6x2 + 2x3 ≤ 20;4x1 + 3x3 ≤ 18.Требуется найти максимальное значение функции f(x).
РешениеНа первом этапе задайте начальное (опорное) решение системы уравнений абсолютно произвольным образом, которое при этом должно удовлетворять данной системе ограничений. В данном случае требуется введение искусственного , т.е. базисных переменных x4, x5 и x6 следующим образом:5x1 + 2x2 + 3x3 + x4 = 25;x1 + 6x2 + 2x3 + x5 = 20;4x1 + 3x3 + x6 = 18.
Как видите, неравенства преобразовались в равенства благодаря добавленным переменные x4, x5, x6, которые являются неотрицательными величинами. Таким образом, вы привели систему к каноническому виду. Переменная x4 входит в первое уравнение с коэффициентом 1, а в два – с коэффициентом 0, то же справедливо для переменных x5, x6 и соответствующих уравнений, что соответствует определению базиса.
Вы подготовили систему и нашли начальное опорное решение – X0 = (0, 0, 0, 25, 20, 18). Теперь представьте коэффициенты переменных и свободные члены уравнений (цифры справа от знака «=») в виде таблицы для оптимизации дальнейших вычислений (см. рис).
Суть симплекс-метода состоит в том, чтобы привести эту таблицу к такому виду, в котором все цифры в строке L будут неотрицательными величинами. Если же выяснится, что это невозможно, то система вообще не имеет оптимального решения. Для начала выберите самый минимальный элемент этой строки, это -9. Цифра стоит в третьем столбце. Преобразуйте соответствующую переменную x3 в базисную. Для этого разделите строку на 3, чтобы в ячейке получилась 1.
Теперь нужно, чтобы ячейки и обратились в 0. Для этого отнимите от соответствующие цифры третьей строки, на 3. От элементов второй строки - элементы третьей, умноженные на 2. И, наконец, от элементов строки L - умноженные на (-9). Вы получили второе опорное решение: f(x) = L = 54 при x1 = (0, 0, 6, 7, 8, 0).