Proximal Algorithms
这一节,介绍并行算法的实现.
问题的结构
令[n]={1,…,n}. 给定c⊆[n], 让xc∈R|c|表示向量x∈Rn的一个子向量(以c为指标的对应部分).当P={c1,…,cN}满足:
∪P=[n]ci∩cj=∅,i≠j
时, 称P为[n]的一个分割.
函数f的P−分割满足:
f(x)=N∑i=1fi(xci)
其中fi:R|ci|→R.
在这种情况下:
(proxf(v))i=proxfi(vi)
所以,可以并行计算.
考虑下面的问题:
minimizef(x)+g(x)
如果假设f是P−分割的, 而g是Q−分割的,那么问题等价于:

于是ADMM可以并行计算:

consensus
考虑下列问题如何进行并行计算:
minimizef(x)=N∑i=1fi(x)
一个非常巧妙的变化:

可以看到,这样子,函数就是可分了, 只是多了一个附加条件.
将上面的问题转化为:
minimizeN∑i=1fi(xi)+IC(x1,…,xN)
其中C是consensus set:
C={(x1,…,xN)|x1=…,=xN}
这样,问题就变成俩个可分函数了, 不过需要注意的是,二者的分割并不相同:
P={[n],n+[n],2n+[n],…,(N−1)n+[n]}
而Q,即IC的分割为:
Q={{i,n+i,2n+i,…,(N−1)n+i}|i=1,2,…,n}
注: 文中是i=1,2,…,N(我认为是作者的笔误).
这个时候的ADMM的第二步,即更新z,可以直接为:
zi=¯z=(1/N)N∑i=1zi

作者贴了一个比较形象的图来表示这种分割:

更为一般的情况
考虑下面的问题:
minimizef(x)=N∑i=1fi(xci)
其中ci⊆[n], 但是ci∩cj,i≠j并不一定为空集.
进行同样的转换:

其中
C={(z1,…,zN)|(zi)k=(zj)kifk∈ci∩cj}
同样等价于:
minimizeN∑i=1fi(zi)+IC(z1,…,zN)
相应的有一张比较形象的图:

前一部分的分割是类似的, 后一部分的分割,就是怎么说呢,就像图上的行一样的分.
ADMM为:

其中Fi={j∈[N]|i∈cj}
Exchange 问题
Global exchange
交换问题具有如下形式:

可以用一个实际问题来考量,每个i表示一个客户,xi表示每个客户给予或者得到的总量,而fi(xi)表示该客户的效益,∑Ni=1xi=0这个条件表示,所以客户东西的总量是固定的,即收支平衡.
我们可以将此问题转化为(这个方法太好使了吧):
minimizeN∑i=1fi(xi)+IC(x1,…,xN)
其中
C={(x1,…,xN)∈RnN|x1+x2+…+xN=0}
我们知道,指示函数的proximal为投影算子, 于是:
(ΠC(v1,…,vN))i=vi−¯v
于是ADMM算法为:

更为一般的情况
有些时候,并不是所有客户都面对同一个市场,所以,每个xi的维度什么对的也有区别:
C={(z1,…,zN)∣∣∑i:k∈ci(zi)k=0}
有点和consenus的一般情况比较类似.
Allocation
allocation problem:

其中xi∈Rn.
这个问题和交换问题也是相似的,区别在于总量b, 而且要求xi≥0.
类似的,我们可以将上面的问题改写为:
minimizeN∑i=1fi(xi)+IC(x1,…,xN)
其中:
C={(x1,…,xN)|xi≥0,x1+…+xN=b}
所以相应的算法是:

如何进行投影,会在下一节提到, 还有更加一般的情况,比如∑Ni=1xi≤b.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix