2016-10-23 1 views
1

Ich versuche, die NelderMead Solver von accord.net für eine Optimierung zur Verfügung gestellt wie folgt zu verwenden:accord.net Neldermead Optimierung Anfangsfalle in C# vermeiden

var solution = new NelderMead(vecCMrIni.Length, CMOpt); 
// CMOpt is the function to be minimized  
for (int m = 0; m < vecCMrIni.Length; m++) // set lower and upper bound 
     { solution.LowerBounds[m] = vecCMrLB[m]; 
      solution.UpperBounds[m] = vecCMrUB[m];} 
bool success = solution.Minimize(vecCMrIni);// minimize CMOpt, with vecCMrIni as initial. 

Leider stellt sich der Solver eine erzeugen würde aus Lösung, die genau so wie der Ausgangsvektor vecCMrIni. Gibt es eine Möglichkeit, dieses Problem zu überwinden? Dank

Antwort

1

Ich hatte das gleiche Problem, und in meinem Fall war es gelöst den Wert von „Maximalwert“ -Einstellung:

// (this value depends on your function, but try to put a huge negative value) 
solution.MaximumValue = -1e6; 

Vor dieser Änderung die „Minimieren“ Methode wurde mit dem Status der Rückkehr: MinimumAllowedValueReached