Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora.doc
Скачиваний:
22
Добавлен:
28.10.2018
Размер:
543.74 Кб
Скачать

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≤nk(i) ex(m+i) - μi (xm+i + bi)} + ∑1≤i≤n μi1≤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≤nk(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(μik(i)).

Таким образом, двойственная задача (4.5.6) имеет вид

ψ(λ, μ) = ∑1≤i≤nμi {1 - ln(μik(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≤ni + δ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≤pk )σ(k) = С 1 - σ(0) F, или

Сσ(0) =  F =  ∏1≤i≤n(ci / δi)δ(i)1≤k≤pk )σ(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≤pk / σ0 )σ(k) / σ(0).                                         (4.5.15)

Обозначим αi = δi0; βk = ∑i∈I(k)αi = σk0.

Окончательный вид двойственной задачи (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 можно найти из равенства σ01≤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α*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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]