AMPL (ohjelmointikieli)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 13. huhtikuuta 2017 tarkistetusta versiosta . tarkastukset vaativat 12 muokkausta .
AMPL
Kieliluokka Moniparadigma : deklaratiivinen , pakottava
Esiintyi 1985  ( 1985 )
Kehittäjä AMPL Optimization, Inc.
Tiedostotunniste _ .mod, .dattai.run
Vapauta 20220323 (23. maaliskuuta 2022 ) ( 23.3.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.

Toiminnot

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.

Saatavuus

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.

Historia

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ä

Mallimalli

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 ;

Ratkaisijat

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

Ekosysteemikartta

Napsauta karttaa avataksesi interaktiivisen version

Katso myös

  • sol (muoto)
  • GNU MathProg (aiemmin GMPL) on GNU Linear Programming Suiten [23] tukema AMPL:n osajoukko .

Suositukset

Muistiinpanot

  1. Fourer, Robert (2002). "Algebrallisen mallinnuskielen laajentaminen rajoitusohjelmoinnin tukemiseksi" . INFORMS Journal on Computing . 14 (4): 322-344. DOI : 10.1287/ijoc.14.4.322.2825 .
  2. Alustat . AMPL Optimizations Inc. . Haettu 14. toukokuuta 2022. Arkistoitu alkuperäisestä 14. toukokuuta 2022.
  3. NEOS-palvelin optimointia varten . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 6. toukokuuta 2011.
  4. Kokeile AMPL! . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 18. kesäkuuta 2011.
  5. AMPL-lataukset . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 26. toukokuuta 2015.
  6. Virhe: parametria ei ole asetettu mallissa {{ julkaisu }} . - ISBN 978-0-534-38809-6 . Fourer, Robert ; Gay, David M ; Kernighan, Brian W (2003). AMPL: mallinnuskieli matemaattista ohjelmointia varten . USA: Duxbury Press/Brooks/Cole Publishing Company. ISBN |заглавие= 978-0-534-38809-6.
  7. Fourer, Robert (1990). "Matemaattisen ohjelmoinnin mallikieli" (PDF) . Johtamistiede . 36 (5): 519–554–83. DOI : 10.1287/mnsc.36.5.519 . Arkistoitu (PDF) alkuperäisestä 16.07.2011 . Haettu 14.5.2022 . Käytöstä poistettu parametri |deadlink=( ohje )
  8. ILMOITTAA. ICS-TIEDOTTAA . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 7. lokakuuta 2006.
  9. Fourer, Robert (2002). "Algebrallisen mallinnuskielen laajentaminen rajoitusohjelmoinnin tukemiseksi" . INFORMS Journal on Computing . 14 (4): 322-344. DOI : 10.1287/ijoc.14.4.322.2825 . Fourer, Robert ; Gay, David M. (2002). "Algebrallisen mallinnuskielen laajentaminen rajoitusohjelmoinnin tukemiseksi" . INFORMS Journal on Computing . 14 (4): 322–344. CiteSeerX  10.1.1.8.9699 . doi : 10.1287/ijoc.14.4.322.2825 .
  10. Google-ryhmät . Haettu 14. toukokuuta 2022. Arkistoitu alkuperäisestä 26. toukokuuta 2013.
  11. ILMOITTAA. INFORMS Impact -palkinto . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 22. lokakuuta 2013.
  12. Ilmaiseksi ladattava - AMPL: Matemaattisen ohjelmoinnin mallikieli . Haettu 5. maaliskuuta 2021. Arkistoitu alkuperäisestä 20. toukokuuta 2022.
  13. Google-ryhmät . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 31. toukokuuta 2019.
  14. Virhe: parametria ei ole asetettu mallissa {{ julkaisu }} . ISBN 978-1-4008-8417-9 . |заглавие=
  15. Solvers-AMPL . Haettu 21. tammikuuta 2018. Arkistoitu alkuperäisestä 27. helmikuuta 2014.
  16. Couenne . Käyttöpäivä: 27. lokakuuta 2013. Arkistoitu alkuperäisestä 29. lokakuuta 2013.
  17. mp/solvers/ilogcp pääampl/mp GitHubissa . GitHub . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 14. toukokuuta 2022.
  18. mp/solvers/gecode at master ampl/mp GitHub . GitHub . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 14. toukokuuta 2022.
  19. mp/solvers/jacop at master ampl/mp GitHub . GitHub . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 14. toukokuuta 2022.
  20. LGO-AMPL . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 11. elokuuta 2015.
  21. Käyttämällä AMPL:n lpsolvea . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 14. toukokuuta 2022.
  22. mp/solvers/sulum at master ampl/mp GitHub . GitHub . Haettu 11. elokuuta 2015. Arkistoitu alkuperäisestä 14. toukokuuta 2022.
  23. GLPK:n virallinen sivusto . Haettu 17. syyskuuta 2020. Arkistoitu alkuperäisestä 30. toukokuuta 2022.

Ulkoiset linkit

Malli: Matemaattinen optimointiohjelmisto