پیاده سازی VIKOR با پایتون – به زبان ساده

۵
۱۴۰۴/۱۱/۱۳
۱۰ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

«VIKOR» یکی از روش‌های «تصمیم‌گیری چندمعیاره» (Multi-Criteria Decision Making | MCDM) است. این روش برای حل مسائل پیچیده با در نظر گرفتن چند معیار مختلف به کار می‌رود. برای خودکارسازی فرایند تصمیم‌گیری می‌توان الگوریتم آن را با کمک زبان برنامه نویسی پایتون پیاده‌سازی کرد. فرض کنید، می‌خواهید گوشی موبایل بخرید. نکته اول اینجاست که باید چند معیار مختلف مانند قیمت، کیفیت دوربین، اندازه گوشی و نسخه سیستم عامل را درنظر بگیرید. بعضی از ویژگی‌ها مانند قیمت با زیاد شدن، اثر منفی بر روی انتخاب گزینه دارند. در چنین شرایطی می‌‌توان از VIKOR استفاده کرد. در صورت پیاده سازی VIKOR با پایتون می‌توانیم به راحتی از ابزارهای قدرتمند این زبان برنامه نویسی استفاده کنیم.

آنچه در این مطلب می‌آموزید:
  • در این مطلب، با مفهوم VIKOR برای گرفتن تصمیم با وجود معیار‌های مختلف آشنا می‌شوید.
  • با روش‌های مختلف پیاده سازی VIKOR با پایتون آشنا می‌شوید.
  • متوجه می‌شوید کتابخانه PyMCDM در پایتون چیست و چطور با کمک آن VIKOR را محاسبه کنید.
  • استفاده از ما‌ژول‌های تخصصی برای پیاده سازی VIKOR با پایتون را یاد می‌گیرید.
  • با کمک جدولی ساده تمام مولفه‌های مورد استفاده برای محاسبه VIKOR را یاد می‌گیرید.
  • متوجه می‌‌شوید که در کدام مسائل الگوریتم VIKOR را برای رسیدن به جواب به کار ببرید.
پیاده سازی VIKOR با پایتون – به زبان سادهپیاده سازی VIKOR با پایتون – به زبان ساده
997696

در این مطلب از مجله فرادرس، دو روش کاربردی برای پیاده‌سازی VIKOR با پایتون بررسی می‌شوند. ابتدا نحوه نوشتن برنامه محاسبه این تکنیک را با زبان پایتون توضیح داده و سپس کدهای مربوط به هر روش را تحلیل می‌کنیم. در بخش پایانی نیز، تکنیک VIKOR به صورت خلاصه و جمع‌بندی شده معرفی شده است.

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

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

  • استفاده از کتابخانه «PyMCDM»
  • استفاده از کتابخانه‌های تخصصی پایتون برای انجام عملیات ریاضی - Numpy و Pandas

در صورت نیاز به آشنایی هرچه بیشتر و بهتر با تکنیک VIKOR و پیاده‌سازی آن (از ابتدا تا انتها با پایتون) پیشنهاد می‌کنیم فیلم آموزش تصمیم گیری چند معیاره ​و​یکور ​VIKOR همراه با پیاده سازی در اکسل و پایتون را در فرادرس مشاهده بکنید. به منظور کمک به مخاطبان مجله، لینک دسترسی به این آموزش را در پایین نیز قرار داده‌ایم.

در هر دو روش بالا از «Numpy» هم استفاده کرده‌ایم. «ویکور» (VIKOR) یکی از روش‌های تصمیم‌گیری برای انتخاب گزینه مناسب از بین گزینه‌های در دسترس با وجود چند معیار گوناگون است. زبان برنامه نویسی پایتون گزینه بسیار خوبی برای پیاده‌سازی الگوریتم این روش تصمیم‌گیری است. زیرا پایتون، سینتکس ساده‌ای دارد، یادگیری آن راحت است، کتابخانه‌های بسیار قدرتمندی دارد و جامعه کاربری قوی آن به حل بسیاری از مشکلات کمک می‌کند.

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

در بخش‌های بعد، هر دو روش بالا را بررسی می‌کنیم.

تا به اینجای مطلب، شناخت کلی از مفهوم VIKOR و روش‌های پیاده سازی آن با پایتون بدست آورده‌ایم. در ادامه این تکنیک‌ها را با کمک کدنویسی بررسی می‌کنیم. در صورت تمایل به مطالعه این دست از مطالب، پیشنهاد می‌کنیم که حتما از اپلیکیشن مجله فرادرس استفاده کنید.

برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.

استفاده از کتابخانه PyMCDM برای پیاده سازی VIKOR با پایتون

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

