SIA: Swarm Intelligence Algorithms

الگوریتم های هوش جمعی

SIA: Swarm Intelligence Algorithms

الگوریتم های هوش جمعی

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

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

بیان مسئله:

در این مسئله هدف محاسبه حاصل جمع 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\\\\\\\\\\\\\\\\\\\\\\\\

  

ادامه مطلب ...

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

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

بیان مسئله:

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