بازگشت به یادداشت‌ها
به‌روزرسانی: علیرضا سرودی

زنجیره تأمین حلقه‌بسته: بازسازی یا بازیافت محصول برگشتی؟

مدل‌سازی ریاضی تصمیم بازسازی یا بازیافت محصولات مرجوعی در زنجیره تأمین حلقه‌بسته، با فرمول‌بندی MILP و پیاده‌سازی در پایتون.

زنجیره تأمین حلقه‌بسته: بازسازی یا بازیافت محصول برگشتی؟

وقتی مشتری یک محصول را پس می‌دهد، داستان شرکت تازه شروع می‌شود. آیا این محصول قابل بازسازی و فروش دوباره است؟ یا فقط ارزش مواد اولیه‌اش باقی مانده؟ این پرسش ساده، هسته‌ی یک تصمیم مهم در زنجیره تأمین حلقه‌بسته (Closed-Loop Supply Chain) است. زنجیره تأمین کلاسیک فقط یک جریان رو به جلو دارد. اینجا یک جریان برگشتی هم وجود دارد: از مشتری به شرکت. به این جریان برگشتی، لجستیک معکوس (Reverse Logistics) هم می‌گویند. مدیریت درستش نیازمند تصمیمی دقیق درباره‌ی سرنوشت هر واحد محصول مرجوعی است.

محصولات برگشتی معمولاً یک‌دست نیستند. برخی تقریباً سالم‌اند و فقط نیاز به بازرسی جزئی دارند. برخی دیگر باید کاملاً باز شوند و قطعات معیوب‌شان تعویض شود. برخی هم آن‌قدر فرسوده‌اند که فقط برای بازیافت مواد به کار می‌آیند. همین تفاوت کیفیت، تصمیم «بازسازی یا دورریز» را به یک مسئله بهینه‌سازی واقعی تبدیل می‌کند، نه یک قاعده‌ی ساده‌ی بله یا خیر. در ادامه یک مدل ریاضی کامل برای این تصمیم می‌سازیم و با پایتون حلش می‌کنیم.

اهمیت این موضوع

بازسازی محصول (Remanufacturing) برای بسیاری از صنایع، منبع درآمدی واقعی است، نه فقط یک اقدام زیست‌محیطی. شرکتی مثل رنو (Renault) در کارخانه بازسازی موتور خود در فرانسه فعال است. این کارخانه سالانه هزاران موتور فرسوده را به محصولی نزدیک به نو تبدیل می‌کند. هزینه بازسازی این موتورها معمولاً کسری از هزینه تولید موتور نو است. اما ظرفیت خط بازسازی محدود است و همه موتورهای برگشتی هم قابل بازسازی نیستند.

همین محدودیت، تصمیم تخصیص را حیاتی می‌کند. اگر شرکت ظرفیت بازسازی را به موتورهای کم‌کیفیت‌تر اختصاص دهد، هزینه بازسازی بالا می‌رود. فرصت استفاده از موتورهای باکیفیت‌تر هم از دست می‌رود. اگر تصمیم غلط باشد، یا هزینه‌ها بالا می‌رود یا باید محصول نو بیشتری تولید کرد. صنایعی مثل تولید تایر، چاپگر و قطعات خودرو هم دقیقاً با همین معمای تخصیص روبه‌رو هستند.

این موضوع فقط به صنایع سنگین محدود نمی‌شود. شرکتی مثل کاترپیلار (Caterpillar) واحد مستقلی به نام Cat Reman دارد که فقط کار بازسازی قطعات سنگین را انجام می‌دهد. در صنعت پوشاک هم، برندهایی مثل پاتاگونیا (Patagonia) برنامه بازخرید و بازسازی لباس مستعمل را به‌صورت جدی اجرا می‌کنند. در هر دو مورد، تصمیم روزانه یکسان است: کدام واحد برگشتی ارزش بازسازی دارد و کدام فقط باید بازیافت شود؟

چرا این یک تصمیم ساده نیست؟

