8 votos

Linealización de un producto de dos variables de decisión

Estoy tratando de resolver un problema que implica restricciones en las que aparecen productos de dos variables de decisión. Hasta ahora, he leído que dichos productos se pueden reformular a una diferencia de dos términos cuadráticos:

$x_1\cdot x_2=y_1^2-y_2^2$

Dónde $y_1 = 0.5 \cdot \left( x_1+x_2 \right)$ y $y_2 = 0.5 \cdot \left( x_1-x_2 \right)$

Como se indica en "Model building in mathematical programming" de H.P. Williams, intenté linealizar $y_1^2$ y $y_2^2$ por aproximación a trozos. Cuando sólo utilizo dos puntos de nodo (un intervalo) para la aproximación a trozos, mis solucionadores (Gurobi 5.6.3 y CPLEX 12.5.1) son capaces de resolver el problema, pero cuando introduzco más puntos de nodo, ambos concluyen que el problema se vuelve inviable.

Ya he probado las variables SOS2 así como un enfoque binario para la linealización de $y_1^2$ y $y_2^2$ .

También he utilizado las series de Taylor para aproximar directamente $x_1\cdot x_2$ que dio resultados similares a la aproximación con dos puntos de nodo. Como este método tuvo éxito, supongo que el resto de mi modelo es factible y sólo este producto complica las cosas.

Así que mis preguntas son:

  1. ¿Qué puede causar la inviabilidad? Pensé que añadir más puntos de nodo sería beneficioso para el problema.
  2. ¿Existen mejores formas de aproximar estos productos? También he experimentado con una reformulación usando logaritmos, pero esto causó más esfuerzo computacional y no resolvió el problema de infeasibilidad.

1 votos

¿Son sus variables de decisión de algún tipo específico (continuas, enteras, binarias)? ¿Tienen límites superiores y/o inferiores?

0 votos

Ambas variables de decisión son continuas. Además, ambas están acotadas: $0\le x_1 \le 0.5$ y $20 \le x_2 \le 80$ . También intenté escalar ambos para que estuvieran entre 1 y 2, pero esto tampoco ayudó.

3voto

theage Puntos 293

El Guía de modelización AIMMS en la sección 7.7 proporciona la siguiente pista para las variables acotadas: enter image description here

0 votos

Bueno, esto es más o menos lo que hice. Como se mencionó anteriormente, esto funciona bien para mí, cuando yo sólo uso 2 puntos de nodo para aproximar $y_1^2$ y $y_2^2$ . Pero el problema no se resuelve más, si introduzco más puntos de nodo, intentando aproximar mejor las parábolas.

0 votos

¿Y las cosas no mejoran si se hace uso de los límites?

0 votos

La mencionada aproximación con dos puntos utilizó estos límites. El punto del nodo de mayor valor representaba el límite superior, el punto del nodo de menor valor el límite inferior. Dado que esta aproximación sufre un gran error entre la función real y la aproximación, intenté introducir más puntos de nodo (utilicé una cuadrícula equidistante), pero tan pronto como introduje incluso un punto más, el problema se volvió inviable (según CPLEX y GUROBI)

-2voto

Tommaso Ascari Puntos 10

Echa un vistazo en este documento . Este artículo presenta 10 métodos para su problema. en la página 5, los autores introducen el procedimiento SOS para términos bilineales.

0 votos

Todos estos métodos producen un MILP. La técnica que utiliza la OP produce un programa lineal. Por lo tanto, esto no sólo no responde a la pregunta original, sino que traslada la optimización a un paradigma computacional completamente diferente.

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