Автор работы: Пользователь скрыл имя, 11 Октября 2011 в 16:04, реферат
Термин линейное программирование появился в Америке в середине 40-х годов (первая американская работа по частной задаче линейного программирования опубликована в 1941 г.). В Советском Союзе исследования в этой области начались ранее. В конце 30-х годов целый ряд существенных результатов по линейному программированию был установлен Л.В. Канторовичем.
Задача линейного программирования – это задача нахождения значений параметров, обеспечивающих экстремум функции при наличии ограничений на аргументы.
Решение. Математическая модель задачи имеет вид
Z(X) = 10x1+12x2→max,
(7.11)
3x1+x2≤12,
x1+2x2≤5
x1≥0
(7.12)
x2≥0
x1,
x2- целые числа
где x1, x2 - число единиц соответственно первого и второго груза.
Множество планов этой задачи обозначим через D - это множество целых точек
многогранника ОАВС (рис. 7.3).
Рис. 7.3
Сначала решаем задачу (7.11)—(7.13) без условия целочисленности, получим оценку
множества D - значение функции Z(X) на оптимальном плане Х° = (19/
5, 3/5):
ТочкаXнеявляется оптимальным планом задачи (7.1 1)— (7.13). Поэтому в
соответствии с методом ветвей и границ требуется разбить множество D на
непересекающиеся подмножества. Выберем первую нецелочисленную переменную x
1=19/5=34/5 и разобьем множество D на два непересекающихся подмножества D
11 и D22. Линии x1=3 (L3
) и x4= (L3) являются линиями разбиения.
L\ |
Рис. 7.4
Найдем оценки £(D11) и £(D12), для чего решим задачи линейного программирования
Z(X)=10x1+12x2→max,
3x1+x2≤12
x1+2x2≤5
x1≤3
x1≥0, x2 – целые числа
Z(X)=10x1+12x2→max,
3x1+ x2≤12
x1+2x2≤5
x1≥4
x1≥0, x2 – целые числа
Например, графическим методом:
X11eD11→X01= (3,1); £(D11)=42; X12eD12→X02= (4,0); £(D12)=40.
Результат ветвления приведен на рис. 7.5
Рис. 7.5 |
План X01 удовлетворяет условиям задачи
(7.11)-(7.13),
и для него выполняется
£(D11)=42 >
£(/)/) = 42 >£(D12) = 40. Следовательно,
план X°1= (3, 1) является решением задачи (7.11)-(7.13),
т.е. надо взять три единицы первого груза и одну единицу второго груза.
Алгоритм метода ветвей и границ
1.4/ ЦИКЛИЧЕСКИЙ АЛГОРИТМ ЦЕЛОЧИСЛЕННОГО ПРОГРАММИРОВАНИЯ
Рассмотрим следующую задачу
линейного программирования:
Максимизировать
X0=a00-a01x1-a02x2-....-a
при условии
xn+1=an+1,0-an+1,1x1-an+
.
.
xn+m=an+m,0-
an+m,1x1-an+m,2x2-...-an+m,nxn
xj≥0 (j=1,...,n+1,...,n+m).
Заметим, что xn+1, . ., хn+m —
слабые переменные, a x1 ... ., хn — исходные
переменные задачи (1). Если наряду с ограничениями (1) потребовать, чтобы все
хj , (j'=1, . . ., т) были целыми, то задача будет
называться задачей целочисленного программирования. Существует большое
количество задач, особенно комбинаторных, которые можно сформулировать как
задачи целочисленного программирования.
Ограничения (1) определяют выпуклую область OABCD в n-мерном
пространстве, как показано на рис. 13.1. Узлы целочисленной решетки на рис.
13.1
изображены точками. Такие
являются допустимыми решениями задачи целочисленного программирования.
Оптимальные решения задачи линейного программирования всегда располагаются на
границе области решений. В данном случае граничные точки не являются даже
допустимыми решениями, поскольку ни одна из них не целочисленна.
Предположим, что область допустимых решений сужена до выпуклой оболочки
допустимых целых точек внутри допустимой области. На рис. 13.1 эта выпуклая
оболочка показана затененной областью OEFGH. Эту затененную область
можно
рассматривать как область
линейного программирования. Действительно, если к задаче линейного
программирования, определяющей допустимую область OABCD, добавить
ограничение типа RR', как показано на рис. 13.1, то вновь полученная
задача будет иметь OEFGH в качестве области допустимых решений. Такая
вновь полученная область обладает двумя важными свойствами: во-первых, она
содержит все допустимые целочисленные точки исходной задачи линейного
программирования (поскольку она является выпуклой оболочкой этих точек),
во-вторых,
все крайние точки новой
базисное
оптимальное решение
программирования имеет своими компонентами целые числа и является
оптимальным решением исходной задачи целочисленного программирования.
Именно алгоритмы целочисленного программирования, которые будут описаны
ниже, реализуют методы систематического введения дополнительных ограничений
с целью сведения исходной допустимой области к выпуклой оболочке ее
допустимых целочисленных точек.
Как только это будет сделано, можно решать модифицированную задачу линейного
программирования любым обычным методом, и полученное базисное оптимальное
решение
автоматически будет
алгоритм обладает следующими свойствами: 1) все дополнительные ограничения
сохраняют допустимые точки исходной целочисленной задачи; 2) за конечное число
шагов
создается достаточное
чтобы
оптимальное решение
дополнительные ограничения (гиперплоскости) проходят по крайней мере через одну
целочисленную точку, хотя и не обязательно находящуюся внутри выпуклой
оболочки; 4) каждое новое ограничение сокращает область допустимых решений
исходной задачи целочисленного программирования. Следует подчеркнуть, что
оптимальное решение исходной задачи может быть получено прежде, чем допустимая
область сократится до размеров выпуклой оболочки. К тому же, поскольку
оптимальное
целочисленное решение
гиперплоскостей, таких гиперплоскостей существует не более, чем это необходимо;
некоторые из них могут быть ограничениями исходной задачи.
Рис, 13.1.
Обычно
в ограничения задачи (1) включаются
в тривиальные соотношения xj=—
j) (j'=1, ...,n), а задача в матричной форме принимает вид
х = А (-хn), (2)
где
х — вектор-столбец с
xn, xn+1, . . .,xn+
m А — соответствующая матрица размера (п + т +
1) * (n + 1) и (—хn) — вектор с компонентами (1, —x1,—x
2, . . ., —xn), представляющими собой небазисные переменные
исходной таблицы. Задачу целочисленного программирования также можно записать в
виде таблицы.
Причины представления переменных в виде (—x1), (—x2, .
. . . . ., (—xn)) — чисто исторические, но это стало обычной
практикой в целочисленном программировании. Будем использовать αj
(j = 0, 1, . . ., п) для обозначения j-го столбца
текущей таблицы и aij (i = 0, 1, . . ., п + т;
j = 0, 1, . . ., n) для обозначения элемента 1-й строки и 7-го столбца
таблицы. Предполагается, что все a,ij в исходной таблице целые.
Следовательно, все слабые переменные xn+1, . . ., Х
n+m должны быть также неотрицательными целыми числами.
При
изложении алгоритма для
Гомори. Вначале задача целочисленного программирования рассматривается как
линейная
программа и алгоритм решает ее с
помощью прямого или
симплекс-метода. В конце работы алгоритма аij≥0 (i
= 1, ... . . ., п + т) и a0j≥ 0 (j'
=
1, . . ., n). (Для получения исходного
двойственного допустимого
введем дополнительное ограничение xn+m+1 ==
М — X1 —x2 — . . . — xn≥ 0, где M —
достаточно большая константа, и проделаем одну итерацию с этой строкой и
лексикографически минимальным столбцом в качестве ведущего.) Если аi0
≥ 0 и целые для всех i, то получено оптимальное решение
Информация о работе Классификация задач линейного программирования