- •1. Введение
- •Основные разделы курса
- •3. Основная задача линейного программирования. Различные формы записи задачи.
- •6. Алгоритм симплекс-метода.
- •1.3. Реализация симплекс-метода в виде симплексных таблиц.
- •8Транспортная задача. Описание и примеры применения метода потенциалов.
- •29.Метод ветвей и границ. Задача о рюкзаке.
- •Задача о рюкзаке
- •30. Метод ветвей и границ. Задача коммивояжера.
- •28. Методы перебора вариантов. Метод вариаций.
- •31.Задачей целочисленного программирования называется задача линейного программирования, в которой имеется дополнительное условие, требующее, чтобы часть переменных принимала только целые значения.
- •35.Общие принципы дискретного динамического программирования. Уравнение Беллмана.
- •36. Задача распределения ресурсов.
- •38. Построение кратчайшего пути на сети.
- •37. Задача оптимального планирования. Обработка деталей на двух станках.
- •10. Выпуклые множества и выпуклые функции.
- •13.Двойственность в задачах выпуклого программирования
- •14. Квадратичное программирование
- •12. Постановка задачи. Теорема Куна – Таккера.
- •16. Геометрическое программирование
- •11. Свойства выпуклых множеств и выпуклых функций
- •19. Общая задача нелинейного программирования.
- •22.Свойства дифференцируемых функций.
- •24. Дифференцируемость оператора Немыцкого.
- •25. Необходимый признак экстремума в задачах без ограничений первого и второго порядков.
- •27 . Правило множителей Лагранжа для гладких нелинейных задач.
- •41. Простейшая вариационная задача (пвз), исследование необходимых условий экстремума первого порядка.
- •45. Вариационная задача с кусочно-гладкими кривыми.
- •46. Исследование необходимых условий экстремума второго порядка. Условия Лежандра и Якоби.
- •42.. Алгоритм Гюйгенса исследования пвз.
- •48.. Поле экстремалей. Достаточные условия сильного экстремума.
- •Задача Больца.
- •6.9. Изопериметрические задачи.
- •51. Принцип максимума Понтрягина.
16. Геометрическое программирование
Определение. Функция вида
f(t) = ∑1≤i≤mui(t), t=(t1,...,tm), где ui(t) = ci tja(i,j), ci>0, i=1,...,n (4.5.1)
называется позиномом, матрица A={aij} называется матрицей экспонент данного позинома.
Простейшим случаем позинома является полином (многочлен) от нескольких переменных. Если в матрице экспонент есть отрицательные элементы, позином не является полиномом.
Геометрическим программированием называется раздел математики, в котором исследуются задачи минимизации позиномов на множествах, заданных при помощи позиномных неравенств:
f0(t1,...,tm) → min fk(t1,...,tm) ≤ 1, k=1,..., p; tj > 0, j=1,...,m. (4.5.2)
где fk(t) = ∑i∈ I(k) ci tja(i,j), I(k) = Ik = [mk, mk+1, ..., nk], k=0, ..., p ;
m0=1, m1=n0+1, mk=nk-1+1, np= n.
Матрица A={aij} при этом состоит из матриц экспонент всех позиномов, входящих в задачу, и называется матрицей экспонент задачи (4.5.2).
Введем в задачу переменные ui = ci tjaij , i = 1,…,n. Получаем (4.5.3)
Введем новые переменные: xj = ln tj, j=1,…,m; xm+i= ln ui, bi = - ln ci, i=1,...,n. (4.5.4)
В этих переменных задачу (4.5.3) можно записать в виде следующей задачи выпуклого программирования: (4.5.5)
Применим теорию двойственности, для чего построим функцию Лагранжа (с учетом того, что λ0=1):
L(x,λ, μ) = ∑ i∈I(0) ex(m+i)+ ∑1≤k≤p λk (∑ i∈I(k) ex(m+i) - 1)+∑1≤i≤n μi (∑1≤j≤maijxj - xm+i - bi).
После перегруппировки слагаемых получаем:
L(x,λ, μ) = ∑1≤i≤n {λk(i) ex(m+i) - μi (xm+i + bi)} + ∑1≤i≤n μi ∑1≤j≤maijxj - ∑1≤k≤p λk,
где k=k(i) <=> i∈Ik.
Запишем задачу, двойственную к задаче (4.5.5):
ψ(λ, μ) = inf {L(x,λ, μ) | x∈Rn+m} → max. (4.5.6)
Поскольку все слагаемые функции L зависят от разных переменных x, для нахождения inf найдем наименьшее значение каждого слагаемого отдельно.
А) По переменным xj, j=1,…,m функция L линейна, поэтому по этим переменным inf L > -∞ тогда и только тогда, когда все коэффициенты перед xj равны нулю:
для всех j=1,…,m выполняется равенство ∑1≤i≤n μi aij =0, или ATμ=0. (4.5.7)
При выполнении этого условия
L(x,λ, μ) = ∑1≤i≤n {λk(i) ex(m+i) - μi (xm+i + bi)} - ∑1≤k≤p λk.
Б) По переменным xm+i, i=1,…,n: Lx(m+i) = λk(i) e x(m+i) - μi = 0, откуда следует, что для всех i переменные μi неотрицательны, причем λk(i)=0 <=> μi=0.
При λk(i)>0 наименьшее значение функции L по переменной xm+i достигается при xm+i = ln(μi /λk(i)).
Таким образом, двойственная задача (4.5.6) имеет вид
ψ(λ, μ) = ∑1≤i≤nμi {1 - ln(μi /λk(i)) - bi} - ∑1≤k≤p λk → max, ATμ=0, λ, μ ≥ 0. (4.5.8)
Пусть μi=vδi , v > 0, причем ∑1≤i≤nδi = 1. Тогда (с учетом того, что bi = - ln ci)
ψ = v ∑1≤i≤n{δi + δiln{ciλk(i) /(v μi)} - ∑1≤k≤p λk = v + v ∑1≤i≤nδiln{ciλk(i) / δi} - v ln v - ∑1≤k≤p λk . (4.5.9)
Обозначим D=∑1≤i≤nδiln{ciλk(i) / δi}. Тогда (4.5.8) запишется в виде
ψ = v(1+D) – v ln v - ∑1≤k≤p λk → max, ATδ=0, λ, δ ≥ 0, ∑1≤i≤nδi = 1. (4.5.10)
На переменную v ограничений нет, поэтому найдем максимум по этой переменной:
ψv = 1+D – ln v – 1 = D – ln v = 0, откуда v* = e D.
ψ(v*) = v*(1+D) – v*D - ∑1≤k≤p λk= v* - ∑1≤k≤p λk = e D - ∑1≤k≤p λk = ∏1≤i≤n(ciλk(i) / δi)δ(i) - ∑1≤k≤p λk
Обозначим σk = ∑i∈I(k) δi, тогда ψ(v*) = ∏1≤i≤n(ci / δi)δ(i) ∏1≤k≤pλkσ(k)- ∑1≤k≤p λk.
В итоге двойственная задача переходит в задачу:
ψ = ∏1≤i≤n(ci / δi)δ(i) ∏1≤k≤pλkσ(k)- ∑1≤k≤p λk → max;
ATδ=0, λ, δ ≥ 0, = 1, σk = ∑i∈I(k) δi. (4.5.11)
Перейдем к вычислению max по переменным λr, r >1.
ψλ(r) = ∏1≤i≤n(ci / δi)δ(i) ∏1≤k≤pλkσ(k) σr / λr – 1 = 0. (4.5.12)
Обозначим С = ∏1≤i≤n(ci / δi)δ(i) ∏1≤k≤pλ*kσ(k). Тогда из (4.5.12) получаем
λ*r = С σr . (4.5.13)
Подставляя эти значения в определение С, находим:
С = ∏1≤i≤n(ci / δi)δ(i) ∏1≤k≤p(С σk )σ(k) = С ∑ σ(k) ∏1≤i≤n(ci / δi)δ(i) ∏1≤k≤p(σk )σ(k) = С 1 - σ(0) F, или
Сσ(0) = F = ∏1≤i≤n(ci / δi)δ(i) ∏1≤k≤p(σk )σ(k), и в результате, C = F 1/σ(0).
В итоге, получаем:
ψ(λ*) = С - ∑1≤k≤p λ*k = С - ∑1≤k≤pС σ*k= С σ*0. (4.5.14)
После подстановки найденного значения для С и тождественных преобразований получаем, что
ψ(λ*) = ∏1≤i≤n(ciσ0 / δi)δ(i) / σ(0) ∏1≤k≤p(σk / σ0 )σ(k) / σ(0). (4.5.15)
Обозначим αi = δi/σ0; βk = ∑i∈I(k)αi = σk/σ0.
Окончательный вид двойственной задачи (4.5.6) в этих переменных будет следующим:
ψ =∏1≤i≤n(ci / αi)α(i) ∏1≤k≤pβkβ(k) → max;
ATα = 0, α ≥ 0, βk = ∑i∈I(k)αi , β0=1. (4.5.16)
По теореме двойственности оптимальные значения задач (4.5.2) и (4.5.16) совпадают: f*0 = ψ*.
Часто оказывается так, что задачу (4.5.16) можно решить достаточно просто.
Определение. Степенью трудности задачи геометрического программирования называется число линейно независимых решений системы
ATα = 0, ∑i∈I(0)αi = 1.
Для большинства задач степень трудности вычисляется по формуле d = n – m – 1, где (как и в предыдущих рассуждениях) n – количество слагаемых в позиномах задачи, m – количество переменных.
Для задач с нулевой степенью трудности характерно, что допустимая область двойственной задачи (4.5.16) состоит из единственного варианта, который и является решением.
Предположим, мы нашли решение α* задачи (4.5.16), вычислили соответствующие β*, ψ* = ψ( α*, β*).
По формуле (4.5.13) λ*r = Сσr = Сσ0 β*r = ψ* β*r при r >0 (λ*0 =1) .
δ*i = σ0α*i; где σ0 можно найти из равенства σ0 ∑1≤i≤nα*i = 1.
μ*i = v* δ*i; причем v* находится из формулы ψ* = v* - ∑1≤k≤p λ*k .
v* = ψ* + ∑1≤k≤p λ*k = ψ* + ∑1≤k≤p ψ*β*k = ψ*(1+ ∑1≤k≤p σk / σ0) = ψ* / σ0 .
Таким образом, μ*i = v* δ*I =ψ* / σ0 σ0α*I = ψ*α*I .
Зная оптимальные значения λ* и μ*, находим оптимальные значения всех слагаемых задачи:
ex*(m+i) = u*I = μ*i / λ*k(i),
т.е. при k(i)=0 u*i =ψ*α*I ; при k(i)≠0 u*I =α*I /β*k(i) .
В итоге, значения переменных t* находим, решая систему уравнений
ui(t) = u*i, i=1,…,n.