2017-03-01 9 views
0

私はGurobiとPythonで解決している最適化問題(二次制約と二次目的関数を持つ)でObjective Q行列を再定式化しようとしています。 Gurobiは行列を操作するのではなく、線形式として制約と目的関数を追加するオプションを持っています。元の行列を持たないので、Gurobiは私の目的式と係数を使ってそれを作成します。Gurobi Pythonシェルで目的のQ行列にアクセスする

Objective Q行列のconvexity psd特性の解析を行うには、Q(客観的行列)とA(制約行列)が必要です。 gurobi.pyシェルにObjective Qマトリックスにアクセスする/表示するコマンドがあるかどうかは誰にも分かりますか?

ありがとうございました。必要に応じて、お気軽にお問い合わせください。

答えて

0

Gurobi Optimizerは、Modelオブジェクトから行列を検索する単純な関数を持っていません。ただし、そのデータはLinExprQuadExprのオブジェクトを使って繰り返し取得できます。

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))) 

が二次客観又は二次の制約のためにQuadExprにこれを適応:ここでは、単純な線形制約行列(A)とを反復処理は、係数を印刷するプログラムです。

関連する問題