Автор работы: Пользователь скрыл имя, 11 Октября 2011 в 16:04, реферат
Термин линейное программирование появился в Америке в середине 40-х годов (первая американская работа по частной задаче линейного программирования опубликована в 1941 г.). В Советском Союзе исследования в этой области начались ранее. В конце 30-х годов целый ряд существенных результатов по линейному программированию был установлен Л.В. Канторовичем.
Задача линейного программирования – это задача нахождения значений параметров, обеспечивающих экстремум функции при наличии ограничений на аргументы.
симплексной таблицы, содержащей оптимальное решение,
(7.5)
Далее введем понятие целой и дробной частей чисел аr0 и а
rj, для чего запишем эти числа в виде:
Здесь [аr0] и [arj] - целые части, a qt, qr] - дробные части чисел аrj и arj.
Например, 37/3 =12 +1/3, так как [37
/3] = 12, a -s/, = -3 + 1/3„ так как [-8/3] = -3.
Из уравнения (7.5) найдем хr
xr=аr0-
Теперь числа аю и аrj заменим суммами целых и дробных частей:
xr =
Предположим, что все xj - целые числа. Тогда разность
является целым числом.
Чтобы оказалось целым числом и хr, необходима целочисленность разности
Но О<qг<1, 0<grj<1, a
(7.6)
Если допустить, что разность (7.6) больше нуля, то
Однако в этом случае разность (7.6) не может быть целым числом.
Следовательно, условие целочисленности разности может быть обеспечено только
неравенством
Условие (7.7) и является добавочным ограничением в задаче линейного
программирования.
Для использования его в
дополнительную переменную хп+≥0 , после чего неравенство
превращается в уравнение
Обычно это ограничение записывают в следующем виде:
(7.8)
Последовательно добавляя новые ограничения к решению очередных задач,
получаем целочисленные координаты оптимального плана задачи (7.1)—(7.4), если
только не выясняется в какой-либо момент, что текущая задача не имеет
решения. Это означало бы отсутствие целочисленного решения задачи
(7.1)—(7.4).
Пример
1. Найти оптимальный
2 + 5х3 + 2х4 -max
при условия
x1+x2+x3 =15
2x1+ 3x3+x4=8,
хj, > 0, хj — целые числа, j = 1, 2, 3, 4.
Решение. Пошаговое решение задачи приведено в табл. 7.1
Таблица 7.1
Оптимальный план задачи без условия целочисленности
X = (0, 37/3, 8/3, 0)- для дальнейшего решения задачи к таблице оптимального
плана добавлено условие
-2/3x1-1/3x4≤-2/3.
Номер индекса г выбран из условия большей дробной части компоненты аi0
. Имеем г = 2; j = 0: [8/3] = 2, 2 – 8/3 = -2/3; j=1:
[2/31 = О, О - 2/3 =
-2/3; j = 2: [0] = 0, 0 - 0 = 0; j = 3: [0]= 0,
0 - 0 = 0; j = 4: [1/3] = 0, 0 — 1/3 = -1/
3. Сделав один шаг (в общем случае для получения целочисленного решения
одной итерации, конечно, недостаточно) метода последовательного уточнения
оценок, получили оптимальный план целочисленной задачи Х*= (О, 13, 2, 2)
Трудоемкость решения целочисленной задачи обусловлена вводом новых добавочных
ограничений и новых переменных. В связи с этим необходимо придерживаться
следующего правила, позволяющего при определенных условиях сокращать текущие
таблицы. Дополнительная переменная хп+1 вводится в процессе решения
с добавочным ограничением как базисная переменная очередного псевдоплана и
сразу, на этой же итерации, переводится в число небазисных компонент. Если на
дальнейших итерациях, согласно правилу преобразования таблицы, переменная х
п+1 снова окажется базисной, ее значение станет несущественным для
основных переменных задачи, так что строка и столбец текущей таблицы,
отвечающие хп+] вычеркиваются. Правило сокращения таблиц
ограничивает их размеры: не более n строк и не более (2n -m) столбцов.
Рассматриваемый алгоритм целочисленного программирования сводится к методу
последовательного уточнения оценок с дополнительными правилами расширения и
сокращения
текущей таблицы решения
Пример 2. Получить целочисленный оптимальный план задачи
Z(X) = x1— 4х2 — 2х3 + Зх4 —> max при условиях
3x1+x2+8x3+x4=35
x1 +x3+x4≤6
xj≥ 0, хj — целые числа, j = 1, 2, 3, 4.
Решение. Пошаговое решение задачи приведено в табл. 7.2.
Таблица 7.2
На шаге 2 решения задачи без ограничения целочисленности получаем
оптимальный нецелочисленный план
X = (0, 0, 29/7, 13/7).
Поскольку обе базисные координаты X нецелочисленны, выбираем любую — первую
или вторую — строку таблицы на шаге 2, а именно вторую, и строим добавочное
ограничение
-5/7x1-6/7x2-1/7x5+x6=-6/
Вводя ограничение добавочной строкой на шаге 2, находим направляющий элемент
в этой строке:
Осуществляя преобразование табл. 7.2 с направляющим элементом (-5/7),
получаем на шаге 3 оптимальный план новой задачи, снова нецелочисленный. На
шаге 3 добавляем очередное условие, получаем четыре строки ограничений.
Поскольку на шаге 3 достигается
в столбце А6, то х6 становится базисной переменной на шаге
4. В соответствии с правилом сокращения таблицы на шаге 4 вычеркиваем строку
и столбец, соответствующие х6, добавляем новую строку, а на шаге 5
получаем псевдоплан X = (4, 0, 3, -1). Методом последовательного уточнения
оценок на шаге 6 получаем план, но нецелочисленный. Оптимальный целочисленный
план получаем лишь на шаге 7: X* = (О, 1, 4, 2), max Z(X) = -6.
1.3.
Метод ветвей и границ
Одним из широко распространенных методов решения целочисленных задач
является метод ветвей и границ, который может быть использован как для задач
линейного программирования, так и для задач, не сводимых к задачам линейного
программирования. Рассмотрим идею метода ветвей и границ на примере общей
задачи дискретного программирования
f(X) -> max,
(7.9)
Х€D
(7.10)
где D — конечное множество.
Сначала найдем оценку £(D) (границу) функции f(X), X е D: f(X) ≤
£(D) для V X е D. Если для некоторого плана Х° задачи (7.9)-(7.10)
справедливо равенствоf(X0) = £(D), то Х° = X*
является решением задачи. Если указанное условие не выполняется, то возможно
разбиение (ветвление) множества D на конечное число непересекающихся
подмножеств D1i: ỤD1i. = D,
∩D1i = Ө, и вычисление оценки £(D1
i) (границ), 1≤i≤m (рис 7.1)
Рис. 7.1
Если для некоторого плана X1i е Di1, 1
≤ / ≤ m выполняется условие f(Xkl)= £(D
1k)≥ £(D1i),
1≤i≤m то Xk1=X* является
оптимальным планом (решением) задачи (7.9)-(7.10).
Если такого плана нет, то выбирается подмножество Dkl с
наибольшей оценкой £(D1i):
и разбивается на конечное число непересекающихся подмножеств
D2kj: UD2kj=D1k,
∩D2kj=Ө. Для каждого подмножества находится
оценка £(D2kj), 1≤j≤n (рис 7.2)
(рис. 7.2).
Если при этом найдется план X2j е D2kJ
, 1 ≤j ≤n, такой, что f(X2r)= £(D2
kr)≥ £(D2kj), 1≤j≤n, то X
2r= X* является решением задачи (7.9)-(7.10). Если такого плана
нет,
то процедуру ветвления
с наибольшей оценкой £(D2kj) , 1≤j≤n .
Способ ветвления определяется спецификой конкретной задачи.
Рассмотрим задачу, которую можно свести к задаче целочисленного линейного
программирования.
Пример.
Контейнер объемом 5 м3 помещен на контейнеровоз грузоподъемностью 12
т. Контейнер требуется заполнить грузом двух наименований. Масса единицы груза
mj (в тоннах), объем единицы груза Vj (в м3),
стоимости Cj (в условных денежных единицах) приведены в табл. 7.3.
Таблица 7.3
Вид груза у | mj | V, | Сj |
1 | 3 | 1 | 10 |
2 | 1 | 2 | 12 |
Требуется
загрузить контейнер таким
груза была максимальной.
Информация о работе Классификация задач линейного программирования