Distributed Agents for Problem Solving