AMPL | |
---|---|
Nyelvóra | Többparadigma : deklaratív , kötelező |
Megjelent | 1985 |
Fejlesztő | AMPL Optimization, Inc. |
Fájlkiterjesztés _ | .mod, .datvagy.run |
Kiadás | 20220323 (2022. március 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.
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 .
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.
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 |
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 ;Í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 |
Kattintson a térképre az interaktív verzió megnyitásához
Sablon: Matematikai optimalizáló szoftver