2017-04-19 111 views
-1

enter image description here使用C#來解決簡單的二次優化實踐accord.net

爲了解決這樣的問題quadratic programmingmean-variance portfolio),我想在C#使用Microsoft.SolverFoundation,但在

https://msdn.microsoft.com/en-us/library/ff759370(v=vs.93).aspx

引進是抽象的不能理解,任何人都可以給我一個特定的例子或其他自由libaray,我可以輕鬆處理?

這裏我使用accord.net

// Declare symbol variables 
double x = 0, y = 0, z = 0; 

// Create the function to be optimized 
var f = new QuadraticObjectiveFunction(() => x * x - 2 * x * y + 3 * y * y + z * z - 4 * x - 5 * y - z); 

// Create some constraints for the solution 
var constraints = new List<LinearConstraint>(); 
constraints.Add(new LinearConstraint(f,() => 6 * x - 7 * y <= 8)); 
constraints.Add(new LinearConstraint(f,() => 9 * x + 1 * y <= 11)); 
constraints.Add(new LinearConstraint(f,() => 9 * x - y <= 11)); 
constraints.Add(new LinearConstraint(f,() => -z - y == 12)); 

// Create the Quadratic Programming solver 
GoldfarbIdnani solver = new GoldfarbIdnani(f, constraints); 

// Minimize the function 
bool success = solver.Minimize(); 

double value = solver.Value; 
double[] solutions = solver.Solution; 

左問題是

  1. 如何寫的x,y和z爲矢量x =(X_1,X_2,...,x_n),因爲我有很多變量(當然寫目標函數爲矩陣f = xMx'的形式)?
  2. 我可以使用linq query在爲vectoraccord.net

回答

0

Microsoft.SolverFoundation已被棄用。

如果您需要在C#中執行操作,我會建議使用Accord.Net。

+0

你能舉一些這個庫的例子,我真的很着急解決這個問題。非常感謝。 –

+0

https://github.com/accord-net/framework/wiki/Sample-applications#quadratic-programming-qp-solver – jamesbascle

+0

非常有幫助!並留下一些問題,請參閱更新。 –