AMPL | |
---|---|
Kieliluokka | Moniparadigma : deklaratiivinen , pakottava |
Esiintyi | 1985 |
Kehittäjä | AMPL Optimization, Inc. |
Tiedostotunniste _ | .mod, .dattai.run |
Vapauta | 20220323 (23. maaliskuuta 2022 ) |
Vaikutettu | A.W.K. , C |
vaikutti | Pyomo |
Lisenssi |
Freemium (kääntäjä), avoin lähdekoodi (AMPL Solver Library) |
Verkkosivusto | ampl.com |
OS | Monialustaiset : Linux , macOS , Solaris , AIX , Windows |
AMPL (lyhenne sanoista A Mathematical Programming Language) on korkean tason kieli algebralliseen mallintamiseen ja suurten monimutkaisten ongelmien esittämiseen. AMPL:n kehittivät Robert Fourer, David Gay ja Brian Kernighan Bell Laboratoriesissa vuonna 1985 kuvaamaan ja ratkaisemaan monimutkaisia optimointi- ja aikatauluongelmia. AMPL:n kirjoittajat palkittiin Operations Research Society of America -palkinnolla vuonna 1993. AMPL ei ratkaise ongelmia suoraan, vaan kutsuu sopivia ulkoisia "ratkaisijoita" sekä avoimen lähdekoodin että kaupallisiin (CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, KNITRO ja LGO). Tehtävät siirretään ratkaisijalle nl-tiedostoina. AMPL:ää käyttää yli 200 yritysasiakasta sekä valtion virastot ja korkeakoulut. Yksi AMPL:n eduista on sen syntaksin samankaltaisuus optimointiongelmien matemaattisen merkinnän kanssa. Tämä mahdollistaa erittäin tiiviin ja helposti luettavan määritelmän optimointiongelmasta. Monet nykyaikaiset ratkaisijat, jotka ovat saatavilla NEOS-palvelimella (aiemmin Argonne National Laboratoryssa, nyt Wisconsinin yliopistossa, Madisonin Wisconsinin yliopistossa Madisonissa[3]) hyväksyvät AMPL-syötteen. NEOS-tilastojen mukaan AMPL on suosituin muoto matemaattisten ohjelmointiongelmien esittämiseen.
AMPL yhdistää deklaratiiviset ja pakottavat ohjelmointityylit . Optimointimallit muotoillaan käyttämällä deklaratiivisen kielen elementtejä: joukkoja, skalaari- ja moniulotteisia parametreja, päätösmuuttujia, tavoitefunktioita ja rajoitteita, joiden avulla voidaan kuvata lyhyesti useimmat matemaattisen optimoinnin alan ongelmat. AMPL:ssä käytettävissä olevat menettelyt ja operaattorit mahdollistavat: - tietojen vaihdon ulkoisten tietolähteiden, kuten laskentataulukoiden, tietokantojen, XML-, CSV- ja tekstitiedostojen kanssa; - Suorittaa optimointimallitietojen esi- ja jälkikäsittely; - Ota käyttöön hybridialgoritmeja sellaisten ongelmien ratkaisemiseksi, joille ei ole suoria tehokkaita ratkaisijoita; - Erillinen malli ja data, mikä yksinkertaistaa huomattavasti mallien ja ratkaisujen uudelleenkäyttöä ja yksinkertaistaa laajamittaisten optimointiongelmien rakentamista;
AMPL tukee laajaa valikoimaa tehtävätyyppejä, mukaan lukien:
Vuorovaikutus ratkaisijan kanssa tapahtuu hyvin määritellyn käyttöliittymän nl kautta.
AMPL on saatavilla moniin suosittuihin 32- ja 64-bittisiin käyttöjärjestelmiin , mukaan lukien Linux , macOS , Solaris , AIX ja Windows . [2] Kääntäjä on AMPL Optimization LLC:n ylläpitämä ohjelmisto. On kuitenkin olemassa useita online-palveluita, jotka tarjoavat ilmaisia mallinnustyökaluja ja -ratkaisuja AMPL:n avulla. [3] [4] Saatavilla on myös ilmainen opiskelijaversio rajoitetulla toiminnallisuudella ja ilmainen täysi versio akateemisille kursseille. [5]
AMPL:ää voidaan käyttää Microsoft Excelistä SolverStudio Excel -apuohjelman kautta.
AMPL Solver (ASL) -kirjasto, jonka avulla voit lukea nl-tiedostoja ja tarjoaa automaattisen erottelun, on avoimen lähdekoodin kirjasto. Sitä käytetään monissa ratkaisijoissa AMPL-yhteyden toteuttamiseen.
Tämä taulukko edustaa tärkeitä virstanpylväitä AMPL:n historiassa.
Kausi | Päätapahtumat |
---|---|
1985 | AMPL suunniteltiin ja toteutettiin [6] |
1990 | AMPL-mallinnuskieltä kuvaava artikkeli julkaistiin Management Science -lehdessä [7] . |
1991 | AMPL tukee epälineaarista ohjelmointia ja automaattista erottelua |
1993 | Operations Research Society of America myönsi Robert Furerille, David Gaylle ja Brian Kernighanille ORSA/CSTS [8] -palkinnon työstään matemaattisten ohjelmointijärjestelmien ja AMPL-mallinnuskielen suunnittelussa. |
1995 | Laajennukset lineaaristen ja verkkorakenteiden esittämiseen paloittain |
1995 | Käsikirjoitusrakenteet |
1997 | Laajennettu tuki epälineaarisille ratkaisijoille |
1998 | AMPL tukee komplementaarisuusteorian ongelmia |
2000 | Relaatiotietokanta ja taulukkolaskenta |
2002 | Tuki rajoitusohjelmointiin [9] |
2003 | AMPL Optimization LLC:n perustivat AMPL:n keksijät Robert Furer, David Gay ja Brian Kernighan. Uusi yritys otti vastuulleen AMPL-mallinnuskielen kehittämisen ja ylläpidon Lucent Technologies, Inc:ltä. |
2005 | AMPL-mallinnuskielen Google-ryhmä julkaistiin [10] |
2008 | Kestrel: AMPL-liitäntä NEOS-palvelimelle esitelty |
2011 | AMPL kursseille |
2012 | Robert Furer, David Gay ja Brian Kernighan saivat vuoden 2012 INFORMS Impact -palkinnon yhden tärkeimmistä algebrallisista mallinnuskielistä luojina. [yksitoista] |
2012 | AMPL-kirja tulee ilmaiseksi verkossa [12] |
2012 | AMPL "logiikka" ja rajoitetut ohjelmointilaajennukset |
2013 | Uusi cross-platform integroitu kehitysympäristö (IDE) AMPL:lle tulee saataville [13] |
2015 | AMPL API MATLABille |
2016 | AMPL-API C++:lle |
2017 | AMPL-API Pythonille |
2018 | AMPL-API R:lle |
2020 | Uusi AMPL Direct -laskentataulukkokäyttöliittymä |
2022 | Optimoinnin käyttöönotto pilvissä ja säilöissä |
George Danzigin kuljetusongelmaa käytetään esimerkkinä AMPL-mallista. Tämä tehtävä löytää edullisimman toimitusaikataulun, joka täyttää markkinoiden ja tehtaan toimitusvaatimukset. [neljätoista]
asettaa Kasvit ; asettaa Markets ; # Laitoksen kapasiteetti p tapauksissa param Kapasiteetti { p kasveissa }; # Kysyntä markkinoilla m tapauksissa param Demand { m in Markets }; # Etäisyys tuhansina maileina param Etäisyys { Plants , Markets }; # Rahti dollareina per tapaus tuhatta mailia kohden param Rahti ; # Kuljetuskustannukset tuhansissa dollareissa per tapaus Kuljetuskustannukset { p in Plants , m in Markets } : = Rahti * Etäisyys [ p , m ] / 1000 ; # Lähetysmäärä tilauksina _ _ _ _ _ _ _ _ # Kuljetuksen kokonaiskustannukset tuhansissa dollareissa minimoivat kustannukset : summa { p in Plants , m in Markets } Kuljetuskustannukset [ p , m ] * lähetys [ p , m ]; # Noudata tuotantorajaa tehtaalla p s.t. toimitus { p in Plants }: summa { m in Markets } lähetys [ p , m ] <= Kapasiteetti [ p ]; # Tyydytä kysyntä markkinoiden m s.t. kysyntä { m in Markets }: summa { p in Plants } lähetys [ p , m ] >= Kysyntä [ m ]; tiedot ; asettaa Kasvit : = seattle san - diego ; set Markets : = new - york chicago topeka ; param Kapasiteetti : = seattle 350 san - diego 600 ; param Kysyntä : = new york 325 chicago 300 topeka 275 ; _ param Etäisyys : new - york chicago topeka : = seattle 2,5 1,7 1,8 san - diego 2,5 1,8 1,4 ; param Rahti : = 90 ;Tässä on osittainen luettelo AMPL:n tukemista ratkaisijoista: [15]
ratkaisija | Tuetut ongelmatyypit |
---|---|
APOPT | sekoitettu epälineaarinen kokonaislukuohjelmointi |
Artelys Knitro | lineaarinen, neliöllinen ja epälineaarinen ohjelmointi |
Bonmin | sekoitettu epälineaarinen kokonaislukuohjelmointi |
BPMPD | lineaarinen ja neliöllinen ohjelmointi |
COIN-OR CBC | sekoitettu kokonaislukuohjelmointi |
KOLIKKO-TAI CLP | lineaarinen ohjelmointi |
CONOPT | epälineaarinen ohjelmointi |
[ 16] | sekoitettu epälineaarinen kokonaislukuohjelmointi (MINLP) |
CPLEX | lineaarinen, neliöllinen, toisen asteen kartio- ja sekoitettu kokonaislukuohjelmointi |
CPLEX CP Optimizer [17] | rajoitusohjelmointi |
SUODATTAA | epälineaarinen ohjelmointi |
FortMP | lineaarinen, neliöllinen ja sekoitettu kokonaislukuohjelmointi |
Gecode [18] | rajoitusohjelmointi |
IPOPT | epälineaarinen ohjelmointi |
JaCoP [19] | rajoitusohjelmointi |
LGO [20] | globaali ja paikallinen epälineaarinen optimointi |
lp_solve [21] | lineaarinen ja sekoitettu kokonaislukuohjelmointi |
MINOS | lineaarinen ja epälineaarinen ohjelmointi |
MINTO | sekoitettu kokonaislukuohjelmointi |
MOSEK | lineaarinen, sekoitettu kokonaisluku lineaarinen, neliöllinen, sekoitettu kokonaisluku, neliöllinen, neliörajoitettu, kartiomainen ja kupera epälineaarinen ohjelmointi |
Octeract moottori | Kaiken tyyppiset optimointiongelmat ilman differentiaali- tai integraalitermejä, mukaan lukien epäjatkuvat ongelmat vähimmäis- ja maksimifunktioiden kanssa . |
SCIP | sekoitettu kokonaislukuohjelmointi |
SNOPT | epälineaarinen ohjelmointi |
Sulum [22] | lineaarinen ja sekoitettu kokonaislukuohjelmointi |
WORHP | epälineaarinen ohjelmointi |
XA | lineaarinen ja sekoitettu kokonaislukuohjelmointi |
Ilmaista | lineaarinen ja konveksi neliöllinen optimointi ja niiden sekakokoiset vastineet |
Napsauta karttaa avataksesi interaktiivisen version
Malli: Matemaattinen optimointiohjelmisto