这一节,介绍并行算法的实现.
问题的结构
令. 给定
, 让
表示向量
的一个子向量(以
为指标的对应部分).当
满足:
时, 称为
的一个分割.
函数的
分割满足:
其中.
在这种情况下:
所以,可以并行计算.
考虑下面的问题:
如果假设是
分割的, 而
是
分割的,那么问题等价于:
在这里插入图片描述
于是ADMM可以并行计算:
consensus
考虑下列问题如何进行并行计算:
一个非常巧妙的变化:
在这里插入图片描述
可以看到,这样子,函数就是可分了, 只是多了一个附加条件.
将上面的问题转化为:
其中是consensus set:
这样,问题就变成俩个可分函数了, 不过需要注意的是,二者的分割并不相同:
而,即的分割为:
注: 文中是(我认为是作者的笔误).
这个时候的ADMM的第二步,即更新,可以直接为:
在这里插入图片描述
作者贴了一个比较形象的图来表示这种分割:
更为一般的情况
考虑下面的问题:
其中, 但是
并不一定为空集.
进行同样的转换:
在这里插入图片描述
其中
同样等价于:
相应的有一张比较形象的图:
前一部分的分割是类似的, 后一部分的分割,就是怎么说呢,就像图上的行一样的分.
ADMM为:
其中
Exchange 问题
Global exchange
交换问题具有如下形式:
在这里插入图片描述
可以用一个实际问题来考量,每个表示一个客户,表示每个客户给予或者得到的总量,而表示该客户的效益,这个条件表示,所以客户东西的总量是固定的,即收支平衡.
我们可以将此问题转化为(这个方法太好使了吧):
其中
我们知道,指示函数的proximal为投影算子, 于是:
于是ADMM算法为:
在这里插入图片描述
更为一般的情况
有些时候,并不是所有客户都面对同一个市场,所以,每个的维度什么对的也有区别:
有点和consenus的一般情况比较类似.
Allocation
allocation problem:
在这里插入图片描述
其中.
这个问题和交换问题也是相似的,区别在于总量, 而且要求
.
类似的,我们可以将上面的问题改写为:
其中:
所以相应的算法是:
在这里插入图片描述
如何进行投影,会在下一节提到, 还有更加一般的情况,比如.






网友评论