الحلقة 4 : خوارزمية محاكاة التلدين – برنامج التبريد Simulated Annealing Algorithm – Cooling Schedule

facebook-groupالسلام عليكم ورحمة الله وبركاته

ضمن هذه الحلقة من خوارزمية التلدين simulated annealing algorithm SA سنتحدث بشكل مفصل عن عنصر مهم من عناصر الخوارزمية, الا وهو مخطط وبرنامج التبريدThe cooling schedule .

نعتذر على التأخر بين الحلقات, وذلك بسبب الانشعال الكبير, والالتزامات المختلفة. ولكن مع ذلك فإننا نسعى دوما الى ايجاد وقت لنكمل ما بدأنا به في مشروعنا الهادف الى شرح خوارزميات وتقنيات الذكاء الصناعي وتوضيحها باللغة العربية. ارجو ان تحقق الفائدة المرجوة منها.

التلدين الفيزيائي physical annealing  وخوارزمية محاكاة التدلين simulated annealing

في البداية دعونا نوضح العلاقة بين التلدين الفيزيائي physical annealing  وخوارزمية محاكاة التدلين simulated annealing

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

الجدول ادناه يوضح مقاربة التلدين الفيزيائي مع محاكاة التلدين برمجيا

Thermodynamic Simulation Combinatorial Optimization
System States Feasible Solutions
Energy Cost
Change of State Neighboring Solutions
Temperature Control Parameter
Frozen State Heuristic Solution

بالاعتماد على هذه المقاربات الموضحة بالجدول, بالامكان الآن تمثيل اي مسألة امثلة   combinatorial optimization problem بواسطة خوارزمية محاكاة التلدين SA .

اما الآن فسننتقل للحديث عن نقطة اساسية ومهمة في الخوارزمية, الا وهي عملية التبريد Cooling process, حيث تعتمد الخوارزمية بشكل اساسي في ادائها على طريقة التبريد المستخدمة.

برنامج التبريد The Cooling Schedule

heating-and-cooling-maury-county-tennesseeيتألف برنامج التبريد cooling schedule في خوارزمية محاكاة التلدين من المكونات التالية:

  1. درجة الحرارة البدائية Starting Temperature
  2. درجة الحرارة النهائية Final Temperature
  3. تخفيض درجة الحرارة Temperature Decrement
  4. عدد التكرارات عند كل درجة حرارة Iterations at each temperature

سنتحدث فيما يلي عن كل مكون من هذه المكونات بالتفصيل.

 درجة الحرارة البدائية Starting Temperature

يجب أن تكون درجة حرارة الابتدائية Starting temperature ساخنة بما فيه الكفاية للسماح للخوارزمية بالانتقال الى اي حل من heating-naples-fl-2-300x300.pngالحلول القريبة. إذا لم يتم ذلك  – اي البدء بدرجات حرارة عالية – فإن الحل النهائي ending solution سيكون هو نفسه (أو قريب جدا) إلى الحل البدائي Starting solution. وعندها سنكون اقرب ببساطة من تنفيذ خوارزمية تسلق التلHill climbing , بدلا خوارزمية محاكاة التلدين!

ومع ذلك يجب الانتباه الى نقطة اخرى، ففي حال كانت درجات الحرارة في البداية عالية جدا, عندها يصبح من الممكن الانتقال الى اي حل مجاور, وبالتالي تتحول عملية البحث – على الاقل في المراحل البدائية من الخوارزمية – الى عملية بحث عشوائي random search.
فعليا, سوف تتحول عملية البحث في هذه الحالة الى عملية بحث عشوائي الى ان يتم تخفيض درجات الحرارة عن طريق التبريد cooling , وتصل الى درجة مناسبة لكي تعود الخوارزمية وتتصرف بسلوك خوارزمية محاكاة التلدين simulated annealing algorithm.

كما هو واضح, فإن المشكلة الاساسية تكمن في ايجاد درجة الحرارة الابتدائية starting temperature.

حاليا لا توجد طريقة معروفة لايجاد درجة حرارة ابتدائية مناسبة لكل المسائل بشكل عام. لذلك نحن بحاجة للجوء الى طرق اخرى, ووضع عدد من النقاط بعين الاعتبار من اجل حساب درجة الحرارة الابتدائية.

إذا كنا نعرف المسافة القصوى (فرق تابع الكلفة الموضح بالمعادلات بالحلقة السابقةcost function difference ) بين جار وآخر, عندها يمكننا استخدام هذه المعلومات لحساب درجة الحرارة الابتدائية.

هنالك طريقة أخرى، تم اقتراحها من قبل (Rayward-Smith، 1996)، وتتمثل بأن تبدأ مع درجة حرارة عالية جدا ومن ثم يتم تبريدها بسرعة حتى يتم قبول حوالي 60٪ من أسوأ الحلول. لتعتبر عندها هذه الدرجة بمثابة درجة الحرارة الابتدائية, وعند هذه النقطة نبدأ بتخفيض سرعة التبريد.

وهناك فكرة مماثلة، تم اقتراحها من قبل (Dowsland، 1995)، وتتمثل بتسخين النظام بسرعة حتى يتم قبول نسبة معينة من الحلول الأسوأ , ومن ثم يمكن أن تبدأ بعدها عملية التبريد البطيء.

يمكن النظر الى الاقتراحات السابقة على انها مماثلة لعملية التلدين الفيزيائيphysical annealing . حيث يتم تسخين المواد في البداية لدرجات حرارة عالية حتى تصل الى المرحلة السائلةliquate status , ومن ثم يبدأ التبريد (حيث انه لا جدوى من تسخين المادة اكثر بعد وصولها للمرحلة السائلة في عملية التدلين الفيزيائي).

درجة الحرارة النهائية Final Temperature

عادة ما يتم ترك درجة الحرارة تتناقص حتى تصل الصفر.ac-icon

على كل حال, هذا قد يجعل الخوارزمية تعمل لفترة اطول وخصوصا عندما يتم استخدام طريقة جدول التبريد الهندسي geometric cooling schedule – سيتم شرحه بعد قليل.

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

