Menu

Tree [9acbc5] master /
 History

HTTPS access


File Date Author Commit
 libaln 2013-11-16 William Armstrong William Armstrong [9acbc5] Updated boost library location and MS compiler ...
 .gitignore 2010-01-19 William W Armstrong William W Armstrong [a46072] Re .user files, rm include/qldefines.hpp, chang...
 README.txt 2010-01-08 William W Armstrong William W Armstrong [f0369c] Initial commit of the Dendronic Learning Engine...

Read Me

This C and C++ software consists of an SDK, the Dendronic Learning Engine, and an MFC application for MS Windows called ALNfit Pro.

Both have been released under the LGPL open source license.

The development of the current software took place originally at Dendronic Decisions Limited, Edmonton, which was incorporated under Canadian law in 1974.  The person mainly responsible for the idea of the SDK was William W. Armstrong, and the person mainly responsible for earlier versions of its C and C++ code was Monroe Thomas.  The person entirely responsible for design and programming of ALNfit Pro was William W. Armstrong.

The commercial software was used as the basis of several projects for electrical power companies and gas distribution companies, in particular for forecasting the production of power from wind turbines in Europe.  It was also used free of charge
for many university research projects, including projects to help in rehabilitation of persons with spinal cord injuries using functional electrical stimulation (FES).

Software which was originally a boolean logic neural net, patented in 1974, was changed to a net using linear functions at the leaf nodes and maximum and minimum operators at interior nodes in 1995.  Because of the close relationship between the two types, the name ALN, standing for Adaptive Logic Network, was retained, but all references to the earlier boolean form are now obsolete.

In 2008, the software was changed to open source form under LGPL by vote of the shareholders of Dendronic Decisions Limited.  The company has since been dissolved, and significant improvements have been introduced by William W. Armstrong.  A mathematical paper describing the networks and the learning algorithm jointly is currently in preparation by William W. Armstrong and Kenneth O. Cogger (January 2010)

The ALNfit Pro application is designed to allow users to test this type of machine learning on some of their own data.  The data can be a tab-separated text file with integers, floats and doubles arranged in several columns.  The learning can be applied to any set of the columns with any set of lags prescribed if the data is a time-series.  The default is to use all columns with no lags as input variables, except for the rightmost column which gives the desired output values.

The particular features of this system for learning non-linear continuous functions among perhaps many thousands of other similar systems are:

1. The user doesn't have to pick out a network architecture or a learning rate or any other parameters -- ALNfit Pro shows how to automate everything, given a data file with the input and output variables indicated. It can also pick out the important inputs among many if enough data is available.

2. The learning algorithm picks out those parameters which have to be changed to improve performance in a very effective way, leading to fast training.  Put briefly: this solves the "credit assignment problem" in an elegant way.

3. The learned result can be executed using very simple software at very high speed even without special hardware.

4. The final learned result is a continuous, piecewise linear function of the inputs that can potentially be analyzed to check conformity to a specification. It is possible to smooth this in a way that deviates at most a prescribed amount from the piecewise linear function. There need be no surprises, it is not a "black box".

5. A priori knowledge can be used about the function to be learned, for example it can be forced to be monotonic decreasing in a given variable, or a maximum partial derivative bound can be imposed.

Building the software:

This version builds in several configurations under Microsoft (R) Visual Studio 2005.  Other versions build under Linux.

Several routines have been adapted from a version of QuantLib "A free/open-source library for quantitative finance" (http://quantlib.org).

The Boost C++ library (http://www.boost.org) must be available.
The current path to it is indicated in libaln/include/ql/qldefines.hpp:

#include <..\..\..\boost_1_41_0\boost\config.hpp>
#include <..\..\..\boost_1_41_0\boost\version.hpp>
 
ACKNOWLEDGEMENT:

The process of development of this software goes back to 1967 at Bell Laboratories in Holmdel, New Jersey, where a patent was obtained on a simple learning system.  It continued at the Université de Montréal, during a time when neural nets were undergoing a decline, with the help of Gregor Bochmann, Pierre Cadieux and Jan Gecsei.  High-speed image analysis hardware was designed and an image processing system was built. After 1982, some research on the boolean nets was done at the University of Alberta with the help of Andrew Dwelly and Rolf Manderscheid. ALN software was distributed in the form of a program called Atree. The stimulus to the major change to using linear functions and maximum and minimum operators occurred thanks to the practical demands of a contract from the Defence Research Establishment Suffield under the guidance of Alan McCormack in 1995.  A person who used both types was Aleks Kostov, who applied them to rehabilitation projects.  Further developments took place due to purchases and contracts by Edmonton Power (now Epcor), and in Europe by National Grid Transco Plc and E.on GmbH.  A second contract from DRDC Suffield in 1997 under the direction of Simon Barton and the support of Brant Coughlan and Dmitri Gorodnichy are gratefully acknowledged. There have been several MSc and PhD projects using various versions of the software scattered all over the globe. In particular Olaf Christ and students of Dejan Popovic did thesis work with it.

Among the many persons who have contributed, one person must be given particular credit: Monroe Thomas.  His supreme talent in C and C++ is clear from the structure of the SDK code, of which he was the principal architect up to 1998.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.