Computationally optimizing the directed evolution of proteins