The Koza-I Boolean-Multiplexer problem.


Class Summary
Fast Fast contains lots of magic numbers for speeding up Multiplexer, basically arrays of bitfields representing the various on/off bit values for all of the scoreboard permutations of 3, 6, and 11-multiplexer.
Multiplexer Multiplexer implements the family of n-Multiplexer problems.
MultiplexerData This is ugly and complicated because it needs to hold a variety of different-length bitstrings, including temporary ones held while computing subtrees.

Package Description

The Koza-I Boolean-Multiplexer problem.

This version of multiplexer, which should be algorithmically identical to the "slow" multiplexer in, takes advantage of Langdon and Poli's "Sub-Machine Code" GP, basically doing a single call of the function tree but having each node perform its operation on all the multiplexer problems simultaneously. This can be done very efficiently and typically results in a 3 to 10 times speedup, depending on the length of the run.

If you want to just use Multiplexer as an example template from which to write new application domains, you might want to use the old "slow" form instead.