## 2 Background and Related Work
### Nonlinear Optimization  
In general, nonlinear optimization algorithms are classified into trust-region methods or line search methods. Both of them approximate an objective function as a quadratic model, but the methods proceed in different ways. Trust-region methods define a region around the current step that the quadratic model is adequate and find the approximate minimizer in the region. However, line search methods first find the descent direction and focus on searching appropriate step length ([PERSON] et al., 2019). Since most source parameters have their own upper and lower bound constraints, we should employ an optimization algorithm handling constrained problems. The Levenberg-Marquardt algorithm is a popular trust-region method ([PERSON], 1994). The algorithm can be thought of as a combination of the steepest descent and the Gauss-Newton method. Using the damping parameter \(\mu\), it operates like the steepest descent when the current point is far from the correct solution. On the other hand, when the current point is close to the correct solution, it behaves like the Gauss-Newton method ([PERSON] et al., 2019). We can generally use the algorithm to solve unconstrained nonlinear optimization problems, but the algorithm for the constrained problem was also developed in ([PERSON] et al., 2019). Other trust-region methods include trust-region reflective ([PERSON] et al., 2019) and Dogleg (2019) methods. In line search methods, we typically use the steepest descent, [PERSON]'s method, or the quasi-Newton methods to derive the descent direction. In the \(k\)-th step, let \(f_{k}\) and \(d_{k}\) be the objective function and the descent direction, respectively. In the steepest descent, the computation of the descent direction is very simple, calculated as \(d_{k}=-\
abla f_{k}\). However, it slowly converges to the local solution. [PERSON]'s method finds the descent direction using the inverse of Hessian matrix as \(d_{k}=-\
abla^{2}f_{k}^{-1}\
abla f_{k}\). It converges to the local solution faster than the steepest descent, but computing the inverse of \(\
abla^{2}f_{k}\) is too expensive. As an alternative to [PERSON]'s method, the quasi-Newton method approximates the inverse of the Hessian matrix using only the gradient of the objective function. The Broyden-Fletcher-Goldfarb-Shanno (BFGS) method is a representative quasi-Newton method, but the BFGS method also suffers from high memory usage. To resolve this problem, the limited memory Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) method ([PERSON], 1981) was developed. The L-BFGS-B method, which is a variant of L-BFGS, was also proposed to handle simple bound constraints ([PERSON] et al., 2019). In this paper, we used the L-BFGS-B algorithm to handle bound constraints with a small memory footprint. Another advantage of using L-BFGS-B is that the user can adjust the computational cost and memory requirement by tuning the parameter \(m\), which denotes the number of stored previous points and gradients. In line search methods, computing the step length \(\alpha\) is a key factor for the accuracy and performance of the algorithm. For the \(k\)-th iteration, let \(x_{k}\), \(d_{k}\), and \(\alpha_{k}\) be the current point, descent direction, and step length, respectively. The ideal step length would be the global minimizer of the function \(\phi(\cdot)\) defined by Equation (1). However, since it is too expensive to derive the global minimizer, there is a trade-off between the quality of a step length and the computation time ([PERSON] et al., 2019). \[\phi(\alpha_{k})=f(x_{k}+\alpha_{k}d_{k}),\quad\alpha_{k}>0 \tag{1}\]  
Typical line search algorithms perform a sequential search until predefined conditions of \(\phi(\cdot)\) are satisfied. A popular condition is the sufficient decrease condition, described in Equation (2) for some constant \(0<c_{1}<1\). \[f(x_{k}+\alpha_{k}d_{k})\leq f(x_{k})+c_{1}\alpha_{k}\
abla f_{k}^{T}d_{k} \tag{2}\]  
This condition stipulates that \(\alpha_{k}\) should give a sufficient decrease in the objective function.