Handling Infeasibilities



By default, Xpress-SLP will include penalty error vectors in the augmented SLP structure. This feature adds explicit positive and negative slack vectors to all constraints (or, optionally, just to equality constraints) which include nonlinear coefficients. In many cases, this is itself enough to retain feasibility. There is also an opportunity to add penalty error vectors to all constraints, but this is not normally required.

During cascading (see next section), Xpress-SLP will ensure that the value of a cascaded variable is never set outside its lower and upper bounds (if these have been specified).

If any penalty error vectors are used in the solution to an SLP iteration, the penalty is automatically increased, so that ultimately the penalty error vectors should be forced out of the solution if it is feasible. If the penalty costs reach the maximum (determined by the control parameter XSLP_ERRORMAXCOST) then the penalty error vectors will be fixed to zero. This may cause the final solution to be infeasible, implying that there is no feasible solution to the original problem in the neighborhood of the current values of the variables. This may be because the original solution was infeasible, or it may be that the initial penalty costs were too low, allowing the linear approximations to explore too far away from the feasible region of the nonlinear problem.

If the control parameter XSLP_ALGORITHM has bit 8 (escalate penalties) set, then the penalty costs of individual penalty vectors which are used in the solution will be increased, as well as the overall penalty increase described above. This allows the optimization to re-balance the penalty costs which can avoid subsequent SLP iterations becoming stuck on a particular penalty vector.

If the control parameter XSLP_ALGORITHM has bit 10 (max cost option) set, then the penalty vectors are not fixed when XSLP_ERRORMAXCOST is reached. Instead, optimization continues with the cost remaining at the same value. This option should only be selected if XSLP_ITERLIMIT has also been set to prevent the optimization continuing for ever, or if there is some other method (such as a callback) which can be used to terminate the optimization. Using this option is helpful when the problem takes many SLP iterations to converge and has active penalty vectors in most solutions; this situation has the danger that the penalty costs become too high, resulting in numerical instability, before convergence can be achieved.



If you have any comments or suggestions about these pages, please send mail to docs@dashoptimization.com.