A module of SkyAI is a C++ class; in order to be compatible with the SkyAI system, each module should be a subclass of TModuleInterface. Of course, a module can be inherited from any subclass of TModuleInterface.

Each module consists of the following elements:


Generally in C++, classes communicate with each other through their member functions. In SkyAI, a port is a kind of member function for the inter-module communication, but is encapsulated as a port class in order to enable the user to connect and disconnect the ports in an agent script. Each module can have any number of ports. Ports can be connected and disconnected at any time in execution, which enables to reconfigure the modular structure.

There are four kinds of ports:

Slot port & Signal port
A signal port is connected to a slot port; these ports provide a signal/slot architecture (i.e. an event-driven architecture). A callback function is associated with a slot port. When a signal port emits a signal (this is like a function call), the slot port caches the signal and execute the callback. In default, a signal port can be connected to any number of slot ports, and a slot port can be connected to any number of signal ports.
Out port & In port
An out port is connected to an in port; these ports provide a function call architecture. A function is associated with an out port. An in port can execute the function of a connected out port like an usual function. In default, an out port can be connected to any number of in ports, and an in port can be connected to only one out port.

Configuration Box

A configuration box is the configuration-parameter manager of a module. The configuration box manages configuration parameters, such as a learning rate, a time step, and a discount rate; it provides an interface to access these parameters from an agent script. Namely, the variables of C++ registered to the configuration box can be manipulated by an agent script.

Memory Box

A memory box is the memory-parameter manager of a module. The memory box is almost the same as the configuration box; the difference is that the memory box manages memory parameters, such as an action value table.



Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2012-07-13 (Fri) 08:25:21 (4157d)