- •1. Цели и задачи системного анализа
- •1.1. Определения системного анализа
- •1.2. Понятие сложной системы
- •1.3. Характеристика задач системного анализа
- •1.4. Особенности задач системного анализа
- •1.5. Прогнозирование и планирование
- •2. Характеристика этапов системного
- •2.1. Процедуры системного анализа
- •2.2. Анализ структуры системы
- •2.3. Сбор данных о функционировании системы
- •2.4. Построение моделей систем
- •2.5. Проверка адекватности моделей
- •2.6. Определение целей системного анализа
- •2.7. Формирование критериев
- •2.8. Генерирование альтернатив
- •2.9. Реализация выбора и принятия решений
- •3. Построение моделей систем
- •3.1. Понятие модели системы
- •3.2. Способы описания систем
- •3.3. Анализ и синтез - методы исследования систем
- •3.4. Декомпозиция и агрегирование
- •4. Эксперимент – средство построения
- •4.1. Характеристика эксперимента
- •4.3. Обработка экспериментальных данных
- •4.4. Вероятностное описание событий и процессов
- •4.5. Описание ситуаций с помощью нечетких моделей
- •4.6. Характеристика и классификация статистической
- •5. Математическое программирование
- •5.1. Математические постановки задач, приводящие
- •5.2 Задача линейного программирования
- •5.3. Решение задач линейного программирования
- •5.5. Дискретное программирование
- •6. Выбор или принятие решений
- •6.1. Характеристика задач принятия решений
- •6.2. Критериальный способ описания выбора
- •6.3. Выбор в условиях неопределенности
- •6.4. Концепция риска в задачах системного анализа
- •6.5. Принятие решений в условиях стохастической
- •6.6. Выбор при нечеткой исходной информации
- •6.8. Коллективный или групповой выбор
5.3. Решение задач линейного программирования
симплекс-методом
Метод полного исключения. Перейдем к изложению методов решения задач линейного программирования. Рассмотрим вначале один из вспомогательных методов, иллюстрирующий возможность преобразования системы линейных уравнений, а именно, приведения матрицы, составленной из параметров уравнений ограничений, к единичному виду. Обозначим свободные коэффициенты ограничений aj0 =bj.
Пусть имеется система ограничений в виде
Метод полного исключения состоит из конечного числа однотипных шагов и заключается в приведении матрицы А к единичному виду. Метод основан на следующих двух операциях.
Одну из строк расширенной матрицы умножают на число, отличное от нуля.
Из каждой строки расширенной матрицы (Аp ) вычитают данную строку. Каждое такое преобразование называется преобразованием Гаусса. В результате получаем новую систему линейных уравнений, эквивалентную исходной.
Рассмотрим более подробно метод полного исключения.
Среди элементов матрицы А выбирают произвольный элемент, отличный от нуля. Этот элемент называют направляющим элементом шага. Строку и столбец, содержащие направляющий элемент, называют направляющей строкой и направляющим столбцом данного преобразования.
Все элементы направляющей строки расширенной матрицы (Аp) делят на направляющий элемент. В результате получают направляющую строку с направляющим элементом, равным единице. Далее из каждой строки матрицы А вычитают новую направляющую строку, умноженную на элемент, который расположен на пересечении строки и направляющего столбца.
Пример применения метода полного исключения. Рассмотрим пример применения метода полного исключения Гаусса для исследования системы уравнений
Расширенная матрица имеет вид
Первый шаг. В качестве первого направляющего элемента возьмем a11=1. Умножив первую строку матрицы А на 2, вычтем результат из второго уравнения и, умножив на 4, вычтем результат из третьего уравнения; получим
Второй шаг. Поскольку главная часть матрицы Аз(1) содержит отличные от нуля элементы, продолжим процесс исключения. Выберем элемент а22(1)= -3 в качестве направляющего элемента на втором шаге преобразования. Разделим вторую строку на -3, получим
Далее умножим вторую строку на 2 и вычтем результат из первой строки, умножим вторую строку на -3, результат вычтем из третьей строки, в итоге
Как видим, главная часть матрицы А(2)p, состоящая из элементов a33(2) и a34(2) содержит только нули. Следовательно, процесс исключения заканчивается. Исследуем матрицу А(2). Поскольку третья строка содержит только нулевые элементы, это свидетельствует о том, что начальные уравнения были зависимыми, и, следовательно, она может быть отброшена. Тогда эквивалентная матрица системы уравнений будет выглядеть следующим образом:
Теперь можно записать базисное решение
х1 =1; х2 = 1; х3 = 0; х4 - 0,
а также соответствующее общее решение
где - произвольные скаляры.
Симплексные преобразования. В основе симплекс-метода лежит идея поиска базисного решения с последующим переходом от одного базиса к другому таким образом, чтобы целевая функция при этом все время увеличивалась, если речь идет о задаче максимизации. Пусть мы имеем задачу линейного программирования в канонической форме. Матрица ограничений имеет вид
где ei - единичный базис, для всех i= 1, 2,..,m.
Будем применять метод полного исключения к расширенной матрице ограничений. Выбираем направляющий элемент аij на данной итерации. В результате преобразования Гаусса, методика которого была только что описана, получим новые значения коэффициентов:
еслиL≠i, L= 1, 2,...,m
Преобразование Гаусса называется симплексным преобразованием, когда направляющий элемент определяют по следующим правилам:
направляющий столбец выбирают из условия, что в нем имеется хотя бы один положительный элемент;
направляющую строку выбирают так, чтобы отношение ai0/aij было минимальным при условии, что аij> 0.
Задачи линейного программирования, решаемые с помощью симплекс-метода, основываются на представлении решения в табличной форме. Рассмотрим последовательность действий при решении задачи линейного программирования.
Пусть имеются линейная форма
и ограничения
Приведем матрицу ограничений к каноническому виду:
На следующем шаге составим таблицу (таблица 5.1). Нижняя строка элементов называется индексной. Элементы индексной строки вычисляются следующим образом: означает номер соответствующей строки. Поскольку на первом шаге заполнения таблицы все элементы с +. равны нулю, то элементам индексной строки присваиваются значения соответствующих элементов целевой функции данного столбца, взятые с обратным знаком, т.е. a0k = -Ск. Последняя строка таблицы служит для определения направляющего столбца.
Таблица 5.1
С |
|
|
С1 |
С2 |
С3 |
… |
Сj |
… |
Сп |
0 |
… |
0 |
|
Bx |
А0 |
А1 |
А2 |
Аз |
… |
Аj |
… |
Ап |
Аn+1 |
… |
Ап+т |
Сn+1 |
Xn+1 |
a10 |
a11 |
a12 |
a13 |
… |
a1j |
… |
a1n |
1 |
… |
0 |
Сn+2 |
Xn+2 |
a20 |
a21 |
a22 |
a23 |
… |
a2j |
… |
a2n |
0 |
… |
0 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
Сn+i |
Xn+i |
ai0 |
ai1 |
ai2 |
ai3 |
… |
aij |
… |
ain |
0 |
… |
0 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
Сn+m |
Xn+m |
am0 |
am1 |
am2 |
am3 |
… |
amj |
… |
amn |
0 |
… |
1 |
|
|
a00 |
a01 |
a02 |
a03 |
... |
a0j |
… |
a0n |
a0m+1 |
… |
a0m+n |
Элемент а00 равен значению целевой функции, которое вычисляется по формуле а00 = , k - номер базисной переменной (индексация идет по строкам таблицы).
В столбце Вх записываются базисные переменные, на первом шаге в качестве базисных выбирают фиктивные переменные {хп+к }, к = . В дальнейшем фиктивные переменные необходимо вывести из базиса.
В столбец С записываются коэффициенты при хп+к, на первом шаге значения этих коэффициентов равны нулю.
Для перехода от базиса фиктивных переменных к базису реальных переменных применяют следующие правила:
в качестве направляющего столбца выбирают столбец Аj, для которого выполняется условие при a0l <0, т.е. выбирается минимальный элемент, при условии, что этот элемент отрицательный;
выбирают направляющую строку, для чего каждый элемент столбца свободных членов делится на соответствующий элемент направляющего столбца, элемент столбца свободных членов находится в одной строке с элементом направляющего столбца - . Из всех возможных соотношений выбирается минимальное = min > при условии, что arj>0,1≤r≤m.
Применяя сформулированные правила, определяем направляющий элемент. Далее выполняется шаг симплексных преобразований.
Переменная, которая соответствует направляющему столбцу, вводится в базис, а переменная, соответствующая направляющей строке, выводится из базиса. При этом для переменной, вводимой в базис, изменяется соответствующее значение коэффициента целевой функции. Вместо коэффициента сп+i. соответствующего старой базисной переменной, в таблице записывается значение коэффициента целевой функции при переменной, вводимой в базис.
Если направляющий элемент аij , то переход от данной таблицы к следующей осуществляется с использованием следующих правил.
Для всех элементов направляющей строки
где к - номер шага (к = 1, 2,...); i - номер направляющей строки;
у - номер направляющего столбца; , т.е. все элементы направляющей строки делим на направляющий элемент, в итоге направляющий элемент стал равным единице; аr,j(k+1) = 1.
2. В направляющем столбце необходимо получить аr,j(k+1) =0, для всех при аij(k+1) = 1, т.е. в направляющем столбце должны быть все нули кроме направляющего элемента, который равен единице.
Для всех остальных элементов, включая индексную строку, производим вычисления
Симплексные преобразования повторяют до тех пор, пока не реализуется один из двух возможных исходов:
а) все а0i>0 – это условие оптимальности базиса последней таблицы;
б) найдется такой элемент а0j< 0, при котором все элементы столбца аrj < 0, - это признак неограниченности целевой функции на множестве допустимых решений.
Пример решения задачи линейного программирования. Рассмотрим задачу линейного программирования в следующем виде: найти максимум линейной формы 4x1 + Зх2 при ограничениях х1 < 4000, х2 < 6000, х1+ < 6000, х1,х2> 0.
Каноническая форма задачи линейного программирования будет иметь вид
4х1 +3x2 +0x3 +0x4 +0x5 —> max;
1х1 +0x2 + 0x3+0x4 + 0x5 = 4000;
0x1+ 1x2 + 0x3 + lx4 + 0x5 = 6000;
1x1 + x2 +0x3 +0x4 +1x5 =6000
Составим исходную симплекс-таблицу (таблицу 5.2).
Таблица 5.2
Ci |
|
|
4 |
3 |
0 |
0 |
0 |
|
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A05 |
0 |
Х3 |
4000 |
1 |
0 |
1 |
0 |
0 |
0 |
Х4 |
6000 |
0 |
1 |
0 |
1 |
0 |
0 |
Х5 |
6000 |
1 |
2 3 |
0 |
0 |
1 |
|
|
0 |
-4 |
-3 |
0 |
0 |
0 |
Поскольку -4 < -3 < 0, то в качестве направляющего выбираем первый столбец. Составив отношение вида определяем направляющую строку. Для этого находим минимальное отношение. Следовательно, направляющая строка - первая, направляющий элемент – a11=1. Применив первый шаг симплексного преобразования, получим новую таблицу.
Таблица 5.3
Ci |
|
|
4 |
3 |
0 |
0 |
0 |
|
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A05 |
4 |
Х3 |
4000 |
1 |
0 |
1 |
0 |
0 |
0 |
Х4 |
6000 |
0 |
1 |
0 |
1 |
0 |
0 |
Х5 |
2000 |
0 |
2 3 |
-1 |
0 |
1 |
|
|
16000 |
0 |
-3 |
4 |
0 |
0 |
На данном этапе в качестве направляющего столбца выбираем второй, направляющая строка - третья, т.к. Применим следующий шаг симплексного преобразования. В результате получим таблицу 5.4.
Таблица 5.4
С1 |
|
|
4 |
3 |
0 |
0 |
0 |
|
Bx |
А0 |
А1 |
А2 |
Аз |
А4 |
А5 |
4 |
X1 |
4000 |
1 |
0 |
1 |
0 |
0 |
0 |
X4 |
3000 |
0 |
0 |
3 2 |
1 |
|
3 |
X2 |
3000 |
0 |
1 |
|
0 |
3 2 |
|
|
25000 |
0 |
0 |
|
0 |
9 2 |
Так как а03 = < 0, то направляющий столбец А3 направляющая строка - вторая, направляющий элемент а23 = -.
Выполним очередной шаг преобразования, получим еще одну таблицу (таблица 5.5).
Таблица 5.5
С1 |
|
|
4 |
3 |
0 |
0 |
0 |
|
Bx |
А0 |
А1 |
А2 |
Аз |
А4 |
А5 |
4 |
X1 |
2000 |
1 |
0 |
0 |
|
1 |
0 |
X4 |
2000 |
0 |
0 |
1
|
|
-1 |
3 |
X2 |
6000 |
0 |
1 |
0 |
1 |
0 |
|
|
26000 |
0 |
0 |
0 |
|
4 |
Поскольку в индексной строке все элементы положительны, это означает, что найдено оптимальное решение х10 = 2000, х20 = 6000, х30 = 2000. Искомое значение целевой функции равно 4 х1 + Зх2= 26000.
5.4. Метод искусственных переменных
Рассмотрим задачу линейного программирования, в которой ограничения имеют вид . Если все , i= 1, 2,..., т, то свободные векторы, образующие единичную подматрицу, составляют начальный базис, а соответствующие им переменные - начальное базисное решение.
В более общем случае, когда ряд неравенств имеет знак «больше или равно», например, ai1x1+ai2x2+.. .+аin.хп bi, i= 1, 2,..., т, для приведения их к стандартной канонической форме свободные переменные надо вычесть. Тогда расширенная форма задачи имеет вид
Свободные переменные {xn+1, xn+2,..., xn+m} уже нельзя использовать в качестве начального базиса, так как х n+1 < 0, х n+2 < 0,..., хn+m < 0.
С целью формирования начального базиса в уравнения дополнительно вводят искусственные переменные xn+m+1 xn+m+2,..., xn+m+k, которые не имеют ничего общего с реальной задачей, и должны быть выведены из базиса как можно скорее. Чтобы гарантировать их быстрое выведение после начала итераций для задач максимизации, искусственным переменным в целевой функции приписывают очень большие по величине отрицательные коэффициенты (-М). В случае решения задач минимизации искусственные переменные вводят в целевую функцию с большими по величине положительными коэффициентами (+M).
Знаки вводимых в ограничения искусственных переменных xn+m+1 xn+m+2,..., xn+m+k должны совпадать со знаками соответствующих свободных членов. Искусственные переменные образуют начальное базисное решение. Применив симплекс-метод, решают задачу по выведению из базиса всех искусственных переменных. Если доказано, что от искусственных переменных избавиться нельзя, то это означает, что задача не имеет решения, т.е. ограничения задачи противоречивы.
Рассмотрим пример решения задачи линейного программирования с использованием метода искусственных переменных.
Требуется минимизировать линейную форму вида
при ограничениях
Вводя свободные переменные x3 ,х4, х5 приходим к расширенной форме задачи
Переменные х3, х4, х5 образуют недопустимое базисное решение
х3б = -6 < 0, x4б= -6 < 0, х5б = -1 < 0,
поэтому вводим в ограничения и в целевую функцию искусственные переменные х6, x7 ,x8. Получим следующую запись задачи:
Очевидно, начальное базисное решение
Поскольку образуют единичный базис, а все ai0> 0, то для решения применим метод симплекс-таблиц. Исходная таблица имеет следующий вид (таблица 5.6).
Таблица 5.6
Первая итерация. Элементы индексной строки вычисляем следующим образом: означает номер соответствующей строки
Поскольку решается задача минимизации, то направляющий столбец определяют по наибольшему положительному элементу индексной строки: a0j =тaх{а0к/а0к >0}. Направляющий столбец – А1; направляющая строка - вторая. Выполним один шаг преобразования. Разделим направляющую строку на направляющий элемент равный 6. Умножив преобразованную направляющую строку на 3, вычтем ее из первой. Третья строка остается без изменений, поскольку элемент направляющего столбца для нее равен нулю. Затем, умножив преобразованную направляющую строку на (9М-15), вычтем ее из индексной. В результате получим таблицу 5.7.
Таблица 5.7
Вторая итерация. Так как а02 = , т.е. является максимальным элементом из всех элементов индексной строки, то направляющий столбец - А2; направляющая строка - третья. Направляющий элемент а82 = 1.
Выполним шаг симплекс-преобразования. Умножив направляющую строку на 1 , вычтем ее из первой строки. Затем, умножив направляющую строку на , вычтем ее из второй и, наконец, умножив направляющую строку на , вычтем ее из первой строки. Получим таблицу 5.8.
Таблица 5.8
Третья итерация. Поскольку а05 = , то направляющий столбец – А5 Направляющая строка - первая, направляющий элемент а65 = 1 . Выполнив очередной шаг симплекс-преобразования, выведем из базиса последнюю искусственную переменную х6 и введем х5 .
Таким образом, приходим к таблице следующего вида (таблица 5.9).
Таблица 5.9
Четвертая итерация. Обратим внимание, что в этой таблице все искусственные переменные выведены из базиса. Направляющий столбец -А4, направляющая строка - первая, направляющий элемент а14 = . Выполнив еще один шаг симплекс-преобразования, получим таблицу 5.10.
Таблица 5.10
Поскольку в индексной строке все оценки , то найдено оптимальное решение
.
Искомое значение целевой функции a00= min z = 53.
Проверим это: min(15x1+33x2) = 15x1 опт +33 x2опт = 53.
Таким образом, рассмотренный метод позволяет решать задачи линейного программирования в общем случае, когда имеются ограничения в виде неравенств с различными знаками: как «больше или равно», так и «меньше или равно».