Programación cónica · Artículo 02

Qué es un programa cónico

Con la geometría de conos en la mano, definimos el objeto central del módulo: el programa cónico, su problema dual, y la desigualdad —dualidad débil— que relaciona a ambos y que se demuestra en tres líneas.

Un programa cónico es la receta más económica posible para optimizar de forma convexa: un objetivo lineal, una restricción afín, y la exigencia de que la solución viva en un cono. Toda su riqueza está en qué cono elijas. Aquí montamos el primal, el dual, y la relación entre ambos.

Los ingredientes

Fijamos dos espacios reales con producto interior, V\mathcal{V} y W\mathcal{W} (piensa en Herm\mathrm{Herm} de algún espacio). Necesitamos:

Es importante que el cuerpo de escalares sea R\mathbb{R}: aunque los operadores tengan entradas complejas, Herm(X)\mathrm{Herm}(\mathcal{X}) es un espacio vectorial real, y la teoría de dualidad se apoya en ello.

El problema primal

Con esos ingredientes, el problema primal es

maximizara,xsujeto aΦ(x)=b,xK.\begin{array}{ll} \text{maximizar} & \langle a, x\rangle \\[2pt] \text{sujeto a} & \Phi(x) = b, \\[2pt] & x \in K. \end{array}

Un xx que cumple ambas restricciones es factible; el mayor valor alcanzable de a,x\langle a, x\rangle es el valor óptimo primal. La programación lineal es el caso K=R0nK = \mathbb{R}^n_{\ge 0}; la semidefinida, el caso K=Pos(X)K = \mathrm{Pos}(\mathcal{X}).

El adjunto

Para escribir el dual necesitamos una pieza: el adjunto (mapa) de Φ\Phi. Es el único mapa lineal Φ:WV\Phi^{*} : \mathcal{W} \to \mathcal{V} que traslada el producto interior de un lado al otro:

Φ(y),xV=y,Φ(x)Wpara todo xV, yW.\langle \Phi^{*}(y),\, x\rangle_{\mathcal{V}} = \langle y,\, \Phi(x)\rangle_{\mathcal{W}} \qquad \text{para todo } x \in \mathcal{V},\ y \in \mathcal{W}.

Si representas Φ\Phi por una matriz, Φ\Phi^{*} es su transpuesta conjugada. Para superoperadores es la misma idea, un nivel más arriba.

El problema dual

El problema dual asociado se construye con el adjunto y con el cono dual del artículo anterior:

minimizarb,ysujeto aΦ(y)aK.\begin{array}{ll} \text{minimizar} & \langle b, y\rangle \\[2pt] \text{sujeto a} & \Phi^{*}(y) - a \in K^{*}. \end{array}

Aquí yWy \in \mathcal{W} es libre (no vive en ningún cono), pero la holgura Φ(y)a\Phi^{*}(y) - a debe caer en el cono dual KK^{*}. Es exactamente donde el trabajo geométrico del Artículo 01 rinde fruto.

Dualidad débil, en tres líneas

La dualidad débil dice que cualquier valor dual factible acota por arriba a cualquier valor primal factible. Toma un xx primal factible y un yy dual factible. Entonces

b,ya,x=Φ(x),ya,x=Φ(y)a, x0,\langle b, y\rangle - \langle a, x\rangle = \langle \Phi(x), y\rangle - \langle a, x\rangle = \langle \Phi^{*}(y) - a,\ x\rangle \ge 0,

donde el primer paso usa b=Φ(x)b = \Phi(x), el segundo la definición del adjunto, y el último que xKx \in K y Φ(y)aK\Phi^{*}(y)-a \in K^{*} — que es justo lo que significa el cono dual. Por tanto

a,xb,y.\langle a, x\rangle \le \langle b, y\rangle.

El valor primal nunca supera al dual. La diferencia b,ya,x\langle b,y\rangle - \langle a,x\rangle se llama brecha de dualidad, y siempre es no negativa. La pregunta interesante —¿cuándo llega a cero?— es el tema del Artículo 04.

Ejemplos resueltos

Ejemplo resuelto 1 · Un programa cónico completo