در نگاه اول، ممکن است فکر کنید این تصمیم با یک قاعده ساده حل می‌شود. اگر هزینه بازسازی از هزینه تولید نو کمتر بود، بازسازی کنید؛ وگرنه، دور بریزید. اما واقعیت پیچیده‌تر است. ظرفیت خط بازسازی همیشه محدود است و باید بین گریدهای مختلف تقسیم شود. علاوه بر این، تقاضای بازار برای محصول بازسازی‌شده هم معمولاً محدود است؛ نمی‌توان بی‌نهایت واحد بازسازی‌شده فروخت.

مسئله واقعی چیز دیگری است. ظرفیت بازسازی ثابت است و حجم محصولات برگشتی از قبل مشخص نیست. پرسش اصلی این است: منابع محدود باید چطور میان گریدهای کیفی مختلف تقسیم شوند؟ این دقیقاً همان سؤالی است که یک مدل بهینه‌سازی پاسخ می‌دهد، نه یک قاعده ثابت و از پیش تعیین‌شده.

تصمیم تخصیص محصولات برگشتی بین بازسازی، بازیافت و تولید محصول نو

فرمول‌بندی ریاضی مسئله

فرض کنید محصولات برگشتی یک دوره، در KK گرید کیفی دسته‌بندی شده‌اند. مثلاً گرید آ (تقریباً سالم)، گرید ب (نیاز به تعمیر متوسط) و گرید ج (فقط قابل بازیافت مواد). مقدار موجود هر گرید را با پارامتر rkr_k نشان می‌دهیم. متغیر تصمیم zkz_k نشان می‌دهد چه مقدار از گرید kk واقعاً بازسازی می‌شود. هر واحد بازسازی گرید kk هزینه ckmc^m_k دارد. هر واحدی که بازسازی نشود، باید بازیافت یا دور ریخته شود، با هزینه ckdc^d_k. تقاضای کل دوره را DD و هزینه تولید هر واحد محصول نو را cnc^n می‌نامیم. متغیر pp مقدار تولید محصول نو است.

min⁡  cnp+∑k=1Kckmzk+∑k=1Kckd(rk−zk)\min \; c^n p + \sum_{k=1}^{K} c^m_k z_k + \sum_{k=1}^{K} c^d_k (r_k - z_k)

با محدودیت‌های زیر:

p+∑k=1Kzk=Dp + \sum_{k=1}^{K} z_k = D 0≤zk≤rk∀k=1,…,K0 \le z_k \le r_k \qquad \forall k=1,\dots,K ∑k=1Kzk≤Cm\sum_{k=1}^{K} z_k \le C^m

محدودیت اول می‌گوید تقاضا باید از ترکیب تولید نو و بازسازی‌شده تأمین شود. محدودیت دوم سقف طبیعی هر گرید را تعیین می‌کند؛ نمی‌توان بیشتر از مقدار موجود بازسازی کرد. محدودیت سوم ظرفیت کلی خط بازسازی CmC^m را اعمال می‌کند. چون هزینه بازسازی گریدهای پایین‌تر بیشتر است، سالور باید تصمیم بگیرد ظرفیت محدود را اول به کدام گرید بدهد.

این مدل را می‌توان به‌راحتی گسترش داد. می‌توان بعد زمانی برای چند دوره اضافه کرد. در آن حالت، موجودی قطعات بازسازی‌نشده از یک دوره به دوره بعد منتقل می‌شود. می‌توان متغیر مکان‌یابی هم افزود تا مشخص شود هر مرکز بازسازی کجا احداث شود. برای بخش مکان‌یابی، یادداشت مسئله مکان‌یابی تسهیلات پایه نظری لازم را می‌دهد.

گسترش دیگر، افزودن محدودیت نرخ پذیرش (Yield Rate) به مدل است. در عمل، همه واحدهایی که برای بازسازی کنار گذاشته می‌شوند هم موفق نمی‌شوند. بخشی از آن‌ها در حین بازرسی دقیق‌تر، معیوب‌تر از حد انتظار تشخیص داده می‌شوند. افزودن یک پارامتر نرخ موفقیت به ازای هر گرید، مدل را به واقعیت کارخانه نزدیک‌تر می‌کند.

