There are two classes of problems, the N-peak problems and the Hamiltonian Circuit (HC) problems. The assumption is that you are maximizing and the fitness ranges from 0.0 to 1.0. Each problem has a unique solution, with fitness 1.0. The representation is simple - it assumes the GA individuals are encoded as arrays of integer 1's and 0's. The population is in a 2-D array called "c", so individual i is c[i], and bit j of individual i is c[i][j]. You will no doubt have to change this indexing scheme to use your own GA.
The N-peak problems have the 1 solution and N-1 suboptimal solutions. N ranges from 1 - 6. They are from my work in Boolean satisfiability (SAT). They aren't too hard. The HC problems are Hamiltonian Circuit problems, converted to SAT problems. They should be harder, because they have many more suboptimal solutions.
What is nice about the SAT framework is that it can be used as a function generator. If the Boolean expression is in disjunctive normal form (DNF), then each clause can be considered to be a peak in the space. The number of peaks and their location can be controlled easily by manipulating the Boolean expression. Clauses that are satisfiable have a maximum fitness of 1.0, so such clauses correspond to peaks with maximum fitness of 1.0. The height of the peak can be controlled by making the clause increasingly unsatisfiable. So, for example, (A AND B AND C AND D) OR (A AND (NOT A) AND (NOT B) AND (NOT C) AND (NOT D)) is a DNF Boolean expression of four variables and two clauses. The first clause is satisfiable and corresponds to an optimal peak. The second clause contains a contradiction, so it not satisfiable, and thus corresponds to a suboptimal peak. By adding more contradictions one can make the peak lower. It should also be pointed out that the steepness of the peak can be controlled - for details of all this please see my ICGA89 and PPSN90 papers.
Of course, non-DNF expressions correspond to even more interesting fitness functions. It would be nice to make a generator that automatically converts arbitrary Boolean expressions into the fitness functions described by the above papers. I have used a crude Lisp-to-C translator I wrote, which translates Lisp Boolean expressions into C fitness functions. Unfortunately this translator is not very portable, nor is it as well written as I would like. Perhaps some enterprising soul will write this and make it available!
For the GA code that I use for my experiments you will want GAC: Genetic Algorithm in C or AGAC: Genetic Algorithm in ANSI C or GAL: Genetic Algorithm in Lisp
The following header file called stuff.h is necessary for all of the problems below: Stuff.h
If you don't use one of my GAs you will also need to remove the '#include "header.h"' line at the head of every test problem.