ÎncepețiÎncepe gratuit

Rezolvarea problemei de alocare a capitalului

Să revenim la problema de alocare a capitalului.

Managerul tău proiectează strategia firmei și analizează proiectele \(A\), \(B\), \(C\), unde \(A\) este condiție prealabilă pentru \(B\). Profiturile sunt, respectiv, \(V = [250, 200, 300]\), investiția necesară este I = [2000, 1900, 2500] și sunt disponibili doar 4.600 $. \(o\) este o variabilă binară care indică dacă un proiect este selectat sau nu.

Managerul tău ți-a prezentat 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\)

Sarcina ta este să liniarizezi și să rezolvi problema de maximizare a profitului.

Am importat deja pulp și am definit un model cu parametrii V, I, names pentru numele proiectelor (A, B, C și AB indexate în această ordine) și o reprezentând decizia binară folosind aceeași indexare.

Acest exercițiu face parte din cursul

Introducere în optimizare în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Definește funcția obiectiv liniarizată completând funcția pentru proiectele B și C, ținând cont de condițiile prealabile pentru B.
  • Definește constrângerile folosind variabila AB actualizată.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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)}')
Editează și rulează codul