CommencerCommencer gratuitement

Résoudre le problème de budgétisation du capital

Rappelez-vous le problème de budgétisation du capital.

Votre responsable définit la stratégie de l’entreprise et envisage les projets \(A\), \(B\), \(C\), avec \(A\) comme prérequis pour \(B\). Les profits sont respectivement \(V = [250, 200, 300]\), l’investissement requis est I = [2000, 1900, 2500] et seulement $4600 sont disponibles. \(o\) est une variable binaire indiquant si un projet est sélectionné.

Votre responsable vous a donné le problème :

\(\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\)

Votre tâche est de linéariser et de résoudre le problème de profit.

Nous avons déjà importé pulp et défini un model avec les paramètres V, I, names pour les noms des projets (A, B, C et AB indexés dans cet ordre), et o représentant la décision binaire en utilisant le même indexage.

Cet exercice fait partie du cours

Introduction à l’optimisation en Python

Afficher le cours

Instructions

  • Définissez la fonction objectif linéarisée en complétant les termes pour les projets B et C, en tenant compte du prérequis pour B.
  • Définissez les contraintes en utilisant la variable AB mise à jour.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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)}')
Modifier et exécuter le code