ComenzarEmpieza gratis

Resolver el problema de presupuestación de capital

Recuerda el problema de presupuestación de capital.

Tu manager define la estrategia de la empresa y considera los proyectos \(A\), \(B\), \(C\), y \(A\) es el prerrequisito de \(B\). Los beneficios son respectivamente \(V = [250, 200, 300]\), la inversión requerida es I = [2000, 1900, 2500] y solo hay $4600 disponibles. \(o\) es una variable binaria que indica si se selecciona un proyecto.

Tu manager te ha dado el problema:

\(\max\ \ o_AV_A + o_{AB}V_B + o_CV_C\) \(s.t.\ o_AI_A + o_{AB}I_B + o_CI_C\leq 4600\)

Tu tarea es linearizar y resolver el problema de beneficios.

Ya hemos importado pulp y definido un model con los parámetros V, I, names para los nombres de los proyectos (A, B, C y AB indexados en ese orden), y o que representa la decisión binaria usando el mismo indexado.

Este ejercicio forma parte del curso

Introducción a la optimización en Python

Ver curso

Instrucciones del ejercicio

  • Define la función objetivo linearizada completando la parte de los proyectos B y C, teniendo en cuenta el prerrequisito de B.
  • Define las restricciones usando la variable actualizada AB.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Define the objective
model += o[0]*V[0] + ____*V[1] + ____*V[2]

# Define the constraints
model += o[0]*I[0] + ____*I[1] + o[2]*I[2] <= 4600, 'budget constraint'
model += o[____] <= o[0]
model += o[____] <= o[1]
model += o[____] >= o[0] + o[1] - 1 

status = model.solve()
print(f"{'Optimal found' if status == 1 else 'Ignore solution'}")

for i, name in enumerate(names):
    print(f"{name}: {'accepted' if o[i].varValue == 1 else 'rejected'}")
print(f'Total profit = ${value(model.objective)}')
Editar y ejecutar código