You could use NMinimize ( a numerical global minimization function) to minimize the sum of the squares of the error terms. It has a number of methods, including Differential Evolution.