Прямые и двойственные задачи линейного программирования

Автор работы: Пользователь скрыл имя, 28 Августа 2014 в 13:13, курсовая работа

Краткое описание

Целью данной курсовой работы является рассмотрение теоретического описания двойственности оптимизационных задач для разработки программы, реализующей один из методов этой оптимизации.
Исходя из цели, сформируем следующие задачи:
— ознакомиться с теоретическим описанием двойственности в оптимизационных задачах;
— решить вручную задачу одним из методов оптимизации;
— реализовать алгоритм метода на любом языке программирования.

Вложенные файлы: 1 файл

курсовая ммио.docx

— 184.40 Кб (Скачать файл)

 

                             min{F(y)=∑bjyj|∑aijyj≥ci, i=1,n; yj0, j=1,m}                          (1.8)

 

Пока прибыль предприятия (задача 3) меньше общей ценности ресурсов (задача 4), решение обеих задач будет неоптимальным. Оптимум достигается в случае, когда прибыль становится равной общей ценности ресурсов, т.е.

                                      max F(x) = min F( y)                                           (1.9)

 

 

1.2 Основы теоремы двойственности

 

Несимметричные двойственные задачи

Теорема двойственности:

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

Сформулируем двойственную задачу. Необходимо определить матрицу-строку Y=(y1, y2,…, ym), которая максимизирует линейную функцию f=YA0 и удовлетворяет ограничениям

 

                                                     YA>С                                                  (1.10)

 

Сформулируем исходную задачу. Определить матрицу-столбец X=(x1, x2,…, xn), которая минимизирует линейную функцию Z=СХ и. удовлетворяет ограничениям

 

                                                    AX=A0,Х>0                                        (1.11)

 

Как в исходной так и в двойственной задачах А=(aij) – матрица коэффициентов системы ограничений, A0=(b1, b2,…, bm) – матрица-столбец, C=(c1, c2,…, cn) – матрица-строка. Теорема двойственности устанавливает связь между оптимальными планами пары двойственных задач.

Теорема двойственности гласит: если из пары двойственных задач одна обладает оптимальным планом, то и другая имеет решение, причем для экстремальных значений линейных функций выполняется соотношение minZ =maxf. Если линейная функция одной из задач не ограничена, то другая не имеет решения

Доказательство.

Будем считать, что исходная задача имеет оптимальный план. План определен симплексным методом. Можно считать, что конечный базис состоит из т первых векторов A1, A2,…, Am.

Будем считать, что D является матрицей, составленной из компонент векторов конечного базиса A1, A2., Am Приведенная выше таблица состоит из коэффициентов разложения векторов A1, A2,…, An исходной системы по векторам базиса. В этой таблице каждому вектору A j соответствует вектор Xj.

Используя соотношения (1.10) и (1.11), получаем:

 

                                            A=D, D-1A=                                                 (1.12)

                                     A0 =DX*; D-1A0 =X                                            (1.13)

                                          min Z= C*X*,                                            (1.14)

                                          = C* – C > 0,                                                (1.15)

 

где С=(C1, C2,…, Cm), С=(C1, C2,…, Cm, Cm +1,…, Cn), a=(CX1–C1; СХ2 – С2,…, CXn–Cn)=(Z1–С; Z2-C2;…, Zn–Cn) – вектор, компоненты которого неположительны, так как они совпадают с Zj–Cj>0, соответствующими оптимальному плану.

Оптимальный план исходной задачи имеет вид X=D-1А0, поэтому оптимальный план двойственной задачи ищем в виде

 

                                              Y = C*D-1                                                                         (1.16)

 

Покажем, что Y* действительно план двойственной задачи. Для этого ограничения (1.10) запишем в виде неравенства YA-С>0, в левую часть которого подставим Y*. Тогда на основании (1.15), (1.12) и (1.11) получим

 

                                      YА–С=С*D-1А–С=С-С>0                                (1.17)

 

                                       откуда находим Y*A>С                                 (1.18)

 

Так как Y* удовлетворяет ограничениям (1.11), то это и есть план двойственной задачи. При этом плане значение линейной функции двойственной задачи f(Y)=Y*A0.Учитывая соотношения (1.15), (1.16) и (1.17), имеем

 

                   f (Y) = Y*A0=C * D-1A0= C*X = minZ(X)                          (1.19)

 

Таким образом, значение линейной функции двойственной задачи от Y численно равно минимальному значению линейной функции исходной задачи

Докажем теперь, что Y* является оптимальным планом. Умножим (1.10) на любой план Y двойственной задачи, а (1.11) – на любой план X исходной задачи: YAX=YA0=f(Y), YAX>СХ=Z(X), отсюда следует, что для любых планов Х и Y выполняется неравенство

 

                                               f(Y)>Z(X)                                                 (1.20)

 

Этим же соотношением связаны и экстремальные значения maxf(Y)>minZ(Х). Из последнего неравенства заключаем, что максимальное значение линейной функции достигается только в случае, если maxf(Y)=minZ(X), но это значение f(Y) достигает при плане Y, следовательно, план Y – оптимальный план двойственной задачи.

Аналогично можно доказать, что если двойственная задача имеет решение, то исходная также обладает решением и имеет место соотношение maxf(Y)=minZ(X)

