Co-optimization: a generalization of coevolution