পাঠ ৫২ · ৫৭-এর মধ্যে · মডিউল ১২
Home / Courses / Engineering Economics / ইকোনমিক সার্ভিস লাইফ

ইকোনমিক সার্ভিস লাইফ

Economic service life
১১ মিনিট পড়া উন্নত · Advanced Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • ইকোনমিক সার্ভিস লাইফের সংজ্ঞা এবং কেন এটি সম্পদের ফিজিক্যাল লাইফের থেকে ভিন্ন হতে পারে
  • Capital-recovery-with-salvage সূত্র ($ (P-S_N)(A/P,i,N) + S_N \cdot i $) এবং O&M খরচের AW
  • প্রতিটি সম্ভাব্য রিটেনশন N-এর জন্য AW(N) গণনা করে সর্বনিম্ন খুঁজে বের করার প্রোগ্রাম্যাটিক পদ্ধতি
  • Python দিয়ে একটি সম্পূর্ণ, সার্চ-ভিত্তিক ইকোনমিক-সার্ভিস-লাইফ হিসাব

১ · ইকোনমিক সার্ভিস লাইফ কী

একটি সম্পদ যত পুরনো হয়, তার O&M (অপারেশন ও মেইনটেন্যান্স) খরচ সাধারণত বাড়তে থাকে (যন্ত্রাংশ ক্ষয়প্রাপ্ত হয়, মেরামতের প্রয়োজন বাড়ে), আর একইসাথে বিক্রি করলে যে দাম পাওয়া যাবে (স্যালভেজ ভ্যালু) কমতে থাকে। এই দুই বিপরীতমুখী প্রবণতার কারণে সম্পদটি কত বছর রাখলে মোট বার্ষিক সমতুল্য খরচ (AW-of-total-cost) সবচেয়ে কম হবে, তা আগে থেকে অনুমান করা যায় না — প্রতিটি সম্ভাব্য রিটেনশন বছরের জন্য আলাদাভাবে হিসাব করতে হয়। এই সর্বনিম্ন-খরচ রিটেনশন পিরিয়ডকেই ইকোনমিক সার্ভিস লাইফEconomic Service Lifeসেই রিটেনশন পিরিয়ড যেখানে সম্পদের AW-of-total-cost সর্বনিম্ন হয় -- একজন যুক্তিবাদী মালিকের পরিকল্পনা করা উচিত সম্পদটি ঠিক এতদিনই রাখার। বলা হয়।

২ · AW-of-total-cost বের করার সূত্র

যেকোনো রিটেনশন পিরিয়ড N-এর জন্য AW-of-total-cost দুটো অংশের যোগফল —

Capital recovery with salvage
$$CR(N) = (P - S_N)(A/P, i, N) + S_N \cdot i$$ সম্পদ কেনার খরচ P, N বছর পরের স্যালভেজ $S_N$ ফেরত পাওয়া বাদ দিয়ে, একটি বার্ষিক সমতুল্য মূলধন-খরচে রূপান্তর করে।
O&M-এর AW
প্রতিটি বছরের O&M খরচ আগে প্রেজেন্ট ওয়ার্থে ডিসকাউন্ট করে, তারপর N বছরের উপর A/P ফ্যাক্টর দিয়ে একটি বার্ষিক সমতুল্য খরচে রূপান্তর করা হয়।

$CR(N)$ সূত্রটি $P \cdot (A/P,i,N) - S_N \cdot (A/F,i,N)$-এর সমতুল্য (কারণ $A/P - A/F = i$) — নিচের কোডে এই দ্বিতীয় রূপটি ব্যবহার করা হবে, কারণ এটি সরাসরি L10-এর A/P ও A/F ফ্যাক্টর ফাংশন দিয়ে গণনা করা যায়।

৩ · Python-এ প্রয়োগ — প্রতিটি N-এর জন্য AW বের করে সর্বনিম্ন খোঁজা

ধরা যাক একটি মেশিনের ক্রয়মূল্য $40,000, সুদের হার ১০%, এবং বছর ১ থেকে ৬ পর্যন্ত N বছর রাখলে স্যালভেজ ভ্যালু ও সেই বছর পর্যন্ত O&M খরচ নিচের টেবিল অনুযায়ী —

স্যালভেজ (N বছর পর)
$32,000 / $26,000 / $21,000 / $17,000 / $14,000 / $12,000 (N = 1..6)
O&M খরচ (সেই বছরের)
$3,000 / $3,800 / $4,700 / $5,700 / $6,900 / $8,300 (বছর ১..৬)
Python
# ইকোনমিক সার্ভিস লাইফ -- প্রতিটি সম্ভাব্য রিটেনশন N-এর জন্য AW-of-total-cost গণনা করে সর্বনিম্ন খোঁজা

