تصمیم‌گیری منطقی با روش تحلیل سلسله‌مراتبی (Analytic Hierarchy Process - AHP)

مسئله چیه؟‍

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

در این مقاله می‌خوایم روشی رو معرفی کنیم که به فرآیند تصمیم‌گیری ما کمک کنه و سبب بشه دیمی و شهودی تصمیم نگیریم بلکه بر اساس داده انتخاب کنیم. اسم این AHP هست و توسط فردی به نام Saaty در سال 1980 میلادی ابداع شده.

تصویر آقای Saaty در سال 2008
تصویر آقای Saaty در سال 2008

فرآیند تحلیل سلسله‌مراتبی یا همون AHP برای مواردی شبیه مثال‌های زیر کمک‌کننده‌ست:

  • برای تعطیلات کجا سفر بریم؟
  • کدوم ماشین رو بخریم؟
  • بعد از فارغ‌التحصیلی تو دوره MBA شرکت بکنیم یا DBA یا...؟
  • و...

راه حل چیه؟

ایده کلی

الگوریتم AHP اساساً از دو مرحله تشکیل شده:

1. وزن نسبی معیارهای تصمیم رو تعیین می‌کنیم. (ماتریس وزن‌های معیارها)

2. اولویت‌های نسبی گزینه‌های مورد انتخاب رو تعیین می‌کنیم. (ماتریس اولویت‌بندی گزینه‌ها)

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

بریم با یه مثال ببینیم این روش چطور کار می‌کنه.

مثال انتخاب خودرو جدید برای خرید

در قدم اول موارد زیر رو مشخص می‌کنیم:

هدف (Objective): انتخاب خودرو برای خرید.

Selecting a new car.

معیارها (Criteria): سبک طراحی / کیفیت ساخت / مصرف سوخت / قیمت

Style / Reliability / Fuel-economy

گزینه‌ها (Alternatives): سویک / سترن / فورد / میاتا

Civic / Saturn / Ford / Miata
درخت سلسله‌مراتب
درخت سلسله‌مراتب




ماتریس امتیازدهی معیارها

قبل از هر کاری مقایسه‌های دو به دو رو روی معیارهای ارزیابی انجام می‌دیم. این کار برای ما خیلی آسون تره که 2 تا معیار رو با هم مقایسه کنیم تا چند معیار رو. با نمرات 1 تا 9 بین هر دو معیار قضاوت می‌کنیم تا یه ماتریس حاصل بشه.

مثلا اگر Style و Reliability برامون معادل هم هستن به جفتشون 1 می‌دیم. اما اگر Fuel Economy برای ما نسبت به Style به شدت مهم تره، به Economy Fuel عدد 9 و به Style عدد 1/9 رو نسبت می‌دیم. در نهایت همچین ماتریسی خواهیم داشت:

ماتریس امتیازدهی معیارها
ماتریس امتیازدهی معیارها
در تصویر بالا Reliability نسبت به Style کمی مهم‌تر تلقی شده. همچنین Style نسبت به Fuel Economy سه برابر مهم‌تر در نظر گرفته شده. و به همین ترتیب Reliability نسبت به Fuel Economy 4 برابر مهم‌تره.

نکته 1: گاهی برای سادگی این امتیازدهی بین اعداد 1 تا 5 انجام می‌شه.

نکته 2: چون هر پارامتر نسبت به خودش ارجحیتی نداره، قطر اصلی این ماتریس همواره 1 هست.

نکته 3: این ماتریس شبه متقارنه یعنی هر عدد n با عدد 1/n نسبت به قطر اصلی حالت آینه‌ای داره.




ماتریس وزن معیارها

خب حالا فرض کنید اسم ماتریس امتیازدهی رو A بذاریم. اولین کاری که باید بکنیم اینه که این ماتریس رو نرمال کنیم:

نرمال کردن اعداد ماتریس امتیازدهی
نرمال کردن اعداد ماتریس امتیازدهی

