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.

Programación lineal por partes en CPLEX

Tengo un problema al construir la expresión para los costos de transporte en CPLEX. En particular, es una función lineal por tramos del flujo de material, que refleja economías de escala. Consideremos el costo de transporte de la Planta al Almacén, denotamos T[f][j][m] y Qf1[f][j][m][r] como el costo base de transporte para transportar el producto de la familia f desde la planta j al almacén m y el flujo de material del producto de la familia f desde la planta j al almacén m, respectivamente. La r representa el rango al que pertenece el flujo. Este es el código:

sum(f in Fa, j in Pl, m in Wh, r in ra)
piecewise(t in 1..NbPieces-1)  {Coef[t]*T[f][j][m] -> Breakpoint[t]; Coef[NbPieces]*T[f][j][m]} Qf1[f][j][m][r];

Este es mi archivo .dat:

NbPieces=4;
Coef=[1, 0.95, 0.89, 0.8];
Breakpoint=[40, 100, 1000];

Sin embargo, el programa no puede extraer la expresión. ¿Puede alguien ayudarme a solucionar este error?

Editar: ¡Gracias, Alex Fleischer! Arreglé lo mencionado arriba. Sin embargo, aún no se alcanza la solución óptima. Creo que cometí otros errores. Cuando agregué las restricciones para asegurarme de que la suma del flujo de productos en cada familia de productos debe ser igual al flujo de esa familia de productos de una etapa a otra, no estoy seguro si está correcto o no.

Este es mi código para esa restricción, donde Q2 es la tasa de flujo del producto i desde el almacén m al centro de distribución k y Qf2 es la tasa de flujo de la familia de productos f desde el almacén m al centro de distribución k. La Familia 1 incluye los productos 1-6, 10. La Familia 2 incluye los productos 7-9. La Familia 3 incluye los productos 11-14.

forall (i in pr, m in Wh, k in DC)
    sum(i in pr:i<=6 || i==10) Q2[i][m][k] == sum(r in ra,f in Fa:f==1)Qf2[f][m][k][r];
forall (i in pr, m in Wh, k in DC)
    sum(i in pr:i<=9 || i>=7) Q2[i][m][k] == sum(r in ra,f in Fa:f==2)Qf2[f][m][k][r];
forall (i in pr, m in Wh, k in DC)
    sum(i in pr:i>=11) Q2[i][m][k] == sum(r in ra,f in Fa:f==3)Qf2[f][m][k][r];
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para ayudar a resolver este error, sería útil ver el mensaje de error específico que el programa está mostrando. Además, puede ser útil proporcionar más contexto e información sobre el problema en cuestión, como lo que representan las variables y las restricciones, para comprender mejor el problema.

    En cuanto a las restricciones agregadas para asegurar que la suma del flujo de productos en cada familia de productos sea igual al flujo de esa familia de productos de una etapa a otra, es difícil determinar si son correctas o no sin información adicional. Parecen estar escritas correctamente en términos de las variables, pero sin entender el problema general y el objetivo, es difícil determinar su corrección.

Comments are closed.