Water-filling algorithm
什么是water-filling algorithm
在这里我们先给出维基百科对water-filling的定义:
Water filling algorithm is a general name given to the ideas in communication systems design and practice for equalization strategies on communications channels. As the name suggests, just as water finds its level even when filled in one part of a vessel with multiple openings, as a consequence of Pascal’s law, the amplifier systems in communications network repeaters, or receivers amplify each channel up to the required power level compensating for the channel impairments. See, for example, channel power allocation in MIMO systems.
一个例子
当然只看定义肯定会一头雾水,这里我们给出一个例子,该例子参考于Convex Optimization这本书
这个问题来源于信息论,该问题解决的是给信道分配一个总功率(总量为1),且使总通信速率最大化。其中变量
x
i
x_i
xi表示分配给第i个信道的发射机功率,
l
o
g
(
α
i
+
x
i
)
log(\alpha_i + x_i)
log(αi+xi)表示信道的容量或通信速率. 然后通过KKT条件对问题进行求解。
至此,问题求解完毕,但是觉得好像和water-fiiling这个概念扯不上关系。下面将给出一幅图,来展示整个求解的过程。
我们将
α
i
α_i
αi视为地块i上方的地面高度,然后用
1
/
ν
(
由
K
K
T
条
件
得
到
)
1/ν(由KKT条件得到)
1/ν(由KKT条件得到)的水填充该区域,如图5.7所示。
由于总用水量为
∑
i
=
1
n
m
a
x
{
0
,
1
/
v
∗
−
α
i
}
\sum_{i=1}^n max\{0,1/v^*- \alpha_i\}
∑i=1nmax{0,1/v∗−αi} 通过增加水位,直到我们使用的水总量等于1。
那么patch
i
i
i以上的水深就是最优值, 即
x
i
∗
x_i^*
xi∗