Learning in Engineered Multi-agent Systems