الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مدخل الى الاختيار المتعدد المعايير و تطبيق على طريقة Topsis

بدأه fkugd2003 في 19 أبريل 2009 · 18 رد · 5,792 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

خلال مناقشتي مع صديقي matlabDZ في المقهى. طرحنا موضوع اختيار الزوجة الصالحة من مفهوم رياضي :lol: ضحكنا على الفكرة كثيرا ذلك اليوم. لكنها من وجهة رياضية ممكنة جدا :lol: كيف و لماذا تابع معي..

لم اطرح فكرة الزواج في الموضوع لاني لا املك الامكانيات للقيام ب datamining :wacko:

مقدمة:

لنر مثالا بسيطا على ذلك:

تريد ان تشتري سيارة مثلا.. لكنك تبحث على اقلها سعرا (قد حددت معيارك منذ البداية) اذن سيكون اختيارك للسيارة سهلا. فكلما كان السعر اقل كلما كان الامر افضل – لكنك من الممكن ان تنتهي بشراء سيارة مهترئة و عديمة المنفعة لانها هي الارخص – لكن كيف اذا حاولت ان تحدد عدة معايير؟؟

لنعد الى موضوع سيارتنا. و لنحاول ان نرى ماذا يكمن ان نجد

ماذا لو اخترنا كمعايير و اعطينا كل معيار وزنا معينا w :

  • • السعر: كلما ينقص يكون احسن
  • • عمر السيارة: كلما ينقص يكون احسن
  • • حجم السيارة: حسب رغبتك .. انا افضل السيارات الصغيرة لانها تجنبني حمل عدة اشخاص معي. اذن لنفرض ان الحجم كلما صغر كان احسن
  • • عدد المقاعد: كلما قل العدد كان احسن ... فانا لا اريد ان انتهي في رحلة مع 20 شخصا

ألن يكون اختيارك أكثر حكمة و النتيجة أحسن؟؟ اكيد

اظن اننا فهمنا الفكرة الاساسية من كل المشكلة..

اول طريقة سوف اذكرها هي طريقة TOPSIS (Technique by Order Preference by Similarity to an Ideal Solution) مقترح الطريقة Chen and Hwang (1992) كتكملة ل Hwang and Yoon (1981). فكرة الطريقة هي اختيار اقرب احتمال (alternative) بحيث يكون اقرب من الحل المثالي (ideal solution) و الابعد من اسوأ حل (negative-ideal Solution).

post-52814-1240401799_thumb.jpg

يمكن ان نقوم بتطبيق TOPSIS باتباع المراحل الستة:

  1. 1. حساب مصفوفة القرار المعيارية (normalized decision matrix) كل عنصر من المصفوفة rij يمكن ان يحسب باستعمال العبارة
    post-64798-1240163194_thumb.jpg
  2. 2. حساب مصفوفة القرار المعيارية اعتمادا على الاوزان (weighted normalized decision matrix) كل عنصر من هذه المصفوفة vij يمكن ان يحسب كالتالي
    post-64798-1240163257_thumb.jpg
    حيث wi هو الوزن الذي اعطيناه لكل معيار
  3. 3. حساب الحل المثالي و الحل الاسوأ:
    كطريقة للعمل يمكنك ان تحدد اعلى القيم في كل عمود لتجسد الحل المثالي ماعدا العمود الاخير (الذي يعتبر دائما التكلفة المالية) حيث تاخذ اقل قيمة موجودة اما بخصوص الحل الاسوأ قم بالعكس.. اصغر القيم و اكبر تكلفة
    post-64798-1240163379_thumb.jpg
    حيث ان I’ مرتبط مع معيار الاستفادة (benefit) و I’’ مرتبطة مع معيار السعر (cost).
  4. 4. حساب مسافة كل حل مقترح عن الحل الامثل و الاسوأ باستعمال قانون حساب المسافة ذات ن بعد
    post-64798-1240163468_thumb.jpg
    post-64798-1240163490_thumb.jpg
  5. 5. حساب التقارب النسبي مع الحل الامثل
    post-64798-1240163534_thumb.jpg
  6. 6. اختر اصغر قيمة تقارب نسبي ... تجد افضل حل

خوارزمية العمل ليست صعبة كثيرا و يمكن ان تفهمها بسهولة على الرغم اني اعرف انك بدأت تحس بملل و ربما تريد ان تغلق النافذة و تسب اليوم الذي دخلت فيه الى هذا الموضوع... لكن ابق مازال هناك القليل لاحكيه لك.

لنحاول ان نطبق الخوارزمية على مثال حقيقي:

post-64798-1240163723_thumb.jpg

المرحلة 1:

post-64798-1240163901_thumb.jpg

المرحلة 2:

post-64798-1240163932_thumb.jpg

المرحلة 3:

