AMPL (programozási nyelv)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2017. április 13-án felülvizsgált verziótól ; az ellenőrzések 12 szerkesztést igényelnek .
AMPL
Nyelvóra Többparadigma : deklaratív , kötelező
Megjelent 1985  ( 1985 )
Fejlesztő AMPL Optimization, Inc.
Fájlkiterjesztés _ .mod, .datvagy.run
Kiadás 20220323 (2022. március 23. ) ( 2022-03-23 ​​)
Befolyásolva A.W.K. , C
befolyásolta Pyomo
Engedély Freemium (fordító),
nyílt forráskódú (AMPL Solver Library)
Weboldal ampl.com
OS Több platformon : Linux , macOS , Solaris , AIX , Windows

Az AMPL (a matematikai programozási nyelv rövidítése) egy magas szintű nyelv az algebrai modellezéshez és nagyméretű, nagy bonyolultságú problémák ábrázolásához. Az AMPL-t Robert Fourer, David Gay és Brian Kernighan fejlesztette ki 1985-ben a Bell Laboratories-tól, hogy leírják és megoldják az összetett optimalizálási és ütemezési problémákat. Az AMPL szerzői 1993-ban elnyerték az Operations Research Society of America díját. Az AMPL nem közvetlenül oldja meg a problémákat, hanem megfelelő külső "megoldókat" hív meg nyílt forráskódú és kereskedelmi egyaránt (CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, KNITRO és LGO). A problémák nl-fájlok formájában kerülnek át a megoldókhoz. Az AMPL-t több mint 200 vállalati ügyfél, valamint kormányzati ügynökségek és tudományos intézmények használják. Az AMPL egyik előnye, hogy szintaxisa hasonló az optimalizálási problémák matematikai jelöléséhez. Ez lehetővé teszi egy optimalizálási probléma nagyon tömör és könnyen olvasható meghatározását. A NEOS szerveren (korábban az Argonne National Laboratory, jelenleg a Wisconsini Egyetem, a Madison University of Wisconsin, Madison[3]) elérhető számos modern megoldó fogadja az AMPL bevitelt. A NEOS statisztikák szerint az AMPL a legnépszerűbb formátum a matematikai programozási problémák bemutatására.

Funkciók

Az AMPL a deklaratív és a kötelező programozási stílusokat egyesíti. Az optimalizálási modellek egy deklaratív nyelv elemeinek felhasználásával készülnek: halmazok, skaláris és többdimenziós paraméterek, döntési változók, célfüggvények és megszorítások, amelyek lehetővé teszik a legtöbb probléma rövid leírását a matematikai optimalizálás területén. Az AMPL-ben elérhető eljárások és operátorok lehetővé teszik: - adatok cseréjét külső adatforrásokkal, például táblázatokkal, adatbázisokkal, XML-lel, CSV-vel és szöveges fájlokkal; - Optimalizációs modell adatok elő- és utófeldolgozása; - Hibrid algoritmusok alkalmazása olyan típusú problémák megoldására, amelyekre nincs közvetlen hatékony megoldó; - Külön modell és adatok, ami nagymértékben leegyszerűsíti a modellek és megoldások újrafelhasználását és leegyszerűsíti a nagyszabású optimalizálási problémák felépítését;

Az AMPL a feladattípusok széles skáláját támogatja, beleértve:

A megoldóval való interakció egy jól definiált interfészen keresztül történik nl .

Elérhetőség

Az AMPL számos népszerű 32 bites és 64 bites operációs rendszerhez elérhető , beleértve a Linuxot , a macOS -t , a Solarist , az AIX -et és a Windows -t . [2] A Translator egy szabadalmaztatott szoftver, amelyet az AMPL Optimization LLC tart fenn. Azonban számos online szolgáltatás kínál ingyenes modellezési eszközöket és megoldásokat AMPL használatával. [3] [4] Korlátozott funkcionalitású ingyenes hallgatói verzió, valamint egyetemi kurzusokhoz ingyenes, teljes értékű verzió is elérhető. [5]

Az AMPL a Microsoft Excelből a SolverStudio Excel bővítményen keresztül használható.

Az AMPL Solver (ASL) könyvtár, amely lehetővé teszi az nl fájlok olvasását és automatikus megkülönböztetést biztosít, nyílt forráskódú. Sok megoldóban használják az AMPL kapcsolat megvalósítására.

Történelem

Ez a táblázat fontos mérföldköveket jelent az AMPL történetében.

