Začněte nyníZačněte zdarma

Řešení problému kapitálového rozpočtu

Vzpomeň si na problém kapitálového rozpočtu.

Tvůj manažer navrhuje firemní strategii a uvažuje projekty \(A\), \(B\), \(C\), přičemž \(A\) je předpokladem pro \(B\). Zisky jsou \(V = [250, 200, 300]\), požadované investice jsou I = [2000, 1900, 2500] a k dispozici je pouze 4 600 $. Proměnná \(o\) je binární a určuje, zda je daný projekt vybrán.

Manažer ti předal tento problém:

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

Tvým úkolem je linearizovat a vyřešit problém maximalizace zisku.

Knihovna pulp je již naimportována a model model je definován s parametry V, I, names pro názvy projektů (A, B, C a AB v tomto pořadí) a o reprezentující binární rozhodovací proměnnou se stejným indexováním.

Toto cvičení je součástí kurzu

Introduction to Optimization in Python

Zobrazit kurz

Pokyny k cvičení

  • Definuj linearizovanou účelovou funkci tak, že doplníš výrazy pro projekt B a C s ohledem na předpoklady pro projekt B.
  • Definuj omezení pomocí aktualizované proměnné AB.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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)}')
Upravit a spustit kód