def a_p_factor(i, n):
    return i * (1 + i) ** n / ((1 + i) ** n - 1)

def a_f_factor(i, n):
    return i / ((1 + i) ** n - 1)

P = 40000     # ক্রয়মূল্য
i = 0.10      # সুদের হার

# ইনডেক্স 0 = বছর ১, ইনডেক্স 5 = বছর ৬
salvage = [32000, 26000, 21000, 17000, 14000, 12000]   # N বছর রাখলে স্যালভেজ ভ্যালু
om      = [3000, 3800, 4700, 5700, 6900, 8300]         # সেই বছরে হওয়া O&M খরচ

max_n = len(salvage)
aw_by_n = {}

print(f"{'N':>3} | {'Capital Recovery':>18} | {'AW of O&M':>14} | {'AW মোট':>14}")
print("-" * 58)

for n in range(1, max_n + 1):
    S_n = salvage[n - 1]

    # capital recovery with salvage -- P*(A/P,i,n) - S_n*(A/F,i,n)
    capital_recovery = P * a_p_factor(i, n) - S_n * a_f_factor(i, n)

    # n বছর পর্যন্ত প্রতিটি O&M খরচকে প্রথমে প্রেজেন্ট ওয়ার্থে আনা, তারপর n বছরের উপর AW-তে রূপান্তর
    pw_om = sum(om[t - 1] / (1 + i) ** t for t in range(1, n + 1))
    aw_om = pw_om * a_p_factor(i, n)

    aw_total = capital_recovery + aw_om
    aw_by_n[n] = aw_total

    print(f"{n:>3} | ${capital_recovery:>16,.2f} | ${aw_om:>12,.2f} | ${aw_total:>12,.2f}")

# সর্বনিম্ন AW খুঁজে বের করা -- অনুমান নয়, সার্চ করে
best_n = min(aw_by_n, key=aw_by_n.get)
print("-" * 58)
print(f"\nইকোনমিক সার্ভিস লাইফ: N = {best_n} বছর (সর্বনিম্ন AW = ${aw_by_n[best_n]:,.2f})")

    
এই নির্দিষ্ট ডেটাসেটে AW প্রতি বছর N বাড়ার সাথে সাথে ক্রমাগত কমতেই থাকে ($15,000 থেকে শুরু করে N=6-এ প্রায় $12,740.74 পর্যন্ত) — অর্থাৎ পরীক্ষা করা সীমার (N=1..6) মধ্যে সর্বনিম্ন AW N=6-এই পাওয়া যায়। এর মানে এই নয় যে N=6-ই একদম সর্বোচ্চ সম্ভাব্য ইকোনমিক লাইফ — যদি আরও বেশি বছরের ডেটা (N=7, 8, ...) পাওয়া যেত, তাহলে হয়তো কোনো এক পর্যায়ে O&M খরচের বৃদ্ধি capital recovery-র হ্রাসকে ছাড়িয়ে গিয়ে AW আবার বাড়তে শুরু করত। কোডটি যতটুকু ডেটা দেওয়া হয়েছে ততটুকুর মধ্যেই প্রোগ্রাম্যাটিকভাবে সর্বনিম্ন খুঁজেছে — এটাই এই পদ্ধতির শক্তি: কোনো বছরকে "সঠিক উত্তর" বলে আগে থেকে অনুমান করা হয়নি।
মূল কথা · Key takeaway

ইকোনমিক সার্ভিস লাইফ বের করতে প্রতিটি সম্ভাব্য রিটেনশন N-এর জন্য AW-of-total-cost আলাদাভাবে গণনা করে তুলনা করতে হয় — কোনো একক সূত্র সরাসরি "সঠিক" N দেয় না। এই একই ধরনের সার্চ-ভিত্তিক পদ্ধতি L53-এর ক্যাপিটাল বাজেটিং সমস্যাতেও ব্যবহৃত হবে, যেখানে সম্ভাব্য সব সমন্বয় (subset) পরীক্ষা করে সর্বোত্তমটি খুঁজে বের করা হবে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ কেন প্রতিটি N-এর জন্য আলাদাভাবে O&M খরচকে প্রথমে প্রেজেন্ট ওয়ার্থে আনতে হলো, সরাসরি গড় করা গেল না?

কারণ প্রতিটি বছরের O&M খরচ ভিন্ন সময়ে ঘটে, তাই তাদের নামমাত্র (undiscounted) গড় নেওয়া টাইম ভ্যালু অফ মানিকে উপেক্ষা করে — প্রথম বছরের খরচ শেষ বছরের খরচের চেয়ে বেশি মূল্যবান। তাই প্রতিটি বছরের খরচকে আগে প্রেজেন্ট ওয়ার্থে ডিসকাউন্ট করে যোগ করা হয়, তারপর সেই মোট PW-কে A/P ফ্যাক্টর দিয়ে সঠিক বার্ষিক সমতুল্যে রূপান্তর করা হয়।

