Kvadratno programiranje je metoda koja se koristi za optimizaciju viševarijabilne kvadratne funkcije koja može, ali i ne mora biti linearno ograničena. Mnogi problemi iz stvarnog svijeta, kao što je optimizacija portfelja tvrtke ili smanjenje troškova proizvođača, mogu se opisati pomoću kvadratnog programa. Ako je ciljna funkcija konveksna tada može postojati izvedivo rješenje i može se riješiti poznatim algoritmima kao što je prošireni simpleks algoritam. Postoje metode za rješavanje nekih nekonveksnih kvadratnih funkcija, ali su komplicirane i nisu lako dostupne.
Tehnike matematičke optimizacije koriste se u kvadratnom programiranju za minimiziranje ciljne funkcije. Funkcija cilja sastoji se od niza varijabli odlučivanja koje mogu, ali i ne moraju biti ograničene. Varijable odluke imaju moći 0, 1 ili 2. Ciljna funkcija može biti podvrgnuta brojnim ograničenjima linearne jednakosti i nejednakosti u vezi s varijablama odluke. Primjer kvadratnog programiranja je: minimizirati f(x,y) = x2 + 3y2 – 12y + 12 gdje je x + y = 6 i x > 0 i y ≥ 0.
Često je zanimljivo koristiti multivarijantne kvadratne funkcije za opisivanje problema iz stvarnog svijeta. Na primjer, koristeći modernu teoriju portfelja, financijski analitičar će pokušati optimizirati portfelj tvrtke odabirom udjela imovine koji minimizira rizik povezan s danim očekivanim povratom. Kvadratna jednadžba sastavljena od pondera imovine i korelacije između imovine opisuje varijansu portfelja koja se može minimizirati korištenjem kvadratnog programiranja. Drugi primjer može biti proizvođač koji koristi kvadratnu jednadžbu za opisivanje odnosa između različitih komponenti kvalitete i cijene proizvoda. Proizvođač može minimizirati troškove uz održavanje određenih standarda dodavanjem linearnih ograničenja u kvadratni program.
Jedan od najvažnijih uvjeta u rješavanju kvadratnog programa je konveksnost ciljne jednadžbe. Konveksnost kvadratne funkcije određena je Hessianom ili matricom njegovih drugih derivacija. Funkcija se naziva konveksna ako je Hessiova matrica ili pozitivno određena ili pozitivno poludefinirana, odnosno ako su sve vlastite vrijednosti pozitivne ili ne-negativne. Ako je Hessian pozitivan i postoji izvedivo rješenje, tada je taj lokalni minimum jedinstven i globalni minimum. Ako je Hessian polu-pozitivan, izvedivo rješenje možda neće biti jedinstveno. Nekonveksne kvadratne funkcije mogu imati lokalne ili globalne minimume, ali ih je teže odrediti.
Postoji mnogo pristupa rješavanju konveksne kvadratne funkcije pomoću kvadratnog programiranja. Najčešći pristup je proširenje simpleks algoritma. Neke druge metode uključuju metodu unutarnje točke ili barijere, metodu aktivnog skupa i metodu konjugiranog gradijenta. Ove metode su integrirane u određene programe kao što su Mathematica® i Matlab® i dostupne su u knjižnicama za mnoge programske jezike.