This functions in a very similar way to ConjugateGradients(), but uses a variable metric (quasi-Newton) method instead to find the minimum. The algorithm implemented in MODELLER is the BFGS or Broyden-Fletcher-Goldfarb-Shanno method [Press et al., 1992]. It takes the same keyword arguments as ConjugateGradients(), plus one additional max_atom_shift argument. This is used to limit the maximum size of an optimization move.