Cooperative Control of Distributed Multi-Agent Systems