Konvex programmering, en icke-linjär programmeringsunderklass, är en sorts programmering som generaliserar och förenar andra typer, inklusive linjär programmering, minsta kvadrater och kvadratisk programmering. Begreppet konvex programmering erbjuder stöd för ett stort antal teoretiska och praktiska tillämpningar. Den har effektiva algoritmer som gör det fördelaktigt för en programmerare att använda och utveckla denna typ av programmering. Konvex programmering kräver lång erfarenhet och expertis från programmerarens sida, samt en disciplinerad inlärningsprocess. Även om det inte är ett nytt koncept, används det fortfarande i många discipliner och tillämpningar som kräver komplex och teknisk matematik.
Tre principer är viktiga för tillämpningen av konvex programmering: optimering, numerisk beräkning och konvex analys. Förbättrad datorkraft och genombrott inom komplexa algoritmer har gjort det möjligt för forskare och matematiker att utveckla denna typ av programmering och använda den för problemlösning. Convex programmering har försett sina användare med fördelaktiga beräkningsverktyg som hjälper till att lösa problem av högre klass inom områdena linjär programmering och minsta kvadrater. Ingenjörer har funnit denna typ av programmering användbar för funktioner som signalbehandling, styrning, kretsdesign, nätverk, kommunikation, etc.
Att använda konvex programmering kräver förståelse för linjär algebra, optimering och vektorkalkyl. Konvexa set är ganska vanliga och används i denna typ av programmering. Programmerare använder dessa konvexa uppsättningar för att lösa vissa optimeringsproblem med vektorer. Ett annat vanligt inslag i denna typ av programmering är en konvex funktion.
Tillämpningar av konvex programmering är vanliga inom området mikroekonomi, särskilt när det gäller bestämning av maximerad vinst och maximerad konsumentpreferens. Detta är en form av optimering och kräver den komplexa matematik som finns i konvex programmering. Ett vanligt problem som övervägs och löses inom denna disciplin är det som kallas ett matematiskt optimeringsproblem. Ett sådant problem använder en vektor för att representera och abstrahera det mest optimala valet från en viss uppsättning val.
Ett annat exempel på denna typ av abstrakta problem som uppstår inom en annan disciplin inkluderar portföljoptimering, där det bästa alternativet att investera kapital söks från en viss uppsättning tillgångar. Inom datorer och elektronisk design är enhetsstorlek ett annat optimeringsproblem, där den bästa längden och bredden för en enhet, såsom en krets, måste bestämmas. Dataanpassning, en annan aspekt relaterad till datorer och elektroniska enheter, försöker hitta modellen ur en grupp potentiella kandidatmodeller som bäst passar någon sorts observerad data eller tidigare inhämtad information.