لذلك، يجب وضع معايير للتوقف, والتي من الممكن ان تكون:

  • إما درجة حرارة منخفضة بشكل مناسب
  • أو عندما يكون النظام “مجمداfrozen ” عند درجة الحرارة الحالية (أي أنه لا يتم قبول أي تحركات أفضل أو أسوأ).

 

تخفيض درجة الحرارة Temperature Decrement

بعد ان تحدثنا عن كل من درجتي الحرارة البدائية والنهائية, الان يلزمنا معرفة كيفية الانتقال من درجة حرارة الى اخرى.cooling

اي نحن بحاجة الى تخفيض درجة الحرارة حتى نصل بالنهاية الى شرط التوقف.

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

تنص النظرية على انه يجب أن نسمح بعدد كافي من التكرارات عند كل درجة الحرارة بحيث النظام يستقر عند تلك الدرجة.

ولكن لسوء الحظ، فإن النظرية أيضا تشير إلى أن عدد التكرارات اللازم لتحقيق ذلك عند كل درجة حرارة قد يكون كبيرا بالنسبة لحجم المسألة, ويزيد من كلفة الحل بشكل اسي exponential . ولكون ذلك غير عملي, فإننا بحاجة الى تسوية.

يتم ذلك اما عبر اجراء عدد كبير من التكرارات عند بضعة درجات حرارة, وعدد قليل من التكرارات عند بقية درجات الحرارة, او اجراء موازنة فيما بينهم.

لتخفيض درجة الحرارة, يمكن استخدام طريقة خطية بسيطة simple linear method.

او

هنالك طريقة اخرى باستخدام طريقة التخفيض الهندسي geometric decrement

حيث ان

t = tα

where α < 1.

اظهرت التجارب بأن قيم الف α يجب ان تتراوح بين 0.8 و 0.99 , حيث لوحظ بأنه يتم الحصول على نتائج افضل عند القيم الاعلى من المجال المذكور سابقا.

طبعا كلما كانت قيمة α اعلى, كلما تطلب الامر وقتا اطول لتخفيض درجة الحرارة وصولا الى شرط التوقف stopping criterion.

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

بعض الطرق الاخرى هي التالية:

اذا اعتبرنا ان درجة الحرارة الابتدائية T0

ودرجة الحرارة النهائية TN

حيث ان Ti عبارة عن درجة الحرارة عن المرحلة i اثناء الانتقال ضمن المجال من 0  الى N

Cooling Schedule 1

Cooling Schedule 1

Cooling Schedule

Cooling Schedule 2

Cooling Schedule 3

Cooling Schedule 3

Cooling Schedule 4(sigmoid)

Cooling Schedule 4(sigmoid)

Cooling Schedule 6

Cooling Schedule 6

Cooling Schedule 7

Cooling Schedule 7

Cooling Schedule 8

Cooling Schedule 8

Cooling Schedule 9

Cooling Schedule 9

عدد التكرارات عند كل درجة حرارة Iterations at each temperature

يبقى هنالك القرار النهائي الذي لانزال بحاجة الى اتخاذه:

تحديد عدد التكرارات عند كل درجة حرارة.

هنالك طريقة بسيطة جدا وواضحة, الا وهي بتحديد عدد ثابت من التكرارات عند كل درجة حرارة.

هنالك طريقة اخرى, تم اقتراحها من قبل (Lundy,1986) وتتمثل باجراء تكرار وحيد عند كل درجة حرارة, ولكن عندها يجب ان تتم عملية التبريد بشكل بطيء جدا.

الصيغة التي تم استخدامها:

t = t/(1 + βt)

حيث ان β  عبارة عن قيمة صغيرة بشكل مناسب.

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

تبدو طريقة مناسبة وعملية اكتر من غيرها.

————-

ارجو ان تكون مخطط واجرائية التبريد قد توضحت عبر الشرح السابق

حيث تعتبر عنصرا هاما جدا في الخوارزمية, وتلعب دور اساسي في نجاح الخوارزمية او فشلها.

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

ولكن سنكتفي بهذا القدر ضمن هذه الحلقة, والى اللقاء ضمن حلقة اخرى من سلسلة خوارزمية محاكاة التلدين SA.

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

مع تحيات

م. نور الصباحي

المصطلح الترجمة
temperature الحرارة
parameter معامل
internal thermal energy الطاقة الداخلية  الحرارية
stochastically بشكل عشوائي
algorithm خوارزمية
Crystal   بلوري
amorphous غير متبلور
thermodynamics الديناميك الحراري
annealing التلدين
Optimization problems مسائل الأمثلة
 solid state الحالة الصلبة
 Liquid state الحالة السائلة
stochastic computational method طريقة عشوائية حسابية
 the cooling schedule  جدول التبريد

 

المراجع

Simulated Annealing Algorithms

http://www.iue.tuwien.ac.at/phd/binder/node87.html

The Simulated Annealing Algorithm

http://katrinaeg.com/simulated-annealing.html

SIMULATED ANNEALING APPLICATIONS

K. Nara

Ibaraki University

/2-1 Nakanarusawa 4 Chome

Hitachi 316-8511 JAPAN

An Introduction to Simulated Annealing

https://www.aero.iitb.ac.in/~rkpant/webpages/DefaultWebApp/salect.pdf

Simulated Annealing

Link to download pdf document

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0ahUKEwiawauM0c3VAhUDaVAKHc1nCp4QFghZMAc&url=http%3A%2F%2Fwww.springer.com%2Fcda%2Fcontent%2Fdocument%2Fcda_downloaddocument%2F9783319411910-c2.pdf%3FSGWID%3D0-0-45-1579890-p180080441&usg=AFQjCNE6X9vSDzVMyd4JATIbyOIsuWH1DA

Simulated Annealing