روش کار برای نرمال کردن ماتریس اینه که ما مجموع هر ستون رو حساب می‌کنیم و اعداد هر ستون رو تقسیم بر مجموع همون ستون می‌کنیم. یعنی در نهایت باید مجموع هر ستون از ماتریس نرمال شده بشه 1.

در مرحله بعد باید میانگین ردیف‌های ماتریس رو در بیاریم. اسم ماتریس خروجی رو x می‌ذاریم که همون ماتریس وزن‌هاست.

به دست آوردن ماتریس اولویت (برابر با وکتور مقادیر ویژه ماتریس امتیازدهی)
به دست آوردن ماتریس اولویت (برابر با وکتور مقادیر ویژه ماتریس امتیازدهی)

به این ترتیب اعداد اولویت هر معیار به دست میاد. در مثال ما:

Style = 0.3
Reliability = 0.6
Fuel Economy = 0.1

بنابراین وزن Reliability از همه بیشتر شد. دقت کنید که جمع این اولویت‌ها همچنان باید برابر 1 باشه.




اطمینان از غیرتصادفی بودن معیارها

اگر رفتار ما در امتیازدهی به معیارها مشابه یک ماشین رندوم باشه، این یعنی مقایسه ما منطقی نبوده و سازگاری روش ما از بین رفته. از کجا بفهمیم که ما تونستیم منطقی معیارها رو اولویت‌بندی کنیم و این اولویت‌بندی تصادفی نبوده؟ ارزیابی های AHP بر این فرض استواره که تصمیم گیرنده منطقیه، یعنی اگر A به B ترجیح داده بشه و B به C ترجیح داده بشه، A هم به C ترجیح داده می‌شه. (خاصیت تراگذری)

برای مطمئن شدن از غیرتصادقی بودن این اولویت‌بندی باید نسبت سازگاری (CR) رو محاسبه کنیم. این کار برای اندازه‌گیری درستی قضاوت‌ها نسبت به قضاوت‌های کاملا تصادفی انجام می‌شه. اگر CR بزرگتر مساوی از 0.1 باشه، قضاوت‌ها غیرقابل اعتماد هستن، چرا که نتیجه ما به تصادفی بودن بسیار نزدیکه.

محاسبه نسبت سازگاری (CR)

ما میایم ماتریس A رو در ماتریس x ضرب می‌کنیم.

ضرب ماتریسی A در x
ضرب ماتریسی A در x

و بعد معادله زیر رو برای پیدا کردن λ_max حل می کنیم:

تشکیل معادله برای یافتن ماتریس لاندا ماکس
تشکیل معادله برای یافتن ماتریس لاندا ماکس

این کار چه معنی ای داره؟ این یعنی ما میخوایم ماتریس مقادیر ویژه‌ای (λ_max) رو پیدا کنیم که اگر در x ضرب بشه همون نتیجه‌ای رو بده که ما از ضرب ماتریس A در x پیدا کردیم که درایه های این ماتریس با سه تا تقسیم ساده به دست میان. بعد از پیدا کردن درایه ها میانگینشون رو حساب می کنیم:

λmax = average{ 0.90/0.30 , 1.60/0.6 , 0.35/0.10 } = 3.06

در نهایت باید طبق فرمول زیر یه محاسبه آماری انجام بدیم تا CR (نسبت سازگاری) رو پیدا کنیم. اول شاخص سازگاری (CI) یا همون Consistency Index رو حساب می‌کنیم:

CI = (λmax-n) / (n-1) = (3.06-3) / (3-1) = 0.03

بعد از این کار لازمه که طبق توزیع آماری زیر عدد CR رو حساب کنیم. چون ماتریس مثال ما 3 تایی هست سطر سوم رو نگاه می‌کنیم که عدد 0.58 در اون دیده می‌شه.

جدول توزیع تصادفی شاخص سازگاری یا CI
جدول توزیع تصادفی شاخص سازگاری یا CI