Időszak Fő események
1985 Az AMPL-t megtervezték és megvalósították [6]
1990 Az AMPL modellező nyelvet leíró cikk a Management Science folyóiratban jelent meg [7] .
1991 Az AMPL támogatja a nemlineáris programozást és az automatikus differenciálást
1993 Robert Furer, David Gay és Brian Kernighan ORSA/CSTS [8] díjat kapott az Amerikai Operációkutató Társaságtól a matematikai programozási rendszerek és az AMPL modellezési nyelv tervezésén végzett munkájukért.
1995 Kiterjesztések darabonkénti lineáris és hálózati struktúrák ábrázolásához
1995 Szkript konstrukciók
1997 Kibővített támogatás a nemlineáris megoldók számára
1998 Az AMPL támogatja a komplementaritáselmélet problémáit
2000 Relációs adatbázis- és táblázatelérés
2002 Kényszer programozás támogatása [9]
2003 Az AMPL Optimization LLC-t az AMPL feltalálói, Robert Furer, David Gay és Brian Kernighan alapították. Az új cég átvette az AMPL modellezési nyelv fejlesztését és karbantartását a Lucent Technologies, Inc.-től.
2005 Elindult az AMPL modellezési nyelvvel foglalkozó Google Csoport [10]
2008 Kestrel: AMPL interfész a NEOS szerverhez
2011 AMPL tanfolyamokhoz
2012 Robert Furer, David Gay és Brian Kernighan a 2012-es INFORMS Impact díjjal jutalmazták, mint az egyik legfontosabb algebrai modellező nyelv megalkotói. [tizenegy]
2012 Az AMPL könyv ingyenes online [12]
2012 AMPL "logikai" és korlátozott programozási bővítmények
2013 Elérhetővé válik egy új, többplatformos integrált fejlesztői környezet (IDE) az AMPL -hez [13]
2015 AMPL API a MATLAB-hoz
2016 AMPL-API C++-hoz
2017 AMPL-API Pythonhoz
2018 AMPL-API R-hez
2020 Új AMPL Direct táblázatkezelő felület
2022 Optimalizálás telepítése felhőkben és tárolókban

Mintamodell

A George Danzig - től származó szállítási probléma egy AMPL-modell példájaként szolgál. Ez a feladat megtalálja a legolcsóbb szállítási ütemtervet, amely kielégíti a piaci és a gyári ellátási követelményeket. [tizennégy]

set Növények ; set Markets ; # Üzem kapacitása p esetekben param Kapacitás { p in Plants }; # Kereslet a piacon m in esetekben param Demand { m in Markets }; # Távolság ezer mérföldben param Distance { Plants , Markets }; # Fuvardíj dollárban esetenként ezer mérföldenként param Freight ; # Szállítási költség ezer dollárban esetenként param Szállítási költség { p in Plants , m in Markets } : = Fuvar * Távolság [ p , m ] / 1000 ; # Szállítási mennyiség pls - ben _ _ _ _ _ # Az összes szállítási költség ezer dollárban a költségek minimalizálása : összeg { p üzemekben , m piacokon } Szállítási költség [ p , m ] * szállítás [ p , m ] ; # Tartsa be az ellátási korlátot az üzem p s.t. ellátás { p in Plants }: összeg { m in Markets } szállítmány [ p , m ] <= Kapacitás [ p ]; # Kereslet kielégítése a piaci m s.t. kereslet { m in Markets }: sum { p in Plants } szállítás [ p , m ] >= Kereslet [ m ]; adatok ; set Plants : = seattle san - diego ; set Markets : = new - york chicago topeka ; param Kapacitás : = seattle 350 san - diego 600 ; param Kereslet : = new york 325 chicago 300 topeka 275 ; _ param Távolság : new - york chicago topeka : = seattle 2,5 1,7 1,8 san - diego 2,5 1,8 1,4 ; param Teherszállítás : = 90 ;

Megoldók

Íme egy részleges lista az AMPL által támogatott megoldókról: [15]

megoldó Támogatott problématípusok
APOPT vegyes egészszámú nemlineáris programozás
Artelys Knitro lineáris, másodfokú és nemlineáris programozás
Bonmin vegyes egészszámú nemlineáris programozás
BPMPD lineáris és másodfokú programozás
COIN-OR CBC vegyes egészszámú programozás
COIN-OR CLP lineáris programozás
CONOPT nemlineáris programozás
[ 16] vegyes egészszámú nemlineáris programozás (MINLP)
CPLEX lineáris, másodfokú, másodrendű kúp és vegyes egész programozás
CPLEX CP Optimizer [17] kényszerprogramozás
SZŰRŐ nemlineáris programozás
FortMP lineáris, másodfokú és vegyes egész programozás
Gecode [18] kényszerprogramozás
IPOPT nemlineáris programozás
JaCoP [19] kényszerprogramozás
LGO [20] globális és lokális nemlineáris optimalizálás
lp_solve [21] lineáris és vegyes egész programozás
MINOS lineáris és nemlineáris programozás
MINTO vegyes egészszámú programozás
MOSEK lineáris, vegyes egész lineáris, másodfokú, vegyes egész négyzetes, négyzetesen korlátos, kúpos és konvex nemlineáris programozás
Octeract motor Mindenféle optimalizálási probléma differenciális vagy integrál kifejezések nélkül, beleértve a nem folytonos problémákat a minimum és max elemi függvényekkel.
SCIP vegyes egészszámú programozás
SNOPT nemlineáris programozás
Sulum [22] lineáris és vegyes egész programozás
WORHP nemlineáris programozás
XA lineáris és vegyes egész programozás
Expressz lineáris és konvex másodfokú optimalizálás és vegyes egész megfelelőik

