AMPL | |
---|---|
Jazyková třída | Multiparadigma : deklarativní , imperativní |
Objevil se v | 1985 |
Vývojář | AMPL Optimization, Inc. |
Přípona souboru | .mod.datnebo _.run |
Uvolnění | 20220323 (23. března 2022 ) |
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í.
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 .
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.
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 |
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 ;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 |
Kliknutím na mapu otevřete interaktivní verzi
Šablona: Software pro matematickou optimalizaci