AMPL - AMPL
Paradigma | Multi-paradigma : deklarativní , imperativní |
---|---|
Navrhl |
Robert Fourer David Gay Brian Kernighan Bell Labs |
Vývojář | AMPL Optimization, Inc. |
Poprvé se objevil | 1985 |
Stabilní uvolnění | 20210906 / 6. září 2021
|
OS | Cross-platform : Linux , macOS , Solaris , AIX , Windows |
Licence |
Proprietární (překladač), bezplatný a open-source (AMPL Solver Library) |
Rozšíření názvu souboru | .mod, .dat, .run |
webová stránka | www |
Ovlivněn | |
AWK , C | |
Ovlivněn | |
Pyomo |
AMPL ( A Mathematical Programming Language ) je algebraický modelovací jazyk pro popis a řešení problémů s vysokou složitostí pro rozsáhlé matematické výpočty (tj. Problémy s optimalizací a plánováním ve velkém měřítku ). Byl vyvinut Robertem Fourerem , Davidem Gayem a Brianem Kernighanem v Bell Laboratories . AMPL podporuje desítky řešení , open source i komerčního softwaru , včetně CBC, CPLEX , FortMP , Gurobi , MINOS , IPOPT , SNOPT , KNITRO a LGO. Problémy jsou předávány řešitelům jako nl soubory. AMPL používá více než 100 firemních klientů a 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 čitelnou definici problémů v oblasti optimalizace . Mnoho moderních řešitelů dostupných na serveru NEOS (dříve hostováno v Národní laboratoři Argonne , v současné době hostované na University of Wisconsin, Madison ) přijímá vstup AMPL. Podle statistik NEOS je AMPL nejpopulárnějším formátem pro reprezentaci problémů s matematickým programováním.
Funkce
AMPL nabízí kombinaci deklarativních a imperativních stylů programování. Formulace optimalizačních modelů probíhá prostřednictvím deklarativních jazykových prvků, jako jsou sady, skalární a vícerozměrné parametry, rozhodovací proměnné, cíle a omezení , které umožňují výstižný popis většiny problémů v oblasti matematické optimalizace.
Procedury a prohlášení o řízení toku jsou k dispozici v AMPL pro
- výměnu dat s externími zdroji dat, jako jsou tabulky , databáze , XML a textové soubory
- úkoly před a po zpracování dat kolem optimalizačních modelů
- konstrukce hybridních algoritmů pro typy problémů, pro které nejsou k dispozici žádná přímo účinná řešení.
Pro podporu opětovného použití a zjednodušení konstrukce rozsáhlých problémů s optimalizací umožňuje AMPL oddělení modelu a dat.
AMPL podporuje širokou škálu typů problémů, mezi nimi:
- Lineární programování
- Kvadratické programování
- Nelineární programování
- Programování smíšených celých čísel
- Kvadratické programování se smíšenými čísly s nebo bez konvexních kvadratických omezení
- Nelineární programování se smíšenými čísly
- Programování kuželů druhého řádu
- Globální optimalizace
- Semidefinitní problémy programování s nerovnostmi bilineární matice
- Problémy teorie komplementarity (MPEC) v diskrétních nebo spojitých proměnných
- Omezení programování
AMPL vyvolá řešitele v samostatném procesu, který má tyto výhody:
- Uživatel může proces řešení kdykoli přerušit
- Chyby řešiče neovlivňují tlumočníka
- 32bitovou verzi AMPL lze použít s 64bitovým řešičem a naopak
Interakce s řešičem se provádí prostřednictvím dobře definovaného rozhraní nl .
Dostupnost
AMPL je k dispozici pro mnoho populárních 32- a 64bitových operačních systémů včetně Linuxu , macOS , Solaris , AIX a Windows . Překladač je patentovaný software spravovaný společností AMPL Optimization LLC. Existuje však několik online služeb, které poskytují bezplatné modelování a řešení pomocí AMPL. K dispozici je také bezplatná studentská verze s omezenými funkcemi a bezplatná plnohodnotná verze pro akademické kurzy.
AMPL lze používat z aplikace Microsoft Excel prostřednictvím doplňku SolverStudio Excel.
Knihovna AMPL Solver Library (ASL), která umožňuje čtení souborů nl a poskytuje automatické rozlišení, je open-source. Používá se v mnoha řešičích k implementaci připojení AMPL.
Historie stavu
Tato tabulka představuje významné kroky v historii AMPL.
Rok | Přednosti |
---|---|
1985 | AMPL byl navržen a implementován |
1990 | Příspěvek popisující modelovací jazyk AMPL byl publikován v Management Science |
1991 | AMPL podporuje nelineární programování a automatické rozlišování |
1993 | Robert Fourer , David Gay a Brian Kernighan byli oceněni Cenou ORSA/CSTS od Operační výzkumné společnosti Ameriky za spisy o návrhu matematických programovacích systémů a modelovacím jazyce AMPL |
1995 | Rozšíření pro reprezentaci po částech lineárních a síťových struktur |
1995 | Skriptovací konstrukce |
1997 | Vylepšená podpora pro nelineární řešiče |
1998 | AMPL podporuje problémy teorie komplementarity |
2000 | Relační databáze a přístup k tabulkám |
2002 | Podpora pro programování omezení |
2003 | AMPL Optimization LLC byla založena vynálezci AMPL, Robertem Fourerem, Davidem Gayem a Brianem Kernighanem. Nová společnost převzala vývoj a podporu AMPL modelovací jazyk od Lucent Technologies, Inc . |
2005 | AMPL Modeling Language Skupina Google byla otevřena |
2008 | Kestrel: Představeno rozhraní AMPL k serveru NEOS |
2012 | Robert Fourer , David Gay a Brian Kernighan získali Cenu INFORMS Impact Prize 2012 za původce jednoho z nejdůležitějších algebraických modelovacích jazyků. |
2012 | Kniha AMPL se stává volně dostupnou online |
2013 | Bude k dispozici nové multiplatformní integrované vývojové prostředí (IDE) pro AMPL |
Ukázkový model
K poskytnutí vzorového modelu AMPL se používá problém s přepravou od George Dantziga . Tento problém zjistí nejlevnější plán přepravy, který splňuje požadavky na trzích a spotřebním materiálu v továrnách.
set Plants;
set Markets;
# Capacity of plant p in cases
param Capacity{p in Plants};
# Demand at market m in cases
param Demand{m in Markets};
# Distance in thousands of miles
param Distance{Plants, Markets};
# Freight in dollars per case per thousand miles
param Freight;
# Transport cost in thousands of dollars per case
param TransportCost{p in Plants, m in Markets} :=
Freight * Distance[p, m] / 1000;
# Shipment quantities in cases
var shipment{Plants, Markets} >= 0;
# Total transportation costs in thousands of dollars
minimize cost:
sum{p in Plants, m in Markets} TransportCost[p, m] * shipment[p, m];
# Observe supply limit at plant p
s.t. supply{p in Plants}: sum{m in Markets} shipment[p, m] <= Capacity[p];
# Satisfy demand at market m
s.t. demand{m in Markets}: sum{p in Plants} shipment[p, m] >= Demand[m];
data;
set Plants := seattle san-diego;
set Markets := new-york chicago topeka;
param Capacity :=
seattle 350
san-diego 600;
param Demand :=
new-york 325
chicago 300
topeka 275;
param Distance : new-york chicago topeka :=
seattle 2.5 1.7 1.8
san-diego 2.5 1.8 1.4;
param Freight := 90;
Řešitelé
Zde je částečný seznam řešičů podporovaných AMPL:
Řešitel | Podporované typy problémů |
---|---|
PŘIJMOUT | nelineární programování celých čísel |
Artelys Knitro | lineární, kvadratické a nelineární programování |
Bonmin | nelineární programování celých čísel |
BPMPD | lineární a kvadratické programování |
COIN-NEBO CBC | smíšené celočíselné programování |
MINCE NEBO CLP | lineární programování |
CONOPT | nelineární programování |
Couenne | nelineární programování celých čísel (MINLP) |
CPLEX | lineární, kvadratické, kužel druhého řádu a smíšené celočíselné programování |
CPLEX CP Optimizer | omezovací programování |
FILTR | nelineární programování |
FortMP | lineární, kvadratické a smíšené celočíselné programování |
Gecode | omezovací programování |
Gurobi | lineární, kvadratické, kužel druhého řádu a smíšené celočíselné programování |
IPOPT | nelineární programování |
JaCoP | omezovací programování |
LGO | globální a místní nelineární optimalizace |
lp_solve | lineární a smíšené celočíselné programování |
MINO | 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é , kónické a konvexní nelineární programování |
Motor Octeract | Všechny typy optimalizačních problémů bez diferenciálních nebo integrálních pojmů, včetně nespojitých problémů s minimální a maximální elementární funkcí. |
SCIP | smíšené celočíselné programování |
SNOPT | nelineární programování |
Sulum | lineární a smíšené celočíselné programování |
WORHP | nelineární programování |
XA | lineární a smíšené celočíselné programování |
Xpress | lineární a konvexní kvadratická optimalizace a jejich smíšené celočíselné protějšky |
Viz také
- sol (formát)
- GNU MathProg (dříve známý jako GMPL) je podmnožinou AMPL podporovanou GNU lineární programovací sadou