Nonlinear Problems
Xpress-SLP will solve nonlinear problems. In this context, a nonlinear problem is one in which there are nonlinear relationships between variables or where there are nonlinear terms in the objective function. There is no such thing as a nonlinear variable — all variables are effectively the same — but there are nonlinear constraints and formulae. A nonlinear constraint contains terms which are not linear. A nonlinear term is one which is not a constant and is not a variable with a constant coefficient. A nonlinear constraint can contain any number of nonlinear terms.
Xpress-SLP will also solve linear problems — that is, if the problem presented to Xpress-SLP does not contain any nonlinear terms, then Xpress-SLP will still solve it, using the normal optimizer library.
The solution mechanism used by Xpress-SLP is Successive (or Sequential) Linear Programming. This involves building a linear approximation to the original nonlinear problem, solving this approximation (to an optimal solution) and attempting to validate the result against the original problem. If the linear optimal solution is sufficiently close to a solution to the original problem, then the SLP is said to have converged, and the procedure stops. Otherwise, a new approximation is created and the process is repeated. Xpress-SLP has a number of features which help to create good approximations to the original problem and therefore help to produce a rapid solution.
Note that although the solution is the result of an optimization of the linear approximation, there is no guarantee that it will be an optimal solution to the original nonlinear problem. It may be a local optimum — that is, it is a better solution than any points in its immediate neighborhood, but there is a better solution rather further away. However, a converged SLP solution will always be (to within defined tolerances) a self-consistent — and therefore practical — solution to the original problem.
Coefficients and terms
Later in this manual, it will be helpful to distinguish between formulae written as coefficients and those written as terms.
If X is a variable, then in the formula X*f(Y), f(Y) is the coefficient of X.
If f(X) appears in a nonlinear constraint, then f(X) is a term in the nonlinear constraint.
If X*f(Y) appears in a nonlinear constraint, then the entity X*f(Y) is a term in the nonlinear constraint.
As this implies, a formula written as a variable multiplied by a coefficient can always be viewed as a term, but there are terms which cannot be viewed as variables multiplied by coefficients. For example, in the constraint
X - SIN(Y) = 0,
SIN(Y) is a term and cannot be written as a coefficient.SLP variables
A variable which appears in a nonlinear coefficient or term is described as an SLP variable.
Normally, any variable which has a nonlinear coefficient will also be treated as an SLP variable. However, it is possible to set options so that variables which do not appear in nonlinear coefficients or terms are not treated as SLP variables.
Any variable, whether it is related to a nonlinear term or not, can be defined by the user as an SLP variable. This is most easily achieved by setting an initial value for the variable.
If you have any comments or suggestions about these pages, please send mail to docs@dashoptimization.com.