چکیده :
در این مقاله سعی می کنیم بهترین مینیمم را برای تابع زیر به دست بیاوریم :
برای این منظور از روش simulated Annealing (SA) استفاده می کنیم .
SA یکی از روشهای بهینه سازی حل مسئله است که در واقع الهام گرفته شده از فرایند ذوب و دوباره سرد کردن مواد می باشد و به همین دلیل به شبیه سازی حرارتی شهرت یافته است .
پس از حل مسئله با روش SA ، سعی می کنیم آن را در یک نرم افزار تحمل خطا به کار ببریم. برای داشتن یک نرم افزار تحمل خطا تکنیکهای مختلفی وجود دارد که ما در این مقاله با استفاده از تکنیک های افزونگی و تنوع طراحی از روش Acceptance Voting (AV) بهره برده ایم .
مقدمه :
Fault: باعث errorدر سیستم می شود که به آنbug هم گفته می شود .
Error : حالتی از سیستم است که منتج به خرابی می شود .
Failure : حالتی است که سیستم از سرویس مورد نظر منحرف شود .
2-1- تحمل خطا (Fault Tolerance):
تحمل خطا یک پروسه یعنی مجموعه ای از فعالیت هاست که هدف آن حذف خطا است یااگر نتوانست خطا را حذف کند ، لااقل تاثیراتش را کم کند .
3-1- سیستم تحمل پذیر خطا (System Fault Tolerance ) :
سیتم تحمل پذیر خطا معادل با سیستم قابل اعتماد ( Dependable ) می باشد که باید ویژگی های (قابلیت دسترسی ، قابلیت اعتماد ، ایمنی و قابلیت نگهداری را داشته باشد :
- قابلیت دسترسی: سیستم در هر لحظه آماده استفاده باشد .
- قابلیت اعتماد: سیستم پیوسته و بدون عیب کار کند .
- ایمنی: وقتی سیستم fail می شود اتفاق فاجعه آمیزی رخ ندهد .
- قابلیت نگهداری: سیستم شدهfail به راحتی قابل ترمیم باشد.
4-1- افزونگی ( Redundancy):
یکی از روشهای تحمل خطا در سیستم های نرم افزاری افزونگی است . افزونگی ، قابلیتی است در تحمل خطا به طوری که می توان با افزایش سخت افزار و یا کپی برداری از تمام نرم افزار و یا قسمتی از نرم افزار و یا کپی برداری از data تحل خطا را در سیستم تضمین کرد .
5-1- تنوع طراحی (Design Diversity) :
برای تولید یک سیستم تحمل پذیر خطا می توان یک نرم افزار را به شرکت های مختلف برنامه نویسی داد تا برنامه را بنویسد و برای تولید نتیجه نهایی نیز می توان از الگوریتم voting استفاده کرد پس باید از یک نرم افزار طراحی های مختلف داشته باشیم .
روشهایی که از تکنیک تنوع طراحی استفاده می کنند عبارتند از:
1-5-1- Recovery Blocks(RCB)
یک تکنیک تحمل خطای نرم افزاری تنوع طراحی است. یک روش دینامیک است و ازیک AT(Acceptanc test) استفاده می کند. از افزونگی نرم افزاری استفاده میکند یعنی در اینجا ما از نرم افزار چندین گپی داریم از AT برای تست شرط استفاده می کند که آیا شرط برقرار شده است یا نه، اگربرقرار بود که خروجی تولید می شود و گرنهback ward Recovery انجام می دهد و Alternate بعدی کار را انجام می دهد و اگر هیچ یک از نتایج Alternate ها پاس نشد یک خطا اتفاق می افتد.
2-5-1- N- version programming(NVP):
از تکینیک های اصلی تنوع طراحی نرم افزاری است یک روش استاتیک است یعنی تمامtask هایی که قرار است به عنوان variant ها عمل کند تا خروجی تولید شود مشخص اند. از روش Forward Recoveryاستفاده می کند. پایه عملیات آن به این صورت است که n تا نسخه همزمان اجرا می شود و یک مکانیزم تصمیم گیری روی نتایج ورژن ها اعمال می کنیم اگر توانستیم به تصمیم جامعی برسیم که نتیجه برگردانده می شود و گرنه یک exception اتفاق می افتد.
3-5-1- : N self– Checking programming(NSCP)
با استفاده از NSCP با داشتن افزونگی نرم افزاری می خواهیم رفتار برنامه ها را که همزمان می شوند را چک کنیم ،در این روش از یک مقایسه کنند. که نقش اساسی در تصمیم گیری داردیعنی وظیفه اش این است که نتایج variant ویک الگوریتم مقایسه ای یکAT برای هرحقیقت سخت افزار تشکیل می شود که با افزایش سخت افزارها این موارد نیز افزایش
می یابند.
N در NSCP همیشه زوج است و نشان دهنده تعداد variant هاست جفت ها همزمان اجرا می شوند. درNSCP زمانی خطا اتفاقی می افتد که یا نتایج جفت ها با هم موافق نباشد ویا نتایج تولید شده بوسیله جفت های موافق باهم متفاوت باشند.
4-5-1-روش (Consen sus Recovery Block (CRB
این تکنیک ترکیبی از RCB , NVP است . این روش باعث می شود تا اهمیتATدرRB را کم کند. در این روش n ورژن از برنامه را با اولویت گذاری دادیم که این اولویت ها براساس سرویسشان و میزان قابلیت اعتمادشان است .دراین تکنیک ابتدا n تا ورژن به روش NVP همزمان اجرا می شوند و نتیجه شان بوسیله voter بررسی می شود. اگرvoter نتیجه نهایی را بتواند تولید کند کار تمام می شود و گرنه نتیجه variantها بر اساس بیشترین اولویت به AT فرستاده می شود .
run Ranked Variant 1, Ranked Variant 2, ..., Ranked Variant n
if (Decision Mechanism (Result 1, Result 2, ..., Result n) )
return Result else
ensure Acceptance Test
by Ranked Variant 1 [Result]
else by Ranked Variant 2 [Result]
else by Ranked Variant n [Result]
else raise failure exception return Result
5-5-1- Acceptance voting (AV) :
AV یکی از روشهای مهم از تکنیک تنوع طراحی می باشد . در این روش ما می توانیم از یک نرم افزار ، نسخه های مختلفی داشته باشیم که به هر یک از آنها یک variant گفته
می شود .
این روش هم از (Acceptance Test) AT و هم از voting استفاده می کند .
در اینجا ابتدا تمام variant ها به صورت موازی اجرا می شود خروجی هر یک از آنها وارد یک AT می شود . ATخروجی را بررسی می کند تا آن را به voterپاس دهد .
voterدر این روش یک voter کاملا دینامیک است ؛ یعنی voter از یک الگوریتم رای گیری دینامیک استفاده می کند ؛ یعنی اگر تعداد خروجی هایی که توسط AT به آن پاس داده می شود کمتر از N (تعداد variant ها ) باشد نیز میتواند جواب نهایی را تولید کند یعنیvoter تعداد خروجی های پاس داده شده به وسیله AT به voter می تواند K باشد که N 1≤K < است . به این ترتیب اگر یکی از variant ها نیز نتوانست پاسخ درست را تولید کند ، الگوریتم با استفاده از خروجی بقیه variant ها می تواند خروجی صحیح را تولید کند . در این تکنیک زمانی سیستم Fail می شود که هیچ خروجی به voter پاس داده نشود و یا voter دینامیک نتواند یک خروجی صحیح را انتخاب کند