La programació quadràtica (QP) és el procés de resolució de determinats problemes d'optimització matemàtica que impliquen funcions quadràtiques. Concretament, es busca optimitzar (minimitzar o maximitzar) una funció quadràtica multivariant subjecta a restriccions lineals sobre les variables. La programació quadràtica és un tipus de programació no lineal.[1]
"Programació" en aquest context es refereix a un procediment formal per resoldre problemes matemàtics. Aquest ús data de la dècada de 1940 i no està específicament lligat a la noció més recent de "programació d'ordinadors". Per evitar confusions, alguns professionals prefereixen el terme "optimització", per exemple, "optimització quadrada".[2]
El problema de programació quadràtica amb n variables i m restriccions es pot formular de la següent manera. Donat:
l'objectiu de la programació quadràtica és trobar un vector n -dimensional x, que ho farà
minimitzar | |
subjecte a |
on xT denota la transposició vectorial de x, i la notació Ax ⪯ b significa que cada entrada del vector Ax és menor o igual que l'entrada corresponent del vector b (desigualtat per components).[3]
Com a cas especial quan Q és simètrica positiva-definida, la funció de cost es redueix a mínims quadrats:
minimitzar | |
subjecte a |
on Q = RTR es desprèn de la descomposició de Cholesky de Q i c = −RT d. Per contra, qualsevol programa de mínims quadrats restringit es pot emmarcar de manera equivalent com un problema de programació quadràtica, fins i tot per a una matriu R genèrica no quadrada.
Quan es minimitza una funció f al voltant d'algun punt de referència x0, Q s'estableix a la seva matriu hessiana H(f(x0)) i c s'estableix al seu gradient ∇f(x0). Un problema de programació relacionat, la programació quadràtica restringida, es pot plantejar afegint restriccions quadràtiques a les variables.[4]
Per a problemes generals s'utilitzen habitualment una varietat de mètodes, com ara
En el cas en què Q és definit positiu, el problema és un cas especial del camp més general de l'optimització convexa.