2009-07-30 7 views
14

Ich untersuche Optionen für ein lineares und nicht-lineares Programmier- (Optimierungs-) Framework.Passt die Microsoft Solver Foundation zu meinen Anforderungen?

Anforderungen sind:

  1. Unterstützung lineare und nicht-lineare Programmierung Probleme mit ca.. 100-1000 Variablen und bis zu 1000 Constraints (ich nehme an, das ist ziemlich einfach). Die nichtlinearen Probleme haben Beschränkungen, die Multiplikation oder Division mehrerer Variablen beinhalten - nichts Komplizierteres als das.

  2. integriert sich gut mit MS-Umgebungen (SQL Server, MS Access, .NET, Excel)

  3. Nizza für Ad-hoc-Problemdefinition wäre Unterstützung zu haben (dh eine Art Skriptsprache oder Unterstützung für die Definition und Lösung des Problems in einem Excel-Frontend)

  4. Ich würde Excel allein verwenden, aber ich brauche auch die Möglichkeit, den Löser programmatisch (.NET-Umgebung) für die größeren Probleme zu verbinden.

Für programmatischen Zugriff Ich beabsichtige eine abstrahierende Schnittstelle zum Solver zu entwickeln (so können wir Solver ändern, wenn überhaupt erforderlich). Dann stolperte ich in MS Solver Foundation (http://code.msdn.microsoft.com/solverfoundation), die diese Schnittstelle bereits hat. Ich frage mich, ob es die Rechnung in Bezug auf unsere anderen Anforderungen erfüllt und welche Meinung die Nutzer davon haben.

Antwort

4

Nun, es stellt sich heraus, Microsoft Solver Foundation nicht nicht-lineare Programmierung unterstützen. Seit Januar 2010 ist die official word des Teams darauf, dass sie darüber nachdenken, aber dass es nicht in ihren unmittelbaren Plänen ist.

So habe ich mich auf AMPL als Modellierungssprache Schnittstelle und KNITRO für den Löser-Algorithmus entschieden. KNITRO sieht gut aus, weil es scheinbar aus drei Algorithmen in einem besteht (2 Varianten der Interior Point Method und 1 von Active Set method). Siehe auch die Wikipedia-Seite für KNITRO.

Ich entschied mich für AMPL und KNITRO nach dem Ausprobieren von Evaluierungsversionen von beiden auf einem ausgezeichneten Webportal, das anscheinend von der US National Science Foundation und dem US Department of Energy in der US Argonne National LaboratoryNEOS finanziert wurde. NEOS bietet eine Web-Schnittstelle für Ihr mathematisches Modell AMPL oder GAMS (und für einige Solver, ein paar anderer) das Hochladen und dann Ergebnisse zurück über eine Ergebnis Webseite und per E-Mail bekommen. Es gibt angeblich eine E-Mail-Schnittstelle für das Einreichen von Problemen, aber es war mir nicht gelungen, das zum Laufen zu bringen.

Jetzt kostet das alles Geld. KNITRO und AMPL sind kommerzielle Produkte. Am Ende wird die Lösung ungefähr $ 8000 US kosten.Nicht billig. Wenn Sie nach freien Lösungen suchen, sind die Optionen meines Erachtens ziemlich beschränkt auf IPOPT für den Solver (den ich auch auf NEOS ausprobiert habe und festgestellt habe, dass er gut funktioniert, aber ich konnte ihn aus anderen nichttechnischen Gründen nicht auswählen) und Verzicht auf die AMPL-Schnittstelle. Sie können Ihr Problem über die IPOPT-API einrichten. Im Gegensatz zur API der Microsoft Foundation ist die IPOPT-Schnittstelle jedoch etwas komplizierter und erfordert, dass Ihre aufrufende Anwendung Callbacks implementiert, die erste (und möglicherweise zweite) Ableitungen der nichtlinearen Gleichungen Ihres Modells berechnen. Modeling Language Interfaces (wie AMPL) erledigen das für Sie, weil sie aus allen in ihrer Sprache geschriebenen Gleichungen symbolische Ableitungen berechnen können.

+6

ab sofort [die Startseite] (http://code.msdn.microsoft.com/solverfoundation) __ "Solver Foundation 3.0 bietet neue Funktionen zum Erstellen und Lösen nichtlinearer Modelle. "__ – bobobobo

+1

Solver Foundation wurde vor einem Jahr als eigenständiges Produkt eingestellt: http://nathanbrixius.wordpress.com/2012/05/25/no-more-standalone-releases-of-microsoft-solver-foundation / – vitaut

2

Basierend auf Ihren gelisteten Anforderungen sieht es aus wie Microsoft Solver Foundation erfüllt alle Ihre Anforderungen und dann einige. Lesen Sie die "Was ist Solver Foundation?" Dokument auf der Website der Solver Foundation. Es erwähnt lineare Programmierung, nicht-lineare Programmierung, Entwicklung in .NET, kann in Excel verwenden, Solver Foundation kommt auch mit einem Microsoft Office Excel-Add-In, um eine vollständige Modellierungsumgebung in einer vertrauten Schnittstelle zu bieten.

+2

Ich habe versucht, Microsoft Solver Foundation, aber es unterstützt nicht lineare Probleme. – Emmanuel

+4

Ab Nov 2010 unterstützt Solver Foundation 3.0 nichtlineare Modelle – bobobobo

3

I Solver Foundation auf ein Problem versucht, habe ich (erfolglos) versucht, in der Vergangenheit zu lösen und rissig es in 2 Tagen, von Solver API einschließlich Lernen. Solver Leistung ist großartig, und SFS (Solver Foundation Services) API ist AWESOME.

1

Die GNU-basierte GLPK-Bibliothek ist eine großartige, kostenlose Option. Ich habe 1000s und 1000s von Spaltenproblemen darauf keine Sorgen gemacht. Es braucht ein paar verschiedene Problemdefinitionsformate, war aber am einfachsten für mich über die C- oder C++ - API zu verwenden. Verbesserungen an den Motoren dahinter treten ständig auf. Ich glaube einige Wrapper sind auch verfügbar (zB Perl, Python).