/* Multiplexer-6 2 address + 2^2 data = 6 See John R. Koza "Genetic Programming - On the programming of computers by means of natural selection" (i.e. his first GP book) page 169ff Cf multiplexer_6.conf */ import util. data(if_then_else,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[A,B,C,D,E,F],G] : [A,B,C,D,E,F,G] in chunks_of([ 0,0,0,0,0,0,0, 0,0,0,0,0,1,1, 0,0,0,0,1,0,0, 0,0,0,0,1,1,1, 0,0,0,1,0,0,0, 0,0,0,1,0,1,1, 0,0,0,1,1,0,0, 0,0,0,1,1,1,1, 0,0,1,0,0,0,0, 0,0,1,0,0,1,1, 0,0,1,0,1,0,0, 0,0,1,0,1,1,1, 0,0,1,1,0,0,0, 0,0,1,1,0,1,1, 0,0,1,1,1,0,0, 0,0,1,1,1,1,1, 0,1,0,0,0,0,0, 0,1,0,0,0,1,0, 0,1,0,0,1,0,1, 0,1,0,0,1,1,1, 0,1,0,1,0,0,0, 0,1,0,1,0,1,0, 0,1,0,1,1,0,1, 0,1,0,1,1,1,1, 0,1,1,0,0,0,0, 0,1,1,0,0,1,0, 0,1,1,0,1,0,1, 0,1,1,0,1,1,1, 0,1,1,1,0,0,0, 0,1,1,1,0,1,0, 0,1,1,1,1,0,1, 0,1,1,1,1,1,1, 1,0,0,0,0,0,0, 1,0,0,0,0,1,0, 1,0,0,0,1,0,0, 1,0,0,0,1,1,0, 1,0,0,1,0,0,1, 1,0,0,1,0,1,1, 1,0,0,1,1,0,1, 1,0,0,1,1,1,1, 1,0,1,0,0,0,0, 1,0,1,0,0,1,0, 1,0,1,0,1,0,0, 1,0,1,0,1,1,0, 1,0,1,1,0,0,1, 1,0,1,1,0,1,1, 1,0,1,1,1,0,1, 1,0,1,1,1,1,1, 1,1,0,0,0,0,0, 1,1,0,0,0,1,0, 1,1,0,0,1,0,0, 1,1,0,0,1,1,0, 1,1,0,1,0,0,0, 1,1,0,1,0,1,0, 1,1,0,1,1,0,0, 1,1,0,1,1,1,0, 1,1,1,0,0,0,1, 1,1,1,0,0,1,1, 1,1,1,0,1,0,1, 1,1,1,0,1,1,1, 1,1,1,1,0,0,1, 1,1,1,1,0,1,1, 1,1,1,1,1,0,1, 1,1,1,1,1,1,1 ],7)], Unknown = [1,1,1,1,1,1], Vars = ['A1','A0','D3','D2','D1','D0'], % Ops = [if_then_else,and,or,not], % Ops = [+,-,*,\/,/\,~,^], % Ops = [\/,/\,~,^], Ops = [and,or,nand,not,nor,xor], % Ops = [nand], Constants = 0..1, MaxSize = 11, Params = new_map([ init_size=200, show_best=10, % mutation_rate = 0, % Koza don't use mutation % show_only_improvements=false remove_dups=false ])