Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые по ОАУ / Решение задач оптимизации линейного программирования.doc
Скачиваний:
115
Добавлен:
15.06.2014
Размер:
291.84 Кб
Скачать

4.2.Нахождение начального допустимого решения

В нашей задаче, представленной в стандартной форме, количество переменных больше, чем количество ограничений. В задаче имеется 8 переменных и 4 ограничения, поэтому для определения начального решения 4 переменных принимаются равными нулю. Тогда в системе из 4 равенств остается 4 переменных (неизвестных); в этом случае их значения можно определить однозначно. Эти значения используются в качестве начального решения задачи. Переменные, значения которых принимаются равными нулю, называются небазисными, остальные – базисными. Количество базисных переменных (переменных, составляющих базис), всегда равно количеству ограничений (4).

Начальный базис легко определить, если в каждом ограничении имеется переменная, входящая в это ограничение с коэффициентом, равным единице, и при этом не входящая ни в одно из других ограничений. Эти переменные принимаются в качестве базисных. Все остальные (небазисные) переменные принимаются равными нулю. Таким образом, базисные переменные принимают значения, равные правым частям ограничений.

В нашем примере базисными являются переменные X7, X8, X5 и X6 , так как каждая из этих переменных входит только в одно ограничение с коэффициентом равным единице, и при этом не входит ни в одно из других ограничений. Остальные четыре переменные будут являться небазисными, т.е. равными нулю.

Начальное базисное решение:

X1=0, X2=0, X3=0, X4=0;

X7=3, X8=7.2, X5=2, X6=12.8,

-W=-10.2;

4.3.Определение оптимального решения на основе симплекс-таблиц

Для нашей задачи алгоритм поиска оптимального решения на основе симплекс-таблиц следующий:

1) строится исходная симплекс-таблица,она отличается от симплекс-таблицы, используемой для обычного симплекс-методатолько тем, что в нее добавляется строка искусственной целевой функции. В этой строке указываются коэффициенты искусственной целевой функции с обратными знаками, как и для обычной целевой функции. А в остальном она сроится, как и обычная симплекс-таблица, т. е. по таким же правилам:

- в первой строке перечисляются переменные, как исходные (X1,X2), так и дополнительные (X3, X4, X5, X6, X7, X8);

- в первом столбце, который называется «Базисные переменные», перечисляются переменные, из которых состоит начальный базис (X7, X8, X5, X6), а так же в этом же столбце указываются обозначение целевой функции E и искусственной целевой функции W;

- в строках с целевой функцией E и с искусственной целевой функцией W указываются коэффициенты целевых функций с обратным знаком. Для переменных, не входящих в целевые функции указываются нули;

- в строках базисных переменных указываются коэффициенты ограничений, в которые входят эти переменные. Для переменных, не входящих в ограничения, указываются нулевые коэффициенты;

- в последнем столбце с названием «Базисное решение», указываются значения базисных переменных. Эти значения равны правым частям ограничений, а также начальные значения целевых функций (-E=0 и -W=-10.2).

Для примера приведем исходную симплекс-таблицу:

Таблица 4.3.1

Базисные

переменные

X1

X2

X3

X4

X5

X6

X7

X8

Базисное

Решение

-E

4

6

0

0

0

0

0

0

0

-W

-0.9

-0.9

1

1

0

0

0

0

-10.2

X7

X8

X5

X6

0.1

0.8

0.1

0.8

0.3

0.6

0.1

0.6

-1

0

0

0

0

-1

0

0

0

0

1

0

0

0

0

1

0

0

0

0

1

0

0

0

3

7.2

2

12.8

А дальше наша задача решается в два этапа:

Этап 1. Выполняется переход от начального недопустимого решения, содержащегося в исходной симплекс-таблице, к некоторому допустимому решению. Для этого с помощью обычных процедур симплекс-метода выполняется минимизация искусственной целевой функции W (или, то же самое, максимизация функции -W). При этом переменные, включаемые в базис, выбираются по строке искусственной целевой функции. Все остальные действия выполняются точно так же, как в обычном симплекс-методе. В результате минимизации искусственная целевая функция -W должна принять нулевое значение. Все искусственные переменные при этом также становятся равными нулю (исключаются из базиса), так как искусственная целевая функция представляет собой их сумму. Подробный алгоритм этого этапа приведем ниже:

1) Проверяем условие минимизации искусственной целевой функции W, если она ровна 0, то переходим к следующему этапу. В противном же случае выполняется следующий шаг. В нашей задаче -W равно -10.2 переходим к шагу;

2) Определяем переменную для включения в базис. Для этого находим переменную, которой соответствует максимальный по модулю отрицательный коэффициент в –W-строке. Включение такой переменной в базис приводит к быстрому росту –W-функции, т. е. к ее максимизации. В нашей задаче в –W-строке есть два максимальных по модулю отрицательных коэффициента (-0.9), в таком случае можно выбрать любой из них, мы выбираем первый, т. е. включаем в базис переменную X1. Столбец переменной, выбранной для включения в базис, называется ведущим.

