Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Методы решения задач целочисленного программирования
Симплекс-метод
Симплекс-метод является универсальным методом решения задач линейного программирования. Суть данного метода заключается в построении допустимого ограничения (начало - опорное решение и последовательное улучшение этого плана при помощи определенного количества итераций). Симплекс-метод применяется для решения задач линейного программирования записанных в канонической форме. Нахождение начального опорного плана и переход к следующему опорному решению осуществляется при помощи метода Жордана-Гаусса для системы линейных уравнений. Итак, рассмотрим задачу линейного программирования с ограничениями в форме уравнений. Дана система
m линейных уравнений с n неизвестными и линейная функция
Среди неотрицательных решений системы (6) нужно найти такое, которое минимизирует функцию (7). Для начала работы по симплекс-методу требуется, чтобы заданная система уравнений была приведена к допустимому виду. Это означает, что какие-то из неизвестных должны быть выражены через остальные неизвестные, причем свободные члены этих выражений неотрицательны. Пример допустимой системы:
здесь свободные члены равны соответственно 5,4 и 0. Неизвестные в допустимом виде системы, которые выражены через остальные, называются базисными, а весь набор этих неизвестных - допустимым базисом неизвестных. Остальные неизвестные называются небазисными или свободными. Например, в системе (8) допустимый базис образован неизвестными х1, х2, х3; неизвестные же х4 и х5 - свободные. По поводу возможности приведения системы (6) к допустимому виду заметим пока только следующее. Если система (6) совместна, то метод Гаусса позволяет выделить в ней базис неизвестных. Весь вопрос в том, будет ли этот базис допустимым, т. е. будут ли все свободные члены в правых частях уравнений неотрицательными. Можно, конечно, попытаться перебрать все возможные базисы неизвестных, чтобы отыскать среди них допустимый базис, но это весьма трудоемкая работа. После того как выделен допустимый базис неизвестных, можно в выражении (7) для целевой функции заменить каждое базисное неизвестное его выражением через свободные. В итоге функция f запишется через одни лишь свободные неизвестные. Например, если
а система ограничений приведена к виду (7), то новое выражение для f будет
Чтобы упростить дальнейшие записи, будем считать, что имеется всего пять неизвестных х1, х2, х3, х4, х5 и система ограничений приведена к допустимому виду с базисом {x1, х2, х3 }:
а целевая функция - к виду
Напомним, что решается задача о минимизации f при ограничениях (9) и условиях
Положим все свободные неизвестные равными нулю:
и найдем из системы (4) значение базисных неизвестных:
Полученное таким путем решение системы (9):
будет неотрицательным. Оно называется базисным решением, отвечающим базису {х1, х2, х3 }. Для базисного решения значение функции f равно f В = Возможны три случая: 1. Все коэффициенты при свободных неизвестных в выражении для f неотрицательны:
Тогда для любого неотрицательного решения системы (9) имеем 2. Имеется свободное неизвестное, коэффициент при котором в выражении f отрицателен, а все коэффициенты при этом неизвестном в уравнениях (9) - неотрицательны. Пусть, например,
т. е. решение (х1, х2, х3, х4, 0,0) будет оставаться неотрицательным. При этом 3. Имеется свободное неизвестное, коэффициент при котором в f отрицателен, но и среди коэффициентов при этом неизвестном в уравнениях (9) также есть отрицательные. В этом случае производится шаг, а именно, от базиса В мы переходим к новому базису В', с таким расчетом чтобы значение fв уменьшилось или по крайне мере не увеличилось: Опишем конкретно содержание шага. Пусть, например,
Если снова, как в случае II, наращивать значение х4 то будем иметь:
Ввиду
для которого значение функции f будет Таким образом, с ростом х4 первым из базисных неизвестных обращается в нуль неизвестное x1. Это служит для нас сигналом к замене базиса B = {х1, х2, х3 } на B' = {x4, х2, х3 }, а именно: из старого базиса удаляется неизвестное х1 и вместо него в базис вводится неизвестное х4 (из числа прежних свободных). Смена базиса, как уже говорилось, влечет за собой перестройку системы (9). Из первого уравнения (для х1) выражаем:
и подставляем это выражение для х4 в остальные два уравнения. В итоге получаем систему вида:
с базисным решением:
которое должно совпадать с решением (13), поскольку, как видно из самой системы (14), двух разных решений с х1,=0, х5=0 быть не может. Таким образом, базисное решение (15) является снова неотрицательным. Что же касается нового значения функции f, то оно равно:
и, таким образом, Переход от базиса В к новому базису В' и означает шаг, который делается в случае III. Разумеется, старое выражение для f, т. е. (10), должно быть теперь заменено новым:
которое получается из (10) заменой неизвестного х4 по формуле (14). Если для полученной задачи (15), (18) снова имеет место случай III, то делаем следующий шаг, т. е. переходим к новому базису В", для которого Производя расчеты по симплекс - методу, нет необходимости выписывать все вычисления столь подробно, как мы делали это в предыдущих примерах. Оказывается, весь процесс можно записать в виде последовательности однотипно заполняемых таблиц, причем каждому шагу будет отвечать переход к следующей таблице. Описание симплекс - таблиц произведем на примере задачи (9), (10), где требуется минимизировать функцию (10) при ограничениях (9) и условиях хj Для заполнения первой таблицы необходимо в каждом из уравнений (4) перенести все члены, кроме свободного, из правой части в левую, т. е. записать (9) в виде:
Аналогичную работу следует проделать и с равенством (10):
Теперь можно заполнить симплекс-таблицу (таблица 1):
Таблица 1: Симплекс-таблица
Заглавная строка таблицы и характер заполнения, не считая, стрелок, в комментариях не нуждаются. Расстановку стрелок поясним ниже. В соответствии с ранее описанной методикой мы должны, прежде всего, выяснить, имеется ли в первоначальном выражении:
хотя бы один отрицательный коэффициент при х4 и х5. Поскольку при внесении в таблицу коэффициенты при х4 и х5 поменяли знаки, то мы должны, выяснить, имеются ли в последней строке таблицы (не считая свободного члена Предположим, что в последней строке имеется (не считая Пусть, наконец, среди чисел отмеченного столбца, кроме последнего числа, имеются положительные числа. Это означает, что мы имеем случай III и, следовательно, должны сделать шаг. Например, как мы считали ранее, пусть –
и выбрать из них наименьшее. Пусть, например, таковым является отношение С этого момента начинается перестройка таблицы, цель которой состоит в переходе к новому базису {х4,х2,х3}. Ее можно осуществить при помощи все того же метода Гаусса. А именно умножаем выделенную строку на такое число, чтобы на месте разрешающего элемента появилась единица, т. е. умножаем на [3]
Date: 2016-07-22; view: 403; Нарушение авторских прав |