AMPL
![]() | |
Paradigma | Multi-Paradigma: deklarativ, Imperativ |
---|---|
Entworfen von | Robert Fourer David Gay Brian Kernighan Bell Labs |
Entwickler | Amploptimierung, Inc. |
Erstmals erschienen | 1985 |
Stabile Version | 20220703 /3 Juli 2022 |
OS | Plattformübergreifend: Linux, Mac OS, Solaris, AIX, Fenster |
Lizenz | Proprietär (Übersetzer), frei und offen (AMPL Solver Library) |
Dateiname -Erweiterungen | .mod, .dat, .run |
Webseite | www |
Beeinflusst von | |
Awk, C | |
Beeinflusst | |
Pyomo |
Ampl (Eine mathematische Programmiersprache) ist ein Algebraische Modellierungssprache Probleme mit hoher Komplexität für groß angelegte mathematische Computing zu beschreiben und zu lösen (d. H. Große Optimierung und groß angelegte Optimierung und Planung-type Probleme).[1] Es wurde von entwickelt von Robert Fourer, David Gay und Brian Kernighan bei Glockenlabors. AMPL unterstützt Dutzende von Löser, beide Open Source und kommerzielle Software, einschließlich CBC, Cplex, FOTMP, Minos, Ipopt, Snopt, Strickund LGO. Probleme werden an Solvers übergeben nl Dateien. AMPL wird von mehr als 100 Unternehmenskunden sowie von Regierungsbehörden und akademischen Einrichtungen verwendet.[2]
Ein Vorteil von AMPL ist die Ähnlichkeit seiner Syntax mit der mathematischen Notation von Optimierung Probleme. Dies ermöglicht eine sehr präzise und lesbare Definition von Problemen im Bereich von Optimierung. Viele moderne Löser erhältlich auf der NEOS -Server (früher veranstaltet am Argonne National Laboratory, derzeit gehostet am Universität von Wisconsin-Madison[3]) AMPL -Eingabe akzeptieren. Laut der NEOS -Statistik ist AMPL das beliebteste Format für die Darstellung mathematischer Programmierprobleme.
Merkmale
AMPL verfügt über eine Mischung aus deklarativ und Imperativ Programmierstile. Die Formulierung von Optimierungsmodellen erfolgt über deklarative Sprachelemente wie Sets, skalare und mehrdimensionale Parameter, Entscheidungsvariablen, Ziele und Einschränkungen, die eine kurze Beschreibung der meisten Probleme im Bereich der mathematischen Optimierung ermöglichen.
Verfahren und Steuerfluss Aussagen sind in AMPL für verfügbar
- Der Austausch von Daten mit externen Datenquellen wie z. Tabellenkalkulationen, Datenbanken, Xml und Textdateien
- Daten vor und nach der Verarbeitung von Aufgaben zu Optimierungsmodellen
- Der Bau von Hybridalgorithmen für Problemtypen, für die keine direkten effizienten Löser verfügbar sind.
Um die Wiederverwendung und Vereinfachung der Konstruktion großer Optimierungsprobleme zu unterstützen, ermöglicht die AMPL die Trennung von Modell und Daten.
AMPL unterstützt eine Vielzahl von Problemtypen, darunter:
- Lineares Programmieren
- Quadratische Programmierung
- Nichtlineare Programmierung
- Mixed-Isolier-Programmierung
- Quadratische Programmierung mit gemischtem Intreiber mit oder ohne konvex quadratische Einschränkungen
- Nichtlineare Mischtätigkeitsprogrammierung
- Kegelprogrammierung zweiter Ordnung
- Globale Optimierung
- Semidefinite Programmierung Probleme mit bilinear Matrix -Ungleichheiten
- Komplementaritätstheorie Probleme (MPECs) in diskreten oder kontinuierlichen Variablen
- Einschränkungsprogrammierung[4]
AMPL ruft einen Löser in einem separaten Prozess auf, der folgende Vorteile hat:
- Der Benutzer kann den Lösungsprozess jederzeit unterbrechen
- Solver -Fehler beeinflussen den Dolmetscher nicht
- 32-Bit-Version von AMPL kann mit einem 64-Bit-Löser verwendet werden und umgekehrt
Die Interaktion mit dem Löser erfolgt durch eine gut definierte NL -Schnittstelle.
Verfügbarkeit
AMPL ist für viele beliebte 32- und 64-Bit erhältlich Betriebssysteme einschließlich Linux, Mac OS, Solaris, AIX, und Fenster.[5] Der Übersetzer ist eine proprietäre Software, die von AMPL Optimization LLC gepflegt wird. Es gibt jedoch mehrere Online -Dienste, die kostenlose Modellierungs- und Lösungsmöglichkeiten mit AMPL bieten.[6][7] Eine kostenlose Studentenversion mit begrenzter Funktionalität und eine kostenlose Version mit vollem Einfachen für akademische Kurse ist ebenfalls verfügbar.[8]
AMPL kann von innen verwendet werden Microsoft Excel über die Solverstudio Excel Add-In.
Die AMPL Solver Library (ASL), die das Lesen von NL-Dateien ermöglicht und die automatische Differenzierung bietet, ist Open-Source. Es wird in vielen Löser verwendet, um die AMPL -Verbindung zu implementieren.
Statusgeschichte
Diese Tabelle enthält wichtige Schritte in der Verstärkung der Geschichte.
Jahr | Highlights |
---|---|
1985 | AMPL wurde entworfen und implementiert[1] |
1990 | Papier, das die AMPL -Modellierungssprache beschreibt, wurde in veröffentlicht in Managementwissenschaft[9] |
1991 | AMPL -Unterstützung Nichtlineare Programmierung und Automatische Differenzierung |
1993 | Robert Fourer, David Gay und Brian Kernighan wurden als ORSA/CSTS -Preis ausgezeichnet[10] bis zum Operations Research Society of America, für Schriften zum Design mathematischer Programmiersysteme und der AMPL -Modellierungssprache |
1995 | Erweiterungen für die Darstellung stückweise linear und Netzwerkstrukturen |
1995 | Skriptkonstrukte |
1997 | Verbesserte Unterstützung für nichtlineare Löser |
1998 | AMPL -Unterstützung Komplementaritätstheorie Probleme |
2000 | Relationale Datenbank- und Tabellenkalkulationszugriff |
2002 | Unterstützung für die Einschränkungsprogrammierung[4] |
2003 | Amploptimierung LLC wurde von den Erfinder von Ampl, Robert Firer, David Gay und Brian Kernighan gegründet. Das neue Unternehmen übernahm die Entwicklung und Unterstützung der AMPL -Modellierungssprache von Lucent Technologies, Inc.. |
2005 | AMPL -Modellierungssprache Google Group geöffnet[11] |
2008 | Kestrel: Eine AMPL -Schnittstelle zum NEOS -Server eingeführt |
2012 | Robert Fourer, David Gay und Brian Kernighan wurden mit dem Impact Prize 2012 als Urheber einer der wichtigsten algebraischen Modellierungssprachen ausgezeichnet.[12] |
2012 | Ampl -Buch wird online frei verfügbar[13] |
2013 | Eine neue plattformübergreifende integrierte Entwicklungsumgebung (IDE) für AMPL wird verfügbar[14] |
Ein Beispielmodell
Ein Transportproblem von George Dantzig wird verwendet, um ein Beispielverstärkermodell bereitzustellen. Dieses Problem findet den am wenigsten Kostenversandplan, der die Anforderungen auf Märkte und Vorräte in Fabriken entspricht.[15]
einstellen Pflanzen; einstellen Märkte; # Kapazität von Anlage P in Fällen Param Kapazität{p in Pflanzen}; # Nachfrage auf dem Markt M in Fällen Param Fordern{m in Märkte}; # Entfernung in Tausenden von Meilen Param Distanz{Pflanzen, Märkte}; # Fracht in Dollar pro Fall pro tausend Meilen Param Fracht; # Transportkosten in Tausenden von Dollar pro Fall Param Transportkosten{p in Pflanzen, m in Märkte} := Fracht * Distanz[p, m] / 1000; # Versandmengen in Fällen var Sendung{Pflanzen, Märkte} > = 0; # Gesamttransportkosten in Tausenden von Dollar minimieren kosten: Summe{p in Pflanzen, m in Märkte} Transportkosten[p, m] * Sendung[p, m]; # Die Versorgungsgrenze bei Pflanze P beobachten S.T. liefern{p in Pflanzen}: Summe{m in Märkte} Sendung[p, m] <= Kapazität[p]; # Befriedigung der Nachfrage auf dem Markt M. S.T. fordern{m in Märkte}: Summe{p in Pflanzen} Sendung[p, m] > = Fordern[m]; Daten; einstellen Pflanzen := Seattle San-Diego; einstellen Märkte := Neu-York Chicago Topeka; Param Kapazität := Seattle 350 San-Diego 600; Param Fordern := Neu-York 325 Chicago 300 Topeka 275; Param Distanz : Neu-York Chicago Topeka := Seattle 2.5 1.7 1.8 San-Diego 2.5 1.8 1.4; Param Fracht := 90;
Löser
Hier ist eine teilweise Liste von Löser Unterstützt von AMPL:[16]
Löser | Unterstützte Problemtypen |
---|---|
Apopt | gemischte Ganzzahl Nichtlineare Programmierung |
Artelys Strick | lineare, quadratische und nichtlineare Programmierung |
Bonmin | gemischte Ganzzahl Nichtlineare Programmierung |
BPMPD | linear und Quadratische Programmierung |
Münz- oder CBC | gemischte Ganzzahl -Programmierung |
Münzen oder CLP | Lineares Programmieren |
Conopt | Nichtlineare Programmierung |
Couenne[17] | Nichtlineare Programmierung gemischter ganzzahliger Programmierung (MINLP) |
Cplex | linear, quadratisch, Kegel zweiter Ordnung und gemischte Ganzzahlprogrammierung |
CPLEX CP Optimierer[18] | Einschränkungsprogrammierung |
FILTER | Nichtlineare Programmierung |
FOTMP | lineare, quadratische und gemischte Ganzzahlprogrammierung |
Gecode[19] | Einschränkungsprogrammierung |
Ipopt | Nichtlineare Programmierung |
Jacop[20] | Einschränkungsprogrammierung |
LGO[21] | Globale und lokale nichtlineare Optimierung |
LP_SOLVE[22] | lineare und gemischte Ganzzahlprogrammierung |
Minos | lineare und nichtlineare Programmierung |
Minto | gemischte Ganzzahl -Programmierung |
Mosek | lineare, gemischte Ganzzahl linear, quadratisch, gemischtes Ganzzahl quadratisch, quadratisch eingeschränkt, konische und konvexe nichtlineare Programmierung |
Octeract Motor | Alle Arten von Optimierungsproblemen ohne unterschiedliche oder integrale Begriffe, einschließlich diskontinuierlicher Probleme mit Mindest und Max Grundfunktionen. |
Scip | gemischte Ganzzahl -Programmierung |
Snopt | Nichtlineare Programmierung |
Sulum[23] | lineare und gemischte Ganzzahlprogrammierung |
Worhp | Nichtlineare Programmierung |
Xa | lineare und gemischte Ganzzahlprogrammierung |
Xpress | linear und konvex quadratische Optimierung und ihre gemischten Ganzzahlkollegen |
Siehe auch
- Sol (Format)
- GNU mathprog (zuvor als GMPL bekannt) ist eine Teilmenge von AMPL, die von der unterstützt wird GNU Linear Programmierkit[24]
Verweise
- ^ a b Fourer, Robert; Homosexuell, David M.; Kernighan, Brian W (2003). AMPL: Eine Modellierungssprache für die mathematische Programmierung. USA: Duxbury Press/Brooks/Cole Publishing Company. ISBN 978-0-534-38809-6.
- ^ "Position verfügbar". Abgerufen 29. Juli 2011.
- ^ "Um". Abgerufen 11. August 2015.
- ^ a b Fourer, Robert; Gay, David M. (2002). "Erweiterung einer algebraischen Modellierungssprache zur Unterstützung der Einschränkungsprogrammierung". Informiert Journal über Computing. 14 (4): 322–344. Citeseerx 10.1.1.8.9699. doi:10.1287/ijoc.14.4.322.2825.
- ^ "Plattformen". Ampl -Optimierungen inc.
- ^ "NEOS -Server zur Optimierung". Abgerufen 11. August 2015.
- ^ "Versuchen Sie es ampl!". Abgerufen 11. August 2015.
- ^ "Ampl -Downloads". Archiviert von das Original am 26. Mai 2015. Abgerufen 11. August 2015.
- ^ Fourer, Robert; Gay, David M.; Kernighan, Brian W. (1990). "Eine Modellierungssprache für die mathematische Programmierung" (PDF). Managementwissenschaft. 36 (5): 519–554–83. doi:10.1287/mnsc.36.5.519.
- ^ Informiert. "ICs - informiert" (PDF). Abgerufen 11. August 2015.
- ^ "Google -Gruppen".
- ^ Informiert. "Informiert den Impact Prize". Archiviert von das Original am 22. Oktober 2013. Abgerufen 11. August 2015.
- ^ "Frei herunterladbar - AMPL: Eine Modellierungssprache für mathematische Programmierung". Abgerufen 5. März 2021.
- ^ "Google -Gruppen". Abgerufen 11. August 2015.
- ^ Dantzig, George (2016) [1963]. "3. Formulierung eines linearen Programmiermodells". Lineare Programmierung und Erweiterungen. Princeton University Press. S. 32–62. ISBN 978-1-4008-8417-9.
- ^ "Löser - Ampl". Abgerufen 21. Januar 2018.
- ^ "Couenne". Archiviert von das Original am 29. Oktober 2013. Abgerufen 27. Oktober 2013.
- ^ "MP/Solver/ILOGCP bei Master · Ampl/MP · GitHub". GitHub. Abgerufen 11. August 2015.
- ^ "MP/Solver/Gecode bei Master · Ampl/MP · GitHub". GitHub. Abgerufen 11. August 2015.
- ^ "MP/Solver/Jacop bei Master · Ampl/MP · GitHub". GitHub. Abgerufen 11. August 2015.
- ^ "LGO - Ampl". Abgerufen 11. August 2015.
- ^ "Verwenden von LpSolve von AMPL". Abgerufen 11. August 2015.
- ^ "MP/Solver/Sulum bei Master · Ampl/MP · GitHub". GitHub. Abgerufen 11. August 2015.
- ^ "GLPK Offizielle Seite". Abgerufen 17. September 2020.