Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Теория симплекс метода и его приложения
Общая задача линейного программирования состоит в том, чтобы найти неотрицательное значение n при переменных xi удовлетворяющих m линейным ограничениям вида Ранг матрицы r(A) - это максимальное число линейно независимых строк или столбцов матрицы А. что соответствует числу различных комбинаций из m столбцов матрицы А, которые могут быть выбраны для получения матрицы В. Для некоторых таких комбинаций базисное решение может не существовать, т.к. входящие в данную комбинацию векторы могут оказаться линейно независимыми. Предположим, что все ограничения перенумеруем, что первыми записаны ограничения со знаком ≤, вторые со ≤ и третьими со знаком =. Для любых переменных Xj (j от 1 до n), удовлетворяющих исходному ограничению Xn+i≥ 0. Для любых Xj, удовлетворяющих ограничениям. Число вновь введенных переменных равно N-n, при этом столбцы А называются производственными векторами. Произвенный вектор соответствующий вспомогательной переменной равен, либо единичному вектору, либо единичному вектору, умноженному на (-1).
все небазисные переменные равны 0. Значение целевой функкции: Пусть Pj - некоторый произвольный вектор. Найдём вектор yj - это вектор, который содержит соответствующие коэффициенты матрицы ограничений после того как все базисные переменные выражены через небазисные. Теперь предположим, что мы имеем базисное допустимое решение Xb, имеем yj, Yj, вычисленных для всех произвольным вектором Pj. Из базиса исключаетсяся r-й столбец матрицы В и заменяется вектором Pк. В случае неоднозначности выбирается вектор, для которого yik имеет наименьшее значение. Если и этим однозначность не исключается, то среди оставшихся векторов выбираем вектор с наименьшим индексом i. Новые значения обозозначим так: Пусть XB=y0; Yj - cj=yn+1; Y=yn+1, 0. Тогда Рассмотрим задачу нахождения исходногого базисного решения: Если единичная матрица не содержится в матрице А, то присоединим к матрице А такую подматрицу (единичную). Xa - вектор столбец вида Xa=[Xa1…Xan], I - вектор строка = (1, 1…1). Если матрица А содержит единичный вектор ek, то искуственный вектор ek вводить не нужно. Общий вид симплекс таблицы:
то Pj не может дать допустимое базисное решение. Такое решение называют, неограниченным. Поскольку переменная Xj ассоциирует с произвольным вектором Pjможно увеличивать неограниченно, не влияя на допустимость решения. Хотя теоретическая основа симплекс метода гарантирует сходимость к оптимальному решению за конечное число шагов, в этом методе не учитывается сложности вычислительного характера, связанные с ошибками округления. Во многом такие ошибки затрудняют применение М-метода (штрафы), поскольку использование «больших штрафов» связано с необходимостью сравнения очень больших и относительно малых чисел. Указанная опасность снижается при разбиении всего процесса задачи на 2 этапа. Алгоритм симплекс-метода Теперь мы в состоянии сформулировать алгоритм симплекс-метода для решения задач линейного программирования, заданных в канонической форме. Обычно он реализуется в виде так называемой симплекс-таблицы, изображенной на следующей странице. В первом столбце этой таблицы располагаются обозначения векторов, входящих в базис. Второй столбец - коэффициенты целевой функции, соответствующие векторам, входящим в базис. Третий столбец - компоненты опорного плана. В дополнительной строке в этом столбце пишется величина . Её легко вычислить перемножая числа из второго столбца и третьего столбца и складывая их. Далее идут столбцы, соответствующие всем векторам , и в этих столбцах записываются координаты этих векторов в рассматриваемом базисе. Заметим, что для векторов, входящих в базис, эти координаты имеют вид (0, 0, ..., 0, 1, 0, ..., 0), где единица стоит в той строке, где находится сам этот базисный вектор. В дополнительной строке сверху обычно выписывают коэффициенты , соответствующие этим векторам. В дополнительной строке снизу пишутся величины , вычисляемые по формулам: . Заметим, что для векторов, входящих в базис, эти разности всегда равны нулю. Далее идут следующие этапы, связанные с преобразованием этой таблицы. При ручном счете каждый раз эту таблицу лучше переписывать заново, при счете на ЭВМ (который, естественно, всегда используется при решении практических, а не учебных задач), эта таблица просто преобразуется в памяти ЭВМ. Этап 1 Просматривается дополнительная строка снизу, где записаны разности.
Этап 2 Если есть столбцы, где , то выбирается столбец с максимальным значением этой разности. Индекс j определит вектор, вводимый в базис. Пусть , то есть в базис надо вводить вектор . Назовем столбец, соответствующий этому вектору, направляющим столбцом. В дальнейшем мы будем направляющий столбец помечать символом . Этап 3 Просматривается столбец, соответствующий этому вектору. Если все , то значения целевой функции неограничены снизу. Если есть , то находятся
Пусть этот минимум достигается для вектора . Тогда именно вектор подлежит выводу из базиса. Строка, соответствующая этому вектору, называется направляющей строкой. В дальнейшем в примерах мы будем
Этап 4 После того, как определены направляющие столбец и строка, начинает заполняться новая симплекс-таблица, в которой на месте направляющей
Обычно заполнение этой новой таблицы начинается именно с направляющей строки. В качестве компоненты опорного плана туда
. Остальные элементы этой строки заполняются величинами . Обратите внимание на особую роль элемента , стоящего на пересечении направляющей строки и направляющего столбца. Именно на него делятся все бывшие элементы направляющей строки. На месте бывшего элемента автоматически появляется единица. Написанные выше формулы для пересчета элементов направляющей строки можно записать следующим правилом: . Этап 5 Далее начинается пересчет всех остальных строк таблицы, включая и дополнительную нижнюю строку по формулам: для компонент плана ; для координат разложения по базису ; для дополнительной строки . Обратите внимание на то, что все эти формулы по сути дела строятся по одному правилу
. Это правило применимо и к компонентам плана, и к величинам , и к разностям . Его даже можно использовать для пересчета элементов самого направляющего столбца, хотя проще заполнить его нулями, оставив
Далее итерации продолжаются. Пример Решить задачу линейного программирования
В данном случае вектор равен (0, 1, -3, 0, 2, 0), а в векторной форме ограничения могут быть записаны в виде . Заполним исходную симплекс-таблицу, взяв в качестве исходного базиса
Исходная симплекс-таблица
Обратите внимание на то, что из-за специфического вида векторов в столбец " план" просто переписался вектор , а в качестве координат векторов в нашем базисе стоят просто сами векторы. Ну, а величины приходится считать:
Первая итерация Просматривая дополнительную строку мы видим, что в ней всего один положительный элемент - в столбце, соответствующем вектору . Следовательно, этот вектор надо вводить в базис и этот столбец и будет направляющим столбцом. В этом направляющем столбце есть два положительных числа - 4 и 3. Поэтому нужно рассмотреть два частных
и выбрать из них наименьшее. Так как
и он достигается на векторе , то этот вектор подлежит выводу из базиса и соответствующая ему строка и будет направляющей строкой.
Заполним теперь новую симплекс-таблицу, следуя сформулированным выше правилам. Начинается заполнение, естественно, со второй строки (так как она была направляющей), а затем пересчитываются все остальные строки. Вторая итерация Просматривая дополнительную строку мы вновь видим в ней всего один положительный элемент это 1/2, стоящая в столбце вектора . Следовательно, этот вектор надо ввести в базис и этот столбец будет направляющим. В столбце, соответствующем вектору , всего один положительный элемент это 5/2, которая стоит в первой строке. Поэтому первая строка будет
Запишем новую симплекс-таблицу, следуя сформулированным выше правилам. В получившейся таблице в дополнительной строке стоят лишь отрицательные числа и нули. Поэтому получившийся план является оптимальным. Итак, оптимальный план имеет вид
то есть , а все остальные Ему соответствует значение целевой функции, равное -11. 8. Симплексный метод (назначение метода, симплексные таблицы, правила построения симплекс- таблиц, понятие индексной строки, разрешающего элемента, правило прямоугольника). Назначение метода В общем виде, когда в задаче участвуют N -неизвестных, можно сказать, что область допустимых решений, задаваемая системой ограничивающих условий, представляется выпуклым многогранником в n -мерном пространстве и оптимальное значение целевой функции достигается в одной или нескольких вершинах. Решить данные задачи графически, когда количество переменных более 3 весьма затруднительно. Существует универсальный способ решения задач линейного программирования, называемый симплекс-методом. Идея симплекс-метода заключается в следующем. Сначала нужно найти некоторую (начальную) вершину многогранника допустимых решений (начальное допустимое базисное решение). Затем нужно проверить это решение на оптимальность. Если оно оптимально, то решение найдено; если нет, то перейти к другой вершине многогранника и вновь проверить на оптимальность. Ввиду конечности вершин многогранника (следствие конечности ограничений задачи ЛП) за конечное число " шагов" мы найдем искомую точку минимума или максимума. Надо заметить, что при переходе от одной вершины к другой значение целевой функции убывает (в задаче на минимум) или возрастает (в задаче на максимум). Симплексные таблицы Приведя ЗЛП к предпочтительному виду, её заносят в симплексную таблицу. max Z = 18x1 + 20x2 + 32x3 18x1 + 15x2 +12x3 + x4 = 720; 6x1 + 4x2 + 8x3 + x5 =384; 5x1 + 3x2 + 12x3 + x6 = 360;
∆ 0 = 0*720 + 0* 384 + 0* 360 = 0; ∆ 0 = Z(x0) ∆ I = ∑ коэфф. * aij - cj; ∆ 1 = 0*18 + 0*6+ 0*5 – 18= -18 Правило прямоугольника Чтобы найти элемент новой симплексной таблицы, нужно воспользоваться правилом прямоугольника. Для этого в исходной таблице выделяют прямоугольник, вершинами которого служат нужные для вычисления элементы. Диагональ, содержащую разрешающий и искомый элементы новой таблицы, называют главной, а другую – побочной. Чтобы получить элемент новой симплексной таблицы, нужно из произведения угловых элементов главной диагонали вычесть произведение угловых элементов побочной диагонали и полученное число разделить на разрешающий элемент, выделенный рамкой.
|
Последнее изменение этой страницы: 2019-05-06; Просмотров: 522; Нарушение авторского права страницы