|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Геометрическое программированиеОпределение. Функция вида 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(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.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |