Hyper-Heuristic Approaches To Automatically Designing Heuristics As Mutation Operators For Evolutionary Programming On Function Classes