Link to download word document

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&cad=rja&uact=8&ved=0ahUKEwiawauM0c3VAhUDaVAKHc1nCp4QFghkMAk&url=http%3A%2F%2Fwww.cs.nott.ac.uk%2F~pszgxk%2Faim%2Fnotes%2Fsimulatedannealing.doc&usg=AFQjCNFlbfpKGnne-ZnM137yivTkepFZfA

 Simulated Annealing Cooling Schedules

http://www.btluke.com/simanf1.html

 

 

Advertisements

, , , , , , ,

أضف تعليق

الحلقة 3 : خوارزمية محاكاة التلدين – مثال Simulated Annealing Algorithm Example

facebook-groupالسلام عليكم ورحمة الله وبركاته

نتابع ضمن هذه الحلقة الحديث عن خوارزمية محاكاة التلدين SA Algorithm

وكما ذكرنا في الحلقة السابقة, سندرج في هذه الحلقة مثال من كود بايثون يوضح لنا بشكل عملي وبسيط الخوارزمية

فيما يلي ادناه المخطط التالي عبارة عن تذكرة لخطوات الخوارزمية

خوارزمية محاكاة التلدين

خوارزمية محاكاة التلدين

 مثال كود باثيون Python

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

حيث تعمد الخوارزمية على الحفاظ على افضل حل تصل اليه.

يمثل المثال السابق الهيكل الاساسي للخوارزمية, حيث يترك لك ملأ النقاط الهامة التي تم تمثيلها بشكل مجرد مثل:

تابع : Neighbor()

والذي يتم عبره توليد حل عشوائي مجاور random neighboring solution

التابع: cost()

يمثل تابع حساب الكلفة

تابع acceptance_probability()

وسنتحدث عنه بعد قليل.

 

تابع احتمال القبول acceptance probability function

يأخد هذا التابع كلفة الحل القديم old cost , كلفة الحل الجديد new cost, بالاضافة ا لى درجة الحرارة الحالية current temperature, ويكون خرج هذا التابع عبارة عن رقم يقع في المجال [0..1].

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

على سبيل المثال:

  • القيمة 1: حتما يتوجب الانتقال للحل الجديد ( الحل الجديد افضل من الحل السابق)
  • القيمة 0: حتما يتوجب البقاء على الحل القديم ( الحل الجديد اسوء من الحل السابق)
  • القيمة 0.5: النسب هي 50-50.

ما إن يتم حساب احتمال القبول acceptance probability, تتم مقارنة قيمتها مع رقم يتم توليده بشكل عشوائي وقيمته تقع في المجال بين الواحد والصفر.

في حال كانت قيمة احتمال القبول اكبر من الرقم العشوائي, عندها يتم الانتقال الى الحل الجديد!

 

حساب احتمال القبول Calculating the acceptance probability

تستخدم المعادلة التالية عادة من اجل حساب احتمال القبول:

acceptance probability function

حيث ان “الرمز الفا” يمثل احتمال القبول acceptance probability

old cost minue new cost

تمثل الفرق بين كلفة الحل القديم وكلفة الحل الجديد

T عبارة عن درجة الحرارة temperature

E = 2.71828

عبارة عن ثابت رياضي.

 

­تعتبر هذه المعادلة جزء من محاكاة التلدين Simulated annealing, وهي تمثل طاقة الجسيمات المعدنية عندما يتم تبريدها بشكل بطيء بعد تعرضها لدرجات حرارة عالية.

هذه العملية تسمح للجسيمات particles بالانتقال من تكوين عشوائي الى تكوين اخر اكثر انتظاما وبطاقة منخفضة.

يقترض علماء الحاسوب معادلة التلدين من اجل مساعدتهم في حل المسائل وذلك بالانتقال من حل عشوائي الى حل اخر اكتر انتظاما وبكلفة منخفضة.

تعني المعادلة السابقة بأن احتمال القبول acceptance probability:

  • يكون دوما اكبر من “واحد” عندما يكون الحل الجديد افضل من الحل السابق ( كلفته اخفض)
  • يصبح اصغر عندما يكون الحل الجديد new solution اسوء من الحل السابق.
  • يصبح اصغر من تناقض درجة الحرارة ( اذا كان الحل الجديد اسوء من الحل القديم).

 

الخلاصة:

اذا كان لديك مسألة امثلة بحاجة لحل, يجب ان تختطر خوارزمية محاكاة التلدين الى بالك.

هنالك طبعا الكثير من الاستراتيجيات والخوارزميات غيرها

طبعا بالنهاية لسنا هنا لتزكية خوارزمية دون اخرى بشكل عام, حيث ان هنالك عدة طرق وخوارزميات وبعضها افضل من بعضها الاخر في حل نوع محدد من المسائل.

——————–

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

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

مع تحيات

م. نور الصباحي

المصطلح الترجمة
temperature الحرارة
parameter معامل
internal thermal energy الطاقة الداخلية  الحرارية
stochastically بشكل عشوائي
algorithm خوارزمية
Crystal   بلوري
amorphous غير متبلور
thermodynamics الديناميك الحراري
annealing التلدين
Optimization problems مسائل الأمثلة
 solid state الحالة الصلبة
 Liquid state الحالة السائلة
stochastic computational method طريقة عشوائية حسابية

 

المراجع

Simulated Annealing Algorithms

http://www.iue.tuwien.ac.at/phd/binder/node87.html

The Simulated Annealing Algorithm

http://katrinaeg.com/simulated-annealing.html

SIMULATED ANNEALING APPLICATIONS

K. Nara

Ibaraki University

/2-1 Nakanarusawa 4 Chome

Hitachi 316-8511 JAPAN

An Introduction to Simulated Annealing

https://www.aero.iitb.ac.in/~rkpant/webpages/DefaultWebApp/salect.pdf

Simulated Annealing

Link to download pdf document

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0ahUKEwiawauM0c3VAhUDaVAKHc1nCp4QFghZMAc&url=http%3A%2F%2Fwww.springer.com%2Fcda%2Fcontent%2Fdocument%2Fcda_downloaddocument%2F9783319411910-c2.pdf%3FSGWID%3D0-0-45-1579890-p180080441&usg=AFQjCNE6X9vSDzVMyd4JATIbyOIsuWH1DA

