Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
III. Решение задачи линейного программирования Симплекс-методом
Задача линейного программирования (ЗЛП) (1) - (3) (см. задание 2) называется канонической, если все ограничения вида (2) являются уравнениями (равенствами), т.е. задачей линейного программирования в канонической форме называется задача: Z = c1 x1 + c2 x2 +...+ cn xn ® min (max) (1) при ограничениях: a11 x1 + a12 x2 +...+ a1n xn = b1 a21 x1 + a22 x2 +...+ a2n xn = b2 (2) ........................... am1 x1 + am2 x2 +...+ amn xn = bm, xj ³ 0, j = 1,..., n (3)
Симплекс-метод является вычислительной процедурой, которая позволяет решить любую каноническую ЗЛП алгебраическим методом. Теоретической основой метода являются следующие два утверждения: Теорема 1. Если ЗЛП имеет допустимые решения, то существует хотя бы одно базисное допустимое решение задачи. Теорема 2. Если ЗЛП имеет конечное оптимальное решение, то хотя бы одно из оптимальных решений является базисным. Напомним, что решение системы (2) называется допустимым, если оно удовлетворяет ограничениям (3). Таким образом, из теоремы 1 следует, что если не существует ни одного базисного допустимого решения системы (2), то эта система вообще не имеет допустимых решений, т.е. ограничения (2) – (3) являются несовместными. В случае если имеются допустимые решения системы 2, то теорема 2 утверждает, что оптимальное решение ЗЛП можно найти среди базисных допустимых решений этой системы, которых, как мы знаем, конечное число. Суть симплекс-метода и состоит в последовательном переборе базисных допустимых решений системы (2), начиная с некоторого начального, которое еще называют первоначальным опорным планом. Перебор осуществляется таким образом, чтобы каждое новое решение было лучше предыдущего (в смысле приближения к максимуму или минимуму целевой функции Z). Итак, для применения метода необходимо, чтобы задача была в канонической форме, и чтобы существовало начальное базисное допустимое решение (опорный план), наличие которого гарантирует непротиворечивость ограничений задачи. Чтобы преобразовать ЗЛП к каноническому виду к правой части каждого ограничения-неравенства прибавляют или вычитают неотрицательную дополнительную переменную, например, ограничение 3х1 + 5х2 – 2х3 £ 7 преобразуется в уравнение 3х1 + 5х2 – 2х3 + х4 = 7 прибавлением дополнительной переменной х4 ³ 0, а неравенство вида х1 – 2х2 + х3 ³ 5 заменяется на уравнение х1 – 2х2 + х3 - х5 = 5, где х5 ³ 0.
Заметим, что знак неравенства ³ можно заменить на £ умножением всего неравенства на -1, например, неравенство х 1 – 3 х2 ³ -6 эквивалентно неравенству -х1 + 3х2 £ 6. Отметим также, что максимизацию целевой функции Z можно заменить на минимизацию функции – Z и наоборот, так как максимум функции Z = c1 x1 + c2 x2 +...+ cn xn достигается в тех же точках, что и минимум функции -Z = - c1 x1 - c2 x2 -...- cn xn. Мы приведем алгоритм симплекс-метода для минимизации целевой функции (1) Z = c1 x1 + c2 x2 +...+ cn xn. Поясним суть метода на следующем примере: Пусть требуется решить следующую ЗЛП: Найти максимум функции Z = 3x1 +4 x2 ® max при ограничениях: 3x1 + x2 £ 9 x1 + 2x2 £ 8 x1, x2 ³ 0. Приведем задачу к каноническому виду и заменим максимизацию целевой функции Z на минимизацию функции Z¢ = -Z. Получим следующую задачу:
Z¢ = -3x1 - 4x2 + 0х3 + 0х4 ® min (4) 3x1 + x2 + x3 = 9 x1 + 2x2 + x4 = 8 (5) x1, x2, x3, x4 ³ 0. (6)
Ясно, что переменные x3 и x4 являются базисными в системе (5) и соответствующее базисное решение Х0 = (0, 0, 9, 8) является допустимым, т.к. все xj ³ 0. При этом Z0 = 0. Начнем с того, что проверим опорный план Х0 на оптимальность. Поскольку целевая функция Z¢ = -3x1 - 4 x2 + 0х3 + 0х4 выражена через свободные переменные x1 и x2, коэффициенты при которых отрицательны, то, очевидно, увеличение этих переменных приведет к уменьшению значения целевой функции на 3 ед. при увеличении x1 на одну единицу и на 4 ед. при увеличении на одну единицу x2 (сейчас x1 и x2 равны 0). Поэтому делаем вывод, что опорный план Х0 не является оптимальным (т.к. введение в базис переменных x1 и x2 приведёт к уменьшению значения целевой функции). Итак, для того, чтобы получить лучшее базисное решение, мы должны включить в базис переменные x1 и x2. Будем вводить их в базис по очереди. Поскольку увеличение переменной x2 быстрее уменьшает Z, то выбираем переменную x2 для включения ее в базис (это разумно, но не обязательно). Теперь надо выяснить в какой строке системы (5) переменная x2 будет базисной, чтобы полученное новое базисное решение было допустимым. Анализируя первое уравнение системы 3x1 + x2 + x3 = 9, замечаем, что поскольку x1 = 0, то увеличение x2 влечет уменьшение x3. Так как x3 ³ 0 ввиду (6), то увеличение x2 возможно лишь до тех пор, пока x3 не уменьшится до нуля, т.е. до значения 9/1 = 9. Поскольку переменная x2 есть также и во втором уравнении, то рассуждая аналогично, заключаем, что в этом случае переменную x2 можно увеличивать максимум до значения 8/2 = 4 при котором переменная x4 уменьшится до нуля.
Новое базисное решение будет допустимым, если мы будем увеличивать переменную х2 до значения, равного min{9/1, 8/2} = 4, которое достигается во второй строке системы. Поэтому переменная x2 должна быть базисной во втором уравнении, элемент а22 = 4 системы будет разрешающим и, проводя преобразования Жордана-Гаусса, получаем новое (улучшенное) базисное допустимое решение:
X1 = (0, 4, 5, 0), Z1 = -3×0 - 4× 4 + 0×5 + 0×0 = -16 < Z0 . Теперь повторим эту процедуру для нового опорного плана Х1. Для того, чтобы проверить его на оптимальность, нужно выразить целевую функцию через свободные переменные x1 и x4 этого плана, поскольку их нужно будет изменять, чтобы получить другое (лучшее) базисное решение. Для этого из второго уравнения последней системы выражаем базисную переменную х2 = 4 – ½ x1 - ½ x4 и подставляем ее в целевую функцию Z = -3x1 - 4 x2 + 0х3 + 0х4 = -3x1 - 4 (4 – ½ x1 - ½ x4) + 0х3 + 0х4 = -16 – x1 + 0х2 + 0х3 + 2 x4. Проводимые вычисления удобно оформлять в виде так называемых симплекс-таблиц, которые являются, фактически, расширенными матрицами системы ограничений (5) с добавленной Z – строкой. Исходная симплекс-таблица.
Опорный план Х0 = (0, 0, 9, 8), значение Z равно Z0 = 0. Таблица 1.
План Х1 = (0, 4, 5, 0), значение Z равно Z1 = -16. Последняя строка симплекс-таблицы называется Z – строкой поскольку в ней расположены коэффициенты целевой функции Z. Заметим, что для того, чтобы выразить коэффициенты целевой функции через свободные переменные, достаточно преобразованиями Жордана - Гаусса сделать нули в базисных столбцах Z – строки. При этом новое значение Z автоматически появится в столбце “Значение” с противоположным знаком. Поскольку в Z – строке есть отрицательный коэффициент в первом столбце, то план Х1 не оптимален, так как введение в базис свободной переменной х1 уменьшает Z (введение в базис свободной переменной х4 увеличивает Z). Поэтому вводим в базис х1, и первый столбец таблицы будет разрешающим. Чтобы выбрать разрешающую строку, как и раньше делим элементы столбца “Значение” на положительные элементы разрешающего столбца и находим минимальное частное: которое достигается в первой строке, которая и будет разрешающей. Значит разрешающим элементом таблицы 1 будет элемент а11 = 5/2 (выделим его прямоугольником). Теперь проведем обычные преобразования Жордана – Гаусса относительно этого элемента, т.е. сначала делим разрешающую строку на разрешающий элемент,
а затем делаем нули на месте всех остальных элементов разрешающего столбца, для чего: ко второй строке прибавляем первую, умноженную на -½, к Z – строке прибавляем первую. В результате получим новую таблицу Таблица 2.
Новое базисное решение (план) Х2 = (2, 3, 0, 0), значение Z равно Z2 = -18. Просматривая Z – строку, замечаем, что в ней нет отрицательных элементов. Это означает, что при попытке ввести в базис свободные переменные х3 или х4 целевая функция будет увеличиваться (на 2/5 и 9/5 единиц при увеличении на 1 единицу переменных х3 и х4 соответственно). Таким образом, других базисных решений, лучших чем Х2, (т.е. с меньшим, чем –18 значением Z) не существует. Решение Х2 = (2, 3, 0, 0) является оптимальным и Zmin = Z(X2) = -18. Решение исходной задачи: Zmax = 18 при х1 = 2, х2 = 3, х3, х4 = 0. Обобщая приведенные выше рассуждения, сформулируем
Алгоритм Симплекс-метода Исходные данные: задача в канонической форме; целевая функция минимизируется; найдено начальное базисное допустимое решение (опорный план), то есть система уравнений (2) имеет базис и все правые части уравнений bi ³ 0 - неотрицательны; целевая функция выражена через свободные переменные. При выполнении этих условий каждая итерация метода состоит из трех шагов: Шаг 1. Имеющийся план проверяется на оптимальность. Если в Z – строке нет отрицательных элементов, то имеющийся план оптимален и задача решена. Если отрицательные элементы есть, то план не оптимален. Выбираем любой отрицательный элемент Z – строки (как правило, максимальный по модулю) и считаем столбец, в котором он находится в качестве разрешающего. Пусть для определенности это столбец переменной хs. Шаг 2. Выбор разрешающей строки. Пусть разрешающий столбец, выбранный на предыдущем шаге, это столбец переменной хs. Для каждой i -ой строки (i = 1,...,m) делим элементы столбца свободных членов “Значение” (напомним, что все они неотрицательные) на положительные элементы разрешающего столбца, стоящие в этой строке, и находим минимальное из полученных частных, т.е. находим Пусть этот минимум достигается в строке r. Тогда r -ая строка является разрешающей, элемент ars - разрешающий элемент таблицы. Шаг 3. Пересчет таблицы. Преобразованиями Жордана-Гаусса пересчитываем таблицу относительно разрешающего элемента ars, найденного на предыдущем шаге, для чего: 3.1. Делим разрешающую строку на разрешающий элемент. В результате, на месте элемента ars будет стоять а¢rs = 1. 3.2. Ко всем остальным строкам таблицы (включая Z - строку) прибавляем полученную разрешающую, умноженную на элемент (-ais), где i – номер изменяемой строки i =1,2,...,r-1,r+1,...,m. К Z – строке прибавляем разрешающую строку, умноженную на (- cs). Иначе говоря, элементы новой таблицы (со штрихом) вычисляются по формулам:
а¢rj = arj / ars; - новые элементы разрешающей строки (j = 1, 2,..., n); b¢r = br / ars а¢ij = aij - a¢rj× ais; - новые элементы i-й строки (i =1, 2,...,m; j = 1, 2,..., n); b¢i = bi - b¢r × ais c¢j = cj - a¢rj× cs; - новые элементы Z - строки (j = 1, 2,..., n); Z¢ = Z - b¢r × cs В результате этих преобразований в столбце хs везде будут стоять нули кроме r -строки, где будет 1, т.е. хs будет новой базисной переменной, целевая функция будет выражена через новые свободные переменные, новый план Х¢ находится в столбце “Значение” и лучше предыдущего, так как значение целевой функции для нового плана равно -Z¢ < Z. Переходим к шагу 1 и повторяем всю процедуру для нового плана Х¢. Поскольку базисных решений системы (2) конечное число, а каждое новое базисное решение лучше предыдущего, то этот процесс завершится за конечное число шагов.
Решение задачи линейного программирования в общем случае. Рассмотрим следующую задачу ЛП: Z = - 3x1 + х2 ® min 2x1 – х2 ³ 2, -x1 + 2х2 ³ 5, x1 + х2 £ 10, x1, х2 ³ 0. Приведем ее к каноническому виду введением трех неотрицательных переменных х3, х4, х5. Получим задачу:
Z = - 3x1 + х2 ® min 2x1 – х2 - х3 = 2, -x1 + 2х2 - х4 = 5, (7) x1 + х2 + х5 = 10, x1, х2, х3, х4, х5 ³ 0. При попытке решить эту задачу симплекс-методом возникает определенная трудность, связанная с тем, что нет очевидного начального базисного допустимого решения (опорного плана), так как переменные х3 и х4 не являются базисными. Умножение первых двух уравнений на -1 также ничего не дает, поскольку соответствующее базисное решение (0, 0, -2, -5, 10) не будет допустимым. Пытаться просто перебирать базисные решения в попытке отыскать допустимое, нецелесообразно, так как неясно, имеет ли эта задача вообще допустимые решения. Для решения проблемы применим метод искусственного базиса. Введем в первые два уравнения (третье не создает проблем) искусственные переменные х6 ³ 0 и х7 ³ 0. В результате получим базис из переменных х6, х7, х5. 2x1 – х2 - х3 + х6 = 2, -x1 + 2х2 - х4 + х7 = 5, (8) x1 + х2 + х5 = 10,
Соответствующее базисное решение Х0 = (0, 0, 0, 0, 10, 2, 5) является допустимым для ограничений (8). Однако ограничения (7) и (8) не являются эквивалентными в том смысле, что любому допустимому решению системы ограничений (8), в котором хотя бы одна искусственная переменная отлична от нуля, нельзя поставить в соответствие допустимое решение системы ограничений (7). С целью исключения искусственных переменных из базисного решения системы ограничений (8), т.е. для получения допустимого базисного решения системы ограничений (7), используем алгоритм симплекс-метода. Для того, чтобы искусственные переменные стали свободными, необходимо, чтобы они были равны нулю (сейчас х6 = 2, х7 = 5). Поэтому введем искусственную целевую функцию W = х6 + х7.
и будем ее минимизировать при ограничениях (8). Если удастся найти базисное допустимое решение при котором W = 0 (сейчас W = 7), то тогда х6 и х7 будут равны нулю, поскольку они неотрицательны, и мы получим базис из основных и дополнительных переменных. Таким образом, задача разбивается на два этапа. На первом этапе минимизируется искусственная целевая функция W. Этот этап закончится либо нахождением опорного плана исходной задачи (7), либо тем, что минимизировать функцию W до нуля не удастся, т.е. допустимых планов нет, а значит (ввиду теоремы 1) и нет вообще допустимых решений задачи. Если опорный план найдется, то на втором этапе решаем задачу симплекс-методом. Проиллюстрируем описанный выше метод искусственного базиса, применив его к решению задачи (7). Этап 1. Составим исходную симплекс-таблицу для задачи (8). Все вычисления будем проводить также и для целевой функции Z. Тогда после завершения первого этапа получим целевую функцию Z, выраженную через свободные переменные.
Для того, чтобы начать минимизацию функции W, ее надо выразить через свободные переменные. Для этого, из W - строки вычтем первую и вторую строки. Получим Таблица 1.
Так как в W – строке есть отрицательные элементы, то выбираем в качестве разрешающего любой из первых двух столбцов, например первый. Поскольку min{2/2, 10/1} = 1 достигается в первой строке, то разрешающая строка – первая и разрешающий элемент а11 = 2. Пересчитывая таблицу относительно этого элемента, получим новую таблицу: Таблица 2.
Так как переменная х6 вышла из базиса, то в дальнейшем ее не используем (вычеркиваем столбец х6). Теперь разрешающим столбцом будет второй, разрешающей строкой – вторая и после пересчета получим (поскольку искусственная переменная х7 выйдет из базиса, столбец х7 также вычеркиваем): Таблица 3.
Этап 1 успешно завершен, так как искусственные переменные выведены из базиса и мы получили опорный план Х0 = (3, 4, 0, 0, 3) исходной задачи (7), к которому можно применить алгоритм симплекс-метода. На втором этапе W - строка уже не нужна и мы ее вычеркиваем.
Этап 2. Таблица 3.
Целевую функцию Z можно уменьшить (сейчас Z = -5) если ввести в базис х3 или х4. Выбираем третий столбец в качестве разрешающего, т.к. –5/3 < -1/3. Разрешающей строкой будет третья, т.к. только в ней есть положительный элемент разрешающего столбца. Разрешающий элемент а33 = 1. Пересчитывая таблицу, получим: Таблица 4.
Поскольку в Z – строке таблицы 4 нет отрицательных элементов, то новый план Х1 = (5, 5, 3, 0, 0) является оптимальным и Zmin = Z(5,5) = -10. Задача решена полностью.
КОНТРОЛЬНЫЕ ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ Задание 3. Решить задачу линейного программирования симплекс-методом (x, y ³ 0).
Варианты:
1. Z = x - 2y ® min 2. Z = -x + y ® min 3x + y ³ 8 3x - 2y ³ 7 4x + 5y £ 29 x + 2y £ 13 x + 4y ³ 10 x - 2y £ 1
3. Z = 2x + y ® max 4. Z = x - y ® max -x + 2y ³ 3 -2x + 3y £ 5 -x + y £ 1 x + 2y ³ 8 3x - 2y £ 3 3x - y £ 10
5. Z = 2x + y ® max 6. Z = x + y ® max x - y £ 0 x - y ³ 0 3x - 2y £ 3 -x + 2y £ 4 5x - 4y ³ 1 -3x + 4y ³ 2
7. Z = 5x + 2y ® max 8. Z = 2x + 4y ® max 3x + y ³ 9 3x + y ³ 8 2x + y ³ 7 -x + 3y ³ 4 5x + 2y £ 17 x + 2y £ 11
9. Z = 2x + y ® max 10. Z = x - y ® min -x + 5y £ 4 x + 3y £ 7 x - y £ 4 2x - y £ 7 x + y ³ 2 5x + y ³ 7
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 323; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.21.231.245 (0.08 с.) |