A framework for the development of intelligent systems
QSMM, a recursive acronym for "QSMM State Machine Model", is a framework for learning finite automatons that perform goal-directed interaction with entities which exhibit deterministic or stochastic behavior. The learning process can be carried out in real time together with the interaction process. A basic building block for supporting state models of finite automatons is adaptive probabilistic mapping, which for an argument from its domain returns more often results that maximize or minimize values of one or more objective functions. Finite automatons can be represented by assembler programs with user-defined instructions that perform effective work. To assist in the learning of a finite automaton, a template for its state model can be provided as an assembler program with probabilistic jump instructions.
For a greater understanding and a philosophical background of the framework, read the introductory sections from the programmer's manual:
The operating principle behind the framework resembles the Boltzmann machine. The framework is written in C programming language.
2014-07-29 QSMM version 1.16 released
The first stable release of the package.
2013-05-27 QSMM version 1.15 released
This version of QSMM is more than all previous versions geared to help scientists to perform productive research. The following new features could help to develop efficient algorithms for solving problems that require intelligent behavior.
Customizable functions that return a relative probability of output signal choice. The manner in which the relative probability is calculated is critical for providing efficient operation of an intelligent system developed using the QSMM framework. The ability to test various relative probability functions without the need to modify the package source code simplifies experimenting.
Large actors that generate output signals quickly when the number of those signals is large enough. The actors use n-ary trees to achieve that. In biological neural nets to those trees there might be corresponding dendrites of neurons.
Output probability variables that can exist in assembler programs. With the help of those variables learned probabilities can be fetched after training the model. This enables development of genetic algorithms for synthesizing efficient assembler programs. A genetic algorithm may manipulate learned probabilities to obtain new profile probabilities at every subsequent iteration.
Disassembling nodes using assembler program templates. With this feature, visual analysis of learned 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 where the profile probabilities are replaced with probabilities learned 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.
The programmer's manual in available in several formats.
For an overview and more information on the project, read a conversation between Oleg Volkov, the developer of QSMM, and Rich Bowen, Community Growth Hacker at SourceForge.net, published in the site blog on May 24, 2012.
To view the QSMM as a prototype of an algorithm synthesis system, read the materials within a report by Oleg Volkov at conference OSDN-UA-2013 (in Russian) which also contain a video.
Basic information on the algorithms involved is provided in the paper "An Approach to Optimal Action Generation for a System that Interacts with the Environment" (PDF: in English, in Russian). However, the paper contains serious mistakes which are not fixed yet.
Current version of the QSMM package is 1.16.
A package distribution that contains source code can be downloaded from the project files page provided by SourceForge.net.
Access to the package source code repository:
svn checkout http://svn.code.sf.net/p/qsmm/code/trunk qsmm-code
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.
Feedback on the project, which includes:
reporting bugs in the package and the package documentation;
questions and technical support requests;
feature requests—if you would like to see a new feature in the package, e.g. a new API function, without which it is hard or even impossible to write some applications
can be sent through the mailing list for QSMM users. In order to post messages in the mailing list, you will first be required to subscribe.