Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методы вычислений в классах языка С++.doc
Скачиваний:
8
Добавлен:
01.05.2025
Размер:
3.08 Mб
Скачать

2.5.3. Симплекс-метод решения задачи линейного программирования

Допустимым решением ОЗЛП называют любую совокупность неотрицательных x1, x2, ..., xn, удовлетворяющую исходной системе линейных уравнений.

Оптимальным называют допустимое решение, при котором заданная линейная целевая функция обращается в минимум.

Наиболее универсальным методом решения ОЗЛП является симплекс-метод, основанный на том, что вначале отыскивается произвольное допустимое решение, а затем оно последовательно улучшается до оптимального.

Схема решения ОЗЛП симплекс-методом:

  1. составляется симплекс-таблица из коэффициентов системы, представляющая собой расширенную матрицу, дополненную строкой коэффициентов целевой функции, например (N+1)-й, а также нулевыми строкой и столбцом для учета производимых перестановок.

  2. выбирается произвольный набор базисных переменных по числу имеющихся в наличии линейных алгебраических уравнений;

  3. система разрешается относительно базисных переменных, выражая их через остальные (свободные);

  4. свободные переменные приравнивают нулю, получая некоторое решение в виде компонент вектора свободных членов;

  5. проверяют решение на допустимость – то есть на отсутствие отрицательных компонент;

  6. при наличии отрицательных свободных членов производят последовательную замену базисных переменных на свободные до получения допустимого решения, которое называют опорным.

  7. опорное решение является оптимальным, если в строке коэффициентов целевой функции отсутствуют отрицательные элементы, то есть целевая функция не может быть уменьшена за счет увеличения каких-нибудь свободных переменных сверх нуля.

2.5.3.1. Приведение системы к стандартной, удобной для преобразований форме

Это приведение состоит в разрешении системы относительно выбранных базисных переменных, что достигается, например, решением по методу Гаусса за один «ход»; если выбрать первые n элементов базисными, то задача состоит в преобразовании левой части nxn матрицы в единичную с одновременной обработкой всех элементов.

После решения системы относительно базисных переменных и подстановки их в линейную форму матрица приобретает вид с единичной матрицей в правой части.

2.5.3.2. Алгоритм замены базисных переменных

Процедура переразрешения системы ОЗЛП относительно новых базисных переменных может быть формализована и сведена к алгоритму (последовательности допустимых однообразных действий над элементами системной матрицы). Формулы преобразования могут быть легко выведены и должны выполняться в следующем порядке:

1) Разрешающий элемент матрицы (имеющий один индекс – номер базисного элемента, а второй – свободного для замены) заменяется обратной ему величиной;

2) Все элементы разрешающего столбца умножаются на обновленный разрешающий элемент и меняют знак;

3) Все элементы, кроме разрешающих столбца и строки, вычисляются так

m[i, j]:=m[i, j]+m[i, jr]*m[ir, j];

где jr – разрешающий столбец, ir – разрешающая строка;

4) Все оставшиеся элементы разрешающей строки умножаются на обновленный разрешающий элемент.

2.5.3.3. Алгоритм поиска опорного решения озлп

если все свободные члены в матрице, разрешенной относительно базиса, положительны, то они и представляют собой допустимое опорное решение и можно переходить к этапу его оптимизации;

если среди свободных членов есть отрицательные, то их вектор не годится в качестве опорного решения, так как все составляющие, по условию, неотрицательны, и необходимо производить последовательный обмен между базисными и свободными переменными, пока не избавимся от отрицательных свободных членов или не придем к выводу об отсутствии допустимого опорного решения.