Evaluating evolutionary algorithms