Combining metaheuristics with mathematical programming, constraint programming and machine learning