AMPL (programovací jazyk)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 13. dubna 2017; kontroly vyžadují 12 úprav .
AMPL
Jazyková třída Multiparadigma : deklarativní , imperativní
Objevil se v 1985  ( 1985 )
Vývojář AMPL Optimization, Inc.
Přípona souboru .mod.datnebo _.run
Uvolnění 20220323 (23. března 2022 ) ( 2022-03-23 ​​)
Byl ovlivněn A.W.K. , C
ovlivnil Pyomo
Licence Freemium (překladatel),
Open Source (Knihovna řešičů AMPL)
webová stránka ampl.com
OS Víceplatformní : Linux , macOS , Solaris , AIX , Windows

AMPL (zkratka pro A Mathematical Programming Language) je vysokoúrovňový jazyk pro algebraické modelování a reprezentaci rozsáhlých problémů vysoké složitosti. AMPL byl vyvinut Robertem Fourerem, Davidem Gayem a Brianem Kernighanem v Bell Laboratories v roce 1985 k popisu a řešení složitých problémů optimalizace a plánování. Autoři AMPL získali v roce 1993 cenu Americké společnosti pro operační výzkum. AMPL neřeší problémy přímo, ale vyvolává vhodné externí "řešiče" jak open source, tak komerční (CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, KNITRO a LGO). Problémy se předávají řešitelům ve formě nl-souborů. AMPL používá více než 200 firemních klientů, stejně jako vládní agentury a akademické instituce. Jednou z výhod AMPL je podobnost jeho syntaxe s matematickým zápisem optimalizačních problémů. To umožňuje velmi stručnou a snadno čitelnou definici optimalizačního problému. Mnoho moderních řešitelů dostupných na serveru NEOS (dříve hostovaném v Argonne National Laboratory, nyní hostovaném na University of Wisconsin, Madison University of Wisconsin, Madison[3]) přijímá vstup AMPL. Podle statistik NEOS je AMPL nejoblíbenějším formátem pro prezentaci problémů matematického programování.

Funkce

AMPL kombinuje deklarativní a imperativní styly programování. Optimalizační modely jsou formulovány pomocí prvků deklarativního jazyka: množin, skalárních a vícerozměrných parametrů, rozhodovacích proměnných, objektivních funkcí a omezení, které umožňují stručně popsat většinu problémů v oblasti matematické optimalizace. Procedury a operátory dostupné v AMPL vám umožňují: - vyměňovat si data s externími datovými zdroji, jako jsou tabulky, databáze, XML, CSV a textové soubory; - Provádět předběžné a následné zpracování dat optimalizačního modelu; - Nasadit hybridní algoritmy k řešení typů problémů, pro které neexistují přímí efektivní řešitelé; - Oddělený model a data, což výrazně zjednodušuje opětovné použití modelů a řešení a zjednodušuje konstrukci rozsáhlých optimalizačních problémů;

AMPL podporuje širokou škálu typů úloh, včetně:

Interakce s řešitelem probíhá přes dobře definované rozhraní nl .

Dostupnost

AMPL je k dispozici pro mnoho oblíbených 32bitových a 64bitových operačních systémů , včetně Linuxu , macOS , Solaris , AIX a Windows . [2] Translator je proprietární software spravovaný AMPL Optimization LLC. Existuje však několik online služeb, které poskytují bezplatné modelovací nástroje a řešení využívající AMPL. [3] [4] K dispozici je také bezplatná studentská verze s omezenou funkčností a bezplatná plnohodnotná verze pro akademické kurzy. [5]

AMPL lze použít z aplikace Microsoft Excel prostřednictvím doplňku SolverStudio Excel.

Knihovna AMPL Solver (ASL), která umožňuje číst nl soubory a poskytuje automatické rozlišení, je open source. Používá se v mnoha řešitelích k implementaci spojení AMPL.

Historie

Tato tabulka představuje důležité milníky v historii AMPL.

