Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Элементы математического программированияСодержание книги
Поиск на нашем сайте БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Элементы математического программирования
Методические указания и контрольные задания для студентов экономических специальностей БНТУ
Минск 2006
УДК 380.105 (075.8) ББК 22.171 Л 26
Рецензенты:
В.Ф.Бубнов, А.Н.Рудый
Корзников А.Д., Матвеева Л.Д., Смирнов М.Б. Л26 Элементы математического программирования: Методическое пособие для студентов экономических специальностей БНТУ/ Корзников А.Д., Матвеева Л.Д., Смирнов М.Б.. – Мн.: БНТУ, 2006. – 68 с.
Под общей редакцией А.Д.Корзникова
ISBN 985-479-172-6.
Данное методическое пособие включает в себя изложение теоретических методов решения основных задач математического программирования, а также контрольные задания по каждой теме для самостоятельного решения. Пособие состоит из восьми разделов, по каждому из которых предлагается 10 задач. В каждом разделе описывается теоретическое обоснование метода, формальный алгоритм и пример решения типовой задачи. Пособие предназначено для студентов экономических специальностей заочного отделения БНТУ; оно может быть также полезно преподавателям, ведущим практические занятия по курсу математического программирования.
Ó БНТУ 2006
КОНТРОЛЬНЫЕ ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
Задание 2. Геометрическим методом найти максимум и минимум функции Z для x, y ³ 0 при заданных ограничениях:
Варианты:
1. Z = 2x + y 2. Z = 3x + y
-x + 6y £ 8 x - 2y £ 3 x + y ³ 1 2x + y ³ 1
3. Z = 2x - y 4. Z = x + y
x + y ³ 6 x + y £ 7 x - 3y £ 3 -x + 2y £ 2
5. Z = 4x + y 6. Z = 3x - y
4x - y £ 14 x ³ 2 3x + y ³ 7 5x - 3y £ 22
7. Z = 2x + y 8. Z = x + 5y
4x - y £ 8 x - y £ 4 x - y ³ -1 x + y ³ 6
9. Z = 5x + y 10. Z = 3x
4x - 3y £ 14 2x - y £ 11 3x + y ³ 4 4x + y ³ 19 Алгоритм Симплекс-метода Исходные данные: задача в канонической форме; целевая функция минимизируется; найдено начальное базисное допустимое решение (опорный план), то есть система уравнений (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
-x1 + 2х2 ³ 5, x1 + х2 £ 10, x1, х2 ³ 0. Приведем ее к каноническому виду введением трех неотрицательных переменных х3, х4, х5. Получим задачу:
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) не будет допустимым. Пытаться просто перебирать базисные решения в попытке отыскать допустимое, нецелесообразно, так как неясно, имеет ли эта задача вообще допустимые решения.
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).
Варианты:
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 + y £ 1 x + 2y ³ 8 3x - 2y £ 3 3x - y £ 10
5. Z = 2x + y ® max 6. Z = x + y ® max
3x - 2y £ 3 -x + 2y £ 4 5x - 4y ³ 1 -3x + 4y ³ 2
7. Z = 5x + 2y ® max 8. Z = 2x + 4y ® max
2x + y ³ 7 -x + 3y ³ 4 5x + 2y £ 17 x + 2y £ 11
9. Z = 2x + y ® max 10. Z = x - y ® min
x - y £ 4 2x - y £ 7 x + y ³ 2 5x + y ³ 7
ДВОЙСТВЕННЫЙ СИМПЛЕКС-МЕТОД
Рассмотрим задачу линейного программирования в общей форме: Z = c1 x1 + c2 x2 +...+ cn xn ® max (1) при ограничениях: y 1³0 a11 x1 + a12 x2 +...+ a1n xn £ b1 y 2³0 a21 x1 + a22 x2 +...+ a2n xn £ b2 ....................................... (2) y k³0 ak1 x1 + ak2 x2 +...+ akn xn £ bk y k+1 ak+1 1 x1 + ak+1 2 x2 +...+ ak+1 n xn = bk+1 ....................................... y m am1 x1 + am2 x2 +...+ amn xn = bm, xj ³ 0, j = 1,..., l; l £ n (3) Каждому i -му ограничению из (2) соответствует переменная y i так называемой двойственной задачи к задаче (1) – (3) (показана слева от соответствующего ограничения). Двойственная задача имеет вид: W = b1 y1 + b2 y2 +...+ bm xm ® min (4) при ограничениях: x1 ³ 0 a11 y1 + a21 y2 +...+ am1 ym ³ c1 x2 ³ 0 a12 y1 + a22 y2 +...+ am2 ym ³ c2 ....................................... (5 ) xl ³ 0 a1l y1 + a2l y2 +...+ aml ym ³ cl xl+1 a1 l+1 y1 + a2 l+1 y2 +...+ a m l+1 ym = cl+1 ....................................... xn a1n y1 + a2n y2 +...+ amn ym = cn, yi ³ 0, i = 1,..., k; k £ n (6) Задачи (1) – (3) и (4) – (6) образуют пару задач, называемую в линейном программировании двойственнойпарой. Сравнивая две задачи, видим, что двойственная задача по отношению к исходной (прямой) содержит те же самые коэффициенты aij, bi, cj и составляется согласно следующим правилам: 1. Целевая функция (1) исходной задачи задается на максимум, а целевая функция (4) двойственной задачи – на минимум. 2. Матрица АТ, составленная из коэффициентов при неизвестных в системе ограничений (5) двойственной задачи получается из матрицы А прямой задачи транспонированием (т.е. заменой строк столбцами):
а11 а12... а1n a11 a21... am1 A = а21 а22... а2n AT = a12 a22... am2 ......................... аm1 аm2... аmn a1n a2n... amn
3. Число переменных в двойственной задаче (4)–(6) равно числу ограничений в системе (2) прямой задачи, а число ограничений в системе (5) двойственной задачи равно числу переменных в прямой задаче. 4. Коэффициентами при неизвестных в целевой функции (4) двойственной задачи являются свободные члены в системе (2) прямой задачи и наоборот. 5. Если переменная xj ³ 0, то j- ое ограничение в системе (5) двойственной задачи является неравенством “ ³ ”. Если же переменная xj может иметь любой знак, то j -ое ограничение в системе (5) представляет собой уравнение. Каждая из задач двойственной пары (1) – (3) и (4) – (6) фактически является самостоятельной задачей линейного программирования и может быть решена независимо одна от другой. Однако при определении симплексным методом оптимального плана одной из задач, тем самым находится решение и другой задачи. Существующие зависимости между решениями прямой и двойственной задач характеризуются сформулированными ниже теоремами двойственности. Теорема 1. (Основная теорема двойственности). Если одна из пары двойственных задач имеет оптимальный план, то и другая имеет оптимальный план причем значения целевых функций задач при их оптимальных планах совпадают, т.е. Zmax = Wmin. Если же целевая функция одной из задач не ограничена (для исходной (1) – (3) – сверху, для двойственной (4) – (6) – снизу), то другая задача вообще не имеет допустимых решений. Теорема 2. (Вторая теорема двойственности). Для того, чтобы два допустимых решения
Замечание. Соотношения (7) верны только для ограничений в виде неравенств и для неотрицательных переменных.
Двойственный симплекс-метод, как и симплекс-метод, используется при нахождении решения задачи линейного программирования, записанной в канонической форме. Вместе с тем двойственный симплекс-метод можно применять при решении задачи ЛП, свободные члены системы ограничений которой могут быть любыми числами (при решении задачи симплексным методом эти числа предполагались неотрицательными). Опишем алгоритм двойственного симплекс-метода. Рассмотрим задачу линейного программирования в канонической форме.
Пусть матрица ограничений А содержит единичную подматрицу порядка m и первые m переменных
Предположим, что Шаг 1. Составить исходную симплексную таблицу.
Шаг 2. Выяснить, имеется ли хотя бы одно отрицательное число среди элементов столбца b. Если нет, то перейти к шагу 8. Иначе – к шагу 3. Шаг 3. Если отрицательных чисел в столбце b несколько, то выбрать наименьшее. Пусть, для определенности, это число Шаг 4. Среди элементов Шаг 5. Вычислить Шаг 6. С помощью ведущего элемента Шаг 7. Построить новую симплексную таблицу и перейти к шагу 2. Шаг 8. Задача линейного программирования (8) – (10) решена. По последней симплексной таблице выписать оптимальный план и минимальное значение целевой функции задачи (8) – (10). Замечание. Если среди чисел
Пример. Решить задачу линейного программирования: Z = 6x1 + 9x2 + 3x3 ® min
3x1 + x2 – x3 ³ 1 (11) xj ³ 0, j = 1, 2, 3.
Решение. Составим для задачи (11) двойственную: W = 2y1 + y2 ® max
2y1 + y2 £ 9 (12) y1 - y2 £ 3 y1, y2 ³ 0 Для решения задачи (11) двойственным симплекс-методом приведем ее к каноническому виду. Для этого умножим первое и второе ограничения на (-1) и добавим соответственно неотрицательные дополнительные переменные x 4 ³ 0, x5 ³ 0: Z = 6x1 + 9x2 + 3x3 ® min
-3x1 - x2 + x3 + x5 = -1 (13) xj ³ 0, j = 1, 2,..., 5. Базисными переменными здесь являются переменные х 4 и х 5. Поскольку все коэффициенты с j ³ 0, то критерий оптимальности для этого базисного решения выполнен, однако само решение Х = (0, 0, 0, -2, -1) содержит отрицательные переменные, то есть не является допустимым. Естественно попытаться вывести отрицательные (не являющиеся допустимыми) переменные из базиса, сохранив при этом неотрицательность коэффициентов последней строки, так как в этом случае полученное допустимое решение будет являться и оптимальным. Такой подход является содержанием двойственного симплекс-метода. Проиллюстрируем его на примере решения задачи (13). Составим исходную симплекс-таблицу.
Вычисляем Определяем
Элемент b 2 = -3 < 0. Следовательно, разрешающей является вторая строка таблицы. Как и ранее, находим Следовательно второй столбец – разрешающий, переменную х 2 включаем в базис, переменную х 5 исключаем из базиса. Пересчитывая таблицу относительно элемента а 22 = -3, получаем новую таблицу:
Среди элементов столбца “Значение” нет отрицательных чисел. В Z – строке также нет отрицательных чисел. Следовательно, найден оптимальный план: Х * = (0; 1; 0), при этом Z* = Zmin = 9. По последней симплекс-таблице находим решение двойственной задачи (9). Для этого выясняем, какие переменные задачи (10) входили в исходный базис. В первоначальной таблице это – х 4, х 5. В последней симплекс-таблице находим элементы Z – строки, соответствующие этим базисным переменным (с 4 = 4, с 5 = 1) и прибавляем к ним соответствующие коэффициенты исходной целевой функции (с 4 = с 5 = 0). В результате получаем Y * = (4; 1), W * = W max = 9.
КОНТРОЛЬНЫЕ ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ Задание 4. Решить задачу линейного программирования двойственным симплекс-методом. Варианты
1. 2.
V. ТРАНСПОРТНАЯ ЗАДАЧА
Общая постановка транспортной задачи состоит в определении оптимального плана перевозок некоторого однородного груза из m пунктов отправления А 1, А 2,..., А m в n пунктов назначения B1, B 2,..., B n. При этом в качестве критерия оптимальности берется либо минимальная стоимость перевозок всего груза, либо минимальное время его доставки. Математическая модель транспортной задачи имеет вид:
Здесь c ij - тарифы перевозки единицы груза из i – го пункта отправления А i в j – ый пункт назначения B j, bj - потребность в грузе в j – ом пункте назначения, ai – запасы груза в i – ом пункте отправления. Наличие линейных уравнений (15) и (16) обеспечивает доставку необходимого количества груза в каждый из пунктов назначения и вывоз всего имеющегося груза из всех пунктов отправления. При этом, ввиду (17), исключаются обратные перевозки. Задача (14) – (17) является частным случаем задачи линейного программирования, однако, в силу своей специфики решается специальным методом. Если выполняется так называемое условие баланса
то такая транспортная задача называется закрытой. Если условие баланса (18) не выполняется, то задача называется открытой. Теорема 1. Для разрешимости транспортной задачи необходимо и достаточно, чтобы выполнялось условие баланса (5). Если Для решения задачи (14) – (17) применяется метод потенциалов, который по существу, является другой формой симплекс-метода. Опишем алгоритм метода. Исходные данные транспортной задачи запишем в таблице
1. Построение начального опорного плана. Система ограничений (16)-(17) содержит m×n неизвестных и m+ n уравнений, связанных отношением (18). Невырожденный опорный план задачи содержит m + n – 1 положительных перевозок или компонент. Таким образом, если каким-либо способом получен невырожденный опорный план задачи, то в матрице (xij) значений его компонент положительными являются только m + n – 1, а остальные равны нулю. Клетки, в которых находятся отличные от нуля перевозки, называются занятыми, остальные – незанятыми. Занятые клетки соответствуют базисным неизвестным, и для невырожденного опорного плана их количество равно m + n-1. Для построения начального опорного плана применим метод минимальной стоимости. Выбираем клетку с минимальной стоимостью (если их несколько, возьмем любую из них). Пусть, например, Вышеописанную процедуру повторяют для оставшейся транспортной таблицы до тех пор, пока не будут закрыты все строки и столбцы. 2. Построение системы потенциалов. Система потенциалов строится для невырожденного опорного плана и имеет вид:
где Вычисление потенциалов удобно проводить по таблице, положив равным нулю один из потенциалов и затем последовательно находя все остальные потенциалы вычитанием из стоимостей базисных клеток уже известных потенциалов. Потенциалы поставщиков 3. Проверка опорного плана на оптимальность. Для каждой свободной клетки вычисляют оценки
Если 4. Построение цикла и нахождение нового опорного плана. Среди отрицательных оценок выбираем наименьшую. Пусть
В клетке (l, k) нарушено условие оптимальности. Для улучшения опорного плана необходимо в клетку (l, k) отправить некоторое количество груза, превратив ее тем самым в базисную. Эта операция эквивалентна действию по замене базиса в симплекс-методе. Клетку (l, k) отмечают
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-21; просмотров: 393; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.011 с.) |