ايجاد الحل المثالي

A* = {0.059, 0.244, 0.162, 0.080}

post-64798-1240163961_thumb.jpg

ايجاد الحل الاسوأ

A' = {0.040, 0.164, 0.144, 0.118}

post-64798-1240164007_thumb.jpg

المرحلة 4:

حساب البعد عن الحل المثالي

post-64798-1240164048_thumb.jpg

حساب البعد عن الحل الاسوأ

post-64798-1240164086_thumb.jpg

المرحلة 5:

post-64798-1240164108_thumb.jpg

--------------------------

لكي تتمكن من فهم الطريقة قمت بكتابة برنامج صغير و تافه لحساب هذه العمليات بلغة دلفي...

واجهة التطبيق الاساسية

post-64798-1240164583_thumb.jpg

ارجو ان اكون افدت...

شكراً على قراءة الموضوع

تم تعديل هذه المشاركة بواسطة عماد حمدي احمد في 22 أبريل 2009 في 15:08 — السبب: تعديل الجدول بناء على طلب الاخ fkugd2003

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#2

ساقوم برفع البرنامج فيما بعد لان سرعة الرفع بطيئة حاليا

تم تعديل هذه المشاركة بواسطة fkugd2003 في 19 أبريل 2009 في 21:26

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#3

الكود المصدري بدلفي 7 ارجو ان لاحظتم خطأ او لديكم فكرة لتحسينه ان تساهموا

TopSis__Delphi7_.rar

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#4

أن ما تتحدث عن هي احد خوارزميات نظرية دعم القرارات Decision theory

اول مرة اعرف ان هناك من يستخدم هذه الامور هنا في المنتدى على اي حال

لمزيد من المعلومات

http://www.infra.kth.se/~soh/decisiontheory.pdf

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#5

اكيد ما اتكلم عنه هي خوارزميات دعم القرارات :lol:

استعمالي لها في الامور الادارية فقط.. و احببت ان انفع بها من يحتاجها

اذكر عدة تطبيقات يمكن ان تساعد فيها هذا النوع من الخوارزميات... مثل اختيار العمال حسب معايير معينة

كما توجد ابحاث في اللغة العربية و دراسة الشكل النحوي و التشكيل الاوتوماتيكي مبنية على هذه الفكرة

يرجى تصحيح النقاط الخاطئة في الموضوع ان وجدت

اقتباس
اول مرة اعرف ان هناك من يستخدم هذه الامور هنا في المنتدى على اي حال

ارجو ان لا يكون هذا شيئا سيئا :wacko:

تم تعديل هذه المشاركة بواسطة fkugd2003 في 19 أبريل 2009 في 23:40

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#6

مشكور اخي على الموضوع والشرح المتميز. سأقرأه بتركيز لاحقاً.

الملاحظة الأولية لي :

ألا تعتقد أن تشبيه اختيار الزوجة بشراء سيارة مثال غير مناسب . -_-

اعرف ان في مجتماعتنا صارت العملية اقرب الى ذلك،ولكن على الاقل " من باب اذا بليتم فاستتروا ".

بالتوفيق،

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#7

بارك الله فيك اخي ابراهيم..

القضية لم تتعلق باختيار الزوجة او السيارة بل بالمعايير التي تعتمدها للاختيار

نفس الشيئ نقوم نحن به.. فالشاب يطلب صاحبة المال او الجمال او الدين على الرغم ان الرسول صلى الله عليه وسلم اعطانا معيار الدين مباشرة يعني لو طيقت معيار الدين فلن تحتاج الى الخوارزمية :lol:... على العموم الامر كان مثال فقط للاستدلال و اسف اذا ازعجك اخي

اعتذاراتي

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#8

ان موضوعك لذيذ جدا لمن يدرك اهميته fkugd2003 عزيزي

:D

#9
اقتباس
ألا تعتقد أن تشبيه اختيار الزوجة بشراء سيارة مثال غير مناسب .

بالعكس المثال موفق تماما بل ومثال الزوجة امر تقليدي

اقتباس
نفس الشيئ نقوم نحن به.. فالشاب يطلب صاحبة المال او الجمال او الدين على الرغم ان الرسول صلى الله عليه وسلم اعطانا معيار الدين مباشرة يعني لو طيقت معيار الدين فلن تحتاج الى الخوارزمية

بالعكس تماما في هذه الحالة سياخذ معيار الدين اكبر درجة مصفوفة مقارنة المعايير بعضها ببعض

والخوارزمية تعمل تماما

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#10

هل هناك ملاحظات حول الكود البرمجي او اي اخطاء؟؟...

ام انتقل الى موضوع اخر؟

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#11

السلام عليكــم ورحمـة الله وبركاتــه ،،

بداية بارك الله فيك اخى الفاضل , ومنتظرين المزيد منك ان شاء الله