Doba Hlavní události
1985 AMPL byl navržen a implementován [6]
1990 Článek popisující modelovací jazyk AMPL byl publikován v časopise Management Science [7] .
1991 AMPL podporuje nelineární programování a automatickou diferenciaci
1993 Robert Furer, David Gay a Brian Kernighan získali ocenění ORSA/CSTS [8] od Operations Research Society of America za práci na návrhu matematických programovacích systémů a modelovacího jazyka AMPL.
1995 Rozšíření pro reprezentaci po částech lineárních a síťových struktur
1995 Konstrukce skriptů
1997 Rozšířená podpora pro nelineární řešiče
1998 AMPL podporuje problémy teorie komplementarity
2000 Přístup k relační databázi a tabulkovým procesorům
2002 Podpora programování s omezeními [9]
2003 AMPL Optimization LLC byla založena vynálezci AMPL Robertem Furerem, Davidem Gayem a Brianem Kernighanem. Nová společnost převzala vývoj a údržbu modelovacího jazyka AMPL od Lucent Technologies, Inc.
2005 Spuštěna skupina Google pro modelovací jazyk AMPL [10]
2008 Kestrel: Představeno rozhraní AMPL pro server NEOS
2011 AMPL pro kurzy
2012 Robert Furer, David Gay a Brian Kernighan byli oceněni cenou INFORMS Impact 2012 jako tvůrci jednoho z nejdůležitějších algebraických modelovacích jazyků. [jedenáct]
2012 Kniha AMPL je zdarma online [12]
2012 AMPL "Logic" a rozšíření pro omezené programování
2013 K dispozici je nové integrované vývojové prostředí (IDE) pro platformu AMPL [ 13]
2015 AMPL API pro MATLAB
2016 AMPL-API pro C++
2017 AMPL-API pro Python
2018 AMPL-API pro R
2020 Nové tabulkové rozhraní AMPL Direct
2022 Nasazení optimalizace v cloudech a kontejnerech

Ukázkový model

Dopravní problém od George Danziga je použit jako příklad modelu AMPL. Tento úkol najde nejlevnější přepravní plán, který splňuje požadavky trhu a tovární dodávky. [čtrnáct]

sada Rostliny ; nastavit trhy ; # Kapacita závodu p v případech param Kapacita { p v závodech }; # Poptávka na trhu m v případech param Poptávka { m na trzích }; # Vzdálenost v tisících mil param Vzdálenost { Plants , Markets }; # Dopravné v dolarech za případ na tisíc mil param Freight ; # Náklady na dopravu v tisících dolarů za případ param TransportCost { p v závodech , m na trzích } : = Doprava * Vzdálenost [ p , m ] / 1000 ; # Množství zásilky v var pls . _ _ _ _ # Celkové náklady na dopravu v tisících dolarů minimalizují náklady : součet { p v závodech , m na trzích } Náklady na dopravu [ p , m ] * zásilka [ p , m ]; # Dodržujte limit dodávky v závodě p.t. dodávka { p v závodech }: suma { m na trzích } zásilka [ p , m ] <= Kapacita [ p ]; # Uspokojit poptávku na trhu m s.t. poptávka { m na trzích }: suma { p v rostlinách } zásilka [ p , m ] >= Poptávka [ m ]; údaje ; sada Rostliny : = seattle san - diego ; sada Trhy : = new - york chicago topeka ; param Kapacita : = seattle 350 san - diego 600 ; param Poptávka : = new - york 325 chicago 300 topeka 275 ; param Vzdálenost : new - york chicago topeka : = seattle 2,5 1,7 1,8 san - diego 2,5 1,8 1,4 ; param Dopravné : = 90 ;

Řešitelé

Zde je částečný seznam řešitelů podporovaných AMPL: [15]

řešitel Podporované typy problémů
APOPT smíšené celočíselné nelineární programování
Artelys Knitro lineární, kvadratické a nelineární programování
Bonmin smíšené celočíselné nelineární programování
BPMPD lineární a kvadratické programování
COIN-OR CBC smíšené celočíselné programování
COIN-OR CLP lineární programování
CONOPT nelineární programování
[ 16] smíšené celočíselné nelineární programování (MINLP)
CPLEX lineární, kvadratické, kuželové programování druhého řádu a smíšené celočíselné programování
CPLEX CP Optimizer [17] omezující programování
FILTR nelineární programování
FortMP lineární, kvadratické a smíšené celočíselné programování
Gecode [18] omezující programování
IPOPT nelineární programování
JaCoP [19] omezující programování
LGO [20] globální a lokální nelineární optimalizace
lp_solve [21] lineární a smíšené celočíselné programování
MINOS lineární a nelineární programování
MINTO smíšené celočíselné programování
MOSEK lineární, smíšené celé číslo lineární, kvadratické, smíšené celé číslo kvadratické, kvadraticky omezené, kuželové a konvexní nelineární programování
Octeract Engine Všechny typy optimalizačních úloh bez diferenciálních nebo integrálních členů, včetně nespojitých úloh s minimálními a maximálními elementárními funkcemi.
SCIP smíšené celočíselné programování
SNOPT nelineární programování
Sulum [22] lineární a smíšené celočíselné programování
WORHP nelineární programování
XA lineární a smíšené celočíselné programování
Vyjádřit lineární a konvexní kvadratická optimalizace a jejich smíšené celočíselné protějšky

