2017-03-01 1 views
0

Je tente de reformuler une matrice Objective Q dans un problème d'optimisation (avec des contraintes quadratiques et une fonction d'objectif quadratique) que je suis en train de résoudre avec Gurobi et Python. Gurobi a la possibilité d'ajouter des contraintes et des fonctions objectives en tant qu'expressions linéaires au lieu de jouer avec des matrices, donc je n'ai pas la matrice originale, Gurobi me l'a créé via mes équations et coefficients objectifs. Pour effectuer une analyse sur les propriétés psd de convexité de la matrice Objective Q, j'ai besoin de Q (matrice d'objectif) et de A (matrice de contraintes). Est-ce que quelqu'un sait s'il y a une commande dans le shell gurobi.py qui me permet d'accéder/voir la matrice Objective Q?Accéder à la matrice Objective Q dans Gurobi Python Shell

Merci d'avance et n'hésitez pas à demander des éclaircissements si nécessaire!

Répondre

0

Gurobi Optimizer n'a pas de fonction simple pour extraire les matrices d'un objet Model. Cependant, vous pouvez obtenir ces données de manière itérative via les objets LinExpr et QuadExpr. Voici un programme simple qui effectue une itération dans une matrice de contrainte linéaire (A) et imprime les coefficients:

from gurobipy import * 

m = read('afiro.mps') 

for ct in m.getConstrs(): 
    row = m.getRow(ct) 
    for i in range(row.size()): 
     print("%s %s %f" % (ct.ConstrName, row.getVar(i).VarName, row.getCoeff(i))) 

Adapt à un QuadExpr pour un objectif quadratique ou contrainte quadratique.