لو سمحت لى بالتعليق , فعندى ملاحظتين , وبالتاكيد لا ينتقصوا من جهدك شئ:

1) عنوان الموضوع مخالف لقوانين المنتدى :D لانه باللغة الانجليزية. وصراحة لم اريد التعليق من البداية حتى لا تسئ فهمى. المفروض اخى الفاضل ان يكون العنوان الرئيسى باللغة العربية والعنوان الفرعى يمكنك ان تضع به العنوان باللغة الانجليزية.

2) فى الجدول التوضيحى (اول جدول) الذى ارفقته حضرتك , استخدمت اعداد وكذلك الرموز S_1j و S_i1, وهكذا. وفى المعادلة فى الخطوة الاولى للخوارزمية , استخدمت الرمز f_ij , فما هو تعريف الـ f_ij ؟ ولو كانت هى المقصودة بالاعداد والرموز S_i1 وغيرها , ففيفضل تعديل الجدول , حتى يكون الموضوع سهل الفهم لمن يقراه اول مرة.

يمكنك تحرير المشاركة وتعديلها لو احببت , بارك الله فيك ,,,

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#12
اقتباس
) عنوان الموضوع مخالف لقوانين المنتدى

متاسف اخي :( بكل بساطة لم اعرف كيف اترجم Compromise Programming Topsis Method :D لكن شكرا على الملاحظة.. سوف اخذها بعين الاعتبار (منكم نتعلم)

جاري التعديل للموضوع.. متأسف على الهفوة :) ...

بارك الله فيك..

ساحاول في المواضيع القادمة ان اتجنب الاخطاء... قريبا نكمل مع الاختيار المتعدد حتى نوفر مواضيع ان شاء الله بالعربية لهذا الفرع لان اغلب المواضيع التي رأيتها بالانجليزية و لا تحتوي على اكواد برمجية.. -_- ساحاول ان اوفر الاكواد و الامثلة بقدر الاستطاعة

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#13
fkugd2003 كتب:
جاري التعديل للموضوع.. متأسف على الهفوة :) ...

بارك الله فيك..

ساحاول في المواضيع القادمة ان اتجنب الاخطاء... قريبا نكمل مع الاختيار المتعدد حتى نوفر مواضيع ان شاء الله بالعربية لهذا الفرع لان اغلب المواضيع التي رأيتها بالانجليزية و لا تحتوي على اكواد برمجية.. -_- ساحاول ان اوفر الاكواد و الامثلة بقدر الاستطاعة

بارك الله فيك اخى الفاضل على سعة صدرك واستجابتك , وزادك الله علما نافعا.

فى كمان ملاحظه :) , بس يمكن اكون مخطأ فارجو تصويبى فى حالة الخطأ.

فى الجدول الرئيسى (الذى قمت بتعديله) حضرتك واضع الخيارات المتاحه (Alternatives ) بشكل افقى والمعايير (Criterions) بشكل رأسى. وبالتالى معادلاتك كلها معتمده على هذا الترتيب. بينما فى المثال حضرتك واضع انواع السيارات (الخيارات على حد فهمى) بشكل رأسى. والمعايير بشكل افقى. وكده يبقى المعاملات اتعكست تماما ومش عارف هل حضرتك اخذت هذا بعين الاعتبار وانت بتحل المثال ام ان الجدول الاصلى به خطأ فى الترتيب؟

بارك الله فيك ونفع بك ,,,

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#14
اقتباس
ام انتقل الى موضوع اخر؟

انتقل فورا

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#15

اتخاذ القرارات

شجرة القرارات

تم تعديل هذه المشاركة بواسطة romanof في 22 أبريل 2009 في 06:36

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#16

السلام عليكــم ورحمـة الله وبركاتــه ،،

بارك الله فيك اخي romanof على الاضافة الجميلة...

اخي عماد حمدي الجدول صحيح لكن في المعلادلات استعملت مقلوب المصفوفة.. للاسف انتهى وقت تعديل الموضوع بالنسبة لي :(

اذا كان بالامكان ارجو تعديل الجدول الاول بهذا

post-64798-1240399004_thumb.jpg

بارك الله فيكم جميعا :)

تم تعديل هذه المشاركة بواسطة fkugd2003 في 22 أبريل 2009 في 14:17

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#17
fkugd2003 كتب:
اذا كان بالامكان ارجو تعديل الجدول الاول بهذا

تم وبارك الله فيك ,,,

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#18

بسم الله الرحمن الرحيم

هذا تطبيق سريع قمت بكتابته لتوضيح الخوارزمية بالماتلاب وشكرا

:huh:

