optimization convertMps

Prueba de Volumen: Optimización de Cartera de Inversiones

Scénario de test & Cas d'usage

Contexto empresarial

Un banco de inversión genera dinámicamente archivos MPS masivos para la reasignación de activos nocturna (overnight). Estos archivos pueden contener miles de líneas representando restricciones de riesgo y liquidez. El objetivo es validar que la acción `convertMps` pueda procesar una tabla de entrada voluminosa sin errores de memoria y generar la estructura correcta para el solver.
Preparación de datos

Simulación de un archivo MPS grande generando miles de líneas de columnas mediante un bucle.

¡Copiado!
1 
2DATA casuser.large_mps_finance;
3LENGTH field1 $80;
4field1='NAME PORTFOLIO_OPT';
5OUTPUT;
6field1='ROWS';
7OUTPUT;
8field1=' N RETURN';
9OUTPUT;
10DO i=1 to 10000;
11field1=' L RISK_LIMIT_' || strip(put(i, 8.));
12OUTPUT;
13END;
14field1='COLUMNS';
15OUTPUT;
16DO i=1 to 5000;
17field1=' ASSET_' || strip(put(i,8.)) || ' RETURN 1.5 RISK_LIMIT_1 1.0';
18OUTPUT;
19END;
20field1='RHS';
21OUTPUT;
22field1=' RHS1 RISK_LIMIT_1 100000';
23OUTPUT;
24field1='ENDATA';
25OUTPUT;
26 
27RUN;
28 

Étapes de réalisation

1
Validación de la creación de la tabla de entrada masiva.
¡Copiado!
1 
2PROC CAS;
3TABLE.recordCount / TABLE={name='large_mps_finance'};
4QUIT;
5 
2
Ejecución de la conversión en un conjunto de datos grande.
¡Copiado!
1PROC CAS;
2 optimization.convertMps /
3 DATA={name='large_mps_finance'}
4 casOut={name='mps_finance_ready', replace=true}
5 FORMAT='FREE';
6QUIT;

Resultado esperado


La acción debe completar el proceso sin tiempos de espera (timeout) ni errores. La tabla de salida 'mps_finance_ready' debe contener todas las definiciones de restricciones generadas en el paso de preparación de datos.