I am trying to solve a distributed optimization problem using CVX.
Consider the function to optimize J, which is divided in two “agents”: J = J1 + J2
The minimization is: min [J1(u1,u2) + J2(u1,u2)]
The idea is to replicate the independent variables for each agent
- Agent 1 minimizes J1(u1,v2), where v2 is a replica of u2
- Agent 2 minimizes J2(v1,u2), where v1 is a replica of u1
Dual decomposition gives us the master problem:
min[J1(u1,v2) + J2(v1,u2) + lambda1*(u2-v2) + lambda2*(u1-v1)]
So, my question is, to solve this kind of problem, can I include both minimizations in the same “cvx_begin cvx_end”, or should I have two cycles? Agent 1 receives lambda2 and u2 from Agent2. Agent2 receives lambda1 and u1 from Agent1. How do I guarantee that the variables are shared properly?
Also, can I control using the “dual ascent” or “subgradient” methods? Maybe this question doesn’t make sense…