A Genetic Programming Toolbox for MATLAB
home features download
new versions acknowledgements
Here you can find the files that were released before version 4:
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)
Here you can find the files that were released before version 3:
Bug fixes (October 2006):
Just when you thought this new version was finally bug-free... voilą! There were error messages whenever a test data set was used. Two updated files solve the problem. You only need them if you are using Version 2.1.
Version 2.1 (October 2006):
The artificial ant bugs spotted on the previous GPLAB release are finally solved. Because an efficient solution demanded that many files were changed, and others created, I have decided to make a new release that incorporates all that had been previously released for Version 2 plus these new ant fixes. Besides solving the bugs, this new release includes a simulation function (antsim.m) for watching the best ant move on the trail. It also includes an improvement to the mypower.m function. Please see the acknowledgements.
Update from previous version:
If you already have Version 2 + Bug fixes + Efficiency boost (April 2005) and you do not intend to use any of the artificial ant functions, or the mypower.m function, then you do NOT need this new release. If you want to see the ants working properly but you had already made changes to other toolbox files, just download the ant fixes containing only the files that were changed. You can also download the new mypower function separately. The new user's manual only differs from the previous one on Chapter 1 - Introduction and Chapter 6 - Summary of toolbox functions, so please think twice before printing the whole thing again.
Here you can find the files that were released before version 2.1:
Ant fixes (October 2006):
The artificial ant bugs are finally solved. An efficient solution demanded that many functions were changed, and others created. Besides solving the artificial ant bugs, this fix includes a simulation function (antsim.m) for watching the best ant move on the trail. Please see the acknowledgements.
Power fix (October 2006):
The function mypower.m could issue an error under specific circumstances, and this new version solves the problem, thanks to Ali Nazemi.
Version 2 + Bug fixes + Efficiency boost (April 2005):
If you have never downloaded GPLAB, or are getting confused with all the minor updates, you can download the most recent available version with the bug fixes and efficiency boost already incorporated, in a single file: gplab.toolbox.2.bugfixes.efficiency.zip (123 files, 111KB). The user's manual has been unchanged since the release of Version 2 (scroll down).
Efficiency boost for Version 2 (April 2005):
modified function regfitness.m (zipped 2KB): for problems with few fitness cases, this function may run a bit slower than the previous one (but you probably will not notice the difference), but for large data sets (more than 500-1000 fitness cases) it runs much faster. For instance, on a problem with 1024 fitness cases of 5 variables each (1024 rows and 5 columns), the evaluation of individuals now runs 20 times faster. Thanks to Vladimir Crnojevic for providing this great improvement.
new function swapnodes.m: this function performs the swapping of subtrees between individuals in a more efficient manner, also calculating the size of the new individuals very quickly. It uses another new function, updatenodeids.m, to update new informative fields of the trees, introduced by maketree.m. You also need the modified crossover.m and mutation.m that use the new swapping function. This totals 5 functions (zipped 6KB) to download. You no longer need the functions swapnode.m (different from swapnodes.m) and findnode.m.
Bug fixes for Version 2 (August-September 2004):
function plotpareto.m (zipped 2KB): the test fitness was not correctly drawn, and sometimes an error was issued (this is a temporary solution as the usage of test data will be optimized in the future). Thanks to Wo-Chiang Lee for spotting this bug.
function checkvarsparams.m (zipped 4KB): now you can indicate the full path for the directory where to save the variables during the run, and this directory will be automatically created as long as it does not exist (this did not always happen); obsolete function 'fwhich' has been replaced with 'which' (and I could swear this had already been done in Version 1.1...).
function stopcondition.m (zipped 1KB): obsolete use of 'break' has been replaced by 'return'.
Version 2 (May 2004):
Update from previous version:
The GPLAB toolbox isn't really that different from what it used to be. If you already have the previous version of the user's manual and don't feel like printing 57 pages where most of them will not bring anything new, or if you simply worry about the trees, here is the list of the manual's sections that have suffered major changes:
You should also check the new Parameters and State variables tables (in the beginning of chapters 3 and 4), as well as the list of Toolbox Functions (chapter 6). Oh well, maybe you should just print the whole thing and I should have saved myself some time...
- 1.1 Update from version 1.x and 1.2 Acknowledgements - Both new sections, but all they contain can be found in these webpages
- 2.3 Usage - There have been slight but important changes in the usage of the main toolbox function (one less parameter to set)
- 3.1 Tree initialization and 3.2 Tree depth and size limits (called "Maximum tree depth" in the previous version) - Describes the new features related to tree depth and size limits. You should read it just to make sure you are setting the related parameters correctly
- 3.5 Validating new individuals - New section dedicated to the fact that validation of new individuals created is now made outside of the genetic operators by specialized filter functions. No need to read it if you never intended to build new genetic operators
- 3.8 Measuring fitness - Now includes description of the new cross-validation feature
- 3.9 Measuring complexity and diversity - The setting of the diversity parameters has changed
- 3.17 Runtime graphical output - The setting of the parameters and the plots available have changed
- 4 State - This chapter has changed to include the description of new state variables, but reading it is not important, unless you are considering building new features
- 5 Offline graphical output - Previously part of chapter 4, it now includes examples of additional graphical functions that have become available
Here you can find the files that were released before version 2:
Bug fixes (November 2003):
I knew it - they were hiding, but they were there! These will be incorporated
into the next version (not the bugs - the fixes). For now, you just need to replace the updated toolbox files (between
brackets in the bugs description below). Sorry!
If you prefer all fixes in one file, here it is:
You can use these fixes in both versions.
artificial ant: When searching for food ahead [antfoodahead.m
(2KB)], if food is there, the ant eats it immediately, without even moving.
I only found out about this when my best ants turned right whenever there
was food ahead... because they had already eaten the food just by looking!
Now they will behave properly - I hope you have not been using them for important tasks.
adding terminals: You can add two or more elements to the terminal set
[addterminals.m (2KB)], and
you can define a new terminal set [setterminals.m
(2KB)], but you cannot add only ONE element to the terminal set. Well,
now you can. Similar functions [addfunctions.m
(2KB)] and [setfunctions.m
(2KB)] were also updated.
obsolete function: The MATLAB function 'fwhich' is called by one of the
toolbox files [checkvarsparams.m
(7KB)], but it is obsolete and issues an error in version 6.5. It has been
replaced by the MATLAB function 'which'.
Version 1.1 (October 2003):
There was an inefficiency problem in the evaluation function 'regfitness'.
Thanks to the users who have reported it, now it runs much faster.
Update from Version 1:
If you already have Version 1, you really
don't need to download and print everything again. Just replace the toolbox
files that have been updated and print the update to the user's manual.
Afterwards, don't forget to download the bug fixes.
Version 1 (July 2003):
Please download the files here.
home features download
new versions acknowledgements