Simulated Annealing

Link to download word document

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&cad=rja&uact=8&ved=0ahUKEwiawauM0c3VAhUDaVAKHc1nCp4QFghkMAk&url=http%3A%2F%2Fwww.cs.nott.ac.uk%2F~pszgxk%2Faim%2Fnotes%2Fsimulatedannealing.doc&usg=AFQjCNFlbfpKGnne-ZnM137yivTkepFZfA

 

 

, , , , ,

أضف تعليق

الحلقة 2 : خوارزمية محاكاة التلدين Simulated Annealing Algorithm

facebook-groupالسلام عليكم ورحمة الله وبركاته

نتابع ضمن هذه الحلقة الحديث عن خوارزمية محاكاة التلدين SA Algorithm

حيث تحدثنا في الحلقة السابقة عن منشأ  الخوارزمية, والقوانين الفيزيائية التي تعمل الخوارزمية على محاكاتها.

اما في هذه الحلقة فسوف نتحدث عن سبب استخدام هذه الخوارزمية, بالاضافة الى شرح مبسط عن الخوارزمية

لماذا خوارزمية محاكاة التلدين Why Simulated Annealing Algorithm

كما نعلم, هنالك العديد من خوارزميات الامثلة optimization algorithms مثل:

  • خوارزمية تسلق الهضبة Hill climbing algorithm – سنقدم سلسلة عنها ايضا ان شاء الله في المستقبل
  • الخوارزميات الجينية Genetic Algorithms
  • Gradient descent
  • ….

في الواقع, تكمن قوة خوارزمية محاكاة التلدينSA  في قدرتها على تجنب السقوط بالنهايات العظمى المحلية local maxima.

وتكاد تكون الحلول solutions  التي تقدمها الخوارزمية افضل من غيرها من الخوارزميات, ولكنها ليست الأفضل على الاطلاق.

يمكن تصور ذلك عن طريق تخيل رسم ثنائي البعد 2D – كما هو موضح بالشكل ادناه, حيث تمثل كل نقطة من الاحداثيات الواقعة على محور x حلا من الحلول ( على سبيل المثال خط سير معين بالنسبة لمسألة البائع المتجول salesman problem ).

وتمثل كل نقطة احداثيات على محور y مدى جودة هذا الحل ( على سبيل المثال, عكس قيمة المسافة المقطوعة بالنسبة لمسار من مسارات البائع المتجول – المقصود بعكس القيمة اي انه كل ما قصر المسار, كل ما كان الحل افضل, وبالتالي عكس القيمة تمثل الجودة في هذه الحالة)

SA Solutions

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

هذا يبدوا منطقيا جدا, ولكنه قد يؤدي حالات, حيث تعلق الخوارزمية في اماكن مثلى محلية sub-optimal places.

في المخطط ادناه, تم تحديد الحل الافضل بنجمة صفراء.

ولكن في حال وجدت خوارزمية بسيطة طريقها الى النجمة الخضراء – احد الحلول في الرسم – عندها لن تتحرك من عنده, حيث ان كل الحلول المجاورة اسوء منه.

تمثل النجمة الخضراء حل امثلي محلي sub-optimal local solution.

ملاحظة:

المقصود بحل امثلي محلي, اي انه افضل حل ضمن منطقة الجوار المعرفة له, ولكنه ليس الافضل على الاطلاق ضمن فضاء الحل.

SA Solutions with stars.jpg

تضيف محاكاة الصلب الكمية الصحيحة من العشوائية الى الاشياء بهدف الهروب من النهايات المحلية العظمى في بداية اجرائية العمل.

SA Solutions with stars and line.jpg

بالاضافة الى ذلك, فإن خوارزمية محاكاة التلدين ليست صعبة التنفيذ, على الرغم من اسمها المرعب 🙂

الخوارزمية

سنطرح ونقدم الخوارزمية عبر شرح عام وبسيط, قد نلجأ ضمن حلقات قادمة الى شرح تقني ومدعم بالرياضيات

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

  1. في البداية, توليد حل عشوائي random solution
  2. حساب الكلفة باستخدام احد التوابع التي قمت بتعريفها.
  3. توليد حل عشوائي مجاور random neighboring solution
  4. حساب كلفة الحل الجديد solution cost
  5. اجراء المقارنات التالية:
    • اذا كانت (كلفة الحل الجديد “اصغر” من كلفة الحل القديم) =< عندها يتم الانتقال الى الحل الجديد
    • اذا كانت (كلفة الحل الجديد “أكبر” من كلفة الحل القديم) =< “ربما” يتم الانتقال الى الحل الجديد.
  6. اعادة الخطوات من الثالثة حتى الخامسة حتى الوصول الى حل مقبول, او تصل الخوارزمية الى الحد الاعلى المسموح من التكرارات.

 

لنحلل الآن الخوارزمية الى قطع صغيرة:

الخطوة الأولى: توليد حل عشوائي.

بإمكانك تنفيذ هذه الطريقة بالشكل الذي تريد. النقطة الاساسية المهمة هي العشوائية – لا يتوجب ان تكون افضل تمثيل يخطر ببالك للحل المثالي.

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

تنفيذ وتطبيق هذه الخطوة ايضا عائد لك. بالاعتماد على نوع المسألة التي تسعى الى حلها, قد يكون التابع جدا بسيط مثلا اجمالي مجموع الاميال التي يقطعها البائع المتجول ضمن رحلته.

او من الممكن ان يكون التابع معقدا اكثر, بحيث يكون عبارة عن مجموعة من العوامل التي تشكل بمجموعها تابع حساب الكلفة.

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

الخطوة الثالثة: توليد حل عشوائي مجاور

