General purpose heuristics for integer programming—Part I