OPT4SMART / disropt

DISROPT: A Python framework for distributed optimization
https://opt4smart.github.io/disropt/
GNU General Public License v3.0
70 stars 19 forks source link

Solving distributed Model Predictive Control problem #1

Closed sandeepparameshwara closed 3 years ago

sandeepparameshwara commented 3 years ago

Hi, I am very new to this package. I currently solve a single convex optimization problem in python which is modelled using cvxpy (solver: OSQP). I want to extend this to a group of agents. I have a distributed system and each agent has an optimization problem of its own. I want to solve MPC problems of individual agents at the same time and use the data among agents. Can I extend my already existing cvxpy framework to a group of agents using disropt? Sorry for the basic question as this library looks tailor-made for this purpose. However, any quick starting hints would be greatly helpful.

Thank you Sandeep

andreacamisa commented 3 years ago

Thanks for your request. You should give some more details regarding your distributed system. For example, is the dynamics of your systems coupled or do you have some other sort of coupling constraints? Are you trying to do cooperative or non-cooperative distributed MPC?

In any case, this library could prove useful if you are trying to run a distributed MPC algorithm where the goal for the agents is to solve some global optimization problem (perhaps by using one of the algorithms for constraint-coupled problems). However, if you are looking for non-cooperative distributed MPC you most probably do not need to do distributed optimization with this package.

You could have a look at this survey paper: Müller, Matthias A., and Frank Allgöwer. "Economic and distributed model predictive control: Recent developments in optimization-based control." SICE Journal of Control, Measurement, and System Integration 10.2 (2017): 39-52.

sandeepparameshwara commented 3 years ago

Thanks for your reply. The paper certainly helped me to clarify some concepts. I am solving the formation flight problem of quadcopters. So, the subsystems are dynamically independent. The coupling constraints come from collision/obstacle avoidance so I guess that's coupling through coupling constraints. I plan to solve non-cooperative DMPC (I use information from neighbor agents just for collision avoidance and only local constraints are used in the optimization of local controller inputs). But I am also interested in solving Cooperative DMPC for the same. So to summarize, I am solving iterative, non-cooperative DMPC problem. Can I use your library for my current goals?

andreacamisa commented 3 years ago

I think the library can indeed help you implementing these algorithms. You basically will only need to use the features that allow you to exchange data among the agents through the neighbors_exchange method. You can then continue using cvxpy for solving the local problems.

andreacamisa commented 3 years ago

Closing the issue. If needed, you can reopen it.