“مجاور neighboring” تعني بأن هنالك اختلاف وحيد بين الحل القديم والحل الجديد. بشكل فعال, يتم الحصول على الحل الجيد عبر تبديل عنصرين من الحل الحالي ومن ثم تتم اعادة حساب الكلفة. المتطلب الاساسي ضمن هذه الخطوة, هي ان تتم بشكل عشوائي.

الخطوة الرابعة: حساب كلفة الحل الجديد

يتم استخدام نفس تابع الملائمة السابق – الذي تم استخدامه في الخطوة السابقة. ومن هنا يتوضح لماذا يتوجب علينا ان ننفذ وننجز تابع الملائمة بأفضل شكل يعطيه امكانية انجاز ممتازة, لانه يتم استدعائه ضمن كل تكرار في الخوارزمية.

اذا كانت (كلفة الحل الجديد “اصغر” من كلفة الحل القديم) =< عندها يتم الانتقال الى الحل الجديد

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

اذا كانت (كلفة الحل الجديد “أكبر” من كلفة الحل القديم) =< “ربما” يتم الانتقال الى الحل الجديد.

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

لتجنب هذه المشكلة, تلجأ الخوارزمية في بعض الاحيان للاحتفاظ بالحل الاسوء.

من اجل اتخاذ القرار في هذه المسالة – الاحتفاظ بالحل  الحالي او الانتقال الى حل اسوء – تقوم الخوارزمية بحساب شيء يدعبى باسم “احتمال القبول acceptance probability” ومن ثم تقوم بمقارنته برقم عشوائي.

التفاصيل المهمة ضمن الخوارزمية

الشرح اعلاه, لم يتطرق الى احد اهم المعاملات parameter ضمن الخوارزمية, الا هو درجة الحرارة temperature.

“درجة الحرارةTemperature ” عبارة عن تابع يستخدم ضمن التكرار في الخوارزمية.

وكما هو واضح من الاسم, فهو مستوحى من المبدأ الفيزيائي الذي اشتقت منه الخوارزمية – محاكاة التلدين عن طريق تسخين وتبريد المعادن.

عادة تبدأ قيمة معامل الحرارة temperature  بالقيمة 1.0, وتتناقص قيمتها في نهاية كل تكرار عبر ضربها – رياضيا – بثابت يدعى α

بالامكان التحكم بقيمة α.

بشكل عام, الخيارات تتراوح بين 0.8  الى 0.99.

فعليا, الخوارزمية اعقد بقليل من التوصيف والتبسيط اعلاه.

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

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

المصطلح الترجمة
temperature الحرارة
parameter معامل
internal thermal energy الطاقة الداخلية  الحرارية
stochastically بشكل عشوائي
algorithm خوارزمية
Crystal   بلوري
amorphous غير متبلور
thermodynamics الديناميك الحراري
annealing التلدين
Optimization problems مسائل الأمثلة
 solid state الحالة الصلبة
 Liquid state الحالة السائلة
stochastic computational method طريقة عشوائية حسابية

 

المراجع

Simulated Annealing Algorithms

http://www.iue.tuwien.ac.at/phd/binder/node87.html

The Simulated Annealing Algorithm

http://katrinaeg.com/simulated-annealing.html

SIMULATED ANNEALING APPLICATIONS

K. Nara

Ibaraki University

/2-1 Nakanarusawa 4 Chome

Hitachi 316-8511 JAPAN

An Introduction to Simulated Annealing

https://www.aero.iitb.ac.in/~rkpant/webpages/DefaultWebApp/salect.pdf

Simulated Annealing

Link to download pdf document

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0ahUKEwiawauM0c3VAhUDaVAKHc1nCp4QFghZMAc&url=http%3A%2F%2Fwww.springer.com%2Fcda%2Fcontent%2Fdocument%2Fcda_downloaddocument%2F9783319411910-c2.pdf%3FSGWID%3D0-0-45-1579890-p180080441&usg=AFQjCNE6X9vSDzVMyd4JATIbyOIsuWH1DA

Simulated Annealing

Link to download word document

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&cad=rja&uact=8&ved=0ahUKEwiawauM0c3VAhUDaVAKHc1nCp4QFghkMAk&url=http%3A%2F%2Fwww.cs.nott.ac.uk%2F~pszgxk%2Faim%2Fnotes%2Fsimulatedannealing.doc&usg=AFQjCNFlbfpKGnne-ZnM137yivTkepFZfA

 

 

, , , , ,

أضف تعليق

12 : Angular2 – Forms النماذج

facebook-groupالسلام عليكم ورحمة الله وبركاته

هذه الحلقة الاخيرة من سلسلة angular 2
وسنتحدث ضمنها بشكل مختصر جدا عن النماذج Forms

بعد الانتهاء من هذه الحلقة, نكون قد اصبحنا جاهزين للبدء بسلسلة اخرى لتعليم برمجة تطبيقات الموبايلات.

حيث بتعلمنا برمجة angular 2 سيكون هنالك امامنا طريقين:

اما برمجة الموبايلات باستخدام Html 5 & Angular 2 باستخدام بعض اطر العمل المشهورة في هذا المجال, مثل OnsenUI

او برمجة تطبيقات الموبايل باستخدام Nativescript, والتي تدعم بشكل اساسي اطار عمل angular.

mastering-forms-in-angular-2

Forms in Angular 2

يمكننا تصميم النماذج forms التي تستخدم ربط المعطيات ثنائي الاتجاه two-way data binding عبر angular 2, وذلك باستخدام الموجه ngModel.

لنبدأ الآن مع مثال عملي يوضح ذلك.

الخطوة الأولى:

سوف ننشأ موديل خاص بالمنتجات بالاسم التالي
products.ts

1- products_ts.jpg.png

الخطوة الثانية:

ضع الكود التالي ضمن الملف الذي قمت بإنشاءه سابقا

عبارة عن صف بسيط يحوي معلومات عن هيكلية المنتج, اسم المنتج pdoductname , ومعرف المنتج productid.

2 code of product ts.JPG

الخطوة الثالثة:

انشأ مكون للمنتج product component بالاسم التالي

Product-form.component.ts

