En matematiko, la termino **optimumigo** signifas trovi la plej bonan solvon al iu problemo, ĉar ĝi devenas de la latina vorto *optimum*, kiu signifas *plejbonecon*. Plejkomune oni celas minimumigi aŭ maksimumigi reelan funkcion per sistema elekto de la valorojn de reelaj aŭ entjeraj variabloj el permesata aro. Tia problemo prezenteblas per la formo

*Donita:*   funkcio *f* : *A* {\displaystyle \to } **R** el iu aro *A* al la reelaj nombroj
*Trovenda:*   ero *x*0 en *A* tia, ke *f*(*x*0) ≤ *f*(*x*) por ĉiuj *x* en *A* ("minimumigo") aŭ tia, ke *f*(*x*0) ≥ *f*(*x*) por ĉiuj *x* en *A* ("maksimumigo").
Tia formulaĵo nomiĝas **optimumiga problemo** aŭ **matematika problemo** (termino ne rekte rilatanta al komputila programado, sed ankoraŭ uzata, ekzemple por lineara programado - vidu historion pli sube). Multaj real-mondaj kaj teoriaj problemoj modeleblas en tiu ĝenerala kadro.

Tipe, *A* estas iu subaro de la eŭklida spaco **R***n*, ofte specifigita per aro de *limigoj*, egalecoj aŭ neegalaĵoj kiujn la membroj de *A* devas kontentigi. La eroj de *A* estas nomitaj *fareblaj solvoj*. La funkcio *f* estas nomita ***objektiva funkcio***, aŭ **kosta funkcio**. Farebla solvaĵo, kiu minimumigas (aŭ maksimumigas, se tio estas la celo) la objektivan funkcion estas nomita *optimala solvo*.

La domajno *A* de *f* estas nomita la **serĉo-spaco**, dum la eroj de *A* estas nomitaj **kandidataj solvoj** aŭ **fareblaj solvaĵoj**.

Ĝenerale, tie estos kelkaj lokaj minimumoj kaj maksimumoj, kie *loka minimumo* x\* estas difinita kiel punkto tia, ke por iu δ > 0 kaj ĉiuj x tia, ke

{\displaystyle \|\mathbf {x} -\mathbf {x} ^{\*}\|\leq \delta };
la formulo

{\displaystyle f(\mathbf {x} ^{\*})\leq f(\mathbf {x} )}
validas; tio estas por diri, sur iu regiono ĉirkaŭ x\* ĉiuj de la funkciaj valoroj estas pli grandaj ol, aŭ egalaj al, la valoro je tiu punkto. Lokaj maksimumoj estas simile difinitaj.

Ĝenerale, estas facile trovi lokajn minimumojn — aldonaj faktoj pri la problemo (ekzemple scio de tio ke la funkcio estas konveksa) estas postulitaj por certiĝi, ke la solvo fundamente estas malloka minimumo.

Granda kvanto da algoritmoj proponitaj por solvi ne-konveksajn problemojn — inkluzive de la plejmulto de komence haveblaj solviloj — ne kapablas fari distingon inter loke optimumaj solvoj kaj rigore optimumaj solvoj, kaj traktas la antaŭajn efektivajn solvojn por la originala problemo. La subfako de aplika matematiko kaj numera analizo kiu sin koncernas kun la evoluigo de determinismaj algoritmoj kapablaj certigi konverĝon en finia tempo al la efektiva optimuma solvo de ne-konveksa problemo nomiĝas globa optimumigo (malloka optimumigo).

Notacio (skribmaniero)
----------------------

Problemoj de optimumigo estas ofte esprimitaj per speciala notacio. Jen kelkaj ekzemploj:

{\displaystyle \min \_{x\in \mathbb {R} }\;x^{2}+1}
Tio celas la minimuman valoron por la objektiva funkcio *x2* + 1, kie *x* gamas super la reelaj nombroj **R**. La minimuma valoro en ĉi tiu kazo estas 1, okazanta je *x* = 0.

{\displaystyle \max \_{x\in \mathbb {R} }\;2x}
Tio celas la maksimuman valoron por la objektiva funkcio 2*x*, kie *x* gamas super la reelaj nombroj. En tiu kazo, estas nenia tia maksimumo ĉar la objektiva funkcio estas nebarita, do la respondo estas "malfinio" aŭ "nedefinita".

