- •1.Математические модели в экономическом анализе
- •2. Задача оптимального распределения ресурсов
- •4, 3.1. Постановка задачи линейного программирования (лп)
- •Каноническая форма задач линейного программирования
- •Теория симплекс метода и его приложения
- •2.6. Алгоритм симплекс-метода
- •Первая итерация
- •Вторая итерация
- •8. Симплексный метод (назначение метода, симплексные таблицы, правила построения симплекс- таблиц, понятие индексной строки, разрешающего элемента, правило прямоугольника).
- •Теорема двойственности:
- •Постановка задачи[править]
- •Метод потенциалов.
- •Исходная транспортная матрица
- •Графический метод решения задач нелинейного программирования
- •13.1. Основные понятия теории игр
- •Платежная матрица. Нижняя и верхняя цена игры.
- •Решение матричных игр в чистых стратегиях.
- •Решение игр симплекс-методом
Теория симплекс метода и его приложения
Общая
задача линейного программирования
состоит в том, чтобы найти неотрицательное
значение n при переменных xi удовлетворяющих
m линейным ограничениям вида
Ранг
матрицы r(A) - это максимальное число
линейно независимых строк или столбцов
матрицы А.
Расширенная
матрица системы А*х=b это Ab=(A,b).
Система уравнений называют однородной,
если вектор b = 0.
Решение
x = 0 всегда является решением системы
уравнений A*x=0, такое решение называется
тривиальным.
Для
того, чтобы существовали нетривиальные
решения системы, необходимо и достаточно,
чтобы r(A)b)=m. Из матрицы А выберем подматрицу
порядка m и обозначим ее через В. Пусть
Xr -
это вектор, который содержит все остальные
переменные.
Xb -
это вектор, который содержит все
переменные, входящие в матрицу В, т.е.
соответствуют столбцам матрицы В. Через
Xr -
это все оставшиеся переменные, а через
R обозначим матрицу состоящую из столбцов
матрицы А соответствующих переменным
Xr.
Тогда для произвольного вектора
Xr решение
системы можно получить, если считать
Xb=B-1*b-B-1*R*Xr,
решения, когда Xr=0,
а Xb=B-1*b
наз базисным решением. Базисное решение
содержит не более m отличных от 0
переменных. Переменные, вошедшие в
вектор Xbназываются
базисными переменными, остальные
называются небазисными. Базисное решение
называется вырожденным, если одна или
более базисных переменных =0. Максимальное
кол-во базисных решений для системы
A*x=b равно
что
соответствует числу различных комбинаций
из m столбцов матрицы А, которые могут
быть выбраны для получения матрицы В.
Для некоторых таких комбинаций базисное
решение может не существовать, т.к.
входящие в данную комбинацию векторы
могут оказаться линейно независимыми.
Предположим, что все ограничения
перенумеруем, что первыми записаны
ограничения со знаком ≤, вторые со ≤ и
третьими со знаком =.
-
Если ограничения имеют знак ≤, то вводим
вспомогательную (дополнительную)
переменную Xn+i,
полагая, что
Для
любых переменных Xj (j
от 1 до n), удовлетворяющих исходному
ограничению Xn+i≥0.
-
Если i-ое ограничение имеет знак ≥ то
необходимо ввести новую вспомогательную
(избыточную) переменную Xn+i следующим
образом.
Для
любых Xj,
удовлетворяющих ограничениям.
В
результате проделанных операций от
исходных ограничений мы переходим к
системе из m линейных уравнений с N
неизвестными вида A*x=b, при этом n ≤N
≤n+m.
Число
вновь введенных переменных равно N-n,
при этом столбцы А называются
производственными векторами. Произвенный
вектор соответствующий вспомогательной
переменной равен, либо единичному
вектору, либо единичному вектору,
умноженному на (-1).
Между
неотрицательными векторами, соответствующими
исходным ограничениям и решениям системы
A*x=b существует взаимнооднозначное
соответствие. Таким образом добавлением
вспомогательных переменных любую задачу
линейного программирования можно свести
к эквивалентной задаче вида: найти max
или min целевой функции y=c*x, где c=(c1,…cn)
при условиях A*x=b, x≥0. Любое число
переменных в задаче линейного
программирования принято обозначать
через n. Любой вектор Х удовлетворяющий
условиям A*x=b и x≥0 называют допустимым
решением.
Пусть
исходная задача приведена к стандартному
виду. Тогда:
а)
если задача имеет оптимальное решение,
то существует по крайней мере 1 базовое
оптимальное решение.
б)
если имеется допустимое базовое решение,
но не оптимальное решение, то через
конечное число шагов от этого решения
можно перейти к базовому оптимальному
решению или установить, что целевая
функция (ЦФ) неограничена на множестве
всех допустимых решений. При этом на
каждом шаге выполняется замена только
1 базисной переменной. Предположим, что
ранг матрицы A равен рангу рассматриваемой
матрицы и равен m.
Пусть
В - это матрица, состоящая из m
линейнонезависимых
столбцов матрицы
А. Соответствующие и базисные, необязательно
оптимальные решения могут быть
записаны
все
небазисные переменные равны 0. Значение
целевой функкции:
Пусть
Pj - некоторый произвольный вектор. Найдём
вектор
yj -
это вектор, который содержит соответствующие
коэффициенты матрицы ограничений после
того как все базисные переменные выражены
через небазисные.
yj -
меняется на каждой итерации.
cj -
коэффициенты целевой функции,
соответствующие i-ой переменной или
произвольному вектору Pj .
Теперь
предположим, что мы имеем базисное
допустимое решение Xb,
имеем yj,
Yj,
вычисленных для всех произвольным
вектором Pj.
Тогда
существуют возможности:
а)
разность Yj -
cj ≥0,
(j от 1до n). В этом случае базисное
допустимое решение оптимально.
б)
Yj-cj<0,
yij ≤0,
(i от 1 до m). Целевая функция не ограничена,
оптимального решения получить нельзя.
с)
Yj-cj<0,
и для каждого такого j по крайней мере
1 значение yij>0,
(i от 1 до m) существует другое базисное
допустимое решение, которой соответствует
значение ЦФ не меньше, чем значение ЦФ
для исходного решения. Если исхоноеое
решение не вырожденное, то значение ЦФ
можно увеличить заменив в матрице В
один вектор.
Симплекс метод исходит
из допустимого базисного решения и на
каждой итерации производит замену
одного вектора в базисе.
Правило
замены векторов в базисе:
1)
Определение вектора вводимого в базис,
так называемое условие
оптимальности.
Для небазовых переменных вычисляем
разность
Yj-Ck=minj(Yj-cj),
Yj -
cj<0.
Это означает выбор максимального
коэффициента в строке y. Вектор
Pк соответствующий
этому минимуму на следующей итерации
вводится в базис. Если вычисляемый
минимум достигается при нескольких
векторах, то в базис вводится вектор с
наименьшим индексом j.
2)
Определение вектора исключенного из
базиса, так называемое условие
допустимости.
Вычислеям отношение:
Из
базиса исключаетсяся r-й столбец матрицы
В и заменяется вектором Pк.
В случае неоднозначности выбирается
вектор, для которого yik имеет
наименьшее значение. Если и этим
однозначность не исключается, то среди
оставшихся векторов выбираем вектор с
наименьшим индексом i. Новые значения
обозозначим так:
Пусть
XB=y0;
Yj -
cj=yn+1;
Y=yn+1,0.
Тогда
Рассмотрим
задачу нахождения исходногого базисного
решения:
Если матица А содержит в
качестве подматрицы единичную матрицу.
Тогда базовое допустимое решение
получается легко:
Если
единичная матрица не содержится в
матрице А, то присоединим к матрице А
такую подматрицу (единичную).
Дополнительные
векторы называют исскуственными
векторами,
а соответствующие переменные
- исскуственными
переменними.
Обозначим эти пременные Xai.
После
этого решения можно осуществлять двумя
путями:
а)
образование искуственной целевой
функции и решение задачи в 2 этапа.
б)
использование метода введения штрафов
(М-метода).
Для
получения допустимого решения исходной
задачи значение искуственных переменных
нужно уменьшить до 0. Для этого коэффициенты
ЦФ соответствующие искуственным
переменным полагают = “-М”, где М-это
большое по значению положительное
число. При ручном счёте конкретное
значение М не задаётся.
Если исходная
задача имеет допустимое решение, то
значение искуственных пременных могут
быть сделаны равными 0. Если матрица А
не содержит ни одного единичного вектора,
то вводят искуственные переменные и
решают следующую задачу линейного
программирования.
Xa -
вектор столбец вида Xa=[Xa1…Xan],
I - вектор строка = (1,1…1).
Начальные
базисные допустимые решения для
задачи:
Если
матрица А содержит единичный вектор
ek,
то искуственный вектор ek вводить
не нужно.
Общий
вид симплекс таблицы:
БП |
СB |
b |
P1 |
… |
Pn |
XB1 |
СB1 |
XB1=y0 |
y11 |
… |
y1n |
… |
... |
… |
… |
… |
… |
XBm |
СBm |
XBm=ym0 |
ym1 |
… |
ymn |
|
|
Y= ym+1,0 |
Y1-C1= ym+1,1 |
|
Yn-Cn= ym+1,n |
Имеется
ряд упрощенных вариантов реализации
симплекс метода на ЭВМ. Наиболее распранен
метод на правиле выбора переменной
вводимой в базис. В общем случае из
теории симплекс метода следует, что
оптимальное решение задачи линейного
программирования всегда соответствует
некоторому допустимому базисному
решению.
Однако
в 2-х случаях это правило не выполняется:
1)
если линия постоянных значений целевой
функции при оптимальном решении
оказывается параллельной линии одного
из ограничений , то существует бесконечное
множество альтернативных оптимальных
решений. При реализации симплекс метода
эта ситуация соотвует случаю, когда все
разности Yj -
cj для
всех небазисных Xj удовлетворяет
условию оптимальности, и по крайней
мере 1 разность Yj -
cj=0.
Если вектор связанный с этой разностью
можно включить в базис, то существует
альтернативное базисное оптимальное
решение.
2) Для этого случая характерна
ситуация, при которой условие оптимальности
показывает, что некоторый базис, будучи
введенный в базис улучшит решение,
однако, такой вектор сделать базисным
нельзя, т. е. если
то
Pj не
может дать допустимое базисное решение.
Такое решение называют,неограниченным.
Поскольку переменная Xj ассоциирует
с произвольным вектором Pjможно
увеличивать неограниченно, не влияя на
допустимость решения. Хотя теоретическая
основа симплекс метода гарантирует
сходимость к оптимальному решению за
конечное число шагов, в этом методе не
учитывается сложности вычислительного
характера, связанные с ошибками
округления. Во многом такие ошибки
затрудняют применение М-метода (штрафы),
поскольку использование «больших
штрафов» связано с необходимостью
сравнения очень больших и относительно
малых чисел. Указанная опасность
снижается при разбиении всего процесса
задачи на 2 этапа.
Возможность ошибки
в округлении не исчезает и при фазовом
решении задачи, это связано с тем, что
преобразование симплекс таблицы на
каждой итерации, основанной на методе
исключения переменных Гаусса-Жордана,
что приводит к накоплению и распространению
ошибок округления в такой степени, что
они искажают исходные данные задачи.
Пример
с определением условия допуст-ти:
Пусть
(XB )i =0,
а
(B-1*Pj)i =0
- это соотв-ий i-ый коэф-т огран-я, кот.
ассоц. с вводимым вектором Pj.
Предположим, что в результате ошибок
окр-ия мы получим (XB )i =10-9,
а (B-1*Pj)i =10-6,
теперь вектор Pj в
решении м. вводить и возникает неверное
решение.
С
целью уменьшения ошибок окр-ия был
разработан модифицированный симплекс
метод. Основные шаги этого метода такие
же, что и для симплекс метода, отличие
- при получении последовательных таблиц
на каждой итерации не используется
метод Гаусса-Жордана. Основные вычисления
связаны с обращением базиса B-1.
Следовательно, в вычислительных
процедурах стараются минимизировать
ошибки округления, в основном для матрицы
B-1.
Помимо контроля за ошибкой округления
модифицированный симплекс метод
позволяет так же уменьшить и время
расчета, при этом время вычислени для
модифицированного симплекс метода тем
меньше, чем меньше плотность матрицы А
(т.е. это отношение числа ненулевых
элементов к общему числу элементов) и
чем меньше отношение числа ограничений
к числу переменных.
