- •1. Теоретические основы. Двойственный симплекс метод.
- •Алгоритм симплекс-метода:
- •2. Практическая задача
- •2.1 Постановка задачи
- •2.2 Решение задачи
- •3. Разработка программного обеспечения
- •3.1 Входные данные
- •3.2 Выходные данные
- •3.3 Основные функции программного обеспечения
- •3.4 Блок-схема
- •3.5 Интерфейс программы
- •3.6 Руководство по эксплуатации
- •4. Проведение исследования
- •Заключение
- •Список используемой литературы
- •Приложение
Алгоритм симплекс-метода:
-
Определить число и состав базисных и свободных переменных.
-
Выразить базисные переменные через свободные переменные.
-
Выразить целевую функцию через свободные переменные.
-
Построить начальную симплекс-таблицу.
-
Проверить решение на оптимальность: если в F-строке (кроме С0) все Сj0, то получено оптимальное решение: X=(B1,...,Bm,0,...,0), F=C0. Если же существует Cj<0, то решение можно улучшить, но предварительно надо проверить факт существования решения.
-
Проверить существование решения: рассмотрим все столбцы, у которых Сj<0, если существует хотя бы один столбец, у которого все коэффициенты Ai,j<0, то задача решения не имеет, т.к. множество допустимых решений D не ограничено и целевая функция неограниченно возрастает. Если таких столбцов нет, то переходим к следующему этапу.
-
Выбрать свободную переменную, которую надо ввести в базис (выбор разрешающего столбца): это столбец, с минимальным значением Сj (пусть это k-й столбец)
-
Выбрать базисную переменную, которую надо вывести из базиса (выбор разрешающей строки): рассмотрим k-й столбец и все его элементы, которые больше нуля, т.е. Ai,k>0; для всех этих элементов находим отношение Bi/Ai,k и выбираем строку, которая соответствует минимальному значению этого отношения (пусть это i-я строка); соответствующая i-я переменная Xi выводится из базиса; при нескольких одинаковых отношениях берем любую строку; элемент Ai,k называется разрешающим элементом.
-
Пересчитать симплекс-таблицу: составляем новую симплекс-таблицу заменив в составе базисных переменных Xi на Xk; заполняем сначала новую k-ю строку, записывая в нее элементы старой i-ой строки, поделенные на разрешающий элемент; после заполнения k-ой строки заполняем оставшиеся строки; для этого k-ю строку умножаем последовательно на такие числа, чтобы после сложения ее с каждой строкой старой таблицы в k-ом столбце получить везде ноль (кроме единицы в k-ой строке).
-
Когда в F-строке все коэффициенты (кроме С0) будут больше нуля, тогда получаем оптимальное решение,
-
Когда существует столбец , у которого Cj<<0 и все коэффициенты Ai,j<<0, в этом случае решения на существует.
-
После заполнения новой симплекс-таблицы, если все еще есть решение но не найдено оптимальное алгоритм возвращается к 5-му пункту.
Алгоритм двойственного симплекс-метода.
Согласно книге Томаса Кормена "Алгоритмы: построение и анализ" двойственный симплекс-метод, как и симплекс-метод, используется при нахождении решения задачи линейного программирования, записанной в форме основной задачи, для которой среди векторов , составленных из коэффициентов при неизвестных в системе уравнений, имеется m единичных. Вместе с тем двойственный симплекс–метод можно применять при решении задачи линейного программирования, свободные члены системы уравнений которой могут быть любыми числами (при решении задачи симплексным методом эти числа предполагались неотрицательными). Такую задачу и рассмотрим теперь, предварительно предположив, что единичными являются векторы т. е. рассмотрим задачу, состоящую в определении максимального значения функции (3.1)
при условиях
(3.2)
(3.3)
где
и среди чисел имеются отрицательные.
В данном случае есть решение системы линейных уравнений (3.2). Однако это решение не является планом задачи (3.1) – (3.3), так как среди его компонент имеются отрицательные числа.
Поскольку векторы – единичные, каждый из векторов можно представить в виде линейной комбинации данных векторов, причем коэффициентами разложения векторов по векторам служат числа Таким образом, можно найти
Определение:
Решение системы линейных уравнений (3.2), определяемое базисом , называется псевдопланом задачи (3.1) – (3.3), еслидля любого
Теорема:
Если в псевдоплане , определяемом базисом , есть хотя бы одно отрицательное число такое, что все ,то задача (3.1) – (3.3) вообще не имеет планов.
Теорема:
Если в псевдоплане , определяемом базисом , имеются отрицательные числа такие, что для любого из них существуют числа aij<0, то можно перейти к новому псевдоплану, при котором значение целевой функции задачи (3.1) – (3.3) не уменьшится.
Сформулированные теоремы дают основание для построения алгоритма двойственного симплекс-метода.
Итак, продолжим рассмотрение задачи (3.1) – (3.3). Пусть – псевдоплан этой задачи. На основе исходных данных составляют симплекс-таблицу (табл. 1), в которой некоторые элементы столбца вектора являются отрицательными числами. Если таких чисел нет, то в симплекс-таблице записан оптимальный план задачи (3.1) – (3.3), поскольку, по предположению, все . Поэтому для определения оптимального плана задачи при условии, что он существует, следует произвести упорядоченный переход от одной симплекс–таблицы к другой до тех пор, пока из столбца вектора не будут исключены отрицательные элементы. При этом все время должны оставаться неотрицательными все элементы (т +1)–й строки, т.е. для любого
Таким образом, после составления симплекс-таблицы проверяют, имеются ли в столбце вектора отрицательные числа. Если их нет, то найден оптимальный план исходной задачи. Если же они имеются (что мы и предполагаем), то выбирают наибольшее по абсолютной величине отрицательное число. В том случае, когда таких чисел несколько, берут какое–нибудь одно из них: пусть это число bl. Выбор этого числа определяет вектор, исключаемый из базиса, т. е. в данном случае из базиса выводится вектор Pl. Чтобы определить, какой вектор следует ввести в базис, находим , где
Пусть это минимальное значение принимается при , тогда в базис вводят вектор Рr. Число является разрешающим элементов. Переход к новой симплекс–таблице производят по обычным правилам симплексного метода. Итерационный процесс продолжают до тех пор, пока в столбце вектора Р0 не будет больше отрицательных чисел. При этом находят оптимальный план исходной задачи, а следовательно, и двойственной. Если на некотором шаге окажется, что в i–й строке симплекс–таблицы (табл. 1) в столбце вектора Р0 стоит отрицательное число bi, а среди остальных элементов этой строки нет отрицательных, то исходная задача не имеет решения.
Таким образом, отыскание решения задачи (3.1) – (3.3) двойственным симплекс-методом включает следующие этапы:
1. Находят псевдоплан задачи.
2. Проверяют этот псевдоплан на оптимальность. Если псевдоплан оптимален, то найдено решение задачи. В противном случае либо устанавливают неразрешимость задачи, либо переходят к новому псевдоплану.
3. Выбирают разрешающую строку с помощью определения наибольшего по абсолютной величине отрицательного числа столбца вектора Р0 и разрешающий столбец с помощью нахождения наименьшего по абсолютной величине отношения элементов (m+1)–и строки к соответствующим отрицательным элементам разрешающей строки.
4. Находят новый псевдоплан и повторяют все действия начиная с этапа 2.
Таблица 1