واضف اليه الكود التالي:

3.JPG

للتوضيح:

قمنا بإنشاء غرض object من صف المنتج product class, واضفنا له قيمة لكل من معرفي المنتج واسمه.

يستخدم templateUrl لتحديد موقع ملف
product-form.component.html الذي يمثل واجهة العرض لهذا المكون.

الخطوة الرابعة:

بهدف إنشاء النموذج form المطلوب, انشأ ملف باسم

Product-form.component.html

وضع فيه الكود التالي:

4.JPG

للتوضيح: تم استخدام موجه ngModel لربط الغرض product object لعدد من العناصر ضمن النموذج.

الخطوة الخامسة:

ضع الكود التالي ضمن ملف

App.component.ts

5.JPG

الخطوة السادسة:

ضع الكود التالي في ملف

App.module.ts

6.JPG

الخطوة السابعة:

بعد حفظ كل التعديلات التي اجريتها سابقا, شغل التطبيق باستخدم npm.

الآن اذهب الى المتصفح, وسترى الخرج التالي:

product_form.jpg.png

ببساطة قم انشاء نموذج form باستخدام angular 2  عبر عدة خطوات سهلة وبسيطة.

وعند هذه الحلقة تنتهي هذه السلسلة المختصرة من angular 2.

اجو ان تكون قد عادت بالفائدة المرجوة منها.

ولتكون بداية ننطلق منها الى باب اكبر في عالم البرمجة, الا وهو برمجة تطبيقات الموبايل.

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

الترجمة المصطلح
مفتوح المصدر Open source
اطار عمل framework
تطبيق application
واجهات العرض Views
النشر Deployment
مخدم الويب Web server
منصة عمل Platform
موديول Module
التعامل مع الأخطاء Error handling
التوجيه Routing
مكون Component
استيراد import
قالب template
 الموجهات  Directives

المراجع:

  1. https://www.tutorialspoint.com/angular2/index.htm
  2. الموقع الرسمي https://angular.io/

 

, , , , , , , , ,

أضف تعليق

الحلقة 1 : خوارزمية محاكاة التلدين Simulated Annealing Algorithm

facebook-groupالسلام عليكم ورحمة الله وبركاته

عدنا من جديد لنتناول بالشرح والتفصيل خوارزمية اخرى من خوارزميات الذكاء الصناعي, الا وهي

خوارزمية محاكاة التلدين Simulated Annealing Algorithm

لقد عرضنا فيما سبق عدة خوارزميات, منها:

الخوارزميات الجينية Genetic algorithmgen

من الخوارزميات التطورية Evolutionary algorithms EA وهي مستوحاة من الاختيار الطبيعي وبيولوجيا الجينات – ذات اساس بيولوجي

خوارزميات Memetic algorithmdual-evolution-system - memetic algorithm ma

تبني ثنائية للتطور الجيني والثقافي مع بعضهم البعض

ذات اساس بيولوجي وثقافي اجتماعي

خوارزمية امثلة اسراب الطيور PSOswarm

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

 

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

محاكاة عملية التلدين Simulated Annealing SA

erlenmeyer-full-of-liquid-with-bubbles-md.png

في مستوحاة من الفيزياء والقوانين الفيزيائية

وتُستخدم خوارزمية محاكاة عملية التلدين في حل العديد من مسائل الأمثلة Optimization problems

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

 

ولكن بالبداية, وقبل الاستفاضة بالحديث عن الجوانب التقنية والرياضية للخوارزمية, دعونا بالبداية نشرح الاسس والقوانين الفيزيائية التي تم استيحاء الخوارزمية منها

 

عملية التلدين باختصار  Annealing

عندما نقوم بتسخين مادة صلبة الى درجة حرارة مرتفعة, ومن ثم نقوم بتبريدها, عندها فإن الخواص البنيوية structural properties لهذه المادة الصلبة سوف تتغير اعتمادا على معدل التبريد وسرعته.

فإذا بردنا الشكل السائل للمادة – بعد تسخينها – بشكل بطيء كفاية, عندها سنحصل على بنية كرستالية بلورية.

اما في حال تم تبريد المادة بشكل سريع, عندها لن تكون البنية الجديدة مثالية, اي غير بلورية.- مثل الزجاج

glass

الشكل يوضح فكرة التبلور والفرق بين الزجاج الغير متبلور وجزئيات مادة اخرى متبلورة في بنيتها

وكما هو واضح فإن عملية التبريد البطيء تعطينا بنية أفضل للمادة, وهو المطلوب محاكاته في خوارزميتنا هذه

كان هذا شرح مبسط جدا لعملية التلدين, اما الآن فسنقدم شرح اكتر دقة وتفصيلا لعملية التلدين  الفيزيائية

كيف تتم عملية التلدين Annealing Process

عندما يتم تسخين معدن في وعاء للانصهار, فإن طاقة المعدن الداخلية الحراريةinternal thermal energy تزداد مع التسخين, وتتحول حالة المعدن من الحالة الصلبة للحالة السائلة. عند هذه الحالة, تكون جزئيات molecules المعدن في اوضاع عشوائية وتتحرك بحرية وبسرعة عالية ضمن وعاء التسخين – كما هو موضح بالجزء a من الشكل رقم 1  ادناه.

1 introduction sa

سيتم الاشارة الى اجزاء هذا الرسم المختلفة فيما يلي ضمن هذه الحلقة, وذلك بحسب الاحرف المدرجة تحت كل جزء

بعبارة اخرى, فإن حالة الجزئيات – من حيث مواضعها وتحركها السريع – تزيد من الطاقة الداخلية الحرارية للمعدن thermal energy .

وبما انه يتم تحديد الطاقة الداخلية للمعدن بشكل عشوائي stochastically, وفقا لسلوك الجزيء, لذلك فإن الطاقة الداخلية تكون كبيرة, عندما درجة حرارته كبيرة بشكل كافي.