প্র ০২ যদি এই মেশিনের ফিজিক্যাল লাইফ (আর কাজই করবে না) ৬ বছর হতো, আর কোডে N=3-এই সর্বনিম্ন AW পাওয়া যেত, তাহলে ব্যবসায়িক সিদ্ধান্ত কী হতো?

সেক্ষেত্রে ইকোনমিক সার্ভিস লাইফ (৩ বছর) ফিজিক্যাল লাইফ (৬ বছর)-এর চেয়ে কম, যার মানে মেশিনটি এখনো কাজ করতে সক্ষম হলেও, ৩ বছর পরই এটিকে বদলে ফেলা আর্থিকভাবে সবচেয়ে সাশ্রয়ী — কারণ এরপর প্রতি বছর AW বাড়তে শুরু করবে। এটাই দেখায় "ভাঙেনি তাই বদলাব না" যুক্তি সবসময় সঠিক নয়।

প্র ০৩ উপরের কোডে best_n = min(aw_by_n, key=aw_by_n.get) লাইনটি ঠিক কী করছে?

aw_by_n একটি ডিকশনারি যেখানে key = N (রিটেনশন বছর) আর value = সেই N-এর AW। min(..., key=aw_by_n.get) সব key-এর মধ্যে ঘুরে দেখে কোন key-এর ভ্যালু (AW) সবচেয়ে ছোট, এবং সেই key (N) রিটার্ন করে — এটাই প্রোগ্রাম্যাটিক সার্চ, কোনো N হাতে-ধরে অনুমান করা হয়নি।

অনুশীলন

  1. চিন্তা করুন: দুটো মেশিনের মধ্যে একটির O&M খরচ প্রতি বছর দ্রুত বাড়ে, অন্যটির ধীরে। কোনটির ইকোনমিক সার্ভিস লাইফ তুলনামূলকভাবে কম হবে বলে আপনি আশা করেন, এবং কেন?

    যে মেশিনের O&M খরচ দ্রুত বাড়ে, তার ইকোনমিক সার্ভিস লাইফ তুলনামূলকভাবে কম হওয়ার কথা — কারণ বয়স বাড়ার সাথে সাথে O&M-এর AW খুব দ্রুত বেড়ে গিয়ে capital-recovery-র হ্রাসকে দ্রুতই ছাড়িয়ে যাবে, ফলে AW-of-total-cost আগেভাগেই সর্বনিম্ন বিন্দুতে পৌঁছে আবার বাড়তে শুরু করবে।

  2. পরীক্ষা করুন: উপরের কোড সেলে om তালিকার শেষ মানটি 8300 থেকে 20000-এ বদলে Run চেপে দেখুন best_n-এ কোনো পরিবর্তন আসে কি না।

    N=6-এর O&M খরচ অনেক বেড়ে গেলে AW(6)-এর O&M অংশও অনেক বেড়ে যাবে, যা সম্ভবত AW(6)-কে AW(5)-এর চেয়ে বেশি করে তুলবে — ফলে best_n ৬ থেকে ৫-এ নেমে আসতে পারে। এটাই দেখায় সার্চ-ভিত্তিক পদ্ধতি যেকোনো ইনপুট বদলালে স্বয়ংক্রিয়ভাবে সঠিক নতুন উত্তর খুঁজে বের করে, হার্ডকোড করা কোনো ধারণার উপর নির্ভর করে না।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

  • কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ টাইম ভ্যালু অফ মানি, ক্যাশ ফ্লো সিরিজ, ওয়ার্থ-ভিত্তিক তুলনা, রেট অফ রিটার্ন, ডেপ্রিসিয়েশন, ট্যাক্স, ইনফ্লেশন, রিস্ক অ্যানালাইসিস ও ক্যাপিটাল বাজেটিং — সম্পূর্ণ কোর্স এক জায়গায়।
  • পরের পাঠ L53 ক্যাপিটাল বাজেটিং ও ক্যাপিটাল র‍্যাশনিং — সীমিত বাজেটে একাধিক প্রজেক্ট থেকে সেরা কম্বিনেশন বাছাই করার সার্চ-ভিত্তিক পদ্ধতি।
  • Discrete Mathematics কোর্স সহোদর কোর্স সিরিজ ও সমষ্টির সূত্র — O&M খরচের প্রেজেন্ট ওয়ার্থ যোগ করার গাণিতিক ভিত্তি সেই কোর্সেই তৈরি হয়েছে।
আগের পাঠ
রিপ্লেসমেন্ট অ্যানালাইসিস — ডিফেন্ডার বনাম চ্যালেঞ্জার