{\displaystyle \operatorname {argmin} \_{x\in [-\infty ,-1]}\;x^{2}+1}
Tio celas la valoro(j)n de *x* en la intervalo [−∞, −1] kiu(j) minimumigas la objektivan funkcion *x*2 + 1. (La efektiva minimuma valoro de tiu funkcio ne gravas.) En ĉi tiu kazo, la respondo estas *x* = −1.

{\displaystyle \operatorname {argmax} \_{x\in [-5,5],\;y\in \mathbb {R} }\;x\cdot \cos(y)}
Tio celas la (*x*, *y*) paro(j)n kiu(j) maksimumigas la valoron de la objektiva funkcio*x*·cos(*y*), kun la aldonita limigo, ke *x* kuŝas en la intervalo [−5, 5]. (Denove, la reala maksimuma valoro de la esprimo ne gravas.) En tiu kazo, la solvoj estas la paroj de la formoj (5, 2π*k*) kaj (−5, (2*k* + 1)π), kie *k* gamas super ĉiuj entjeroj.

Ĉefaj subkampoj
---------------

* Lineara programado studas la kazon en kiu la objektiva funkcio *f* estas lineara kaj la aro A estas specifigita uzante nur linearajn egalecojn kaj neegalaĵojn. Tia aro nomiĝas poliadro aŭ politopo se ĝi estas barita.

* Entjera programado studas linearajn programojn, en kiuj iuj aŭ ĉiuj variabloj estas devigitaj alpreni entjerajn valorojn.

* Kvadrata programado permesas al la objektiva funkcio havi kvadratajn termojn, dum la aro A devas esti specifigita per linearaj egalecoj kaj neegalaĵoj.

* Nelineara programado studas la ĝeneralan kazon en kiu la objektiva funkcio aŭ la limigoj aŭ ambaŭ el ili enhavas nelinearajn partojn.

* Konveksa programado studas la kazon kie la objektiva funkcio estas konveksa funkcio kaj la limigoj, se ili ekzistas, formas konveksan aron. Tio rigardeblas kiel specifa kazo de nelineara programado, aŭ kiel ĝeneraligo de lineara aŭ konveksa kvadrata programado.

* Duondifinita programado (en:"SDP") estas subkampo de konveksa optimigo kie la subkuŝantaj variabloj estas duondifinitaj matricoj. Ĝi estas ĝeneraligo de lineara kaj konveksa kvadrataj programadoj.

* Duaorda konusa programado (en:"SOCP").

* Stokasta programado studas la kazon en kiu iuj el la limigoj dependas de hazarda variablo.

* Fortika programado estas, simile al stokasta programado, provo kapti necertecon en la datumoj subkuŝantaj la optimumigan problemon. Tio ne faratas per uzado de hazardaj variabloj, sed anstataŭe, la problemon oni solvas per tio atenti malĝustaĵojn en la enfluaj datumoj.

* Dinamika programado studas la kazon en kiu la optimumiga strategio baziĝas sur diserigo de la problemo en pli malgrandajn subproblemojn.

* Kombina optimumigo koncerniĝas kun problemoj kie la aro de fareblaj solvaĵoj estas diskreta aŭ povas reduktiĝi al diskreta aro.

* Malfinidimensia optimumigo studas la kazon kiam la aro de fareblaj solvaĵoj estas subaro de malfinidimensia spaco, kiel ekzemple spaco de funkcioj.

* Limigo-kotentigo studas la kazon en kiu la objektiva funkcio *f* estas konstanto (tio estas uzita en AI, aparte en aŭtomata rezonado).

* Disjunkcia programado uziĝas kie almenaŭ unu limigo kontentigendas, sed ne ĉiuj. Ĝi aparte utilas en la verkado de horaroj.

Teknikoj
--------

Por dufoje-diferencialeblaj funkcioj, nelimigitaj problemoj solveblas per trovado de la punktoj kie la gradiento de la objektiva funkcio estas nulo (tio estas, la stabilaj punktoj) kaj uzado de la matrico de Hessian por klasifiki la tipon de ĉiu punkto. Se la matrico de Hessian estas pozitive difinita matrico, la punkto estas loka minimumo, se negativa difinita, loka maksimumo, kaj se nedefinita ĝi estas ia selo-punkto.

