algorithm basin-hopping code GMIN contributor James Farrell