ظرفیت کار آکادمیک و پژوهشی

تصمیم بازسازی-یا-دورریز یکی از پرکاربردترین زیرمسئله‌های زنجیره تأمین حلقه‌بسته در ادبیات پژوهشی است. یک مسیر باز، مدل‌سازی عدم‌قطعیت در حجم و کیفیت محصولات برگشتی است. برخلاف تقاضای رفت که معمولاً قابل‌پیش‌بینی‌تر است، حجم و کیفیت بازگشتی‌ها نوسان زیادی دارد. مسیر دیگر، مدل‌سازی چنددوره‌ای این تصمیم همراه با برنامه‌ریزی موجودی قطعات بازسازی‌شده است.

زمینه سوم، ترکیب این مدل با قیمت‌گذاری پویا است. شرکت می‌تواند با تغییر قیمت محصول بازسازی‌شده، تقاضا برای آن را کنترل کند. این کار تعادل بهتری بین دو کانال تولید نو و بازسازی ایجاد می‌کند.

زمینه چهارم، مدل‌سازی رفتار مشتری در تصمیم بازگرداندن محصول است. برخی پژوهش‌ها نشان می‌دهند سیاست بازپرداخت شرکت، مستقیماً روی حجم و حتی کیفیت محصولات برگشتی اثر می‌گذارد. اگر بازپرداخت سریع و آسان باشد، حجم بازگشتی بیشتر می‌شود، اما کیفیت متوسط آن هم ممکن است پایین‌تر بیاید. این چهار مسیر، گزینه‌های پژوهشی غنی برای پایان‌نامه یا مقاله در حوزه مدیریت عملیات هستند.

پیاده‌سازی با پایتون

مثل بسیاری از مسائل برنامه‌ریزی خطی عدد صحیح مختلط، این مدل هم نیازی به سالور تجاری گران‌قیمت ندارد. کتابخانه متن‌باز PuLP برای نوشتن سریع مدل کافی است. سالور رایگان CBC هم به‌راحتی آن را حل می‌کند. برای مسائل بزرگ‌تر با چند دوره زمانی و چند مرکز بازسازی، HiGHS گزینه سریع‌تری خواهد بود.

فرض کنید داده ورودی این مسئله در یک فایل اکسل ساده نگه‌داری می‌شود. این داده شامل مقدار موجود هر گرید و هزینه‌های بازسازی و بازیافت است. می‌توان آن را مستقیم با pandas خواند و به دیکشنری پارامترهای مدل تبدیل کرد. اسکلت اولیه مدل در PuLP به این شکل شروع می‌شود:

import pulp

grades = ["A", "B", "C"]
r = {"A": 120, "B": 200, "C": 150}         # مقدار موجود هر گرید
c_reman = {"A": 40, "B": 65, "C": 90}      # هزینه بازسازی هر گرید
c_new = 150
capacity_reman = 250
demand = 400

model = pulp.LpProblem("Closed_Loop_Disposition", pulp.LpMinimize)

z = {k: pulp.LpVariable(f"reman_{k}", lowBound=0, upBound=r[k]) for k in grades}
p = pulp.LpVariable("new_production", lowBound=0)

# ادامه قیدها (تأمین تقاضا و ظرفیت خط بازسازی) و تابع هدف به همین شیوه تعریف می‌شوند.

بعد از حل مدل، می‌توان با NetworkX جریان محصول بین گریدها و مقصدهای نهایی را رسم کرد. مقصدهایی مثل بازسازی، بازیافت و دورریز. این نمودار شبکه‌ای، تصمیم نهایی را برای مدیران عملیات قابل‌فهم‌تر می‌کند.

