1 votos

¿Cómo modelar las declaraciones iff y union en MILP?

Estoy tratando de modelar {Axb}{Bxc} . ¿Qué diferencia hay con {Axb}{Bxc} ?

  1. Cómo modelar con variables binarias cuando b y c son 0 vectores.

  2. También estoy tratando de modelar {Ax0}{Bx0} .

Para modelar la unión si b y c fueron non - zero entonces basta con introducir variables binarias z1,z2{0,1} e introducir los criterios:

  1. z1+z2=1

  2. x1 es un vector tal que Ax1bz1 y x1 es un vector tal que Bx2cz2 .

  3. x=x1+x2 .

Si b y/o c son 0 vectores entonces este truco falla.

¿Hay una forma mejor?

2voto

James Sneeringer Puntos 4574

Para ver la diferencia mira un ejemplo. En x=(x1x2) , A=(1000) , b=0 , B=(0001) , c=0 tienes

Equivalence versus conjunction

con la equivalencia a la izquierda y la conjunción a la derecha. Por lo tanto, en general {Axb}{Bxc} no es convexo y no se puede modelar sin variables binarias.

1voto

prubin Puntos 51

He borrado mi primera respuesta porque era completamente errónea. (He negado incorrectamente una desigualdad vectorial).

Es posible acercarse al resultado deseado utilizando un conjunto de variables binarias, suponiendo que (a) el conjunto de variables factibles x está acotado y (b) está dispuesto a ignorar algunas soluciones factibles. Esto último es necesario porque la negación de una desigualdad débil es una desigualdad fuerte, y los modelos PIM (y los solucionadores) aborrecen las desigualdades fuertes.

Dejemos que m y n sean las dimensiones de b y c respectivamente, dejemos que M y ϵ sean constantes positivas suficientemente grandes y pequeñas (respectivamente), y que z1,,zm y y1,,yn sean variables binarias. Añade las restricciones bi+ϵM(1zi)(Ax)ibi+Mzi(i=1,,m) y ci+ϵM(1yi)(Bx)ici+Myi(i=1,,n). Observe que zi=0(Ax)ibi y zi=1(Ax)ibi+ϵ . Queda desterrada de la región factible cualquier solución en la que bi<(Ax)i<bi+ϵ que es el coste de hacer negocios. Observaciones similares son válidas para el segundo conjunto de restricciones.

Para hacer cumplir AxbBxc necesitamos exigir que i=1mzi1j=1nyj1 . Hay varias formas de hacerlo, cambiando más restricciones por relajaciones (posiblemente) más estrictas. Una forma es añadir las restricciones ni=1mzij=1nyj y mj=1nyji=1mzi.

He utilizado un único parámetro ϵ y un único parámetro M pero es posible que desee buscar los valores adecuados fila por fila (especialmente para M , ya que los valores más grandes de M tenderá a debilitar las relajaciones).

Las disyunciones son más fáciles. Sólo se necesitan dos variables binarias ( z1 y z2 ), con las desigualdades Axb+M1z1 y Bxc+M2z2. Aquí M1 y M2 son vectores de valores constantes grandes. Para obtener su disyunción, necesita z1=0 o z2=0 (o ambos). Esto se puede aplicar mediante la restricción z1+z21 .

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