اذا انطلقنا من درجات حرارة مرتفعة – يتم تعريض المعدن لها, عندها اذا تم تبريد درجة حرارة المعدن بشكل بطيء, ستنخفض عندها طاقته الداخلية الحرارية internal thermal energy ايضا, بالرغم من انه قد تزداد في بعض الأحيان وفقا لقاعدة بولتزمان Boltzmann الاحتمالية, الموضحة ادناه, والتي تبين الاحتمالية الاخيرة بالزيادة.

Boltzmann Propability.JPG

 حيث ان

boltzmann delta.JPG : يمثل فرق الطاقة الحرارية بين الحالتين

T : درجة الحرارة المطلقة

KB : ثابت بولتزمان

————–

نتابع

عندما يتم تبريد المعدن, فإن سرعة حركة الجزئيات تنقص مع تناقص طاقتها الداخلية internal energy, كما هو موضح بالشكل 1-b.

وما تلبث ان تتحول حالةالمعدن الى الحالة الصلبة solid state مجددا, وتقل سرعة حركة الجزئيات اكثر فأكثر.

وبما ان عملية تبريد المعدن هي عملية محكومة بقوانين الديناميكا الحرارية العشوائية stochastic thermodynamics, فإن الحالة النهائية للجزئيات – المواضع – يتم تحديدها بشكل عشوائي وفقا لسلوك الجزئيات او سرعة برودتها.

في حال تم تبريد المعدن بشكل سريع, عندها تكون الحالة النهائية للمعدن غير متبلورة وغير منتظمة amorphous – مثل الزجاج

c5fd9d0c-9082-4c43-b017-7598b800cbea

في الحالة الصلبة المتبلورة – إلى اليمين – تنتظم جزيئات المادة بشكل متجانس يتخذ نمط متكرر، إنه ذلك الجزيء سداسي الشكل هو ما يتكرر في كل مكان بالبلورة، على عكس الحالة الصلبة اللابلورية -إلى اليسار- التي تتوزع بشكل عشوائي بحيث لا يمكن أن نلاحظ أي نمط متكرر ومنتظم

 

اما في حال تم تبريد المعدن بشكل بطيء جدا, عندها نحصل على حالة ارضية ground state, وتكون متبلورة Crystal, حيث تكون كل الجزئيات مصفوفة بشكل منتظم كما هو موضح بالجزء رقم 1-c  من الرسم.

 تدعى عملية تسخين المعدن, ومن ثم تبريده بهذه الطريقة باسم التلدين annealing.

———————-

ارجو ان تكون القوانين الفيزيائية – التي تم استيحاء الخوارزمية منها – قد توضحت.

والى لقاء في الحلقة القادمة التي سنشرح خلالها هذه الخوارزمية.

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

مع تحيات

م. نور الصباحي

المصطلح الترجمة
Simulated Annealing محاكاة التلدين
molecules الجزيئات
internal thermal energy الطاقة الداخلية  الحرارية
stochastically بشكل عشوائي
algorithm خوارزمية
Crystal   بلوري
amorphous غير متبلور
thermodynamics الديناميك الحراري
annealing التلدين
Optimization problems مسائل الأمثلة
 solid state الحالة الصلبة
 Liquid state الحالة السائلة
stochastic computational method طريقة عشوائية حسابية

 

 

المراجع

Simulated Annealing Algorithms

http://www.iue.tuwien.ac.at/phd/binder/node87.html

The Simulated Annealing Algorithm

http://katrinaeg.com/simulated-annealing.html

SIMULATED ANNEALING APPLICATIONS

K. Nara

Ibaraki University

/2-1 Nakanarusawa 4 Chome

Hitachi 316-8511 JAPAN

An Introduction to Simulated Annealing

https://www.aero.iitb.ac.in/~rkpant/webpages/DefaultWebApp/salect.pdf

Simulated Annealing

Link to download pdf document

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0ahUKEwiawauM0c3VAhUDaVAKHc1nCp4QFghZMAc&url=http%3A%2F%2Fwww.springer.com%2Fcda%2Fcontent%2Fdocument%2Fcda_downloaddocument%2F9783319411910-c2.pdf%3FSGWID%3D0-0-45-1579890-p180080441&usg=AFQjCNE6X9vSDzVMyd4JATIbyOIsuWH1DA

Simulated Annealing

Link to download word document

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&cad=rja&uact=8&ved=0ahUKEwiawauM0c3VAhUDaVAKHc1nCp4QFghkMAk&url=http%3A%2F%2Fwww.cs.nott.ac.uk%2F~pszgxk%2Faim%2Fnotes%2Fsimulatedannealing.doc&usg=AFQjCNFlbfpKGnne-ZnM137yivTkepFZfA

 

 

, , , , ,

أضف تعليق

11 : Angular2 – Routing التوجيه

facebook-groupالسلام عليكم ورحمة الله وبركاته

سوف نتحدث اليوم عن احد اهم المواضيع ضمن angular 2. ألا وهو التوجيه Routing.

routing.jpg

التوجيه Routing

يساعد التوجيه – وكما يوحي الاسم – على “توجيه” المستخدم الى عدة صفحات مختلفة.

ببساطة هو بمثابة موجة ووسيلة التنقل بين الصفحات.

سنوضح فيما يلي الخطوات اللازمة من اجل تنفيذ التوجيه routing ضمن تطبيق angular 2.

الخطوة الأولى:

اضف تاغ “المرجع الرئيسي” dbase reference tag الى ملف

Index.html

والهدف منه هو تحديد الصفحة الاساسية

1 - base ref.JPG

الخطوة الثانية:

انشأ موجهيين two routes ضمن تطبيقيك.

لفعل ذلك, انشأ ملفين بالاسماء المدرجة فيما يلي:

Inverntory.component.ts

Product.component.ts

2 open_editors.jpg.png

الخطوة الثالثة:

ضع الكود التالي ضمن ملف

Product.component.ts

3.JPG

الخطوة الرابعة:

ضع الكود التالي ضمن ملف
Inventory.component.ts

4.JPG

