Porovnání optimalizačního softwaru - Comparison of optimization software - Wikipedia
Vzhledem k systému transformujícímu sadu vstupů na výstupní hodnoty, popsaný a matematická funkce F, optimalizace odkazuje na generování a výběr nejlepšího řešení z některé sady dostupných alternativ,[1] systematickým výběrem vstupních hodnot z povolené sady, výpočtem hodnoty funkce a zaznamenáním nejlepší hodnoty nalezené během procesu. V tomto obecném rámci lze modelovat mnoho reálných a teoretických problémů. Například vstupy mohou být konstrukční parametry motoru, výstupem může být spotřeba energie nebo vstupy mohou být obchodní volby a výstupem může být získaný zisk nebo vstupy mohou popisovat konfiguraci fyzického systému a výstupem může být jeho energie.
An optimalizační problém lze reprezentovat následujícím způsobem
- Dané: A funkce F : A R od některých soubor A do reálná čísla
- Hledat: prvek X0 v A takhle F(X0) ≤ F(X) pro všechny X v A („minimalizace“).
Typicky, A je nějaký podmnožina z Euklidovský prostor Rn, často specifikovaný množinou omezení, rovnosti nebo nerovnosti, kterých členové A muset uspokojit. Maximalizace může být snížena na minimalizaci vynásobením funkce mínus jedna.
Tuto funkci vyžaduje použití optimalizačního softwaru F je definován ve vhodném programovacím jazyce a propojen s optimalizačním softwarem. Optimalizační software dodá vstupní hodnoty v A, realizuje softwarový modul F přinese vypočítanou hodnotu F(X). Tímto způsobem je dosaženo jasného oddělení zájmů: různé optimalizační softwarové moduly lze snadno testovat na stejné funkci Fnebo lze daný optimalizační software použít pro různé funkce F.
Následující tabulky poskytují srovnání pozoruhodných optimalizačních softwarových knihoven, buď specializovaných nebo univerzálních knihoven s významným pokrytím optimalizace.
název | Jazyk | Nejnovější stabilní verze | Akademické / nekomerční použití je zdarma | Může být použit v proprietární aplikace | Licence | Poznámky |
---|---|---|---|---|---|---|
ALGLIB | C ++, C #, FreePascal, VBA | 3.8.0 / srpen 2013 | Ano | Ano | Duální (komerční, GPL) | Knihovna pro všeobecné použití, obsahuje optimalizační balíček. |
AMPL | C, C ++, C #, Python, Java, Matlab, R. | Říjen 2018 | Ano | Ano | Dual (komerční, akademické) | Populární jazyk algebraického modelování pro lineární, smíšenou integer a nelineární optimalizaci. Verze pro studenty a AMPL pro kurzy jsou k dispozici zdarma. |
APMonitor | Fortran, C ++, Python, Matlab, Julia | 0.6.2 / březen 2016 | Ano | Ano | Dual (komerční, akademické) | Jazyk diferenciálního a algebraického modelování pro smíšené celé číslo a nelineární optimalizaci. Volně dostupná rozhraní pro Matlab, Python a Julia. |
Artelys Knitro | C, C ++, C #, Python, Java, Julia, Matlab, R. | 11.1 / listopad 2018 | Ne | Ano | Obchodní, akademické, zkušební | Univerzální knihovna specializovaná na nelineární optimalizaci. Zvládá smíšené celočíselné úlohy (MINLP) a matematické programy s rovnovážnými omezeními (MPEC ). Specializované algoritmy pro nelineární problémy nejmenších čtverců. |
FICO Xpress | Mosel, BCL, C, C ++, Java, R Python, Matlab, .Net, VB6 | 8.5 / 8. 2018 | Ano | Ano | Obchodní, akademické, komunitní, zkušební | Sada optimalizačních technologií a řešení. Zahrnuje: Řešitelské technologie včetně (LP (Simplex & Barrier), MIP, MIQP, MIQCQP, MISOCP, MINLP QP, QCQP, SOCP, NLP (SLP & Interior Point); Algebraické modelování a procedurální programovací jazyk; Integrované vývojové prostředí; Podporuje pro řadu prováděcích služeb; Podpora balení optimalizačních modelů a služeb jako softwarových řešení |
GEKKO | Krajta | 0.2.8 / srpen 2020 | Ano | Ano | Dual (komerční, akademické) | GEKKO je balíček Pythonu pro strojové učení a optimalizaci rovnic se smíšenými a celočíselnými a diferenciálními algebraickými rovnicemi. Je spojen s rozsáhlými řešiči pro lineární, kvadratické, nelineární a smíšené celočíselné programování (LP, QP, NLP, MILP, MINLP). Režimy provozu zahrnují regresi parametrů, odsouhlasení dat, optimalizaci v reálném čase, dynamickou simulaci a nelineární prediktivní řízení. |
Sada lineárního programování GNU | C | 4.52 / červenec 2013 | Ano | Ne | GPL | Zdarma knihovna pro lineární programování (LP) a smíšené celočíselné programování (MIP). |
Vědecká knihovna GNU | C | 1.16 / červenec 2013 | Ano | Ne | GPL | Knihovna zdarma poskytovaná projektem GNU. |
Gurobi | C, C ++, C #, Java, .Net, Matlab, Python, R. | 9.0 / lis 2019 | Ano | Ano | Obchodní, akademické, zkušební | Optimalizační knihovna. Zvládá smíšené celé číslo lineární problémy, konvexní kvadratická omezení a cíl, optimalizace více cílů a omezení SOS |
Numerické knihovny IMSL | C, Java, C #, Fortran, Python | mnoho komponent | Ne | Ano | Proprietární | |
LIONsolver | C ++, Java | 2.0.198 / říjen 2011 | Ano | Ano | Proprietární | Podpora interaktivní a optimalizace učení, podle zásad RSO.[2] |
Knihovna matematických jader (MKL) | C ++, Fortran | 11.1 / říjen 2013 | Ne | Ano | Proprietární | Numerická knihovna od společnosti Intel. MKL se specializuje na lineární algebru, ale obsahuje některé funkce související s optimalizací. |
Wolfram_Mathematica | C ++, jazyk Wolfram | 12.2 (16. prosince 2020[±][3] | )Ne | Ne | Proprietární | Omezená nelineární optimalizace, metody vnitřních bodů, konvexní optimalizace a celočíselné programování - stejně jako originální symbolické metody integrované s obecnými výpočetními schopnostmi. |
MIDACO | C ++, C #, Python, Matlab, Octave, Fortran, R, Java, Excel, VBA, Julia | 6.0 / březen 2018 | Ano | Ano | Dual (komerční, akademické) | Lehký softwarový nástroj pro optimalizaci s jedním a více cíli. Podpora MINLP a paralelizace. |
Číselné knihovny NAG | C, Fortran | Marka 26. října 2017 | Ne | Ano | Proprietární | |
NLopt | C, C ++, Fortran, Octave, Matlab, Python, Haskell, Guile | v2.6.2 / duben 2020 | Ano | Ne | LGPL | NLopt je bezplatná / otevřená knihovna pro nelineární optimalizaci, která poskytuje společné rozhraní pro řadu různých bezplatných optimalizačních rutin dostupných online i pro původní implementace různých dalších algoritmů. Mezi jeho vlastnosti patří: Callable from C, C ++, Fortran, Matlab or GNU Octave, Python, GNU Guile, Julia, GNU R, Lua, OCaml and Rust. Společné rozhraní pro mnoho různých algoritmů - vyzkoušejte jiný algoritmus pouhou změnou jednoho parametru. Podpora rozsáhlé optimalizace (některé algoritmy škálovatelné na miliony parametrů a tisíce omezení). Globální i lokální optimalizační algoritmy. Algoritmy využívající pouze funkční hodnoty (bez derivací) a také algoritmy využívající přechody dodané uživatelem. Algoritmy pro neomezenou optimalizaci, omezenou optimalizaci a obecná nelineární omezení nerovnosti / rovnosti. Free / open-source software pod GNU LGPL (a volnější licence pro některé části NLopt). |
NMath | C# | 5.3 / květen 2013 | Ne | Ano | Proprietární | C # numerická knihovna postavená na vrcholu MKL. |
Octeract Engine | C ++ / Python | 0,11,29 / listopad 2019 | Ne | Ano | Komerční | Superpočítačový deterministický globální optimalizátor pro obecné problémy s MINLP. Octeract Engine používá MPI pro distribuované výpočty. |
OptaPlanner | Jáva | 8.0.0. Konec / listopad 2020 | Ano | Ano | ASL (otevřený zdroj) | Lehký optimalizační řešení v Javě s volitelnými integračními moduly pro JPA-Hibernate, Quarkus, Spring, Jackson, JAXB atd. Funguje také na Kotlin a Scala. |
SciPy | Krajta | 0.13.1 / listopad 2013 | Ano | Ano | BSD | Obecná numerická a vědecká výpočetní knihovna pro Python. |
Viz také
Reference
- ^ "Povaha matematického programování," Glosář matematického programováníINFORMS Computing Society.
- ^ Battiti, Roberto; Mauro Brunato; Franco Mascia (2008). Reaktivní vyhledávání a inteligentní optimalizace. Springer Verlag. ISBN 978-0-387-09623-0.
- ^ „Historie rychlých revizí Mathematica“. Citováno 2020-12-16.