The NLP Procedure

Feasible Starting Point

Two algorithms are used to obtain a feasible starting point.

  • When only boundary constraints are specified:

    • If the parameter $ x_ j$, $1 \leq j \leq n$, violates a two-sided boundary constraint (or an equality constraint) $l_ j \leq x_ j \leq u_ j$, the parameter is given a new value inside the feasible interval, as follows:

      \[ x_ j = \left\{ \begin{array}{ll} l_ j, & \mr{if \: } u_ j \leq l_ j \\[0.1in] l_ j + \frac{1}{2}(u_ j - l_ j), & \mr{if \: } u_ j - l_ j < 4 \\[0.1in] l_ j + \frac{1}{10}(u_ j - l_ j), & \mr{if \: } u_ j - l_ j \geq 4 \end{array} \right. \]
    • If the parameter $ x_ j$, $ 1 \le j \le n$, violates a one-sided boundary constraint $l_ j \leq x_ j$ or $x_ j \leq u_ j$, the parameter is given a new value near the violated boundary, as follows:

      \[ x_ j = \left\{ \begin{array}{ll} l_ j + \max (1, \frac{1}{10}l_ j), & \mr{if \: } x_ j < l_ j \\[0.1in] u_ j - \max (1, \frac{1}{10}u_ j), & \mr{if \: } x_ j > u_ j \end{array} \right. \]
  • When general linear constraints are specified, the algorithm of Schittkowski and Stoer (1979) computes a feasible point, which may be quite far from a user-specified infeasible point.