برای توسعه این مدل به نسخه چنددوره‌ای، باید یک اندیس زمانی به متغیرهای zkz_k و pp اضافه کنید. همچنین یک متغیر موجودی جدید لازم است که مقدار بازسازی‌نشده هر دوره را به دوره بعد منتقل کند. این تغییر، مدل را به یک مسئله برنامه‌ریزی تولید-موجودی چنددوره‌ای نزدیک می‌کند. برای آشنایی با چنین مسائلی، یادداشت برنامه‌ریزی تولید و موجودی چنددوره‌ای می‌تواند مفید باشد.

پیش از اعتمادکردن به جواب نهایی مدل، بهتر است یک تحلیل حساسیت ساده هم انجام دهید. مثلاً ظرفیت خط بازسازی CmC^m را کمی بالا و پایین ببرید و ببینید هزینه کل چقدر تغییر می‌کند. اگر با یک افزایش کوچک در ظرفیت، هزینه کل به‌شدت کاهش یابد، این سیگنال خوبی برای سرمایه‌گذاری در گسترش خط بازسازی است. همین تحلیل را می‌توان برای هزینه بازسازی هر گرید هم تکرار کرد. این کار نشان می‌دهد کدام پارامتر بیشترین اثر را روی تصمیم نهایی دارد.

سوالات متداول

تفاوت این مدل با زنجیره تأمین حلقه‌بسته سبز در چیست؟

زنجیره تأمین حلقه‌بسته سبز روی طراحی شبکه جمع‌آوری و وزن‌دهی هزینه کربن تمرکز دارد. این مطلب روی تصمیم عملیاتی تخصیص ظرفیت محدود بازسازی بین گریدهای کیفی مختلف تمرکز می‌کند.

آیا باید حتماً گریدهای کیفی را به‌صورت دستی تعیین کنم؟

نه. در عمل، بسیاری از شرکت‌ها از بازرسی بصری یا حسگرهای ساده برای تخمین سریع گرید هر واحد برگشتی استفاده می‌کنند. هرچه این تخمین دقیق‌تر باشد، مدل بهینه‌سازی تصمیم بهتری می‌دهد.

برای یادگیری مدل‌سازی این نوع مسائل زنجیره تأمین از کجا شروع کنم؟

دوره مسیریابی و بهینه‌سازی زنجیره تأمین با پایتون پایه محکمی برای مدل‌سازی این نوع مسائل فراهم می‌کند. اگر برای پیاده‌سازی این مدل روی داده واقعی کسب‌وکارتان راهنمایی لازم دارید، از طریق صفحه مشاوره می‌توانید با ما در ارتباط باشید.

آیا این مدل برای شرکت‌های کوچک هم کاربرد دارد؟

بله. حتی با چند ده واحد برگشتی در ماه، تصمیم تخصیص ظرفیت محدود بازسازی همچنان معنادار است. مقیاس مدل کوچک می‌شود، اما ساختار ریاضی آن بدون تغییر باقی می‌ماند.

جمع‌بندی

در این یادداشت دیدیم چرا تصمیم بازسازی یا بازیافت محصول برگشتی، یک مسئله بهینه‌سازی واقعی است. دیدیم چطور گریدبندی کیفی، ظرفیت محدود خط بازسازی و تقاضای کل بازار، همگی در یک مدل MILP ساده کنار هم می‌نشینند. همچنین دیدیم این مدل چگونه به سمت نسخه‌های چنددوره‌ای، مکان‌یابی و قیمت‌گذاری پویا قابل‌گسترش است.

اگر می‌خواهید پیش از این مدل، مبانی مکان‌یابی مراکز بازسازی را هم مرور کنید، یادداشت مسئله مکان‌یابی تسهیلات نقطه شروع مناسبی است. برای مرور مبانی مدل‌سازی ریاضی پیش از این مسائل پیچیده‌تر هم، یادداشت مدل‌سازی ریاضی و اهمیت آن مفید خواهد بود.


مشاوره و ارتباط با ما

برای مشاوره و ثبت‌نام در دوره‌ها و دریافت پروژه‌ها با آیدی @pypyid در تلگرام در تماس باشید.

ارتباط در تلگرام

دوره‌های آموزشی مرتبط

مقالات و یادداشت‌های مرتبط

پروژه‌های مرتبط