XA for MPL

XA is a solver package from Sunset Software Technology. It is designed to solve linear programming problems as well mixed integer and quadratic programming problems. XA has been in the optimization arena for more than 20 years and is continually being updated to include new features and enhancements enabling it to be competitive amongst its peers. One can access this robust and reliable solver from the user-friendly Windows environment of MPL, The XA optimisation libraries is accessed from MPL as a Dynamic Link Library (DLL). Allowing MPL users to transparently access XA solution algorithmic methods from their MPL application.

Algorithmic Features

Linear Programming

XA has a complete set of methodologies to solve LP problems, its default setting is the dual simplex method, which works well for the majority of problems. It also encompasses the primal and network simplex algorithms that can be preferential on certain problem types. XA also has an interior-point implementation, its barrier algorithm is pretty robust and provides an alternative to the simplex method for solving LPs especially large sparse problems.

Quadratic Programming

XA can solve models that have a quadratic objective function and linear constraints. If the objective function is positive semi-definite, XA can utilize the barrier algorithm to solve the quadratic programming problem. To solve QPs in MPL one has to set in MPL the "ModelType" to Quadratic.

Mixed Integer Programming

XA uses the branch and bound approach to solve mixed integer programming problems, initially solving an LP relaxation version for the problem. Subsequent branching occurs whereby integer variables are bound to take an integer value. XA incorporate a total of 9 branching strategies allowing great scope for performance tuning.

Performance Tuning

XA default settings generally perform well, though there are problems on which these settings can give undesirable performance issues, one can suggest a few pointers depending on the type of problem:

For LPs

XA is tuned to solve the vast majority of LP problems using the default options. There are occasions where one may need to change the option settings, these are usually a result of bad performance or numerical instability issues. On the whole the dual simplex method is best for most LP problems, there are some instances where the primal simplex may work best. The barrier method typically should be used for very large sparse models or models that are experiencing numerical difficulties. One can set the barrier method to solve LPs by changing the option "Algorithm" to 2. If the model has network type constraints the network simplex method often performs best to activate this algorithm set the option to 3.

For MIPs

MIP problems can be extremely difficult to solve, though there are no steadfast rules on enhancing MIP performance, certain things may be advantageous in improving the performance on some models and be a hinderous on other problems. Below are some of the considerations one should look into when try to solve difficult MIP problems:

XA Log Output

XA provides progress information during the optimisation run. MPL can display this information in the message window that also can be relayed to a log file. A typical log has the following appearance:

STATUS: Loading matrix into XA
STATUS: Optimizing 'Sawmill' with XA solver
XA:     Iter: 1 Inf:    96.50000 70
XA:     Iter: 2 Inf:    96.40000 69
XA:     Iter: 3 Inf:    96.30000 68
XA:     Iter: 4 Inf:    96.20000 67
XA:     Iter: 5 Inf:    96.10000 66
XA:     Iter: 6 Inf:    96.00000 65
XA:     Iter: 7 Inf:    95.90000 64
XA:     Iter: 8 Inf:    95.80000 63
XA:     Iter: 9 Inf:    95.70000 62
XA:     Iter: 10 Inf:    95.60000 61

XA shows the sum of infeasibilities at the iterations, once XA finds a feasible solution it states the progress of the objective value at the iterations until it solves to optimality.

XA:     Iter: 71 Inf:     0.00000 0
XA:     Iter: 72 Obj: -2516371.40 5
XA:     Iter: 73 Obj: -2515818.62 3
XA:     Iter: 74 Obj: -2509356.52 5
XA:     Iter: 75 Obj: -2474037.13 2
XA:     Iter: 76 Obj: -2457523.98 3
XA:     Iter: 77 Obj: -2432701.33 6
XA:     Iter: 440 Obj: -464075.937 1
XA:     Iter: 441 Obj: -463336.737 1
XA:     L P   O P T I M A L   S O L U T I O N ---> OBJECTIVE -463336.737
XA:     SOLVE 1 TIME 00:00:01  ITER 441  MEMORY USED  14.1%
Solver Statistics
  Solver name:      XA
  Objective value:  -463336.736591908
  Iterations:       442
  Solution time:    2.28 sec
  Result code:      1
STATUS: Retrieve solution back from XA

Upon completion of the optimization process XA displays a summary of the solve relaying total time, memory usage and total number of iterations.

XA Parameter Options

For full description of all the XA Parameters that are supported in MPL please go to the XA Option Parameters page.

Back To Top | Maximal Home Page | List of Solvers | Previous Page | Next Page