29 votos

Convertir un programa de valor absoluto en un programa lineal

Tengo el problema de optimización genérico:

$$ \max c^T|x|$$

$$ \text{s.t. } Ax \le b $$

$x$ no tiene restricciones

¿Cómo lo convierto en un problema de programación lineal?

En Internet he leído algo sobre dejar $x$ igual a la diferencia de 2 números positivos, pero no pude comprender intuitivamente por qué funcionaba. Además, el ejemplo sólo se aplicaba a problemas de minimización en los que el $c^T$ las entradas son todas mayores que $0$ .

Estoy un poco atascado

0 votos

$c^Tx$ significa $c_1x_1+\cdots+c_nx_n$ pero, ¿qué hace el $|x|$ tendría que denotar un vector para $c^T|x|$ para que tenga sentido.

0 votos

Valor absoluto de los términos individuales de X no la norma del vector

0 votos

Siempre se puede convertir un problema de maximización en un problema de minimización invirtiendo la función de coste. Ambos problemas te darán la misma respuesta.

1voto

user33383 Puntos 11

$$ \begin{array}{rcr} \min_{\mathbf{u},\mathbf{x}} \mathbf{1}^\mathrm{T}\mathbf{u} & \mathrm{s.t.} & \mathbf{x}-\mathbf{u} \preceq \mathrm{0} \\ & & -\mathbf{x}-\mathbf{u} \preceq \mathrm{0} \\ & & \mathbf{Ax} \preceq \mathrm{b} \\ \end{array} $$

donde $\preceq$ se supone que significa una relación de menos a más en cuanto a elementos. También he omitido $\mathbf{c}$ ya que sólo hay que escalar los elementos de $\mathbf{x}$ para ser $c_i x_i$ .

En cuanto a la aplicación, algunos programas informáticos pueden exigirle que combine $\mathbf{x}$ con el vector ficticio $\mathbf{u}$ . En ese caso, el problema podría ser el siguiente

$$ \begin{array}{rcr} \min_{\mathbf{u},\mathbf{x}} \left[ \mathbf{1} \,\, \mathbf{0}\right]^\mathrm{T}\left[ \mathbf{u} \,\, \mathbf{x} \right] & \mathrm{s.t.} & \mathbf{x}-\mathbf{u} \preceq \mathrm{0} \\ & & -\mathbf{x}-\mathbf{u} \preceq \mathrm{0} \\ & & \mathbf{Ax} \preceq \mathrm{b} \\ \end{array} $$

A continuación, sólo hay que tomar la parte de la respuesta final que corresponde a $\mathbf{x}$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X