The general petroleum production optimization problem falls under the category of optimal control problems with nonlinear control-state path inequality constraints (i.e. constraints that have to be satisfied at every time step), and it is acknowledged that such path constraints involving state variables are particularly difficult to handle. Currently, one category of methods implicitly incorporates the constraints into the forward and adjoint equations to tackle this issue. However, these are either impractical for the production optimization problem, or require complicated modifications to forward model equations (simulator). Thus, the usual approach is to formulate the above problem as a constrained nonlinear programming problem (NLP) where the constraints are calculated explicitly after the dynamic system is solved. The most popular of this category of methods (for optimal control problems) has been the penalty function method and its variants, which are, however, extremely inefficient. All other constrained NLP algorithms require the gradient of each constraint, which is impractical for an optimal control problem with path constraints, as one adjoint has to be solved for each constraint at each time step at every iteration.
We propose an approximate feasible direction NLP algorithm based on the objective function gradient and a combined gradient of the active constraints. This approximate feasible direction is then converted into a true feasible direction by projecting it onto the active constraints by solving the constraints during the forward model evaluation itself. The approach has various advantages. Firstly, only two adjoint evaluations are required at each iteration. Secondly, all iterates obtained are always feasible, as feasibility is maintained by the forward model itself, implying that any iterate can be considered a useful solution. Thirdly, large step sizes are possible during the line search, which can lead to significant reductions in forward and adjoint model evaluations and large reductions in the objective function. Through two examples, we demonstrate that the algorithm provides a practical and efficient strategy for production optimization with nonlinear path constraints.