سنطبق البرنامج على المثال الذي اخذه زميلي في موضوعه

  1. close all %===La Methode TOPSIS===%
  2. % fij=input('entrer la matrice initiale: ');
  3. fij=[7 9 9 8;8 7 8 7;9 6 8 9;6 7 8 6];
  4. W=[.1 .4 .3 .2];
  5. % n=size(fij,1);
  6. % for j=1:n;
  7. % W(j)=input('entrer le vecteur W élément par élément: ');
  8. end
  9. disp('=============<fij>=======================================================================
    =')
  10. disp(fij)
  11. disp('============================================================================
  12. =====================')
  13. disp(['Le vecteur de poids ',num2str(W)])
  14. n=size(fij,1);
  15. m=size(fij,2);
  16. for i=1:m; % calculer La matrice de décision normalisé rij .
  17. for j=1:n; % et La matrice de décision normalisé pondérée vij .
  18. rij(i,j)=fij(i,j)/sqrt(sum(fij(1:m,j).^2));
  19. vij(i,j)=W(j)*rij(i,j);
  20. end
  21. end
  22. % affiche rij
  23. disp('=====================<rij>===============================================================
    =========')
  24. disp(rij)
  25. vij(i,j)=W(i)*rij(i,j);
  26. disp('=====================<vij>===============================================================
    ==========')
  27. disp(vij)
  28. disp('============================================================================
  29. =====================')
  30. A1=[max(vij(1:m,1:n-1)) min(vij(1:m,n))];% A1==A* (Le vecteur de La Solution idéale).
  31. A2=[min(vij(1:m,1:n-1)) max(vij(1:m,n))]; % A2==A- (Le vecteur de La Solution non idéale).
  32. disp(['La Solution idéale est : ',num2str(A1)])
  33. disp('============================================================================
  34. =====================')
  35. disp(['La Solution non idéale est : ',num2str(A2)])
  36. for i=1:m; % Calculer les mesures de séparation pour chaque alternative.
  37. D1(i,1)=sqrt(sum((vij(i,1:n)-A1(1:n)).^2)); % D1==S* (La séparation de l'alternative idéale).
  38. D2(i,1)=sqrt(sum((vij(i,1:n)-A2(1:n)).^2)); % D2==S' (La séparation de l'alternative non idéale
    ).
  39. end
  40. % D1 % affiche S*
  41. % D2 % affiche S'
  42. for i=1:n; % Calculer La proximité relative de la solution idéale Ci*
  43. Ci(i,1)=[D2(i)/(D1(i)+D2(i))]';
  44. end
  45. % Ci % affiche Ci
  46. disp('============================================================================
  47. =====================')
  48. disp(' S* S'' Ci*')
  49. disp([D1 D2 Ci] )
  50. disp(' S* : La séparation de l''alternative idéale')
  51. disp(' S'' : La séparation de l''alternative non idéale')
  52. disp(' Ci* : La proximité relative de la solution idéale')
  53. disp('===========================================(Fin)================================
    =========
    ========')
  54.  
  55.  

:و سنحصل في الاخير على النتيجة التالية

=============<fij>========================================================================
	 7	 9	 9	 8
	 8	 7	 8	 7
	 9	 6	 8	 9
	 6	 7	 8	 6

================================================================================
=================
Le vecteur de poids	 0.1		 0.4		 0.3		 0.2
=====================<rij>========================================================================
	0.4616	0.6138	0.5447	0.5275
	0.5275	0.4774	0.4842	0.4616
	0.5934	0.4092	0.4842	0.5934
	0.3956	0.4774	0.4842	0.3956

=====================<vij>=========================================================================
	0.0462	0.2455	0.1634	0.1055
	0.0528	0.1910	0.1453	0.0923
	0.0593	0.1637	0.1453	0.1187
	0.0396	0.1910	0.1453	0.0791

================================================================================
=================
La Solution idéale est	 :   0.059344	 0.24552	 0.16341	0.079126
================================================================================
=================
La Solution non idéale est :   0.039563	 0.16368	 0.14525	 0.11869
================================================================================
=================
	  S*		 S'		Ci*
	0.0295	0.0851	0.7427
	0.0594	0.0402	0.4036
	0.0927	0.0198	0.1759
	0.0608	0.0481	0.4414

  S*  : La séparation de l'alternative idéale
  S'  : La séparation de l'alternative non idéale
  Ci* : La proximité relative de la solution idéale
===========================================(Fin)=================================================

تم تعديل هذه المشاركة بواسطة عماد حمدي احمد في 24 أبريل 2009 في 11:28 — السبب: تعديل تنسيق الكود

#19

m_thodetopsis.rar

اصدقائي هذا ملف البرنامج لمن اراد ان يجربه على الماتلاب والسلام عليكم

m_thodetopsis.rar

تم تعديل هذه المشاركة بواسطة matlabdz في 24 أبريل 2009 في 04:17

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…