Cooperative Control of Multi-Agent Systems