Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОИТ_Учебник.doc
Скачиваний:
1580
Добавлен:
22.02.2016
Размер:
11.29 Mб
Скачать

7.2.1.2 Венгерский метод

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

Алгоритм венгерского метода состоит из подготовительного этапа и из конечного числа итераций. На подготовительном этапе строится матрица X0 (xij[0])m,n, элементы которой неотрицательны и удовлетворяют неравенствам:

, i 1, …, m; (7.30)

, j 1, …, m. (7.31)

Если эти условия являются равенствами, то матрица Хo - решение транспортной задачи. Если среди условий имеются неравенства, то осуществляется переход к первой итерации. На k-й итерации строится матрица Хk (xij[0])m,n. Близость этой матрицы к решению задачи характеризует число k — суммарная невязка матрицы Хk:

. (7.32)

В результате первой итерации строится матрица Хl, состоящая из неотрицательных элементов. При этом l 0. Если l 0, то Хl - оптимальное решение задачи. Если l 0, то переходят к следующей итерации. Они проводятся до тех пор, пока k при некотором k не станет равным нулю. Соответствующая матрица Хk является решением транспортной задачи.

Венгерский метод наиболее эффективен при решении транспортных задач с целочисленными объемами производства и потребления. В этом случае число итераций не превышает величины 0/2 (0 ‑ суммарная невязка подготовительного этапа).

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

7.2.1.3 Метод потенциалов

Метод потенциалов является модификацией симплекс-метода решения задачи линейного программирования применительно к транспортной задаче. Он позволяет, отправляясь от некоторого допустимого решения, получить оптимальное решение за конечное число итераций. Общая схема отдельной итерации такова. По допустимому решению каждому пункту задачи сопоставляется число, называемое его предварительным потенциалом. Пунктам Аi соответствуют числа ui, пунктам Bj ‑ числа vj. Они выбираются таким образом, чтобы их разность на k-й итерации была равна Сij - стоимости перевозки единицы продукции между пунктами Аi и Вj:

vj[k] – ui[k] Cij, i 1, ..., m; j 1, …, п. (7.33)

Если разность предварительных потенциалов для каждой пары пунктов Аi, Вj не превосходит Сij, то полученный план перевозок является решением задачи. В противном случае указывается способ получения нового допустимого плана, связанного с меньшими транспортными издержками. За конечное число итераций находится оптимальный план задачи.

7.3 Прямые методы условной оптимизации

7.3.1 Основные определения

Задача условной оптимизации заключается в поиске минимального или максимального значения скалярной функции f(x)n-мерного векторного аргументах (в дальнейшем без ограничения общности будут рассматриваться задачи поиска минимального значения функции):

f(x)min (7.34)

при ограничениях:

gi(x) 0, i 1, ..., k;

hj(x) 0, j 1, .., m; (7.35)

a x b.

Здесь x, a, b— векторы-столбцы:

, , (7.36)

Оптимизируемую функцию f(x)называютцелевой функцией.Каждая точкаxвn-мерном пространстве переменныхx1, ...,х,в которой выполняются ограничения задачи, называетсядопустимой точкой задачи.Множество всех допустимых точек называетсядопустимой областью G .Будем считать, что это множество не пусто.Решением задачисчитается допустимая точках*, в которой целевая функцияf(х)достигает своего минимального значения. Векторх*называютоптимальным.Если целевая функцияf(x)и ограничения задачи представляют собой линейные функции независимых переменныхх1, ..., хn, то соответствующая задача являетсязадачей линейного программировании,в противном случае -задачей нелинейного программирования.В дальнейшем будем полагать, что функцииf(x), g(x), i 1, ..., k , hj(x), j 1, …, m, -непрерывные и дифференцируемые.

В общем случае численные методы решения задач нелинейного программирования можно разделить на прямые и непрямые. Прямые методыоперируют непосредственно с исходными задачами оптимизации и генерируют последовательности точек {x[k]}, таких, чтоf(х[k+1]) f(x[k]).В силу этого такие методы часто называютметодами спуска.Математически переход на некоторомk-м шаге(k. 0, 1, 2, ...) от точких[k] к точкеx[k+1] можно записать в следующем виде:

x[k+l] x[k] + akp[k], (7.37)

где р[k]вектор, определяющий направление спуска;аkдлина шага вдоль данного направления. При этом в одних алгоритмах прямых методов точких[k] выбираются так, чтобы для них выполнялись все ограничения задачи, в других эти ограничения могут нарушаться на некоторых или всех итерациях. Таким образом, в прямых методах при выборе направления спуска ограничения, определяющие допустимую областьG,учитываются в явном виде.

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

Рассмотрим некоторые алгоритмы прямых методов.