برای پیاده‌سازی این تکنیک تصمیم‌گیری می‌توانیم از کتابخانه pymcdm  در پایتون استفاده کنیم. به منظور حل این مسئله لازم است ابتدا از تابعی برای نرمال سازی داده‌ها استفاده شود. این تابع با هدف نرمال‌سازی مقادیر موجود در ستون‌های ماتریس‌ها به کار برده می‌شود. تابع نرمال‌سازی باید به شکل «foo(x, cost)» نوشته شود، یعنی دو پارامتر دریافت بکند.

  • «x»: پارامتر اول همان محوری است که باید داده‌های آن نرمالایز شوند.
  • «cost»: پارامتر دوم هم مقداری با نوع Boolean است.
    • اگر مقدار cost برابر با True بود، یعنی x از نوع «معیار هزینه» (Cost Criterion) است.
    • اگر مقدار cost برابر با False بود، یعنی x از نوع «معیار سود» (Profit Criterion) است.
عبارت VIKOR و لوگوی پایتون در بالای چند در رنگی برای نمایش پیاده سازی VIKOR با پایتون

نکته: عبارت foo کلمه‌ای دلخواه و فرضی است که برای نشان دادن نام تابع به کار برده شده است. این نام هرچیز دیگری می‌تواند باشد.

مقدار costنوع معیارتوضیح ساده
Trueهزینهعدد کمتر بهتر است.
Falseسودعدد بیشتر بهتر است.

در کادر پایین روش استفاده از کتابخانه pymcdm  را برای پیاده‌سازی تکنیک VIKOR بررسی کرده‌ایم.

بعد از اجرای کدهای بالا خروجی زیر در کنسول پایتون نمایش داده می‌شود.

[np.float64(0.5679), np.float64(0.7667), np.float64(1.0), np.float64(0.7493), np.float64(0.0)]
در فهرست زیر، روش کار کدهای بالا را توضیح داده‌ایم.
  1. خطوط ۱ و ۲: ابتدا کلاس VIKOR  و کتابخانه numpy  را وارد می‌کنیم.
  2. خط۴: سپس شیئی از کلاس VIKOR  می‌سازیم.
  3. خط ۵ تا ۱۱: در این خطوط، ماتریس دلخواهی تعریف می‌کنیم. این ماتریس مثالی از جدول معیار‌های مختلف برای تصمیم‌گیری است. در آن هر سطر نشان‌دهنده یک گزینه و هر ستون نماینده یک معیار است.
  4. خط ۱۳: وزن معیارها را به صورت مساوی در آرایه weights  مشخص می‌کنیم.
  5. خط ۱۵: با آرایه types  تعیین می‌کنیم که همه معیارها از نوع سود هستند.
  6. خط ۱۷: روش VIKOR  را روی ماتریس، وزن‌ها و نوع معیارها اجرا می‌کنیم.
  7. خط ۱۸: در پایان، مقادیر نهایی ترجیح هر گزینه محاسبه و به صورت گرد شده چاپ می‌شوند.

کسب مهارت در پیاده سازی پروژه ‌های پایتون

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

مجموعه آموزش پروژه محور برنامه نویسی پایتون (Python)
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش پروژه محور برنامه نویسی پایتون هدایت شوید.

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

در پایین چند مورد از فیلم‌های پروژه‌محور پایتون را معرفی کرده‌ایم.

در صورت تمایل با کلیک بر روی تصویر بالا به صفحه اصلی این مجموعه آموزشی هدایت شده و فیلم‌های پروژه‌محور بیشتری را تماشا کنید.

استفاده از کتابخانه‌های تخصصی برای پیاده سازی VIKOR با پایتون

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

  • «کارایی گروهی» (Group Utility): نشان می‌دهد عملکرد کلی هر مدل چقدر خوب است.
  • «پشیمانی» (Regret): نشان می‌دهد ضعیف‌ترین معیار هر مدل تا چه حد بد عمل کرده است.

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

ابتدا در سیستم VIKOR امتیازی به نام «Q» محاسبه می‌شود. Q «عملکرد کلی» (Overall Performance) با نشانگر «S» و «جریمه بدترین حالت» (Worst-Case Penalty) با نام «R» را با هم ترکیب می‌کند. پارامتر «v» برای کنترل اینکه کدام بخش بیشتر مورد تاکید قرار گیرد، استفاده می‌شود. با تغییر مقدار «v» می‌توان اهمیت نسبی عملکرد کلی و بدترین حالت را در محاسبه امتیاز نهایی کنترل کرد.

یک سالن تحقیقاتی و علمی که در حال انجام تصمیم‌گیری و پیاده سازی VIKOR با پایتون هستند.

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

مولفه VIKORنقش اصلی
«کارایی گروهی» (Group Utility)بررسی عملکرد کلی گزینه‌ها
«پشیمانی» (Regret)نشان دادن ضعف‌های بزرگ
Qامتیاز نهایی، ترکیب S و R
Sعملکرد کلی
Rجریمه بدترین حالت
vتعیین اهمیت بخش‌ها در Q

در کادر پایین روش پیاده‌سازی تکنیک VIKOR را با کمک کتابخانه‌های تخصصی پایتون بررسی کرده‌ایم. در این کد، روش VIKOR را به صورت دستی برای مقایسه سه مدل «LSTM» و «RNN» و «CNN» و بر اساس سه معیار «RMSE» و «MAE» و «R2» پیاده‌سازی کرده‌ایم. مدل‌های مقایسه شده در کد پایین جزو مشهور‌ترین مدل‌های شبکه‌های عصبی هستند. برای آشنایی با شبکه‌های عصبی پیشنهاد می‌کنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.