با توجه به جدول بالا می‌تونیم CR رو اینجوری به دست بیاریم:

CR = CI / 0.58 = 0.03 / 0.58 = 0.05

نتیجه‌گیری: از اون‌جایی که 0.05 خیلی از 0.1 کوچک‌تره پس نتیجه‌گیری می‌کنیم که اولویت‌بندی ما به اندازه کافی منطقی بوده و از مدل تصادفی به طور قابل توجهی دوره. اگر این عدد از 0.1 بزرگتر مساوی بود ما ماتریس رو قبول نمی‌کردیم.




ماتریس امتیازدهی گزینه‌ها

حالا باید همین کاری که با معیارها کردیم رو برای گزینه‌هامون هم انجام بدیم. این کار رو به ازای هر معیار انجام می‌دیم. در مثال خرید خودرو، برای معیارهای کیفی مثل Style و Reliableity بین زوج خودروهای مختلف امتیاز می‌دیم. باز این‌جا هم طبیعتا قطر اصلی ماتریس‌ها 1 هست و ماتریس شبیه متقارن در میاد:

محاسبه ماتریس اولویت خودروها برای معیارهای کیفی
محاسبه ماتریس اولویت خودروها برای معیارهای کیفی

و در نهایت هم هر کدوم از این ماتریس ها رو نرمال می‌کنیم و مثل کاری که برای معیارها انجام دادیم ماتریس اولویت‌بندی‌شون رو از میانگین سطرهاشون به دست میاریم. (مشابه Priority Vector در تصویر بالا)

اما برای معیارهای کمی کار ساده‌تره و نیازی به مقایسه دو به دو نیست چون هر گزینه عدد کمی خودش رو داره. مثلا در مورد مصرف سوخت (Fuel Economy) هر خودرو ما می‌تونیم بر مبنای یک واحد مشترک به هر کدوم عدد نسبت بدیم و مستقیم ماتریس اولویت رو با نرمال کردن اعداد حساب کنیم:

محاسبه ماتریس اولویت خودروها برای معیارهای کمی
محاسبه ماتریس اولویت خودروها برای معیارهای کمی

البته این کار ضروری نیست و همچنان هم میتونیم از مقایسه زوجی استفاده کنیم اما خب چه کاریه!؟




تصمیم گیری نهایی

حالا دیگه همه چیز آماده‌ست! کافیه ما ماتریس اولویت خودروها بر اساس معیارها رو در ماتریس وزن معیارها ضرب کنیم تا اعداد نهایی به دست بیان:

محاسبات نهایی برای اولویت بندی نهایی
محاسبات نهایی برای اولویت بندی نهایی

نتیجه: به این ترتیب می‌تونیم بگیم بهترین انتخاب ما برای خرید خودرو، خودروی Miata است که از بقیه خودروها امتیاز بالاتری کسب کرده!




مزایا و معایب

مزایا

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

معایب

  • مفروضات پنهانی مانند نسبت سازگاری (CR) در محاسبات وجود داره.
  • تکرار ارزیابی‌ها دست و پا گیره.
  • وقتی تعداد معیارها یا جایگزین‌ها زیاده (بیش از 7) استفاده ازش سخت می‌شه.
  • اضافه کردن یا حذف یک معیار یا گزینه دشواره.
مثلا اضافه کردن «هزینه» (Cost) به عنوان یک معیار جدید در AHP بسیار دشواره. چون یک ستون جدید و یک ردیف جدید در ماتریس ارزیابی اضافه می‌شه و کل محاسبات باید دوباره تکرار بشه چرا که اضافه کردن یک معیار جدید ممکنه روی اهمیت نسبی معیارهای دیگه هم تأثیر بگذاره. پس شاید بهتر باشه بعدا به نرمال‌سازی هزینه‌ها به طور مجزا فکر کنید و نسبت هزینه به سود رو برای مقایسه گزینه‌ها جداگانه محاسبه کنید.
منبع مطلب