Problema. Toma V=R2\mathcal{V} = \mathbb{R}^2, cono K=R02K = \mathbb{R}^2_{\ge 0}, mapa Φ(x)=x1+x2\Phi(x) = x_1 + x_2 hacia W=R\mathcal{W} = \mathbb{R}, con a=(1,2)a = (1, 2) y b=1b = 1. Resuelve el primal y el dual y comprueba que coinciden.

Primal. «maximizar x1+2x2x_1 + 2x_2 sujeto a x1+x2=1x_1 + x_2 = 1, x0x \ge 0». La restricción obliga a repartir una unidad entre x1x_1 y x2x_2; como x2x_2 vale el doble, conviene poner todo el peso ahí: x=(0,1)x = (0, 1), con valor a,x=2\langle a, x\rangle = 2.

Dual. El adjunto de xx1+x2x \mapsto x_1 + x_2 es y(y,y)y \mapsto (y, y), y el ortante es autodual, así que la condición Φ(y)aK\Phi^{*}(y) - a \in K^{*} es (y,y)(1,2)(y, y) \ge (1, 2), es decir y1y \ge 1 y y2y \ge 2. El dual es «minimizar yy sujeto a y2y \ge 2», con óptimo y=2y = 2 y valor b,y=12=2\langle b, y\rangle = 1\cdot 2 = 2.

Comprobación. Valor primal =2== 2 = valor dual: no hay brecha.

Ejemplo resuelto 2 · La brecha, con números

Problema. En el mismo programa, toma un par no óptimo pero factible: x=(1,0)x = (1, 0) en el primal e y=3y = 3 en el dual. Verifica la dualidad débil y que la brecha es exactamente Φ(y)a, x\langle \Phi^{*}(y) - a,\ x\rangle.

Valores: a,x=1\langle a, x\rangle = 1 y b,y=3\langle b, y\rangle = 3, así que 131 \le 3 ✓. La brecha es 31=23 - 1 = 2. Y por la cuenta del artículo,

Φ(y)a, x=(3,3)(1,2), (1,0)=(2,1), (1,0)=2.\langle \Phi^{*}(y) - a,\ x\rangle = \langle (3,3) - (1,2),\ (1,0)\rangle = \langle (2,1),\ (1,0)\rangle = 2.

Coincide. Fíjate en que ambos factores son «buenos»: x=(1,0)Kx = (1,0) \in K y (2,1)K(2,1) \in K^{*}, por eso su producto interior es 0\ge 0 — la brecha nunca puede ser negativa.

Ejercicios

Ejercicio 1

Comprueba que la desigualdad de dualidad débil no usa en ningún momento que KK sea autodual — solo la definición de cono dual. ¿Qué propiedad exacta de KK y KK^{*} hace falta en el último paso?

Solución

Solo se usa que xKx \in K y que Φ(y)aK\Phi^{*}(y) - a \in K^{*}, junto con la definición u,v0\langle u, v\rangle \ge 0 para uKu \in K^{*}, vKv \in K. No hace falta autodualidad ni ninguna condición de regularidad: la dualidad débil es gratuita. La autodualidad de Pos\mathrm{Pos} se usará más adelante solo para reconocer que el dual de una SDP es otra SDP.

Ejercicio 2

Especializa el programa cónico a V=Rn\mathcal{V} = \mathbb{R}^n, K=R0nK = \mathbb{R}^n_{\ge 0}, con Φ(x)=Ax\Phi(x) = A x para una matriz AA. Escribe el dual explícitamente y reconoce el par primal-dual de la programación lineal.

Solución

El primal es «maximizar aTxa^{\mathsf{T}} x sujeto a Ax=bA x = b, x0x \ge 0». El adjunto de xAxx \mapsto A x es yATyy \mapsto A^{\mathsf{T}} y, y como el ortante es autodual, la condición Φ(y)aK\Phi^{*}(y) - a \in K^{*} es ATya0A^{\mathsf{T}} y - a \ge 0. El dual queda «minimizar bTyb^{\mathsf{T}} y sujeto a ATyaA^{\mathsf{T}} y \ge a» — el par primal-dual estándar de la programación lineal.