LoslegenKostenlos loslegen

Das Capital-Budgeting-Problem lösen

Erinnere dich an das Capital-Budgeting-Problem.

Dein Manager legt die Firmenstrategie fest und betrachtet die Projekte \(A\), \(B\), \(C\), wobei \(A\) die Voraussetzung für \(B\) ist. Die Gewinne sind \(V = [250, 200, 300]\), die erforderlichen Investitionen sind I = [2000, 1900, 2500] und es stehen nur $4600 zur Verfügung. \(o\) ist eine binäre Variable, die angibt, ob ein Projekt ausgewählt wird.

Dein Manager hat dir das Problem gegeben:

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

Deine Aufgabe ist es, das Gewinnproblem zu linearisieren und zu lösen.

Wir haben pulp bereits importiert und ein model mit den Parametern V, I, names für die Projektnamen (A, B, C und AB in genau dieser Reihenfolge indiziert) und o für die binäre Entscheidung mit derselben Indizierung definiert.

Diese Übung ist Teil des Kurses

Einführung in Optimierung mit Python

Kurs anzeigen

Anleitung zur Übung

  • Definiere die linearisierte Zielfunktion, indem du die Funktion für Projekt B und C ergänzt und die Voraussetzung für B berücksichtigst.
  • Definiere die Nebenbedingungen unter Verwendung der aktualisierten AB-Variable.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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)}')
Code bearbeiten und ausführen