Mapa ekosystému

Kliknutím na mapu otevřete interaktivní verzi

Viz také

  • sol (formát)
  • GNU MathProg (dříve známý jako GMPL) je podmnožinou AMPL podporovanou sadou GNU Linear Programming Suite [23] .

Doporučení

Poznámky

  1. Fourer, Robert (2002). „Rozšíření jazyka algebraického modelování o podporu programování s omezeními“ . INFORMUJE Journal on Computing . 14 (4): 322-344. DOI : 10.1287/ijoc.14.4.322.2825 .
  2. Platformy . AMPL Optimizations Inc. . Získáno 14. května 2022. Archivováno z originálu dne 14. května 2022.
  3. NEOS Server pro optimalizaci . Získáno 11. srpna 2015. Archivováno z originálu 6. května 2011.
  4. Vyzkoušejte AMPL! . Získáno 11. srpna 2015. Archivováno z originálu 18. června 2011.
  5. Stahování AMPL . Získáno 11. 8. 2015. Archivováno z originálu 26. 5. 2015.
  6. Chyba: parametr není nastaven v šabloně {{ publikace }} . - ISBN 978-0-534-38809-6 . Fourer, Robert ; Gay, David M ; Kernighan, Brian W (2003). AMPL: modelovací jazyk pro matematické programování . USA: Duxbury Press/Brooks/Cole Publishing Company. ISBN |заглавие= 978-0-534-38809-6.
  7. Fourer, Robert (1990). „Modelovací jazyk pro matematické programování“ (PDF) . Management Science . 36 (5): 519–554–83. DOI : 10.1287/mnsc.36.5.519 . Archivováno (PDF) z originálu dne 2011-07-16 . Získáno 2022-05-14 . Použitý zastaralý parametr |deadlink=( nápověda )
  8. INFORMUJE. ICS-INFORMUJE . Získáno 11. srpna 2015. Archivováno z originálu dne 7. října 2006.
  9. Fourer, Robert (2002). „Rozšíření jazyka algebraického modelování o podporu programování s omezeními“ . INFORMUJE Journal on Computing . 14 (4): 322-344. DOI : 10.1287/ijoc.14.4.322.2825 . Fourer, Robert ; Gay, David M. (2002). "Rozšíření jazyka algebraického modelování pro podporu programování s omezeními" . INFORMUJE Journal on Computing . 14 (4): 322–344. CiteSeerX  10.1.1.8.9699 . doi : 10.1287/ijoc.14.4.322.2825 .
  10. Skupiny Google . Získáno 14. května 2022. Archivováno z originálu dne 26. května 2013.
  11. INFORMUJE. INFORMUJE cenu za dopad . Získáno 11. srpna 2015. Archivováno z originálu 22. října 2013.
  12. Volně ke stažení - AMPL: Modelovací jazyk pro matematické programování . Získáno 5. března 2021. Archivováno z originálu dne 20. května 2022.
  13. Skupiny Google . Získáno 11. srpna 2015. Archivováno z originálu 31. května 2019.
  14. Chyba: parametr není nastaven v šabloně {{ publikace }} . ISBN 978-1-4008-8417-9 . |заглавие=
  15. Řešitelé-AMPL . Staženo 21. ledna 2018. Archivováno z originálu 27. února 2014.
  16. Couenne . Datum přístupu: 27. října 2013. Archivováno z originálu 29. října 2013.
  17. mp/solvers/ilogcp na master ampl/mp GitHub . GitHub . Získáno 11. srpna 2015. Archivováno z originálu 14. května 2022.
  18. mp/solvers/gecode na master ampl/mp GitHub . GitHub . Získáno 11. srpna 2015. Archivováno z originálu 14. května 2022.
  19. mp/solvers/jacop na master ampl/mp GitHub . GitHub . Získáno 11. srpna 2015. Archivováno z originálu 14. května 2022.
  20. LGO-AMPL . Získáno 11. 8. 2015. Archivováno z originálu 11. 8. 2015.
  21. Použití lpsolve z AMPL . Získáno 11. srpna 2015. Archivováno z originálu 14. května 2022.
  22. mp/solvers/sulum na master ampl/mp GitHub . GitHub . Získáno 11. srpna 2015. Archivováno z originálu 14. května 2022.
  23. Oficiální stránky GLPK . Získáno 17. září 2020. Archivováno z originálu dne 30. května 2022.

Externí odkazy

Šablona: Software pro matematickou optimalizaci