Evolving Compiler Heuristics to Manage Communication and Contention