A Genetic Programming Toolbox for MATLAB
older versions new versions acknowledgements
Here you can download the current version of the GPLAB toolbox and user's manual. You may want to check its features.
Bug fixes (June 2009):
More than two years after Version 3 came out, and all you have to offer is a few bug fixes??? Well... yes! :-)
Here is a brief description of each bug, followed by a zip file containing all the fixes:
There was conflicting information about which type of license applies to GPLAB, so here is an updated license.txt file. Thank you to Martin Schobert for warning me about this.
The normalization of vectors had some problems when there were negative values present. The new normalize.m function corrects this.
The function evaluate_tree.m, which is a workaround for the "nesting 32" MATLAB error, used to fail when there were 10 or more columns in the input data. Thank you to Zheng Yin for providing a corrected version.
There was a problem when using a test set. With a particular set of parameters, the individuals sampled more often did not have their test fitness correctly measured. Thanks to Leonardo Vanneschi and Antonella Farinaccio for spotting this. The new checkvarsparams.m function provides a workaround for this problem, to be properly solved in a future release.
Contrary to what the user's manual says, when the parameter 'fixedlevel' was 1 and the parameter 'realmaxlevel' was empty, 'realmaxlevel' was not being filled automatically! The new checkvarsparams.m function also fixes this, along with the new checkvarsstate.m function. How come no one notice this before??
The function plotpareto.m always assumed that better fitness was higher fitness, which was not even the case with the demo function. Another bug that no one noticed! People, I'm counting on you to spot these things!! :-)
This is not exactly a bug, neither am I providing a solution. Some function names in GPLAB may conflict with the names of other MATLAB functions. The light.m function issues particularly annoying warnings in the most recent MATLAB versions. I still don't know what I should do about this (any suggestions??). In the meantime, thank you to Miguel Frade for providing a list of potentially conflicting_names.txt.
gplab.3.bugfixes.20090608.zip (7 files, 9KB)
Version 3 (April 2007):
Update from previous version:
From the user's manual, section 1.1 (Update from version 2.x):
"Version 3 implements several additional techniques for bloat
control. Many of these techniques are new and rely on a
dynamically changing population size, acting along the survival
process. Another technique is based on the adjustment of fitness
according to size, which implied keeping track of both the
adjusted fitness and the raw fitness (equal when there is no
adjustment), and using the adjusted values along the selection
process. All this implied major changes, resulting in a large
extension of the operational structure itself. As always,
modularity has been a priority, and GPLAB can now easily adopt new
survival methods as well as new fitness adjustment functions."
Other important changes:
- Implementation of the 11-multiplexer problem
- Workaround to the "nesting 32" error that was issued when using the later releases of MATLAB (see the acknowledgements). But I strongly advise you to complain about this to The MathWorks so they do something about it.
- Implementation of a definite solution that replaces the temporary fix released with the "Bug fixes for Version 2 (August-September 2004)" (see older versions)
- Minor changes to ensure minimal compatibility with Octave (except where graphical output is concerned)
Here is a list of significant changes made to the user's manual:
- Sections 1.1 Update from version 2.x and 1.2 Acknowledgements
- Subsection 2.3.1 The layman - updated demo descriptions
- Tables 3.1 and 3.2 - updated with new and modified parameters
- Section 3.2 Tree depth and size limits - description of new parameter
- Section 3.4 Genetic operators - new genetic operators, other changes related mainly to the adjusted fitness
- Section 3.6 Selection for reproduction - description of new and modified parameters, and new tournament type
- Sections 3.8 Measuring fitness - data files and 3.9 Measuring fitness - raw and adjusted (previously only one section) - updated with description of new method for calculating fitness and with description of the fitness adjustment procedure
- Section 3.12 Survival - description of new and modified parameters
- Sections 3.13 Limited resources and 3.14 Dynamic populations (new sections)
- Section 3.15 Operator probabilities in runtime - updated description of modified parameters
- Section 3.18 Saving results to file - description of new parameter
- Table 4.1 - updated with the new and modified state variables
- Section 4.1 Population - description of new state variables and new fields of the individuals
- Section 4.2 Tree depth/size - deleted description of removed state variable
- Section 4.4 Operator probabilities and frequencies - description of new state variable
- Section 4.5 Population fitness - description of new and modified state variables
- Section 4.6 Fitness statistics - description of new state variable
- Section 4.8 Control - description of new state variables
- Section 4.10 Resources and variable size populations (new section)
- Chapter 6 - Summary of toolbox functions - updated with new functions
- Appendices A and B (new)
older versions new versions acknowledgements