BaşlayınÜcretsiz Başlayın

Sermaye bütçeleme problemini çözme

Sermaye bütçeleme problemini hatırla.

Yöneticin firmanın stratejisini tasarlıyor ve \(A\), \(B\), \(C\) projelerini değerlendiriyor; ayrıca \(B\) için önkoşul $A$’dır. Kârlar sırasıyla \(V = [250, 200, 300]\), gerekli yatırım I = [2000, 1900, 2500] ve yalnızca $4600 mevcuttur. \(o\), bir projenin seçilip seçilmediğini gösteren ikili bir değişkendir.

Yöneticin sana şu problemi verdi:

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

Görevin, kâr problemini doğrusal hale getirip çözmektir.

pulp zaten içe aktarıldı ve model tanımlandı; parametreler V, I, proje adları için names (sırayla A, B, C ve AB olarak indekslenmiş) ve aynı indekslemeyi kullanan ikili kararı temsil eden o olarak verildi.

Bu egzersiz

Python ile Optimizasyona Giriş

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • B için önkoşulları dikkate alarak, proje B ve C için fonksiyonu doldurup doğrusal hale getirilmiş amaç fonksiyonunu tanımla.
  • Güncellenmiş AB değişkenini kullanarak kısıtları tanımla.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

# 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)}')
Kodu Düzenle ve Çalıştır