AMPL | |
---|---|
Språkklass | Multiparadigm : Deklarativ , imperativ |
Framträdde i | 1985 |
Utvecklaren | AMPL Optimization, Inc. |
Filtillägg _ | .mod, .dateller.run |
Släpp | 20220323 (23 mars 2022 ) |
Blivit påverkad | A.W.K. , C |
påverkas | Pyomo |
Licens |
Freemium (översättare), öppen källkod (AMPL Solver Library) |
Hemsida | ampl.com |
OS | Plattformsoberoende : Linux , macOS , Solaris , AIX , Windows |
AMPL (förkortning för A Mathematical Programming Language) är ett högnivåspråk för algebraisk modellering och representation av storskaliga problem med hög komplexitet. AMPL utvecklades av Robert Fourer, David Gay och Brian Kernighan vid Bell Laboratories 1985 för att beskriva och lösa komplexa optimerings- och schemaläggningsproblem. Författarna till AMPL tilldelades Operations Research Society of America Prize 1993. AMPL löser inte problem direkt, utan anropar lämpliga externa "lösare" både med öppen källkod och kommersiella (CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, KNITRO och LGO). Problem överförs till lösare i form av nl-filer. AMPL används av över 200 företagskunder samt statliga myndigheter och akademiska institutioner. En av fördelarna med AMPL är likheten mellan dess syntax och den matematiska notationen av optimeringsproblem. Detta möjliggör en mycket kortfattad och lättläst definition av ett optimeringsproblem. Många moderna lösare tillgängliga på NEOS-servern (tidigare värd på Argonne National Laboratory, nu värd vid University of Wisconsin, Madison University of Wisconsin, Madison[3]) accepterar AMPL-indata. Enligt NEOS statistik är AMPL det mest populära formatet för att presentera matematiska programmeringsproblem.
AMPL kombinerar deklarativa och imperativa programmeringsstilar . Optimeringsmodeller formuleras med hjälp av delar av ett deklarativt språk: uppsättningar, skalära och flerdimensionella parametrar, beslutsvariabler, objektiva funktioner och begränsningar, som gör det möjligt att kortfattat beskriva de flesta problem inom området matematisk optimering. De procedurer och operatörer som finns tillgängliga i AMPL tillåter dig att: - utbyta data med externa datakällor såsom kalkylblad, databaser, XML, CSV och textfiler; - Utföra för- och efterbearbetning av optimeringsmodelldata; - Distribuera hybridalgoritmer för att lösa typer av problem för vilka det inte finns några direkta effektiva lösare; - Separat modell och data, vilket avsevärt förenklar återanvändningen av modeller och lösningar och förenklar konstruktionen av storskaliga optimeringsproblem;
AMPL stöder ett brett utbud av uppgiftstyper, inklusive:
Interaktion med lösaren sker genom ett väldefinierat gränssnitt nl .
AMPL är tillgängligt för många populära 32-bitars och 64-bitars operativsystem , inklusive Linux , macOS , Solaris , AIX och Windows . [2] Translator är proprietär programvara som underhålls av AMPL Optimization LLC. Det finns dock flera onlinetjänster som tillhandahåller gratis modelleringsverktyg och lösningar med AMPL. [3] [4] En gratis studentversion med begränsad funktionalitet och en gratis fullfjädrad version för akademiska kurser är också tillgängliga. [5]
AMPL kan användas från Microsoft Excel via SolverStudio Excel-tillägget.
AMPL Solver-biblioteket (ASL), som låter dig läsa nl-filer och ger automatisk differentiering, är öppen källkod. Det används i många lösare för att implementera AMPL-anslutningen.
Denna tabell representerar viktiga milstolpar i AMPL:s historia.
Period | Huvudevenemang |
---|---|
1985 | AMPL designades och implementerades [6] |
1990 | En artikel som beskriver AMPL-modelleringsspråket publicerades i tidskriften Management Science [7] . |
1991 | AMPL stöder icke-linjär programmering och automatisk differentiering |
1993 | Robert Furer, David Gay och Brian Kernighan tilldelades utmärkelsen ORSA/CSTS [8] av Operations Research Society of America för deras arbete med design av matematiska programmeringssystem och AMPL-modelleringsspråket. |
1995 | Tillägg för att representera bitvis linjära strukturer och nätverksstrukturer |
1995 | Skriptkonstruktioner |
1997 | Utökat stöd för icke-linjära lösare |
1998 | AMPL stödjer problemen med komplementaritetsteorin |
2000 | Relationell databas och åtkomst till kalkylblad |
2002 | Stöd för begränsningsprogrammering [9] |
2003 | AMPL Optimization LLC grundades av AMPL-uppfinnarna Robert Furer, David Gay och Brian Kernighan. Det nya företaget tog över utvecklingen och underhållet av modellspråket AMPL från Lucent Technologies, Inc. |
2005 | Google Group on AMPL Modeling Language lanseras [10] |
2008 | Kestrel: AMPL-gränssnitt för NEOS-server introducerat |
2011 | AMPL för kurser |
2012 | Robert Furer, David Gay och Brian Kernighan tilldelades 2012 INFORMS Impact Prize som skaparna av ett av de viktigaste algebraiska modelleringsspråken. [elva] |
2012 | AMPL-boken går gratis online [12] |
2012 | AMPL "Logic" och Restricted Programming Extensions |
2013 | En ny plattformsoberoende integrerad utvecklingsmiljö (IDE) för AMPL blir tillgänglig [13] |
2015 | AMPL API för MATLAB |
2016 | AMPL-API för C++ |
2017 | AMPL-API för Python |
2018 | AMPL-API för R |
2020 | Nytt AMPL Direct-kalkylbladsgränssnitt |
2022 | Implementera optimering i moln och containrar |
Transportproblemet från George Dantzig används för att ge ett exempel på en AMPL-modell. Den här uppgiften hittar det billigaste fraktschemat som uppfyller marknadens och fabrikens leveranskrav. [fjorton]
set Växter ; ställa in Marknader ; # Kapacitet för anläggning p i fall param Kapacitet { p i växter }; # Efterfrågan på marknad m i fall param Efterfrågan { m på marknader }; # Distans i tusentals miles param Distance { Plants , Markets }; # Frakt i dollar per fall per tusen miles param Frakt ; # Transportkostnad i tusentals dollar per fall param TransportCost { p i växter , m i marknader } : = Frakt * Avstånd [ p , m ] / 1000 ; # Leverans kvantitet i var pls . _ _ _ _ # Totala transportkostnader i tusentals dollar minimerar kostnaden : summa { p in Plants , m in Markets } TransportCost [ p , m ] * shipment [ p , m ]; # Beakta utbudsgränsen vid anläggningen p s.t. försörjning { p in Plants }: summa { m in Markets } sändning [ p , m ] <= Kapacitet [ p ]; # Tillfredsställa efterfrågan på marknaden m s.t. demand { m in Markets }: summa { p in Plants } sändning [ p , m ] >= Demand [ m ]; data ; set Växter : = seattle san - diego ; set Marknader : = new - york chicago topeka ; param Kapacitet : = seattle 350 san - diego 600 ; param Efterfrågan : = new - york 325 chicago 300 topeka 275 ; param Avstånd : new - york chicago topeka : = seattle 2,5 1,7 1,8 san - diego 2,5 1,8 1,4 ; param Frakt : = 90 ;Här är en ofullständig lista över lösare som stöds av AMPL: [15]
lösare | Problemtyper som stöds |
---|---|
APOPT | blandad heltals icke-linjär programmering |
Artelys Knitro | linjär, kvadratisk och icke-linjär programmering |
Bonmin | blandad heltals icke-linjär programmering |
BPMPD | linjär och kvadratisk programmering |
MYNT-ELLER CBC | blandad heltalsprogrammering |
MYNT-ELLER CLP | linjär programmering |
CONOPT | icke-linjär programmering |
[ 16] | blandad heltals icke-linjär programmering (MINLP) |
CPLEX | linjär, kvadratisk, andra ordningens kon och blandat heltalsprogrammering |
CPLEX CP Optimizer [17] | begränsningsprogrammering |
FILTRERA | icke-linjär programmering |
FortMP | linjär, kvadratisk och blandad heltalsprogrammering |
Gecode [18] | begränsningsprogrammering |
IPOPT | icke-linjär programmering |
JaCoP [19] | begränsningsprogrammering |
LGO [20] | global och lokal olinjär optimering |
lp_solve [21] | linjär och blandad heltalsprogrammering |
MINOS | linjär och icke-linjär programmering |
MINTO | blandad heltalsprogrammering |
MOSEK | linjär, blandad heltal linjär, kvadratisk, blandad heltal kvadratisk, kvadratiskt begränsad, konisk och konvex icke-linjär programmering |
Octeract Engine | Alla typer av optimeringsproblem utan differentiella eller integrerade termer, inklusive diskontinuerliga problem med min och max elementära funktioner. |
SCIP | blandad heltalsprogrammering |
SNOPP | icke-linjär programmering |
Sulum [22] | linjär och blandad heltalsprogrammering |
WORHP | icke-linjär programmering |
XA | linjär och blandad heltalsprogrammering |
uttrycka | linjär och konvex kvadratisk optimering och deras blandade heltalsmotsvarigheter |
Klicka på kartan för att öppna en interaktiv version
Mall:Programvara för matematisk optimering