es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo hacer que CPLEX entienda a qué parte específica de la tupla me estoy refiriendo?

Tengo esta tupla:

tuple copie_macchine {

int macchina;
int copia1;
int copia2;
int copia3;

}

{copie_macchine} copie = …;

Por ejemplo:

copie = {<3,3,4,0>,
<6,7,8,9>,
<8,11,12,0>,
<9,13,14,0>,
<10,15,16,0>,
<20,26,27,28>};

y tengo esta parte de codigo:

forall (j in J)

forall (m in M )

       forall (i1 in I)

          forall (c in copie : c.copia3 !=0 &amp;&amp; m == c.copia1 || m == c.copia2 || m == c.copia3)

                {

                  sum (m in M) y[i1][j][m] == 1;   

                }

¿Cómo puedo hacer que CPLEX entienda que, por ejemplo, c.macchina = 3 se refiere a c.copia1 = 3, c.copia2 = 4?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para hacer que CPLEX entienda que c.macchina = 3 se refiere a c.copia1 = 3 y c.copia2 = 4, se puede utilizar una declaración condicional en el ciclo forall para c. El código se vería algo así:

    forall (j en J)
        forall (m en M )
            forall (i1 en I)
                forall (c in copie : c.copia3 != 0 && (m == c.copia1 || m == c.copia2 || m == c.copia3))
                    {
                        int copy;
                        if(m == c.copia1) {copy = 1;}
                        else if(m == c.copia2) {copy = 2;}
                        else {copy = 3;}
    
                        sum (m en M) y[i1][j][m] == 1;
                    }
    

    En esta versión modificada del código, creamos una variable llamada “copy” que se le asigna un valor según la copia de la máquina que se esté considerando. Esto se hace usando una declaración condicional que verifica si m (la máquina que se está considerando en el ciclo más interior) es igual a c.copia1, c.copia2 o c.copia3. Si m es igual a c.copia1, entonces copy se establece en 1, y así sucesivamente.

    Luego, cuando usamos la función sum más adelante en el código, usamos la variable recién creada copy en lugar de m para asegurarnos de que estamos sumando sobre la copia correcta de la máquina.

    Esto ayudará a CPLEX a referenciar correctamente los números de copia para cada máquina en la tupla.

Comments are closed.