Previous Page | Next Page

What’s New in SAS/OR 9.22

The OPTMODEL Procedure

The OPTMODEL procedure provides a modeling environment that is tailored to building, solving, and maintaining optimization models. This makes the process of translating the symbolic formulation of an optimization model into PROC OPTMODEL virtually transparent, because the modeling language mimics the symbolic algebra of the formulation as closely as possible. PROC OPTMODEL also streamlines and simplifies the critical process of populating optimization models with data from SAS data sets. All of this transparency produces models that are more easily inspected for completeness and correctness, more easily corrected, and more easily modified, whether through structural changes or through the substitution of new data for old data.

The OPTMODEL procedure consists of the powerful OPTMODEL modeling language and access to state-of-the-art solvers for several classes of mathematical programming problems.

Seven solvers are available to OPTMODEL, as listed in Table 1.1.

Table 1.1 List of OPTMODEL Solvers

Problem

Solver

Linear programming

LP

Mixed integer programming

MILP

Quadratic programming (Experimental)

QP

Nonlinear programming, unconstrained

NLPU

General nonlinear programming

NLPC

General nonlinear programming

SQP

General nonlinear programming

IPNLP

In SAS/OR 9.22, the OPTMODEL procedure adds several new features. First, PROC OPTMODEL supports named problems to enable easy manipulation of multiple subproblems. The PROBLEM declaration declares a named problem and the USE PROBLEM statement makes it active. Objectives can now be declared as arrays, so they can provide separate objectives for arrays of named problems.

Implicit variables, created via the IMPVAR declaration, allow optimization expressions to be referred to by name in a model. Implicit variables can be evaluated more efficiently than by repeating the same complex expression in multiple places.

Problem components can be accessed with aliases such as _VAR_ and _CON_, which respectively aggregate all of the variables and constraints in a problem. This allows convenient processing of all of the problem components of a given kind for printing, model expansion, and other purposes. The new suffixes .NAME and .LABEL can be used to track the identity of problem components.

Function and subroutine calls can use the "OF array-name[*]" syntax to pass an OPTMODEL array to a called routine for uses such as sorting.

The NUMBER, STRING, and SET declarations allow initial values for arrays to be supplied using an INIT clause with a list of initialization values.

The SOLVE statement supports the RELAXINT keyword to solve a problem while temporarily relaxing the integrality restriction on variables.

Analytic derivatives are now generated for most SAS library functions. The OPTMODEL procedure can use threading on systems with multiple processors to speed up evaluation of nonlinear Hessian models.

Starting with SAS/OR 9.22, the IPNLP and NLPU solvers support new techniques for large-scale optimization. The nonlinear solver IPNLP has been equipped with two new techniques. The first technique, TECH=IPKRYLOV, is appropriate for large-scale nonlinear optimization problems that can contain many thousands of variables or constraints or both. It uses exact second derivatives to calculate the search directions. Its convergence is achieved by using a trust-region framework that guides the algorithm towards the solution of the optimization problem. The second technique, TECH=IPQN, uses a quasi-Newton method and line-search framework to solve the optimization problem. As such it needs to calculate only the first derivatives of the objective and constraints. This method is more appropriate for problems where the second derivatives of the objective and constraints either are not available or are expensive to compute.

The unconstrained solver NLPU has been equipped with a new technique called TECH=CGTR. This technique uses the conjugate gradient method to solve large-scale unconstrained and bound constrained optimization problems.

Previous Page | Next Page | Top of Page