Software agents are assigned goals in accordance with network policies that define a desired operational characteristic of a network. A software agent achieves its assigned goal by executing a predefined task. An assigned goal may be dynamically modified as necessary based on the actual operational characteristics of the network. The software agent may request further policy if it cannot achieve its assigned goal by performing the predefined task.