- •1. Введение
- •Основные разделы курса
- •3. Основная задача линейного программирования. Различные формы записи задачи.
- •6. Алгоритм симплекс-метода.
- •1.3. Реализация симплекс-метода в виде симплексных таблиц.
- •8Транспортная задача. Описание и примеры применения метода потенциалов.
- •29.Метод ветвей и границ. Задача о рюкзаке.
- •Задача о рюкзаке
- •30. Метод ветвей и границ. Задача коммивояжера.
- •28. Методы перебора вариантов. Метод вариаций.
- •31.Задачей целочисленного программирования называется задача линейного программирования, в которой имеется дополнительное условие, требующее, чтобы часть переменных принимала только целые значения.
- •35.Общие принципы дискретного динамического программирования. Уравнение Беллмана.
- •36. Задача распределения ресурсов.
- •38. Построение кратчайшего пути на сети.
- •37. Задача оптимального планирования. Обработка деталей на двух станках.
- •10. Выпуклые множества и выпуклые функции.
- •13.Двойственность в задачах выпуклого программирования
- •14. Квадратичное программирование
- •12. Постановка задачи. Теорема Куна – Таккера.
- •16. Геометрическое программирование
- •11. Свойства выпуклых множеств и выпуклых функций
- •19. Общая задача нелинейного программирования.
- •22.Свойства дифференцируемых функций.
- •24. Дифференцируемость оператора Немыцкого.
- •25. Необходимый признак экстремума в задачах без ограничений первого и второго порядков.
- •27 . Правило множителей Лагранжа для гладких нелинейных задач.
- •41. Простейшая вариационная задача (пвз), исследование необходимых условий экстремума первого порядка.
- •45. Вариационная задача с кусочно-гладкими кривыми.
- •46. Исследование необходимых условий экстремума второго порядка. Условия Лежандра и Якоби.
- •42.. Алгоритм Гюйгенса исследования пвз.
- •48.. Поле экстремалей. Достаточные условия сильного экстремума.
- •Задача Больца.
- •6.9. Изопериметрические задачи.
- •51. Принцип максимума Понтрягина.
1.3. Реализация симплекс-метода в виде симплексных таблиц.
Для реализации алгоритма симплекс-метода при подсчетах удобно использовать симплексные таблицы.
Для применения симплексных таблиц требуется найти начальный базисный план и преобразованиями системы ограничений добиться выполнения условия АБ=Е. После этого можно заполнять начальную таблицу следующего вида.
Таблица 1.3.1
|
|
с1 |
… |
сj |
… |
cn |
|
Б |
СБ |
0 |
1 |
… |
j |
… |
n |
Б1 |
c(Б1) |
b(Б1) |
a(1,Б1) |
… |
a(j,Б1) |
… |
a(n,Б1) |
… |
… |
… |
… |
… |
… |
… |
…. |
Бi |
c(Бi) |
b(Бi) |
a(1,Бi) |
… |
a(j,Бi) |
… |
a(n,Бi) |
… |
… |
… |
… |
… |
… |
… |
… |
Бm |
c(Бm) |
b(Бm) |
a(1,Бm) |
… |
a(j,Бm) |
… |
a(n,Бm) |
|
z |
Δ1 |
… |
Δj |
… |
Δn |
Правила составления симплекс-таблицы:
-вторая строка таблицы состоит из заголовков, которые обозначают, какую именно информацию будут содержать находящиеся ниже столбцы:
Б – перечень номеров базисных переменных; сБ – коэффициенты целевой функции, соответствующие базисным переменным; 0 – вектор b, 1, …, n – номера столбцов матрицы ограничений.
-Каждая базисная переменная Бi задает единственное уравнение-ограничение, в которое она входит. Это позволяет при помощи базисных переменных нумеровать координаты векторов, например, a(j,Бi) – коэффициент перед j-й переменной в уравнении, содержащем базисную переменную с номером Бi.
-в первой строке над столбцами 1, …, n записываются коэффициенты целевой функции, соответствующие всем переменным;
-в последней строке под столбцами 1, …, n вычисляются координаты вектора Δ (для базисных переменных – нули), под столбцом 0 – вычисляется значение целевой функции при выбранном плане.
Заметим, что поскольку в ходе решения мы имеем дело с базисными планами, и при этом АБ = Е, то хБ = АБ-1b = b, т.е. в столбце 0 будут содержаться значения базисных координат текущего плана. Остальные (небазисные) координаты плана, как и раньше, равны нулю.
Симплексная таблица представляет собой удобное средство для проведения всех вычислений симплекс-метода.
1) Для вычисления координат вектора Δ необходимо сначала найти скалярное произведение векторов сБ и j-го столбца, а затем полученный результат вычесть из сj (его значение находится над столбцом j). Нетрудно увидеть, что для базисных переменных результат всегда будет равен нулю.
2) Скалярное произведение вектора сБ и столбца 0 дает значение целевой функции для найденного базисного плана.
3) Если компонента ΔJ>0, то J-ю переменную нужно ввести в базис. Согласно алгоритма симплекс-метода, чтобы найти переменную, выводимую из базиса, нужно координаты вектора b (столбец 0) разделить на соответствующие координаты столбца J (только для положительных координат столбца J) и среди всех этих отношений выбрать минимум. Выводимая из базиса переменная БI содержится в строке, которая дает минимальное отношение.
Для проведения дальнейших расчетов выделяем строку БI и столбец J.
Таблица 1.3.2
|
с1 |
… |
сJ |
… |
cn |
|||||
Б |
СБ |
0 |
1 |
… |
j |
… |
n |
|||
Б1 |
c(Б1) |
b(Б1) |
a(1,Б1) |
… |
a(J,Б1) |
… |
a(n,Б1) |
|||
… |
… |
… |
… |
… |
… |
… |
…. |
|||
Бi |
c(Бi) |
b(Бi) |
a(1,Бi) |
… |
a(J,Бi) |
… |
a(n,Бi) |
|||
… |
… |
… |
… |
… |
… |
… |
… |
|||
Бm |
c(Бm) |
b(Бm) |
a(1,Бm) |
… |
a(J,Бm) |
… |
a(n,Бm) |
|||
|
|
z |
Δ1 |
… |
ΔJ>0 |
… |
Δn |
|||
|
↑ |
|
4) Заменим в базисе переменную БI на переменную J. Чтобы подготовить данные для заполнения новой симплексной таблицы, необходимо в системе ограничений вместо переменной БI выразить переменную J.
Для этого совершим два действия:
1.В уравнении БI коэффициент перед переменной J сделаем равным 1;
2.Из остальных уравнений переменную J исключим.
В результате для обновленного базиса опять выполняется условие АБ=Е.
Другими словами, описанные действия означают:
1. В строке БI все коэффициенты столбцов 0,…,n делим на a(J,Бi) и записываем в такую же строку новой таблицы. При этом в столбце Б помечаем, что данная строка уже соответствует базисной переменной J. Во второй столбец заносим соответствующий коэффициент целевой функции для этой переменной. В остальных строках содержимое первых двух столбцов не изменяется.
2. Чтобы получить новое содержание столбцов 0,…,n для оставшихся строк, например, для Бk, нужно взять предыдущее значение коэффициента a(J, Бk), домножить на него вектор, полученный в п.1. для строки J, и вычесть получившийся вектор значений из предыдущих значений 0,…,n.
Вычислительные формулы:
Пусть a(i, Бj) – коэффициенты предыдущей таблицы, a*(i, Бj) – коэффициенты для нового базиса, переменная БI выводится из базиса, J - вводится. Тогда
1. a*(j, J) = a(j, БI) / a(J, БI);
2. При Бk≠J: a*(j, Бk) = a(j, Бk) – a(J, Бk) a*(j, J).
Остается вычислить новый вектор Δ и повторить итерацию симплекс-метода.