X
تبلیغات
کالج کارآفرینی تیوان

SI: Swarm Intelligence

پیاده سازی حل مسئله جمع دوازده عدد به کمک کودا در ویژوال استودیو با چهار سناریو حل

پیاده سازی حل مسئله جمع دوازده عدد به کمک کودا در ویژوال استودیو با چهار سناریو حل

بیان مسئله:

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

 

 

11

10

9

8

7

6

5

4

3

2

1

0

شکل 1: محاسبه مجموع 12 عدد صفر تا یازده

پیاده سازی مسئله به روش سریال به کمک فایل sum12numberserial:

در این روش به صورت ترتیبی مجموع 12 عدد محاسبه شده است که کد آن در ذیل آورده شده است.

مراحل کار در شکل 2 آورده شده است. در آن در هر تکرار یک عدد با مقدار فعلی x جمع می شود.


 

شکل 2: مجموع دوازده عدد به صورت سریال

 

ادامه مطلب

پیاده سازی الگوریتم ژنتیک در ++C برای حل یک مساله ساده

پیاده سازی حل مسئله تساوی ساده ریاضی به کمک الگوریتم ژنتیک در Visual studio C++

بیان مسئله:

فرض کنید تساوی a+2b+3c+4d=30 برقرار باشد با استفاده از الگوریتم ژنتیک مقادیر a,b,c,d به گونه ای باید تعیین شود که تساوی برقرار باشد. در ابتدا باید تابع هدف فرمول بندی شود. که در این مثال هدف مینیم کردن تابع f(x)=a+2b+3c+4d-30 می باشد. چون چهار متغیر در معادله وجود دارد می توان کروموزوم ها را به صورت شکل 1 ایجاد کرد. در ادامه هر کدام از مراحل الگوریتم ژنتیک همراه با کد آورده شده است.

d

c

b

a

 

 


شکل 1: تشکیل کروموزوم برای معادله ریاضی f(x) با چهار متغیر

 

پیاده سازی تابع هدف به کمک فایل Fchromosomemath1.h :

همان طور که در کد ذیل آورده شده است کروموزوم ها یا همان راه حل ها را از تابع اصلی به عنوان ورودی دریافت می کند. و سپس تابع هدف به کمک ژن ها در این مثال متغیرهای a,b,c,d به تعداد 6 کروموزوم بدست می آید. و در انتها یک آرایه یک بعدی سطری با 6 عنصر به عنوان جواب هر کرموزوم به تابع اصلی به عنوان خروجی برگردانده می شود.

////////////////////Fchromosomemath1.h\\\\\\\\\\\\\\\\\\\\\\\\

structmystruct400

{

       int F400[6];

};

usingnamespace std;

structmystruct400 Fchromosomemath400(intnewchromosome3[6][4])

{

 

       structmystruct400 items4;

 

       for (int i = 0; i < 6; i++)

              for (int j = 0; j < 4; j++)

                     cout <<"\nchr000000["<<i<<"]["<<j<<"]="<<newchromosome3[i][j];

       int F400[6] = { 0 };

       for (int i = 0; i < 6; i++)

       {

              int a = newchromosome3[i][0];

              int b = newchromosome3[i][1];

              int c = newchromosome3[i][2];

              int d = newchromosome3[i][3];

              F400[i] = abs(a + 2 * b + 3 * c + 4 * d - 30);

              cout <<"\nF["<<i<<"]="<< F400[i];

              items4.F400[i] = F400[i];

              cout <<"\nitems4.F["<< i <<"]="<< items4.F400[i];

 

 

       }

 

       return items4;

}

//////////////////// End-Fchromosomemath1.h\\\\\\\\\\\\\\\\\\\\\\\\

  

ادامه مطلب

الگوریتم ممتیکی مبتنی بر ازدحام ذرات

الگوریتم ممتیکی مبتنی بر الگوریتم بهینه سازی ذرات

در دنیای امروز حل مسائل پیچیده به خصوص پویا که در حین اجرا بهینه سراسری در حال تغییر می باشد استفاده از الگوریتم های تکاملی مفید می باشد. به ویژه الگوریتم ممتیکی مبتنی بر ازدحام ذرات در این گونه مسائل پویا به صورت خیلی قوی عمل می کند. بدین منظور در این مقاله روش بهبود یک مسئله پویا به نام قله های متحرک به کمک الگوریتم ممتیکی مبتنی بر ازدحام ذرات مورد بررسی قرار می گیرد. منظور از مسئله قله های متحرک تغییرات ایجاد شده به صورت پویا همانند شکل 1 می باشد. که در آن بهینه سراسری در هر مرحله از اجرا تغییر می کند. در ادامه الگوریتم پیشنهادی برای حل این گونه مسائل آورده شده است.

شکل 1: تغییرات محیط قله ها در مسئله قله های متحرک

روند الگوریتم پیشنهادی:

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

شکل2: شبه کد الگوریتم پیشنهادی ممتیکی مبتنی بر ازدحام ذرات

 

ادامه مطلب
1 2 3 4 5 >>