There are several methods for solving optimization problems. In general the method used depends on the behavior of the target function. The range of available methods spans from iterative methods based on the derivatives of the target function to genetic algorithms or random search algorithms. An overview of different optimization methods and where software packages can be found is given in Appendix C.