The OPTMODEL procedure provides an interactive environment in which you can build and solve a wide range of optimization models. In SAS/OR 13.1, PROC OPTMODEL adds the (experimental) network solver, providing direct access to the set of 11 network analysis and optimization algorithms that are also accessible via PROC OPTNET. This addition makes it easier to solve network-oriented problems with PROC OPTMODEL, especially as a component of a larger solution or other analytical process. The SOLVE WITH NETWORK statement invokes the network solver. Unlike other solvers that PROC OPTMODEL uses, the network solver operates directly on arrays and sets. You do not need to explicitly define variables, constraints, and objectives to use the network solver because PROC OPTMODEL declares the appropriate objects internally as needed. You specify the names of arrays and sets that define your network-structured inputs and outputs as options in the SOLVE WITH NETWORK statement. In addition to input and output, options in the SOLVE WITH NETWORK statement define processing and diagnostic controls and specify which algorithm to execute.
PROC OPTMODEL also now enables you to run optimization solver invocations in parallel, in iterations of a concurrent FOR loop that is specified using the COFOR statement. The COFOR statement operates in the same manner as the FOR statement, except that with a COFOR statement PROC OPTMODEL can execute the SOLVE statement concurrently with other statements. The execution of the COFOR sub-statement is interleaved between loop iterations so that other iterations can be processed while an iteration waits for a SOLVE statement to complete. Multiple solvers can run concurrently. This interleaving is managed so that in many cases a FOR loop can be replaced by a COFOR loop to achieve concurrency with minimal or no other changes to the code. For problems in which the SOLVE statement execution accounts for the majority of the time needed to execute a loop iteration, use of the COFOR statement can produce significant reductions in overall time needed.
PROC OPTMODEL can now also call functions and subroutines that have been defined and compiled using the FCMP procedure in Base SAS software. This capability enables reuse of previously defined functions and subroutines, deepening integration with other SAS analytic procedures from which they can also be called. You can use an FCMP function anywhere a function is otherwise permitted in PROC OPTMODEL. You can use the CALL statement in PROC OPTMODEL to call FCMP subroutines. An FCMP subroutine can return data by updating PROC OPTMODEL parameters (numeric and string) that are passed as arguments in the corresponding CALL statement and declared using the OUTARGS statement in the PROC FCMP subroutine definition. In addition to numeric and string parameters, you can pass PROC OPTMODEL arrays to PROC FCMP functions and subroutines that accept matrix arguments.