Oni povas trovi la stabilajn punktojn per tio stari ĉe konjekto por stabila punkto, kaj tiam ripeti al ĝi per uzado de la jenaj metodoj. Tamen, la ekzisto de derivativoj ne ĉiam certas kaj multajn metodojn oni elpensis por apartaj situacioj. La bazaj klasoj de metodoj, bazitaj sur la glateco de la objektiva funkcio, estas:

* Kombinatoraj metodoj
* Senderivativaj metodoj
* Unuaordaj metodoj
* Duaordaj metodoj

Efektivaj metodoj el inter la ĉi-supraj kategorioj inkluzivas:

* Gradienta descendo, alinome plejkruta descendo, aŭ plejkruta ascendo
* Nelder-Mead-a metodo, alinome la ameba metodo
* Subgradienta metodo - similas la gradientan metodon en la kazo, ke ne estas gradientoj
* Simpleksa metodo
* Elipsoida metodo
* Faskaj metodoj
* Neŭtona metodo
* Metodoj kvazaŭ-Neŭtonaj
* Metodoj interna punkto
* Metodo konjugita gradiento
* Linio serĉo

Se la objektiva funkcio estus konveksa super la regiono de intereso, tiam ĉiu loka minimumo ankaŭ estus malloka minimumo. Ekzistas fortikaj, rapidaj ciferecaj teknikoj por optimumigi duoble diferencialeblajn konveksajn funkciojn.

Limigitaj problemoj ofte konverteblas en nelimigitajn problemojn per helpo de multiplikantoj de Lagrange.

Jen kelkaj aliaj popularaj metodoj:

* Montet-grimpado
* Tabua serĉo
* Radia serĉo
* Genetikaj algoritmoj
* Formik-kolonia optimumigo
* Evoluisma strategio
* Stokasta tunelado
* Diferenciala evoluismo
* Partikla svarma optimumigo

Utiloj
------

Problemoj en solida dinamiko ofte postulas programadajn teknikojn, ĉar oni povas rigardi solidan dinamikon provanta solvi ordinaran diferencialan ekvacion sur limigo (sternaĵo); la limigoj estas diversajn nelinearajn geometriajn limigojn tiajn, kiaj "ĉi tiuj du punktoj devas ĉiam koincidi", "ĉi tiu surfaco devas ne penetri iun ajn alian", aŭ "ĉi tiu punkto devas ĉiam kuŝi ie sur tiu kurbo". Ankaŭe, la problemo komputi kontaktajn fortojn fareblas per tio solvi linearan komplementecan problemon, kiu ankaŭ rigardeblas kiel (en:"QP") (kvadrata programada problemo).

Multaj dizajno-problemoj esprimeblas ankaŭ kiel optimumigaj programoj. Tiu apliko estas nomata kiel dizajna optimumigo. Unu ĵusa kaj kreskanta subaro de ĉi tiu kampo estas multfaka dizajna optimumigo, kio, dum ĝi utilas en multaj problemoj, jam aparte estas aplikata al problemoj de aerokosma flugadika inĝenierado.

Ĉefskola ekonomiko ankaŭ grave subtenas sin sur matematika programado. Klientoj kaj firmaoj estas atendataj maksimumigi sian profiton. Ankaŭe, agentojn oni atendas esti risk-evitemaj, per tio volantaj minimumigi kian ajn riskon sperteblan. Ankaŭ prezoj de havaĵoj klarigeblas per uzado de optimumigo, kvankam la subkuŝanta teorio estas pli komplika ol simpla optimigo de utilo aŭ profito. Ankaŭ komerc-teorio uzas optimigadon por klarigi komercajn aranĝojn inter landoj.

Alia kampo kiu amplekse uzas optimumigajn teknikojn estas operaciesploro.

Historio
--------

