Carga una cadena de archivo en formato MPS (Mathematical Programming System) a una tabla de datos de CAS. Este formato es un estándar industrial para describir problemas de programación lineal y mixta en enteros. Esta acción es fundamental para importar problemas de optimización definidos externamente en el entorno de SAS Viya para su resolución con solvers como solveLp o solveMilp.
| Parámetro | Descripción |
|---|---|
| casOut | Especifica la tabla de datos de salida que contendrá los datos del problema en un formato binario compatible con los solvers de optimización de CAS. |
| format | Especifica si el contenido del parámetro mpsFileString está en formato fijo (FIXED) o libre (FREE). El formato libre es más flexible, mientras que el fijo requiere una alineación estricta en columnas. |
| maxLength | Especifica la longitud máxima del nombre de una variable o restricción. El valor predeterminado es 8. |
| mpsFileString | Especifica la cadena de texto que contiene la definición completa del problema en formato MPS. |
Para usar la acción loadMps, primero necesitamos definir un problema de optimización en formato de cadena de texto MPS. Este ejemplo define un problema simple de maximización. La cadena se almacena en una variable CASL para su uso posterior.
| 1 | PROC CAS; |
| 2 | SESSION casauto; |
| 3 | string mps_string = " |
| 4 | NAME EXAMPLE |
| 5 | ROWS |
| 6 | N COST |
| 7 | L ROW1 |
| 8 | L ROW2 |
| 9 | COLUMNS |
| 10 | X1 COST 1 ROW1 1 |
| 11 | X1 ROW2 1 |
| 12 | X2 COST 4 ROW1 2 |
| 13 | X2 ROW2 -1 |
| 14 | RHS |
| 15 | RHS1 ROW1 5 |
| 16 | RHS1 ROW2 2 |
| 17 | ENDATA |
| 18 | "; |
| 19 | RUN; |
Este ejemplo muestra cómo cargar la cadena MPS definida previamente en una tabla CAS llamada 'mps_table' utilizando el formato libre, que es más flexible con el espaciado.
| 1 | optimization.loadMps / |
| 2 | mpsFileString=mps_string, |
| 3 | casOut={name="mps_table", replace=true}, |
| 4 | FORMAT="FREE"; |
| 5 | RUN; |
Este ejemplo demuestra el uso del formato fijo (el predeterminado), que requiere que los campos estén en columnas específicas, y especifica explícitamente la caslib de destino ('casuser') para la tabla de salida. También se define una longitud máxima de nombre de 8 caracteres.
| 1 | optimization.loadMps / |
| 2 | mpsFileString=mps_string, |
| 3 | casOut={caslib="casuser", name="mps_fixed_format_problem", replace=true}, |
| 4 | FORMAT="FIXED", |
| 5 | maxLength=8; |
| 6 | RUN; |