AMPL

Ampl
AMPL (textbook cover).jpg
Paradigma Multi-Paradigma: deklarativ, Imperativ
Entworfen von Robert Fourer
David Gay
Brian Kernighan
Bell Labs
Entwickler Amploptimierung, Inc.
Erstmals erschienen 1985; Vor 37 Jahren
Stabile Version
20220703 /3 Juli 2022; Vor 27 Tagen
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.Ampl.com
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:

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

Verweise

  1. ^ 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.
  2. ^ "Position verfügbar". Abgerufen 29. Juli 2011.
  3. ^ "Um". Abgerufen 11. August 2015.
  4. ^ 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.
  5. ^ "Plattformen". Ampl -Optimierungen inc.
  6. ^ "NEOS -Server zur Optimierung". Abgerufen 11. August 2015.
  7. ^ "Versuchen Sie es ampl!". Abgerufen 11. August 2015.
  8. ^ "Ampl -Downloads". Archiviert von das Original am 26. Mai 2015. Abgerufen 11. August 2015.
  9. ^ 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.
  10. ^ Informiert. "ICs - informiert" (PDF). Abgerufen 11. August 2015.
  11. ^ "Google -Gruppen".
  12. ^ Informiert. "Informiert den Impact Prize". Archiviert von das Original am 22. Oktober 2013. Abgerufen 11. August 2015.
  13. ^ "Frei herunterladbar - AMPL: Eine Modellierungssprache für mathematische Programmierung". Abgerufen 5. März 2021.
  14. ^ "Google -Gruppen". Abgerufen 11. August 2015.
  15. ^ 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.
  16. ^ "Löser - Ampl". Abgerufen 21. Januar 2018.
  17. ^ "Couenne". Archiviert von das Original am 29. Oktober 2013. Abgerufen 27. Oktober 2013.
  18. ^ "MP/Solver/ILOGCP bei Master · Ampl/MP · GitHub". GitHub. Abgerufen 11. August 2015.
  19. ^ "MP/Solver/Gecode bei Master · Ampl/MP · GitHub". GitHub. Abgerufen 11. August 2015.
  20. ^ "MP/Solver/Jacop bei Master · Ampl/MP · GitHub". GitHub. Abgerufen 11. August 2015.
  21. ^ "LGO - Ampl". Abgerufen 11. August 2015.
  22. ^ "Verwenden von LpSolve von AMPL". Abgerufen 11. August 2015.
  23. ^ "MP/Solver/Sulum bei Master · Ampl/MP · GitHub". GitHub. Abgerufen 11. August 2015.
  24. ^ "GLPK Offizielle Seite". Abgerufen 17. September 2020.

Externe Links