AMPL - AMPL

AMPL
AMPL (obal učebnice) .jpg
Paradigma Multi-paradigma : deklarativní , imperativní
Navrhl Robert Fourer
David Gay
Brian Kernighan
Bell Labs
Vývojář AMPL Optimization, Inc.
Poprvé se objevil 1985 ; Před 36 lety ( 1985 )
Stabilní uvolnění
20210906 / 6. září 2021 ; Před 35 dny ( 2021-09-06 )
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 .ampl .com
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:

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

Statistiky vstupu NEOS za leden 2011.

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é

Reference

externí odkazy