Для доказательства второй части теоремы допустим, что линейная функция исходной задачи не ограничена снизу. Тогда из (1.19) следует, что f(Y) – Y. Это выражение лишено смысла, следовательно, двойственная задача не имеет решений.

Аналогично предположим, что линейная функция двойственной задачи не ограничена сверху. Тогда из (1.19) получаем, что Z(X)+Y. Это выражение также лишено смысла, поэтому исходная задача не имеет решений.

 

Симметричные двойственные задачи

 

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

Исходная задача. Найти матрицу-столбец Х=(x1, x2,…, xn), которая удовлетворяет системе ограничений

 

АХ>А0, Х>0 и минимизирует линейную функцию Z=СХ               (1.21).

 

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

Используя симметричность, можно выбрать задачу, более удобную для решения. Объем задачи, решаемой с помощью ЭВМ, ограничен числом включаемых строк, поэтому задача, довольно громоздкая в исходной постановке, может быть упрощена в двойственной формулировке. При вычислениях без помощи машин использование двойственности упрощает вычисления.

Очевидно, для того чтобы записать двойственную задачу, сначала необходимо систему ограничений исходной задачи привести к виду. Для этого второе неравенство следует умножить на -1.

 

1.3 Виды математических моделей  двойственных задач

 

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

– Симметричные задачи

Исходная задача Двойственная задача

Zmin=CX; fmax =Y>A0;

AX=A0; YA=С

X>0 Y>0

Исходная задача Двойственная задача

Zmax =CX; fmin =YA0;

AX=A0; YA=С

X>0 Y>0

– Несимметричные задачи

Исходная задача Двойственная задача

Zmin=CX; fmax=YA0;

AX=A0; YA=С

X>0

Исходная задача Двойственная задача

Zmax=CX; fmin=YA0;

AX=A0; YA=С

X>0

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

 

1.4 Двойственный  симплексный метод

 

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

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

bi являются оценками плана двойственной задачи. Сj являются оценками плана исходной задачи.

Найдем решение двойственной задачи по симплексной таблице. В симплексной таблице прописана исходная задача. Также определим оптимальный план двойственной задачи. Также найдем и оптимальный план исходной задачи.

Такой метод принято называть двойственным симплексным методом.

Допустим нужно определить исходную задачу линейного программирования, которая поставлена в общем виде: минимизировать функцию Z=СХ при АХ=A0, Х>0. Значит в двойственной задаче следует максимизировать функцию f=YA0 при YA>С. Пусть определен следующий базис D=(A1, А2,…, Аi,…, Аm), причем в нем хотя бы одна из компонент вектора Х=D-1A0=(x1, x2,…, xi,…, xm) отрицательная. Для всех векторов Aj используется следующее соотношение Zj–Cj >0 (i=1,2,…, n).

Пользуясь теоремой двойственности, Y=СбазD-1 является планом двойственной задачи. Этот план не оптимальный. Потому что оценки оптимального плана двойственной задачи должны быть неотрицательными и выбранный базис X содержит отрицательную компоненту и не является планом исходной задачи, а с другой стороны.

Поэтому, следует исключить из базиса исходной задачи вектор Аi, который соответствует компоненте xi<0. Данный вектор относится к отрицательной оценке, его необходимо включить в базис двойственной задачи.

Просматриваем i-ю строку для выбора вектора, включаемого в базис исходной задачи. Т.е. если строка не имеет xij<0, тогда линейная функция двойственной задачи не ограничена на многограннике решений. Поэтому нет решений исходной задачи.

В противном случае для столбцов, имеющих отрицательные значения, определяем q0j=min(xi/xij)>0. Также находим вектор, который соответствует minq0j(Zj–Cj) при решении исходной задачи на максимум, а также maxq0j(Zj–Cj) при значении исходной задачи на минимум.

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

Допустим, что q0j=min(xi/xij)=0, т.е. xi=0, тогда xij выбирается как разрешающий элемент, но лишь тогда, когда xij>0.

Данный подход к решению задачи не приводит к росту количества отрицательных компонент вектора X. Пока не будет получено Х>0, процесс не прекращается.

Определяя оптимальный план двойственной задачи, находим и оптимальный план исходной задачи.

Используя при решении, алгоритм двойственного симплексного метода условие Zj–Cj>0 допускается не учитывать, пока не будут исключены все хi<0.

Обычным симплексным методом определяется оптимальный план. Этот метод обычно используется при условии, что все хi<0. Чтобы перейти к плану исходной, задачи за одну итерацию надо определить q0j=max(xi/xij)>0.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 МАТЕМАТИЧЕСКАЯ ПОСТАНОВКА И РЕШЕНИЕ ЗАДАЧИ

 

 

2.1 Постановка задачи

 

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

Введем следующие обозначения:

i=1,…, m - номера (индексы) используемых ресурсов;

 - запас i-го ресурса, т.е. допустимый расход i-го ресурса в плановом периоде; другое название - ограничение по ресурсу i;

j=1,…, n - номера (индексы) продуктов;

 - рыночная цена j-го продукта;

- расход i-го ресурса на производство единицы j-го продукта;

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

Информация о работе Прямые и двойственные задачи линейного программирования