لا يقوم اي من المكونين السابقين, باي شيء خارق للعادة 🙂 ببساطة الهدف منهم ان يتم عرض اسم المكون عن عرض صفحته, فقط لا غير.

اذن, فإن مكون Inventory سيعرض كلمة Inventory للمستخدم.

و مكون Products سيعرض كلمة Products للمستخدم.

 الخطوة الخامسة:

ضع الكود التالي ضمن ملف

App.module.ts

5.JPG

حسنا, سنوضح بعض النقاط من الكود السابق:

  • يحوي “appRoutes” على توجيهين اثنين, احدهم الى مكون Appproduct, والآخر الى مكون AppInventory component.
  • تم التصريح عن كلي من المكونات component في البداية باستخدام عبارة import.
  • عبارة forRoot هدفها اضافة الموجهات الى التطبيق.

الخطوة السادسة:

اضف الكود التالي الى ملف

App.component.ts

6.JPG

من الكود السابق, نجد تاغ
<router-outlet></router-outlet>

وهي بمثابة المكان الذي سيتم عرض المكون component الذي سيتم اختياره تبعا لخيار المستخدم.

 

الآن, بعد حفظ كل التغييرات السابقة, وتشغيل التطبيق باستخدام npm. اذهب الى المتصفح, ويجب ان ترى الخرج التالي:

output 1 product.jpg.png

عند الضغط على رابط Inventory, سنظهر الخرج التالي:

output 2.png

 

التعامل مع اخطاء التوجيه

بإمكاننا – كما في الدرس السابق – ان نضيف امكانية التعامل مع اخطاء التوجيه هنا ايضا.

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

سنوضع فيما يلي كيف بإمكاننا تحقيق ذلك.

الخطوة الأولى:

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

PageNotFound component

وليكن بالاسم التالي:

NotFound.component.ts

كما يلي:

eh 1 - notfound.jpg.png

الخطوة الثانية:

اضف الكود التالي الى الملف السابق.

eh 2.JPG

اضف الكود التالي الى ملف

App.module.ts

eh 3.JPG

يجب توضيح النقط التالية عن الكود السابق:

  • تم اضافة موجه اضافي route
    له المسار path: ‘**’
    والمكون PageNoteFoundComponent.
    حيث تم استخدام المسار ‘**’ للاشارة الى اي مسار توجيه لم يتوافق مع اي من المسارات السابقة المذكورة ضمن الموجه. حيث سوف يتم توجيه المستخدم عندها الى مكون PageNoteFoundComponent

 

احفظ كل التعديلات التي قمت بإجرائها, ومن ثم شغل التطبيق باستخدام Npm.

اذهب الى المتصفح, وسوف ترى الخرج التالي عند ادراج اي مسار غير صحيح.

–  عدل في الرابط كما هو موضح بالشكل ادناه لتحصل على النتيجة المرجوه.

eh result pagenotfound.jpg.png

ارجو ان تكون فكرة التوجيه قد توضحت ضمن المثال السابق, لانها مهمة جدا ضمن angular 2

في الحلقة القادمة سوف نتحدث عن موضوع “Navigation”

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

 

الترجمة المصطلح
مفتوح المصدر Open source
اطار عمل framework
تطبيق application
واجهات العرض Views
النشر Deployment
مخدم الويب Web server
منصة عمل Platform
موديول Module
التعامل مع الأخطاء Error handling
التوجيه Routing
مكون Component
استيراد import
قالب template
 الموجهات  Directives

المراجع:

  1. https://www.tutorialspoint.com/angular2/index.htm
  2. الموقع الرسمي https://angular.io/

 

, , , , , , , ,

أضف تعليق

10 : Angular2 – Error Handling معالجة الأخطاء

facebook-groupالسلام عليكم ورحمة الله وبركاته

سنتناول اليوم موضوع التعامل مع الأخطاء error handling  ضمن angular 2.

وتكاد تكون حلقة اليوم اقصر حلقة ضمن هذه السلسلة السريعة, التي نأمل ان نقدمها بشكلها المختصر الوافي, لكي ننتقل بعد ذلك الى سلسلة اخرى من تقنيات برمجة الموبايلات بالاعتماد على angular 2.

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

image-why-angular-2

التعامل مع الأخطاء Error Handling

يتم التعامل مع الأخطاء في angular 2 عبر تضمين مكتبة ReactJs catch library, ومن ثم استخدام تابع “catch” بهدف التعامل مع الأخطاء.

بعيدا عن الكلام النظري, دعونا ننظر لمثال تطبيقي يوضح الصورة.

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

سنعدل على الكود ضمن ملف
product.service.ts

ليصبح على الشكل التالي:

code.JPG

من الصورة اعلاه, نجد ما يلي:

  • التابع Catch يحوي بداخله رابط للتابع المسؤول عن التعامل مع الخطأ Error handler function
  • ضمن تابع التعامل مع الخطأ error handler function, نقوم بارسال الخطأ الى خرج المتصفح browser console . كما اننا نقوم برمجي “throw” الخطأ الى البرنامج الرئيسي حتى يستمر تنفيذ البرنامج عند هذه النقطة.

بهذه الطريقة, كلما حدث خطأ ما, سيتم عرضه ضمن browser console.

نعم, وكما قلت لكم, حلقة مختصرة ومفيدة 🙂

الى اللقاء في الحلقة القادمة التي سنتحدث فيها عن التوجيه  Routing ضمن angular 2.

ويعد التوجيه هام جدا واساسي ضمن angular 2.

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

الترجمة المصطلح
مفتوح المصدر Open source
اطار عمل framework
تطبيق application
واجهات العرض Views
النشر Deployment
مخدم الويب Web server
منصة عمل Platform
موديول Module
التعامل مع الأخطاء Error handling
فعالية Functionality
مكون Component
استيراد import
قالب template
 الموجهات  Directives

المراجع:

  1. https://www.tutorialspoint.com/angular2/index.htm
  2. الموقع الرسمي https://angular.io/

 

, , , , , , ,

أضف تعليق