loadMps
Description
L'action loadMps charge une chaîne de caractères représentant un fichier MPS (Mathematical Programming System) directement dans une table de données en mémoireGemini said
Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya. CAS. C'est un peu comme donner à manger une énorme équation mathématique à SAS Viya, et il vous la recrache sous forme de table parfaitement formatée, prête à être résolue par les algorithmes d'optimisation ! Vous pouvez spécifier le format (fixe ou libre) et la longueur maximale des noms de variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage.. Source :
Paramètres Clés
Préparation des données
Préparation d'une chaîne MPS
Pour utiliser cette action, nous avons besoin d'une variable macro contenant les données au format MPS. Voici un petit exemple de problème linéaire simple (minimiser 2x + 3y sous contraintes).
| 1 | /* Définition d'un modèle MPS minimal dans une macro-variable */ |
| 2 | %let my_mps = %str( |
| 3 | NAME TESTPROB |
| 4 | ROWS |
| 5 | N COST |
| 6 | L R1 |
| 7 | L R2 |
| 8 | COLUMNS |
| 9 | X1 COST 2.0 R1 1.0 |
| 10 | X1 R2 1.0 |
| 11 | X2 COST 3.0 R1 1.0 |
| 12 | X2 R2 2.0 |
| 13 | RHS |
| 14 | RHS1 R1 5.0 R2 8.0 |
| 15 | BOUNDS |
| 16 | LO BND1 X1 0.0 |
| 17 | LO BND1 X2 0.0 |
| 18 | ENDATA |
| 19 | ); |
Exemples d'utilisation
Chargement d'une chaîne MPS avec format libre
Dans cet exemple, nous chargeons la chaîne macro my_mps dans une table CAS nommée my_mps_table. Nous utilisons le format 'FREE' car notre espacement n'est pas strictement fixe selon le standard IBM d'origine.
| 1 | PROC CAS; |
| 2 | optimization.loadMps / casOut={name="my_mps_table", caslib="casuser", replace=true} FORMAT="FREE" maxLength=8 mpsFileString=symget('my_mps'); |
| 3 | RUN; |
| 4 | QUIT; |
Résultat Attendu :
Chargement avancé avec options de table
Exemple où nous précisons non seulement le format et la chaîne, mais aussi des options avancées pour la table de sortie, comme la compression pour optimiser la mémoire en cas de très gros modèle mathématique.
| 1 | PROC CAS; |
| 2 | optimization.loadMps / casOut={name="my_mps_table_opt", caslib="casuser", replace=true, compress=true} FORMAT="FREE" maxLength=16 mpsFileString=symget('my_mps'); |
| 3 | RUN; |
| 4 | QUIT; |