Optimizing side-chain interactions in protein-ligand interfaces