Ökoszisztéma térkép

Kattintson a térképre az interaktív verzió megnyitásához

Lásd még

  • sol (formátum)
  • A GNU MathProg (korábbi nevén GMPL) az AMPL egy részhalmaza, amelyet a GNU Linear Programming Suite [23] támogat .

Ajánlások

Jegyzetek

  1. Fourer, Robert (2002). „Az algebrai modellező nyelv kiterjesztése a kényszerprogramozás támogatására” . INFORMÁCIÓ A Számítástechnikai folyóirat . 14 (4): 322-344. DOI : 10.1287/ijoc.14.4.322.2825 .
  2. Platformok . AMPL Optimizations Inc. . Letöltve: 2022. május 14. Az eredetiből archiválva : 2022. május 14.
  3. NEOS Server for Optimization . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2011. május 6..
  4. Próbáld ki az AMPL-t! . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2011. június 18.
  5. AMPL letöltések . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2015. május 26..
  6. Hiba: a paraméter nincs beállítva a {{ kiadvány }} sablonban . - ISBN 978-0-534-38809-6 . Fourer, Robert ; Meleg, David M ; Kernighan, Brian W (2003). AMPL: egy modellező nyelv matematikai programozáshoz . USA: Duxbury Press/Brooks/Cole Publishing Company. ISBN |заглавие= 978-0-534-38809-6.
  7. Fourer, Robert (1990). „A modellező nyelv matematikai programozáshoz” (PDF) . Vezetéstudomány . 36 (5): 519–554–83. DOI : 10.1287/mnsc.36.5.519 . Archivált (PDF) az eredetiből ekkor: 2011-07-16 . Letöltve: 2022-05-14 . Elavult használt paraméter |deadlink=( súgó )
  8. TÁJÉKOZTAT. ICS-INFORMÁLJA . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2006. október 7..
  9. Fourer, Robert (2002). „Az algebrai modellező nyelv kiterjesztése a kényszerprogramozás támogatására” . INFORMÁCIÓ A Számítástechnikai folyóirat . 14 (4): 322-344. DOI : 10.1287/ijoc.14.4.322.2825 . Fourer, Robert ; Gay, David M. (2002). "Az algebrai modellező nyelv kiterjesztése a kényszerprogramozás támogatására" . INFORMÁCIÓ A Számítástechnikai folyóirat . 14 (4): 322–344. CiteSeerX  10.1.1.8.9699 . doi : 10.1287/ijoc.14.4.322.2825 .
  10. Google Csoportok . Letöltve: 2022. május 14. Az eredetiből archiválva : 2013. május 26..
  11. TÁJÉKOZTAT. INFORMÁCIÓ Impact díj . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2013. október 22..
  12. Ingyenesen letölthető - AMPL: A modellező nyelv matematikai programozáshoz . Letöltve: 2021. március 5. Az eredetiből archiválva : 2022. május 20.
  13. Google Csoportok . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2019. május 31.
  14. Hiba: a paraméter nincs beállítva a {{ kiadvány }} sablonban . ISBN 978-1-4008-8417-9 . |заглавие=
  15. Solvers-AMPL . Letöltve: 2018. január 21. Az eredetiből archiválva : 2014. február 27..
  16. Couenne . Hozzáférés dátuma: 2013. október 27. Az eredetiből archiválva : 2013. október 29.
  17. mp/solvers/ilogcp a master ampl/mp GitHubnál . GitHub . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2022. május 14.
  18. mp/solvers/gecode a master ampl/mp GitHubon . GitHub . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2022. május 14.
  19. mp/solvers/jacop és a master ampl/mp GitHub . GitHub . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2022. május 14.
  20. LGO-AMPL . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2015. augusztus 11..
  21. Az AMPL lpsolve használatával . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2022. május 14.
  22. mp/solvers/sulum at master ampl/mp GitHub . GitHub . Letöltve: 2015. augusztus 11. Az eredetiből archiválva : 2022. május 14.
  23. A GLPK hivatalos oldala . Letöltve: 2020. szeptember 17. Az eredetiből archiválva : 2022. május 30.

Külső linkek

Sablon: Matematikai optimalizáló szoftver