Several different approaches have been proposed in the last decade to assess the binding affinity of a virtual small molecule ligand to a target protein, particularly with respect to screening large compound databases. Here we review the methods that have been proposed, and discuss techniques for optimizing scoring functions that have been applied in industrial settings.