رویکرد تحلیل پوششی داده ها (DEA) برخاسته از تحلیل کارایی و رتبهبندی واحدهای یک یا چند سیستم یا به عبارت دیگر همان واحدهای تصمیم یا DMU (Decision Making Unit) ها است. ادبیات مرسوم در زمینه DEA کاربردهای مختلفی از آن را در ارزیابی کارایی و رتبهبندی شعب بانکها و بیمارستانها و غیره، ارزیابی تامینکنندگان، سنجش عملکرد سرمایه انسانی، ارزیابی صنایع مختلف و بسیاری از حوزههای دیگر نشان میدهد. مدلهای متنوع DEA تلاش میکنند تا به سنجش کارایی بپردازند، رتبه بندی ارائه کنند و در صورت لزوم راهکارهایی برای افزایش کارایی و الگویابی برای واحدهای ناکارا پیشنهاد دهند. در زمینه پیادهسازی DEA، راهحلهای نرم افزاری مختلفی توسعه یافته است که از جمله آنها میتوان به DEAtoolbox که برای استفاده از نرم افزار متلب نوشته شده است، اشاره کرد.
معرفی تولباکس DEA در MATLAB
تولباکس (Toolbox) ها یا جعبه ابزار ها در متلب، بستهای از توابع و کلاسها هستند که با هدف خاصی نوشته شدهاند. این بسته کار برنامهنویس یا کاربر را راحتتر میکند تا لازم نباشد همه چیز را از ابتدا توسعه دهد. جدا از تولباکسهای عملیاتی و پایهای که ممکن است بهطور گستردهای در متلب موجود باشند، نرم افزار MATLAB بهطور پیشفرض چندین تولباکس معروف در حوزه بهینهسازی دارد. از جمله معروفترین آنها میتوان به تولباکس بهینه سازی (Optimization Toolbox)، تولباکس بهینه سازی سراسری (Global Optimization Toolbox) و تولباکس برازش منحنی (Curve Fitting Toolbox) اشاره کرد. علاوه بر تولباکسهای پیشفرض که همراه با آن قابل نصب است، میتوان تولباکسهای موردعلاقه را نیز به MATLAB اضافه کرد یا برای آن توسعه داد.
مانند هر موضوع یا مورد برنامهنویسی دیگری، ممکن است تولباکسهای مختلفی برای حل مدلهای DEA در متلب نوشته شده باشند؛ اما ما در این مقاله تلاش میکنیم تولباکس DEA در MATLAB که توسط آلوارز و همکاران (۲۰۲۰) توسعه یافته است را تشریح کنیم. تولباکس تحلیل پوششی داده ها یا Data Envelopment Analysis Toolbox یک جعبه ابزار کارا برای متلب است که اجازه میدهد مدل های DEA را به وسیله آن در MATLAB حل کنید. این تولباکس رایگان بوده و شیوه رفرنسدهی به آن در اینجا ذکر شده است.
برای دانلود تولباکس DEA در متلب اینجا را کلیک کنید. پس از دانلود، میتوانید در MATLAB به زبانه Home مراجعه کرده و از بخش Environment، گزینه Set path را انتخاب کنید. در پنجره بازشده، گزینه Add with subfolders را انتخاب کرده و سپس پوشه اصلی تولباکس را انتخاب کنید. در نهایت گزینه ذخیره را بزنید تا مسیر این پکیج به نرم افزار متلب شما افزوده شود و در فراخوانی تابع های این تولباکس مشکلی پیدا نکنید.
آشنایی با پیادهسازی تحلیل پوششی داده ها در متلب
پس نصب DEAtoolbox میتوانیم کار با توابع و کلاسهای موجود در این بسته نرم افزاری را شروع کنیم.
مدل های رایج تحلیل پوششی داده ها در متلب
برای شروع، مدل پایهای و کلاسیک DEA یعنی مدل CCR که در قالب زیر به یک مسأله برنامهریزی ریاضی خطی تبدیل میشود را میتوان در MATLAB پیاده سازی کرد.
$$\begin{equation}
\begin{aligned}
& \underset{\theta,\lambda}{\text{min}}
& & \theta \\
& \text{s.t.} & & \theta x_{o} \geq X \lambda \\
& & & Y \lambda \geq y_{o} \\
& & & \lambda \geq 0
\end{aligned}
\end{equation} $$
حل مدل فوق با استفاده از تابع dea
توسط تولباکس مورد بررسی قابل انجام است. آرگومانهای اصلی برای استفاده از dea
، ورودی (X
)، خروجی (Y
) و محور مدل (orient
) آن است.
dea(X, Y, 'orient', 'io')
X
: ماتریس معیارهای ورودی (DMU ها روی سطرها قرار میگیرند)
Y
: ماتریس معیارهای خروجی (DMU ها روی سطرها قرار میگیرند)
orient
: محور حل مسأله که میتواند io
(ورودی محور)، oo
(خروجی محور) و ddf
(تابع فاصله جهتدار) باشد.
در زیر، با استفاده از دادههای نمونه خود تولباکس، یک مثال از حل مدل CCR ارائه میشود که در آن چهار ورودی و سه خروجی برای ۴۸ واحد تصمیم تعریف شده است.
load 'DataAgriculture' X = [CAPITAL04, LAND04, LABOR04, INTINP04]; Y = [LS04, CROPS04, FARMOUT04]; X = X ./ 1000; Y = Y ./ 1000; statenames = STATE_NAME04; io = dea(X, Y, 'orient', 'io', 'names', statenames); deadisp(io, 'names/eff/slack.X/slack.Y'));
خروجی این مثال مطابق زیر خواهد بود که در آن eff
نشاندهنده کارایی به دست آمده برای هر واحد است. n
و neval
به ترتیب تعداد واحدهای تصمیم و تعداد واحدهای تصمیم ارزیابیشده را ارائه میکند. slackY
، slackX
و slackYu
(در صورت وجود) نیز متغیرهای کمکی را برای ورودیها، خروجیها و خروجیهای نامطلوب نمایش میدهد.
_______________________________ Data Envelopment Analysis (DEA) DMUs: 48 Inputs: 4 Outputs: 3 Model: radial Orientation: io (Input oriented) Returns to scale: crs (Constant) --------------------------------------------------------------------------- DMU| Theta| slackX1| slackX2| slackX3| slackX4| slackY1| slackY2| slackY3| --------------------------------------------------------------------------- AL| 0.9077| 58.2778| 54.5172| 0.0000| 0.0000| 0.0000|331.2950| 0.0000| AR| 0.9888| 0.0000| 94.0581| 0.0000| 0.0000| 0.0000| 0.0000|121.3747| AZ| 0.9698| 0.0000|278.0711| 0.0000| 0.0000| 0.0000| 0.0000| 34.4711| .. WI| 0.8452|353.4822| 0.0000| 0.0000| 0.0000| 0.0000| 0.0000|332.8943| WV| 0.6612| 0.0000| 34.2292| 55.9801| 0.0000| 0.0000| 29.2884| 0.0000| WY| 0.5911| 5.9018|465.9112| 0.0000| 0.0000| 0.0000| 0.0000| 0.0000| ---------------------------------------------------------------------------
به منظور استفاده از مدل کلاسیک بازده متغیر نسبت به مقیاس که همان مدل مشهور BCC است، میتوان آرگومان rts
(بازده نسبت به مقیاس) را به تابع فوق افزود. این آرگومان میتواند crs
(بازده ثابت نسبت به مقیاس) یا vrs
(بازده متغیر نسبت به مقیاس) بپذیرد که طبیعتا دومی مطابق مدل BCC برای تحلیل پوششی داده ها است:
dea(X, Y, 'orient', 'io', 'rts', 'vrs')
در صورتی که از مدلهای Directional استفاده کنیم، باید جهتها نیز با استفاده از آرگومان Gx
و Gy
باید تعیین شوند. جهتهای ورودی و خروجی با استفاده از این دو آرگومان در قالب ماتریس یا بردار (معمولا صفر و یک) تعیین میشوند. اگر چیزی درنظر گرفته نشود، X
و Y
بهعنوان Gx
و Gy
لحاظ خواهند شد:
dea(X, Y, 'orient', 'ddf', 'Gx', X, 'Gy', Y)
برای پیادهسازی مدلهای جمعی یا افزایشی (Additive Model) که بهطور همزمان بر افزایش خروجیها و کاهش ورودیها تاکید میکنند، میتوان از تابع deaaddit
از تولباکس استفاده کرد.
deaaddit(X, Y, 'rts', 'vrs', 'rhoX', rhoX, 'rhoY', rhoY)
آرگومانهای اختیاری rhoX
و rhoY
نیز اوزان ورودیها و خروجیها هستند.
ارزیابی و رتبه بندی واحدهای کارا در DEA
از آنجا که مدلهای کلاسیک DEA بهطور پیشفرض توان ارزیابی واحدهای کارا را ندارند، دو دسته مدل رایج در تحلیل پوششی دادهها توسعه داده شدهاند که به مدل های ابرکارایی (Super-efficiency models) و مدل های کارایی متقاطع (Cross efficiency) مشهور هستند.
پیادهسازی مدلهای ابر کارایی DEA در MATLAB با استفاده از تابعهای deasuper
و deaadditsuper
قابل انجام است. تابع نخست برای اجرای مدل ابرکارایی مبتنیبر مدلهای کلاسیک است که سنجش کارایی بر محور ورودی، خروجی یا با تابع فاصله جهتدار انجام میشود. تابع دوم نیز – همان طور که از نام آن مشخص است – به کاربرد ابرکارایی در مدلهای جمعی اختصاص دارد.
برای پیادهسازی مدلهای کارایی متقاطع تابع deacross
در دسترس است. پارامتر objective
در این تابع، میتواند از نوع بیشینهسازی یا Benevolent formulation باشد (benevolent
) و یا از نوع کمینهسازی یا Aggressive formulation باشد (aggressive
) که در هر دو صورت آرگومان موردنظر مقداردهی میشود.
سایر مدلهای تحلیل پوششی داده ها در DEAtoolbox
به غیر از مدلهای رایج در بندهای بالا بررسی شدند، در تولباکس DEA مدلهای دیگری نیز پیادهسازی شدهاند. مدلهای مبتنیبر شاخص مالمکوئیست با تابعهای deamalm
و deamalmluen
، مدلهای کارایی تخصیصی شامل کارایی هزینه، درآمد و سود با تابع deaalloc
و کارایی سود به کمک رویکرد جمعی موزون با تابع deaadditprofit
از جمله سایر مدل های این بسته نرم افزاری در متلب هستند.
در شرایطی که خروجی نامطلوب یا مضر در میان خروجیهای DMU ها باشد، نمیتوان از ساختار عادی مدلهای کلاسیک استفاده کرد زیرا بنای آنها بر افزایش خروجیها به دلیل مثبت بودن ماهیت آنها است. در این تولباکس برای پیاده سازی مدل هایی با خروجی نامطلوب از تابع deaund
استفاده میشود که در آن Yu
ماتریس خروجیهای نامطلوب است.
deaund(X, Y, Yu, ...)
از سوی دیگر، امتیازدهی و سنجش کارایی که در مدلهای کلاسیک DEA وجود دارد، مبتنیبر عدم قطعیت یا برآورد شاخصها نیست. این در حالی است که این یک چالش جدی در دنیای واقعی محسوب میشود. در بسیاری از شرایط واقعی، مقادیر ورودی/خروجی، ناشی از ساختار تصادفی یا حاصل قضاوت کیفی خبرگان است. به همین منظور مدلهایی – با عنوان روشهای بوتاسترپ (Bootstrap methods) – مبتنیبر نمونهگیری مجدد توسعه داده شدهاند که میتوانند عدم قطعیت در برآورد را به همراه بازههای اطمینان و آزمون فرضیهها ارائه دهند. این دسته از برآوردگرها (Bootstrapping DEA estimators) با تابع های deaboot
و deamalmboot
در تولباکس ارائه شدهاند.
در انتهای این یادداشت از مجموعه یادداشتهای فناوری آزمایشگاه تحقیق در عملیات، باید تاکید کنیم که شاید Data Envelopment Analysis Toolbox تنها جعبه ابزار مناسب برای حل مسائل تحلیل پوششی داده ها در نرم افزار MATLAB نباشد اما قطعاً یکی از تولباکسهای مفید متلب در این زمینه است. برای مشاهده تنظیمات، جزئیات خروجیها و سایر بخشهای توابع و کلاسهای این تولباکس، میتوانید راهنما و دستورالعمل آن را از اینجا دانلود کنید. صفحه رسمی آن در Mathworks نیز شاید بتواند به شما کمک کند.