AMPL | |
---|---|
Clasa de limba | Multiparadigma : declarativ , imperativ |
Aparut in | 1985 |
Dezvoltator | AMPL Optimization, Inc. |
Extensie de fișier | .mod, .datsau.run |
Eliberare | 20220323 (23 martie 2022 ) |
A fost influențat | A.W.K. , C |
influențat | Pyomo |
Licență |
Freemium (traducător), sursă deschisă (biblioteca de soluții AMPL) |
Site-ul web | ampli.com |
OS | Multi-platformă : Linux , macOS , Solaris , AIX , Windows |
AMPL (abreviere pentru A Mathematical Programming Language) este un limbaj de nivel înalt pentru modelarea algebrică și reprezentarea problemelor la scară largă de mare complexitate. AMPL a fost dezvoltat de Robert Fourer, David Gay și Brian Kernighan la Bell Laboratories în 1985 pentru a descrie și rezolva probleme complexe de optimizare și programare. Autorii AMPL au primit premiul Operations Research Society of America în 1993. AMPL nu rezolvă problemele în mod direct, ci invocă „rezolvatori” externi corespunzători, atât cu sursă deschisă, cât și comerciale (CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, KNITRO și LGO). Problemele sunt transferate către rezolvatori sub formă de fișiere nl. AMPL este utilizat de peste 200 de clienți corporativi, precum și de agenții guvernamentale și instituții academice. Unul dintre avantajele AMPL este asemănarea sintaxei sale cu notația matematică a problemelor de optimizare. Acest lucru permite o definiție foarte concisă și ușor de citit a unei probleme de optimizare. Multe soluții moderne disponibile pe serverul NEOS (găzduite anterior la Laboratorul Național Argonne, acum găzduite la Universitatea din Wisconsin, Universitatea Madison din Wisconsin, Madison[3]) acceptă intrarea AMPL. Conform statisticilor NEOS, AMPL este cel mai popular format pentru prezentarea problemelor de programare matematică.
AMPL combină stilurile de programare declarative și imperative . Modelele de optimizare sunt formulate folosind elemente ale unui limbaj declarativ: mulţimi, parametri scalari şi multidimensionali, variabile de decizie, funcţii obiective şi constrângeri, care permit descrierea pe scurt a majorităţii problemelor din domeniul optimizării matematice. Procedurile și operatorii disponibili în AMPL vă permit: - să faceți schimb de date cu surse externe de date precum foi de calcul, baze de date, fișiere XML, CSV și text; - Efectuează pre- și post-procesare a datelor modelului de optimizare; - Implementeaza algoritmi hibrizi pentru a rezolva tipuri de probleme pentru care nu exista rezolvatori directi eficienti; - Model și date separate, ceea ce simplifică foarte mult reutilizarea modelelor și soluțiilor și simplifică construirea problemelor de optimizare la scară largă;
AMPL acceptă o gamă largă de tipuri de sarcini, inclusiv:
Interacțiunea cu rezolvatorul se face printr-o interfață bine definită nl .
AMPL este disponibil pentru multe sisteme de operare populare pe 32 și 64 de biți , inclusiv Linux , macOS , Solaris , AIX și Windows . [2] Translator este un software proprietar întreținut de AMPL Optimization LLC. Cu toate acestea, există mai multe servicii online care oferă instrumente și soluții gratuite de modelare folosind AMPL. [3] [4] Sunt disponibile, de asemenea, o versiune gratuită pentru studenți cu funcționalități limitate și o versiune gratuită cu funcții complete pentru cursuri academice. [5]
AMPL poate fi utilizat din Microsoft Excel prin programul de completare SolverStudio Excel.
Biblioteca AMPL Solver (ASL), care vă permite să citiți fișiere nl și oferă diferențiere automată, este open source. Este folosit în multe soluții pentru a implementa conexiunea AMPL.
Acest tabel reprezintă repere importante în istoria AMPL.
Perioadă | Evenimente principale |
---|---|
1985 | AMPL a fost proiectat și implementat [6] |
1990 | Un articol care descrie limbajul de modelare AMPL a fost publicat în revista Management Science [7] . |
1991 | AMPL acceptă programarea neliniară și diferențierea automată |
1993 | Robert Furer, David Gay și Brian Kernighan au primit premiul ORSA/CSTS [8] de către Operations Research Society of America pentru munca lor privind proiectarea sistemelor de programare matematică și limbajul de modelare AMPL. |
1995 | Extensii pentru reprezentarea structurilor liniare și de rețea pe bucăți |
1995 | Construcții de script |
1997 | Suport extins pentru rezolvatori neliniari |
1998 | AMPL susține problemele teoriei complementarității |
2000 | Acces la baze de date relaționale și foi de calcul |
2002 | Suport pentru programarea cu constrângeri [9] |
2003 | AMPL Optimization LLC a fost fondată de inventatorii AMPL Robert Furer, David Gay și Brian Kernighan. Noua companie a preluat dezvoltarea și întreținerea limbajului de modelare AMPL de la Lucent Technologies, Inc. |
2005 | Grupul Google pentru limbajul de modelare AMPL a fost lansat [10] |
2008 | Kestrel: S-a introdus interfața AMPL pentru serverul NEOS |
2011 | AMPL pentru cursuri |
2012 | Robert Furer, David Gay și Brian Kernighan au primit premiul INFORMS Impact 2012 în calitate de creatori ai unuia dintre cele mai importante limbaje de modelare algebrică. [unsprezece] |
2012 | Cartea AMPL este gratuită online [12] |
2012 | AMPL „Logic” și extensii de programare restricționată |
2013 | Un nou mediu de dezvoltare integrat (IDE) multiplatformă pentru AMPL devine disponibil [13] |
2015 | API-ul AMPL pentru MATLAB |
2016 | AMPL-API pentru C++ |
2017 | AMPL-API pentru Python |
2018 | AMPL-API pentru R |
2020 | Noua interfață pentru foi de calcul AMPL Direct |
2022 | Implementarea optimizării în nori și containere |
Problema de transport de la George Dantzig este folosită pentru a oferi un exemplu de model AMPL. Această sarcină găsește programul de expediere cu cel mai mic cost care satisface cerințele pieței și de aprovizionare din fabrică. [paisprezece]
set Plante ; setați piețele ; # Capacitatea instalației p în cazuri param Capacitate { p în plante }; # Cererea la piața m în cazuri param Cererea { m în piețe }; # Distanța în mii de mile param Distanță { Plants , Markets }; # Marfă în dolari pe caz la mie de mile param Marfă ; # Costul de transport în mii de dolari per caz param TransportCost { p în Uzini , m în Pieţe } : = Marfă * Distanţa [ p , m ] / 1000 ; # Cantitatea de expediere în var vă rugăm . _ _ _ _ # Costurile totale de transport în mii de dolari minimizează costul : suma { p în Plante , m în Piețe } TransportCost [ p , m ] * expediere [ p , m ]; # Respectați limita de alimentare la instalație p s.t. aprovizionare { p în plante }: suma { m în piețe } expediere [ p , m ] <= Capacitate [ p ]; # Satisface cererea de pe piață m s.t. cerere { m în piețe }: suma { p în plante } livrare [ p , m ] >= Cerere [ m ]; date ; set Plants : = seattle san - diego ; set Piețe : = new - york chicago topeka ; param Capacitate : = seattle 350 san - diego 600 ; param Cerere : = new - york 325 chicago 300 topeka 275 ; param Distanta : new - york chicago topeka : = seattle 2.5 1.7 1.8 san - diego 2.5 1.8 1.4 ; param Marfa : = 90 ;Iată o listă parțială a solutorilor acceptați de AMPL: [15]
rezolvator | Tipuri de probleme acceptate |
---|---|
APOPT | programare neliniară cu numere întregi mixte |
Artelys Knitro | programare liniară, pătratică și neliniară |
Bonmin | programare neliniară cu numere întregi mixte |
BPMPD | programare liniară și pătratică |
COIN-SAU CBC | programare cu numere întregi mixte |
COIN-SAU CLP | programare liniară |
CONOPT | programare neliniară |
[ 16] | programare neliniară cu numere întregi mixte (MINLP) |
CPLEX | programare liniară, pătratică, con de ordinul doi și cu numere întregi mixte |
CPLEX CP Optimizer [17] | programarea cu constrângeri |
FILTRU | programare neliniară |
FortMP | programare liniară, pătratică și mixtă cu numere întregi |
Gecode [18] | programarea cu constrângeri |
IPOPT | programare neliniară |
JaCoP [19] | programarea cu constrângeri |
LGO [20] | optimizare neliniară globală și locală |
lp_solve [21] | programare liniară și mixtă cu numere întregi |
MINOS | programare liniară și neliniară |
MINTO | programare cu numere întregi mixte |
MOSEK | programare neliniară liniară, întreg mixt liniar, pătratic, întreg mixt pătratic, mărginit pătratic, conic și convex |
Motor Octeract | Toate tipurile de probleme de optimizare fără termeni diferenţiali sau integrali, inclusiv probleme discontinue cu funcţii elementare min şi max . |
SCIP | programare cu numere întregi mixte |
SNOPT | programare neliniară |
Sulum [22] | programare liniară și mixtă cu numere întregi |
WORHP | programare neliniară |
XA | programare liniară și mixtă cu numere întregi |
Expres | optimizarea pătratică liniară și convexă și omologii lor întregi mixți |
Faceți clic pe hartă pentru a deschide o versiune interactivă
Model:Software de optimizare matematică