Computing systems would reconfigure themselves to continue functioning despite failures of components.
A multi-agent software/hardware architecture, inspired by the multicellular nature of living organisms, has been proposed as the basis of design of a robust, reliable, persistent computing system. Just as a multicellular organism can adapt to changing environmental conditions and can survive despite the failure of individual cells, a multi-agent computing system, as envisioned, could adapt to changing hardware, software, and environmental conditions. In particular, the computing system could continue to function (perhaps at a reduced but still reasonable level of performance) if one or more component(s) of the system were to fail.
One of the defining characteristics of a multicellular organism is unity of purpose. In biology, the purpose is survival of the organism. The purpose of the proposed multi-agent architecture is to provide a persistent computing environment in harsh conditions in which repair is difficult or impossible.
A multi-agent, organism-like computing system would be a single entity built from agents or cells. Each agent or cell would be a discrete hardware processing unit that would include a data processor with local memory, an internal clock, and a suite of communication equipment capable of both local line-of-sight communications and global broadcast communications. Some cells, denoted specialist cells, could contain such additional hardware as sensors and emitters. Each cell would be independent in the sense that there would be no global clock, no global (shared) memory, no preassigned cell identifiers, no pre-defined network topology, and no centralized brain or control structure. Like each cell in a living organism, each agent or cell of the computing system would contain a full description of the system encoded as genes, but in this case, the genes would be components of a software genome.
Although the cells would be independent in the sense described above, they would be tightly coupled and logically interdependent in that they would exchange information and respond accordingly. The software genome would program the system at two distinct levels: The first-level programs would describe the intercellular flow of data and control information. The second level programs would consist of program fragments conceptually similar to traditional software library modules. Each agent or cell would choose which gene to express, depending on the internal state of the cell, the genome, and the states of neighboring cells. Gene expression in each cell would involve executing a program fragment, which, when combined with all other genes in the genome, would define the full system. Because the mapping of program fragments to particular cells would not be explicitly defined, the program could run on an arbitrary configuration of cells. Indeed, cells could be added to the system (hardware upgrade) or removed (hardware failure) during operation, and the system would reconfigure itself to utilize the currently operational hardware without losing functionality. This capability for self configuration, among other capabilities, was demonstrated in a software simulation of a prototype seven-cell system (see figure).
This work was done by Kenneth N. Lodding and Paul Brewster of Langley Research Center.