2012-01-25 49 views
1

我試圖使用InteriorPointSolver解決與線性約束的標準二次規劃問題(每可發現here的定義)。我的問題沒有線性項(定義中的「c」向量)。我在所有變量中使用SetCoefficient(Int32, Rational, Int32, Int32)來設置「Q」矩陣(將「目標」行作爲vidRow傳遞)。我是否正確地假設InteriorPointSolver將二次規劃問題標準定義中定義的目標函數最小化?Microsoft Solver Foundation的InteriorPointSolver可以最小化哪些功能?

我問這個,因爲當我地計算x^T * Q * X本人(使用X的最佳解決方案,我從求解器得到),我得到一個值,該值比求解聲稱最優目標明顯不同函數值是(通過Statistics.Primal或GetValue(goal))。我的計算和解算器的最佳值同意的唯一時間是當我使用Q的單位矩陣。我猜測我正在設置一些錯誤或者不確切地理解哪些函數正在被最小化。

我已徵詢所有文件我能找到和找不到什麼功能的內點解算器減少了很好的解釋。任何人都可以引導我在正確的方向嗎?

回答

2

事實證明,

SetCoefficient(goal, 2.0, x, y) 

擁有完全一樣

SetCoefficient(goal, 2.0, y, x) 

兩個電話的作用是設置X * Y項的係數在你的目標函數相同的效果,而第二個電話會簡單地覆蓋您在第一個電話中設置的係數。求解器不對待XY任期區別於YX項,並執行添加係數(如我所料)。所以,如果你的目標是在你的目標函數4XY來看,你必須進行以下電話:

SetCoefficient(goal, 4.0, x, y) 

,而不是上面列出的兩個電話。

相關問題