La unua optimumiga teĥniko, konata kiel *plejkruta descendo', datiĝas de Gauss.*
Historie, la unua termino prezentita estis lineara programado, kiu estis inventita de Georgo Dantzig en la 1940-aj jaroj. La termino *programado* en ĉi tiu ĉirkaŭteksto ne signifas komputilan programadon,(kvankam komputiloj estas nuntempe amplekse uzataj por solvi matematikajn programojn). Anstataŭe, la termino originas en la uzo de *programo* far la Usonaj militservoj por nomi proponitan trejnadajn kaj loĝistikajn horarojn, kiuj estis la problemoj, kiujn tiutempe studis Dantzig. (Aldone, pli malfrue, la uzado de la termino "programado" estis evidente utila por ricevadi registaran fonduson, ĉar ĝin oni asociis kun esplorkampoj de alta-teknologio, kiuj estis konsiderataj gravaj.)

Aliaj gravaj matematikistoj en la optimumiga kampo inkluzivas:

* John von Neumann
* Leonid Vitalyevich Kantorovich
* Naum Shor
* Leonid Khachian
* Boris Polyak
* Yurii Nesterov
* Arkadii Nemirovskii
* Michael J. Todd
* Richard Bellman

Vidu ankaŭ
----------

* Argumento de maksimumo
* Ludoteorio
* Operaciesploro
* Neakra logiko
* Hazarda optimumigo
* Simpleca algoritmo
* Ena-punkta metodo
* Varia neegalaĵo
* Varia kalkulo
* Minimumo
* Maksimumo
* Loka optimumo
* Malloka optimumo
* Optimumiga programaro

Referencoj
----------

* Mordecai Avriel (2003). *Nonlinear Programming: Analysis and Methods.* Dover Publishing. ISBN 0-486-43227-0. angle

* Stephen Boyd kaj Lieven Vandenberghe (2004). Konveksa Optimumigo Arkivigite je 2007-10-30 per la retarkivo Wayback Machine, Kembriĝo (Britio) Universitato Premi. ISBN 0-521-83378-7. angle

* Panos Y. Papalambros and Douglass J. Wilde (2000). Principles of Optimal Design : Modeling and Computation, Cambridge University Press. ISBN 0-521-62727-3. angle

* Jorge Nocedal and Stephen J. Wright (2006). Numerical Optimization, Springer. ISBN 0-387-30303-0. angle

Eksteraj ligiloj
----------------

* Kategorio Optimumigo (matematiko) en la Vikimedia Komunejo (Multrimedaj datumoj)

* NEOS Gvidilo Arkivigite je 2009-03-01 per la retarkivo Wayback Machine angle
* Mathematical Programming Society angle
* COIN-OR — Computational Infrastructure for Operations Research angle
* Nonlinear Programming Glossary angle
* Mathematical optimization Arkivigite je 2008-12-20 per la retarkivo Wayback Machine angle
* Global optimization Arkivigite je 2008-12-28 per la retarkivo Wayback Machine angle
* Optimization Related Links angle

**Modeligaj lingvoj:**

* GAMS — General Algebraic Modeling System
* AMPL
* MPL Arkivigite je 2008-12-23 per la retarkivo Wayback Machine
* AIMMS Optimization Modeling Arkivigite je 2008-02-03 per la retarkivo Wayback Machine — include optimization in industry solutions (free trial license available);
* OPL

**Solviloj:**

* CPLEX
* Mosek
* SAS OR Arkivigite je 2008-12-06 per la retarkivo Wayback Machine
* CONOPT
* Xpress-MP - Optimization software free to students Arkivigite je 2008-03-29 per la retarkivo Wayback Machine
* IPOPT - an open-source primal-dual interior point method NLP solver
* KNITRO - solver for nonlinear optimization problems
* Free Optimization Software by Systems Optimization Laboratory, Stanford University Arkivigite je 2008-01-17 per la retarkivo Wayback Machine
* Optimizing Resource and Capacity with Advanced Planning and Scheduling[*rompita ligilo*]

**program-bibliotekoj:**

* OOL (Open Optimization library) - a set of optimization routines in C.
* IOptLib (Investigative Optimization Library) - a free open source library for development of optimization algorithms (ANSI C).

* AIMMS Optimumigo Modelanta Arkivigite je 2008-02-03 per la retarkivo Wayback Machine — inkluzivi optimumigo en industriaj solvaĵoj (libera prova permesilo havebla);
* Xpress-MP - Optimumiga programaro libera al studentoj Arkivigite je 2008-03-29 per la retarkivo Wayback Machine