بعد از اجرای کدهای بالا خروجی زیر در کنسول پایتون نمایش داده می‌شود.

  Model       RMSE        MAE        R2   VIKOR_S   VIKOR_R   VIKOR_Q  VIKOR_Rank
1   RNN  61.532498  44.602686  0.817019  0.000000  0.000000  0.000000           1
0  LSTM  81.594761  45.970054  0.776359  0.359329  0.199465  0.478862           2
2   CNN  95.059328  54.209597  0.696460  1.000000  0.333333  1.000000           3
در فهرست پایین روش کار کدهای بالا توضیح داده شده‌ است.
  1. ابتدا کتابخانه‌های numpy  و «Pandas» و ماژول MinMaxScaler  را وارد می‌کنیم.
  2. در گام اول، داده‌های عملکرد مدل‌ها شامل RMSE  و MAE  و R2  را تعریف کرده و آن‌ها را به DataFrame  تبدیل می‌کنیم.
  3. در گام دوم، مقادیر معیارها را نرمال‌سازی می‌کنیم تا قابل مقایسه شوند. چون R2  معیار سود است، مقدار آن را معکوس می‌کنیم.
  4. در گام سوم، وزن معیارها را برابر در نظر می‌گیریم و بهترین f_star و بدترین f_minus مقدار هر معیار را به‌دست می‌آوریم.
  5. در گام چهارم، برای هر مدل مقادیر S  و R  محاسبه می‌شود که به‌ترتیب نشان‌دهنده مطلوبیت کلی و بیشترین نارضایتی هستند.
  6. در گام پنجم، شاخص Q  در روش VIKOR  با مقدار v=0.5  محاسبه می‌شود.
  7. در گام ششم، مقادیر S  و R  و Q  به جدول اضافه شده و مدل‌ها بر اساس Q رتبه‌بندی می‌شوند.
  8. در گام آخر، نتایج مرتب شده چاپ می‌شوند. با این کار، بهترین مدل مشخص می‌شود.

چطور با کمک فرادرس پایتون را یاد بگیریم؟

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

در پایین، چند مورد از فیلم‌های مربوط به آموزش زبان پایتون را معرفی می‌کنیم.

برای مشاهده فیلم‌های بیشتر بر روی تصویر زیر کلیک کنید.

مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python – مقدماتی تا پیشرفته فرادرس
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python از مقدماتی تا پیشرفته هدایت شوید.

در ادامه تکنیک تصمیم‌گیری VIKOR را تعریف کرده‌ایم.

VIKOR چیست؟

کلمه VIKOR مخففی از عبارت (VIšekriterijumsko KOmpromisno Rangiranje) به معنای «رتبه‌بندی چندمعیاره توافقی» است. البته این عبارت به زبان کروات نوشته شده است. این روش در سال ۱۹۷۹ میلادی و توسط آقای «سرافیم اوپریچوویچ» (Serafim Opricović) توسعه داده شد.

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

نموداری برای نمایش روش کار الگوریتم VIKOR برای تصمیم‌گیری
روش کار الگوریتم VIKOR برای تصمیم‌گیری

در ابتدا، معیارهای مؤثر در تصمیم‌گیری شناسایی می‌شوند. سپس با استفاده از تکنیک‌های مشخص، وزن هر معیار تعیین شده و میزان تأثیر آن در فرایند تصمیم‌گیری ارزیابی می‌شود. پس از شناسایی معیارها و تعیین وزن آن‌ها، ماتریس تصمیم‌گیری تشکیل می‌شود و مقادیر گزینه‌ها نرمال‌سازی می‌گردند. سپس با محاسبه شاخص‌های S (سودمندی گروهی)، R (پشیمانی فردی) و Q (شاخص ترکیبی)، گزینه‌ها رتبه‌بندی شده و راه‌حل توافقی نزدیک به ایده‌آل، با کمترین پشیمانی و بیشترین سودمندی گروهی، انتخاب می‌شود.

جمع‌بندی

در این مطلب از مجله فرادرس به معرفی روش VIKOR (رتبه‌بندی توافقی چندمعیاره) و پیاده‌سازی آن در پایتون پرداخته‌ایم. VIKOR برای حل مسائل پیچیده با معیارهای متضاد طراحی شده و با محاسبه شاخص‌های S (مطلوبیت گروهی)، R (حداکثر پشیمانی فردی) و Q (شاخص توافقی) گزینه‌ها را رتبه‌بندی می‌کند. در پایتون روش‌های مختلفی برای پیاده‌سازی این تکنیک وجود دارد. دو مورد از روش‌های پرکاربرد شامل استفاده از کتابخانه pymcdm  و پیاده‌سازی دستی با numpy  و pandas  هستند. در روش دوم تمام مراحل محاسبه به صورت گام‌به‌گام انجام می‌شود.

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

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
MediumWikipediaPyMCDM
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *