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 entera – Declaración “si-entonces”

Soy nuevo en la programación lineal/entera y estoy teniendo dificultades para formular restricciones para una declaración “si-entonces” específica en un problema de cargos fijos. Supongamos que hay cinco fabricantes de camisetas y un cliente desea comprar 400 camisetas minimizando los costos.

Fabricante Costo variable por camiseta Entrega Disponibilidad
A 3 40 200
B 3.5 30 100
C 4.10 Entrega gratuita 100
D 4.1 30 200
E 3.2 30 Primeras 100 camisetas
E 2.90 20 Camisetas 101 a 150

El fabricante E tiene una disponibilidad de 150 camisetas. Las primeras 100 camisetas compradas al fabricante E tienen un costo variable de $3.20 y una tarifa de entrega de $30. Si el cliente ordena más de 100 camisetas al fabricante E, puede comprarlas a un costo variable de $2.90 y una tarifa adicional de $20.

¿Cómo puedo crear restricciones a partir de esta declaración “si-entonces”?

  • Xe1 = número de camisetas caras compradas al fabricante E
  • Xe2 = número de camisetas baratas compradas al fabricante E

Deseo que exista la restricción Xe2 <= 0 cuando Xe1 < 100.

¡Gracias de antemano!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para crear la restricción deseada, se puede utilizar una variable binaria para indicar si el cliente compra alguna camiseta del productor E. Llamémosle a esta variable Y.

    Si Y=0, entonces Xe1=Xe2=0, ya que no se compran camisetas del productor E.

    Si Y=1, entonces necesitamos imponer la restricción Xe2 <= 0 cuando Xe1 < 100. Una forma de hacer esto es introducir una nueva variable binaria, llamémosle Z, y añadir las siguientes restricciones:

    • Xe1 <= 100Z
    • Xe2 <= 400 – Xe1 – 100(1-Z)

    La primera restricción asegura que si Z=0 (lo que significa que el cliente solo compra camisetas caras del productor E), entonces Xe1 debe ser menor o igual a 100. La segunda restricción asegura que Xe2 es cero siempre que Xe1 sea menor a 100, independientemente del valor de Z.

    Reuniendo todo, las restricciones para el problema de cargo fijo con la declaración if-then son las siguientes:

    • Xa, Xb, Xc, Xd, Xe1, Xe2 ≥ 0
    • Xa + Xb + Xc + Xd + Xe1 + Xe2 = 400
    • Xa ≤ 200
    • Xb ≤ 100
    • Xc + 40Y ≤ 100
    • Xd ≤ 200
    • Xe1 + Xe2 ≤ 150
    • Xe1 <= 100Z
    • Xe2 <= 400 – Xe1 – 100(1-Z)
    • Y, Z ∈ {0,1}

    Tenga en cuenta que las restricciones para el productor E se han dividido en dos variables separadas, Xe1 y Xe2, para tener en cuenta los diferentes costos y tarifas de envío asociados con la compra de camisetas de E.

Comments are closed.