matematinis programavimas

matemãtinis programãvimas, optimizãvimas, matematikos ir informatikos šaka, tirianti uždavinius, susijusius su funkcijų ekstremumų nustatymu aibėse, nusakytose lygybių ir (arba) nelygybių sistemomis. Matematinio programavimo uždaviniai iškyla sprendžiant gamybos planavimo ir valdymo, projektavimo, perspektyvinio planavimo uždavinius. Bendrasis matematinio programavimo uždavinys formuluojamas taip: rasti skaliarinės funkcijos f0(x) ekstremumą (minimumą ar maksimumą) su sąlygomis fj(x) ≤ 0, j = 1, 2, ..., m; xQ; (∗) čia Q – vektorinės erdvės aibė, fj(x) – ribinės funkcijos. Funkcija f0(x) vadinama tikslo funkcija, aibė Ω = {xQ|fj(x) ≤ 0, j = 1, ..., m} – leidžiamąja aibe (planų aibe), ekstremumo taškas x* – optimaliu tašku (planu). Ekstremumų savybes ir skaitinius sprendimo metodus lemia funkcijų fj(x) ir aibės Q savybės. Tiesinis programavimas tiria uždavinius, kurių funkcijos fj(x) yra tiesinės, o aibę Q sudaro n‑matės euklidinės erdvės Rn vektoriai su neneigiamomis koordinatėmis (Q=R+n(Q={bold "R"}_{"+"}^{n} )). Matematinio programavimo šaka, tirianti uždavinius, kuriuose leidžiamąją aibę Ω sudaro vektoriai, o jų visos koordinatės ar dalis koordinačių yra sveikieji skaičiai, vadinama sveikaskaičiu programavimu. Iškilasis programavimas tiria iškilosios funkcijos minimizavimo uždavinius, kurių ribinės funkcijos fj(x) ir aibė Q yra iškilosios. Atvejį, kai tikslo funkcija yra kvadratinė, o ribinės funkcijos tiesinės, tiria kvadratinis programavimas. Bendrasis kvadratinio programavimo uždavinys: minimizuoti funkciją f0(x)=12(x,Cx)(b,x)f_{0}(x)={1} over {2}(x, Cx)-(b,x), kai Ax ≤ c; čia C – simetrinė, pusiau teigiamai apibrėžta ((xCx) ≥ 0 kiekvienam x) n × n matrica, A – m × n matrica, x ir b – n‑mačiai vektoriai, c – m‑matis vektorius (paprastaisiais skliaustais pažymėtos skaliarinės vektorių sandaugos). Iškilojo programavimo uždavinio ekstremumo būtinas sąlygas nusako Kuhno ir Tuckerio teorema. Tegu funkcijos fj(x) yra iškilosios ir aibė Ω tenkina Slaterio sąlygą, t. y. egzistuoja bent vienas aibės Ω taškas, kuriame visos (*) nelygybės yra griežtos. Vektorius x* yra sprendinys tada ir tik tada, kai egzistuoja toks vektorius u*, kuris su x* sudaro Lagrange’o funkcijos F(x,y)=f0(x)+j=1mujfj(x)F(x,y)=f_{0}(x)+sum from{j=1} to{m} u_{j}f_{j}(x) balno tašką, t. y. tenkina nelygybes F(x*, u) ≤ F(x*, u*) ≤ F(xu*) kiekvienam x ∈Q ir u ≥ 0.

Paprasčiausias skaitinis iškilojo programavimo metodas yra leidžiamųjų krypčių metodas. Juo pagal formulę xk + 1 = xk + tkek sudaroma vektorių x* seka, artėjanti į x*; vektorius ek parenkamas taip, kad esant pakankamai mažoms skaliaro tk ≥ 0 reikšmėms vektorius xk + 1 priklausytų aibei Ω, o tikslo funkcija mažėtų. Kai funkcijos fj(x), j = 1, ..., m ir aibė Q yra bet kokios, matematinio programavimo uždavinius tiria netiesinis programavimas. Jo uždaviniams būdingi lokalieji ekstremumai, kurie apskaičiuojami iškilojo programavimo metodais. Kai ribojimų funkcijos fj(x), j = 1, ..., m priklauso nuo parametro, kartais galima nustatyti tas parametro kitimo sritis, kuriose matematinio programavimo uždavinio sprendinys yra pastovus. Tokius uždavinius tiria parametrinis programavimas. Stochastinis programavimas tiria matematinio programavimo uždavinį, kurio funkcijos fj(x) yra atsitiktiniai dydžiai. Matematinio programavimo uždavinį galima nagrinėti taikant daugiažingsnį sprendimą – nuosekliai nustatant kiekvieną ekstremumo taško koordinatę. Šį sprendimo metodą tiria dinaminis programavimas.

Pirmasis matematinio programavimo uždavinį, kaip nustatyti sąlyginį ekstremumą, kai (*) nelygybės yra lygybės, suformulavo ir išsprendė J. L. de Lagrange’as. Matematinis programavimas susiformavo 20 a. 5–7 dešimtmetyje. Svarbūs Georgeʼo Bernardo Dantzigo, Herberto Elio Scarfo, Saulo Irvingo Gasso, Ralpho Tyrrello Rockefellerio, Philipo Starro Wolfo, Leonido Chačiano (visi Jungtinės Amerikos Valstijos), Judino Golšteino, Nikolajaus Šoro, Davido Judino, L. Kantorovičiaus, Jurijaus Nesterovo (visi SSRS), Narendros Krishnos Karmarkaro (Indija) matematinio programavimo darbai.

Papildoma informacija
Turinys
Bendra informacija
Straipsnio informacija
Autorius (-iai)
Redaktorius (-iai)
Publikuota
Redaguota
Siūlykite savo nuotrauką