Economic Action Selection
OpenCogPrime contains an object called the Active Schema Pool, which contains the Schema that are currently "active", in the sense that every Cognitive Cycle it is checked whether these schemata want to be executed. (Note that "active" status is different from "executing" status.) Each schema in the pool has a certain amount of STICurrency, granted to it by the Goal that placed it in the pool.
Each Schema consists of a set of modules, and the role of Action Selection is to choose which modules to execute during a given cycle, and which executing modules to pause (but pausing should only be done in extreme situations). Modules within a schema are related in two ways:
- Economically, in that a module may pass STICurrency to another module
- Logically, in that Termination of the execution of one module may be a prerequisite for Initiation of the execution of another module
The basic principle underlying action selection is that
- modules whose logical prerequisites are met, are candidates for initiating execution
- when a contradiction between executing module M1 and module M2 exists, the module that can pay the most wins.