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.

CPLEX/OPL – restricción con booleano (modelo de optimización)

Tengo un modelo de optimización que debe asignar la demanda para 10 mercados a 3 sitios de producción. Los sitios de producción tienen su capacidad y toda la demanda debe ser satisfecha. Quiero minimizar los costos totales.

Sin embargo, también tengo un parámetro llamado aprobación que indica si el sitio de producción se puede utilizar para un mercado específico. Este es un booleano (1 si el sitio puede producir, 0 si no). Me cuesta definir una restricción para incluir esta aprobación en el modelo.

Tengo una función objetivo que minimiza la suma de los costos por cantidad por aprobación. Luego tengo 2 restricciones para satisfacer toda la demanda y no producir más de la capacidad del sitio de producción. Ahora quiero tener una restricción que solo considere los costos de aquellos sitios de producción que tengan una aprobación igual a 1.

¿Alguien podría ayudarme, por favor?

¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para incorporar el parámetro de aprobación en el modelo, puedes introducir una variable de decisión binaria para cada combinación de mercado-sitio para representar si esa combinación específica es seleccionada para la producción o no. Sea xij la variable de decisión binaria para el mercado i y el sitio de producción j, donde xij = 1 si la combinación es seleccionada y xij = 0 en caso contrario.

    Para asegurar que solo se consideren los sitios con aprobación = 1, puedes introducir un nuevo parámetro binario yj para cada sitio de producción j, donde yj = 1 si el sitio tiene aprobación y yj = 0 en caso contrario. Luego puedes modificar la función objetivo para incluir solo los costos y las cantidades de aquellos sitios de producción con aprobación, de la siguiente manera:

    Minimizar:
    sum(i=1 to 10, j=1 to 3) (costij * quantityij * xij * yj)

    Sujeto a:
    sum(j=1 to 3) (quantityij * xij) = demandi, para todo i = 1 to 10
    sum(i=1 to 10) (quantityij * xij) <= capacityj * yj, para todo j = 1 to 3
    xij binaria, para todo i = 1 to 10 y j = 1 to 3
    yj binaria, para todo j = 1 to 3

    La primera restricción asegura que toda la demanda sea satisfecha, mientras que la segunda restricción asegura que la producción no exceda la capacidad de los sitios aprobados. La función objetivo modificada sólo incluye costos y cantidades para aquellos sitios de producción con aprobación (es decir, donde yj = 1).

Comments are closed.