1. A method of balancing a computing load among a plurality of computing resources for handling an inter-connected problem in a task, comprising: determining computing capabilities of a plurality of computers, wherein the computers are heterogeneous, independent, non-dedicated, and connected in a loosely coupled, asynchronous, distributed communications grid for handling the inter-connected problem; assigning a computing agent role to at least some of the computers for handling the inter-connected problem; monitoring available resources for the computers that have been assigned a computing agent role; reassigning original problem cells among the computers that have been assigned a computing agent role, as necessary to balance the computing load for handling the inter-connected problem; wherein reassigning the original problem cells among the computers includes: segmenting the computing load into a plurality of fixed sized collections of original program cells based on the complexity of the computing load; grouping the fixed sized collections of original program cells into a plurality of variable problem partitions; identifying computing agents having reduced computing resources available; determining whether any of the computing agents are non-idle and have increased computing resources available; reassigning variable problem partitions from computing agents having reduced computing resources available to non-idle computing agents having increased computing resources available responsive to identifying computing agents having reduced computing resources available and determining that a computing agent is non-idle and has increased computing resources available; and dividing the monitored available resources among the respective execution agents, in order to improve computing load manageability.