कैपिटल बजटिंग समस्या हल करना
कैपिटल बजटिंग समस्या को याद कीजिए.
आपके मैनेजर ने फर्म की रणनीति तैयार की है और प्रोजेक्ट \(A\), \(B\), \(C\) पर विचार किया है, और \(B\) के लिए \(A\) एक पूर्वापेक्षा है. मुनाफे क्रमशः \(V = [250, 200, 300]\) हैं, आवश्यक निवेश I = [2000, 1900, 2500] है और केवल $4600 उपलब्ध है. \(o\) एक बाइनरी वैरिएबल है जो दर्शाता है कि कोई प्रोजेक्ट चुना गया है या नहीं.
आपके मैनेजर ने आपको यह समस्या दी है:
\(\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\)
आपका काम है मुनाफे की समस्या को लीनियराइज़ करना और हल करना.
हमने पहले ही pulp इम्पोर्ट कर लिया है और model परिभाषित कर दिया है, जिसमें पैरामीटर V, I, names (प्रोजेक्ट नामों A, B, C, और AB को इसी क्रम में इंडेक्स किया गया) और o (उसी इंडेक्सिंग के साथ बाइनरी निर्णय) शामिल हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Optimization परिचय
अभ्यास निर्देश
- प्रोजेक्ट B के लिए पूर्वापेक्षा को ध्यान में रखते हुए, प्रोजेक्ट B और C के लिए फंक्शन भरकर लीनियराइज़्ड ऑब्जेक्टिव फंक्शन परिभाषित करें.
- अपडेट किए गए AB वैरिएबल का उपयोग करके बाधाएँ (constraints) परिभाषित करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# 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)}')