QSMMA framework for development of intelligent systems with spur-driven behavior
QSMM is a recursive acronym for "QSMM State Machine Model". It is a framework for development of non-deterministic intelligent state models and systems with spur-driven behavior. The framework is written in C programming language.
In QSMM, spur-driven behavior is behavior which goal is maximization or minimization of one or more numeric quantities called spur. Spur is a measure of success in a process of solving an optimization task. If you develop a program using the QSMM framework, then spur increments should be calculated in your program and supplied to the framework, so the latter can solve an optimization task, which is producing optimal behavior.
The framework provides several levels of abstraction to solve an optimization task. At the lowest level, your program interacts with an optimal action generation engine, which is the basic optimization task solver. At the middle level, your program interacts with a unit of two optimal action generation engines, which can guess current state of the environment or an external entity and produce optimal actions based on that state. At the highest level, your program creates a multinode model with nodes that correspond to different abstract or concrete entities, which behavior is to be learnt or which choose optimal actions using the framework.
The special feature of the framework is an ability to load assembler programs with user-defined instruction sets into nodes of a multinode model. An assembler program can contain probabilistic jump instructions and specifies probability profiles for a state transition matrix and an action emission matrix of a node. During execution of the multinode model an assembler program loaded into a node will adapt its own behavior to solve a raised optimization task.
2013-05-27 QSMM version 1.15 released
This version of QSMM is more than all previous versions oriented to help scientists to do productive research. The following new features of the package could help to develop efficient algorithms of solving problems that require intelligent behavior.
Customizable functions that return a relative probability of output signal choice. A way in which the relative probability is calculated is crucial for providing efficient operation of an intelligent system developed using the QSMM framework. An ability to test various relative probability functions without a need to modify the package source code simplifies experimenting.
Large actors that generate output signals quickly when the number of those signals is big enough. The actors use n-ary trees to achieve that. In biological neural nets to those trees there might correspond dendrites of neurons.
Output probability variables that can exist in assembler programs. With the help of those variables learnt probabilities can be fetched after training the model. This enables development of genetic algorithms for synthesizing efficient assembler programs. A genetic algorithm may manipulate learnt probabilities to obtain new profile probabilities at every subsequent iteration.
Disassembling nodes using assembler program templates. With this feature, visual analysis of learnt assembler programs becomes easier. To store an assembler program template in a node, set the corresponding flag when assembling it. A disassembled program of the node will be the template program, in which profile probabilities are replaced with probabilities learnt during training the node.
Various enhancements of assembler programs processing and syntax: an ability to restrict the action emission matrix to define only deterministic action choices, which permits a simplified mode of state declarations; support for probabilities lists that can be defined and then used in new "casels" assembler instructions; a possibility to specify state names, accessible from an application program; and much more.
2012-12-12 Change in the means of giving feedback
After upgrading the platform of hosting the QSMM project at SourceForge.net, the classic Bug Tracker, Feature Requests Tracker, and Support Requests Tracker became unavailable, and I have decided not to replace them with the new Tickets feature. Instead, feedback, which was supposed to be submitted to those trackers, should now be sent to the mailing list for QSMM users. Using a mailing list for all kinds of communication about subjects related to a project is an approach, successfully used by many open source projects, and I think the QSMM project will also benefit from following this classic approach. The change in the means of giving feedback will be reflected in documentation included in the next package release.
The programmer's manual is available online in the following formats.
A PDF version of the manual is included in the package distribution. Versions of the manual in other formats can be built from Texinfo sources included in the package distribution.
Basic information on the algorithms involved is provided in accompanying paper "An Approach to Optimal Action Generation for a System that Interacts with the Environment" (PDF: in English, in Russian). This paper is also included in the package distribution.
For introductory information on the project, read a conversation between Oleg Volkov, a developer of QSMM, and Rich Bowen, Community Growth Hacker at SourceForge.net, published in the site blog on May 24, 2012.
For a view of QSMM as a prototype of algorithm synthesis system, look into materials relating to a report of Oleg Volkov at conference OSDN-UA-2013 (in Russian).
The package source code is distributed under the terms of the GNU General Public License, Version 3 or any later version published by the Free Software Foundation.
The programmer's manual is covered by the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation.
The accompanying paper is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Current version of the QSMM package is 1.15. A package distribution that contains source code can be downloaded from the project files page provided by SourceForge.net.
Feedback on the project, which includes:
reporting bugs in the package and the package documentation;
questions and technical support requests;
feature requests—if you want a new feature to appear in the package, e.g. a new API function, without which it is hard or even impossible to write some sort of applications
should be sent to the mailing list for QSMM users. Posting messages to the mailing list requires prior subscription to it.