Kas yra kvadratinis programavimas?

Kvadratinis programavimas yra metodas, naudojamas optimizuoti kelių kintamųjų kvadratinę funkciją, kuri gali būti arba negali būti tiesiškai suvaržyta. Daugelį realaus pasaulio problemų, tokių kaip įmonės portfelio optimizavimas ar gamintojo kaštų mažinimas, galima aprašyti naudojant kvadratinę programą. Jei tikslo funkcija yra išgaubta, gali egzistuoti įmanomas sprendimas ir jį galima išspręsti žinomais algoritmais, tokiais kaip išplėstinis simplekso algoritmas. Yra būdų, kaip išspręsti kai kurias neišgaubtas kvadratines funkcijas, tačiau jie yra sudėtingi ir nėra lengvai prieinami.

Kvadratiniame programavime naudojami matematinio optimizavimo metodai, siekiant sumažinti tikslo funkciją. Tikslinę funkciją sudaro daugybė sprendimo kintamųjų, kurie gali būti ribojami arba neapriboti. Sprendimo kintamieji turi 0, 1 arba 2 galias. Tikslinei funkcijai gali būti taikomi keli linijinės lygybės ir nelygybės apribojimai, susiję su sprendimo kintamaisiais. Kvadratinio programavimo pavyzdys: sumažinkite f(x,y) = x2 + 3y2 – 12y + 12, kur x + y = 6 ir x > 0 ir y ≥ 0.

Dažnai įdomu naudoti daugiamates kvadratines funkcijas realaus pasaulio problemoms apibūdinti. Pavyzdžiui, taikydamas šiuolaikinę portfelio teoriją, finansų analitikas bandys optimizuoti įmonės portfelį pasirinkdamas tokią turto dalį, kuri sumažina riziką, susijusią su tam tikra laukiama grąža. Kvadratinė lygtis, sudaryta iš turto svorių ir turto koreliacijos, apibūdina portfelio dispersiją, kurią galima sumažinti naudojant kvadratinį programavimą. Kitas pavyzdys gali būti gamintojas, kuris naudoja kvadratinę lygtį, kad apibūdintų ryšį tarp skirtingų kokybės komponentų ir produkto kainos. Gamintojas gali sumažinti išlaidas, išlaikydamas tam tikrus standartus, pridėdamas tiesinius apribojimus kvadratinei programai.

Viena iš svarbiausių sąlygų sprendžiant kvadratinę programą yra objektyvinės lygties išgaubtumas. Kvadratinės funkcijos išgaubimas nustatomas pagal Heseno ar jos antrųjų išvestinių matricą. Funkcija vadinama išgaubta, jei Heso matrica yra teigiama apibrėžtoji arba teigiama pusiau apibrėžta, ty jei visos savosios reikšmės yra atitinkamai teigiamos arba neneigiamos. Jei Hesenas yra teigiamas ir yra įmanomas sprendimas, tada tas lokalus minimumas yra unikalus ir yra pasaulinis minimumas. Jei Hesenas yra pusiau teigiamas, įmanomas sprendimas gali būti ne unikalus. Neišgaubtos kvadratinės funkcijos gali turėti vietinius arba globalius minimumus, tačiau juos nustatyti sunkiau.

Yra daug būdų, kaip išspręsti išgaubtą kvadratinę funkciją naudojant kvadratinį programavimą. Labiausiai paplitęs metodas yra simplekso algoritmo išplėtimas. Kai kurie kiti metodai apima vidinio taško arba barjero metodą, aktyviosios rinkinio metodą ir konjuguoto gradiento metodą. Šie metodai yra integruoti į tam tikras programas, tokias kaip Mathematica® ir Matlab®, ir yra prieinami daugelio programavimo kalbų bibliotekose.