Artificial Distributed Intelligence Techniques with Applications