3) Вычисляем переменную для исключения из базиса. Для этого вычисляем отношения базисных переменных (указанных в столбце «Базисное решение») к соответствующим элементам ведущего столбца. Такие отношения (называемые симплексными отношениями) вычисляются только для положительных коэффициентов ведущего столбца. В нашей задаче эти отношения равны 30, 7, 20, 16 соответственно. Наименьшее симплекс-отношение равно 7, оно соответствует переменной X8. Эта переменная будет исключена из базиса. Строка переменной, выбранной для исключения из базиса, называется ведущей. Элемент на пересечении ведущей строки и столбца называется ведущим элементом. В нашей задаче этот элемент равен 0.8, он находится на пересечении строки X8 и столбца X1.

4) Выполняем преобразование симплекс-таблиц по правилам:

- в столбце «Базисные переменные» вместо переменной X8, которая была исключена из базиса, записываем переменную X1, которая была включена в базис;

- все элементы ведущей строки делятся на ведущий элемент, т.е. все элементы X8-строки делим на 0.8;

- все элементы ведущего столбца, т. е. X1-столбца, заменяем нулями кроме ведущего элемента;

- все остальные элементы таблицы (включая -E-строку, -W-строку и столбец «Базисные решение») пересчитываем по «правилу прямоугольника».

Приведём полученную симплекс-таблицу после преобразования:

Таблица 4.3.2

Базисные

переменные

X1

X2

X3

X4

X5

X6

X7

X8

Базисное

Решение

-E

0

3

0

5

0

0

0

-5

-36

-W

0

-0.225

1

-0.125

0

0

0

1.125

-2.1

X7

X1

X5

X6

0

1

0

0

0.225

0.75

0.025

0

-1

0

0

0

0.125

-1.25

0.125

1

0

0

1

0

0

0

0

1

1

0

0

0

-0.125

1.25

-0.125

-1

2.1

9

1.1

5.6

Получили решение X7=2.1, X1=9, X5=1.1, X6=5.6, -W=-2.1. Принцип минимизации искусственной целевой функции – функция не ровна 0. Будем выполнять преобразования по правилам, описанным выше, до тех пор, пока функция –W не примет нулевое значение.

Таблица 4.3.3

Базисные

переменные

X1

X2

X3

X4

X5

X6

X7

X8

Базисное

Решение

-E

0

0

13.33

3.33

0

0

-13.33

-3.33

-64

-W

0

0

0

-3.34

0

0

1

1

0

X2

X1

X5

X6

0

1

0

0

1

0

0

0

-4.444

3.333

0.111

0

0.55

-1.66

0.111

1

0

0

1

0

0

0

0

1

4.444

-3.333

-0.111

0

-0.55

1.667

-0.11

-1

9.33

2

0.866

5.6

В таблице 4.3.3 -W-функция равна нулю, поэтому преобразование симплекс-таблиц остановлено. Мы нашли некоторое допустимое решение:

X2=9.33, X1=2, X5=0.866, X6=5.6, -W=0, -E=-64. Принимаем это некоторое допустимое решение, как начальное допустимое базисное решение исходной задачи. И дальше переходим к Этапу 2.

Этап 2. На этом этапе мы находим оптимальное допустимое решение. Принимаем таблицу 4.3.3 как исходную симплекс-таблицу, вычеркивая из нее строку с искусственной целевой функцией, так как она ровна нулю, и столбцы с искусственными переменными X7, X8, они так же ровны нулю и исключены из базиса. Теперь новая исходная симплекс-таблица будет выглядеть следующим образом:

Таблица 4.3.4

Базисные

переменные

X1

X2

X3

X4

X5

X6

Базисное

решение

-E

0

0

13.33

3.33

0

0

-64

X2

X1

X5

X6

0

1

0

0

1

0

0

0

-4.444

3.333

0.111

0

0.55

-1.66

0.111

1

0

0

1

0

0

0

0

1

9.33

2

0.866

5.6

Рассмотрим алгоритм поиска оптимального решения на Этапе 2. на основе симплекс-таблиц для нашей задачи:

1) Исходная симплекс-таблица. Проверяем условие окончания решения. Если в строке целевой функции все коэффициенты неотрицательны, это означает, что оптимальное решение найдено. В противном случае выполняются последующие шаги по максимизации целевой функции (исключение из базиса и включение в него переменных, по уже известным правилам, рассмотренным выше, а также пересчет симплекс-таблиц по «правилу прямоугольника» и т. д.).

В нашей задаче в -E-строка не содержит отрицательных коэффициентов – это значит, что оптимальное решение уже найдено и выглядит оно следующим образом:

X1=2 (в кг), X2=9.33 (в кг), X3=0, X4=0,

X5=0.8667 (в кг), X6=5.6 (в кг), E=64 (в долл.).

Переменная X3=0 показывает, что содержание олова, в полученном сплаве, не превышает 3 кг; переменная X4=0 показывает, что содержание цинка, в нем же, не превышает нормы, т. е. до 12.8 кг; переменная X5=0.8667 показывает, что меди, в полученном сплаве, будет содержаться на 0.8667 кг меньше, т. е. вместо 2 кг будет 1.133 кг; переменная X6=5.6 показывает, что содержание цинка в полученном сплаве составляет 7.2 кг (12.8-5.6=7.2).

Ответ: Для получения нового сплава нам потребуется 2 кг сплава 1, 9.33 кг сплава 2. В этом случае содержание олова в полученном сплаве не превысит 3 кг, цинка будет содержаться ровно 7.2 кг, а меди, в полученном сплаве, будет содержаться 1.133 кг. В этих условиях затраты будут минимальны и составят 64 доллара.