fekre-bekr,learning,source,سورس,سورس رایگان,آموزش,اخبار,فناوری اطلاعات,mvc,.net,ساری,آموزشگاه,asp.net,c#.net,programing,c++,vb,آموزش برنامه نویسی,دانلود

اشتراک در سایت


مطالب تصادفی
اخبار و مقالات در فکر بکر مقایسه واحدهای اندازه گیری rem و em در css

وقتی صحبت از واحدهای اندازه گیری در CSS به میان می آید، ما انتخاب های خوبی داریم. در دنیای امروزی طراحی‌های واکنش‌گرا، واحدهای ن ...


اخبار و مقالات در فکر بکر آموزش ویرایش مطالب با استفاده از x-editable در Asp.net MVC

کتابخانه جاوااسکریپتی x-editable دارای قابلیتهای بسیار خوبی برای برنامه نویسان میباشد و همچنین با قابلیتی که دارد شما میتوانید ب ...


اخبار و مقالات در فکر بکر فایل pdf آموزش کامپوننت Backgroundworker برای برنامه نویسی بصورت همزمان

با استفاده از کامپوننت BackgroundWorker شما میتوانید به برنامه نویسی و اجرای کارهای زمانبر در یک Thread دیگر و بصورت موازی بپرداز ...


اخبار و مقالات در فکر بکر آموزش ایجاد آدرسهای کاربرپسند(user friendly URLs) در Asp.net MVC

با سلام – در این مقاله به آموزش ایجاد آدرسهای کاربر پسند در برنامه های Asp.net خواهم پرداخت User friendly بودن URLs فقط برای کا ...


اخبار و مقالات در فکر بکر آموزش استفاده از PersianDateTimePicker (تقویم فارسی) در برنامه های تحت وب

با سلام - در این مقاله به آموزش نحوه استفاده از کنترل PersianDateTimePicker(تقویم فارسی) در برنامه های تحت وب می پردازیم ...


اخبار و مقالات در فکر بکر حل تمرین مسائل برنامه نویسی از بخش فایلها در سی شارپ

در این برنامه به حل مساله کتاب جهت ذخیره در فایل متنی با استفاده از کادر محاوره ای savefileDialog می پردازیم . لطفا به ادامه مطل ...


اخبار و مقالات در فکر بکر آموزش Serialize و Deserialize اطلاعات در قالب Json به زبان C#.net

JSON مخفف عبارت «Javascript Object Notation» به معنی «نشان‌گذاری شیء جاوااسکریپت» است. و با استفاده از آن میتوان اطلاعات مورد نظر ...


اخبار و مقالات در فکر بکر حل تمرین مسائل برنامه نویسی از بخش رویدادهای ماوس (Windows Form) در سی شارپ

جهت مشاهده سوال و دانلود سورس آن لطفا به ادامه مطلب توجه نمایید. (حرکت دادن فرم با استفاده ار رویدادهای ماوس) ...


اخبار و مقالات در فکر بکر حل تمرین مسائل برنامه نویسی از بخش رویدادهای کیبورد (Windows Form) در سی شارپ

جهت مشاهده سوال و دانلود سورس آن لطفا به ادامه مطلب توجه نمایید. ...


اخبار و مقالات در فکر بکر آموزش استفاده از تابع Contains در عبارات lambda برای انواع مدلها

تابع Contains برای بررسی یک مقدار در یک مجموعه مورد استفاده قرار میگیرد اما نحوه استفاده این تابع برای مدلها نسبت به انواع اولیه ...


اخبار و مقالات در فکر بکر سورس چرخش تصاویر در C#

جهت دانلود سورس چرخش تصاویر در سی شارپ به ادامه مطلب توج نمایید ...


اخبار و مقالات در فکر بکر آموزش تحت شبکه کردن برنامه های مبتنی بر c# در sql server

در این آموزش به چگونگی استفاده از یک برنامه ویندوزی بصورت تحت شبکه توسط چندین سیستم خواهیم پرداخت. معمولا هر برنامه کاربردی دارا ...


اخبار و مقالات در فکر بکر حل تمرین مسائل برنامه نویسی از بخش کنترل ها (Windows Form) در سی شارپ

جهت مشاهده سوال و دانلود سورس آن لطفا به ادامه مطلب توجه نمایید. ...


اخبار و مقالات در فکر بکر آموزش ساخت صفحه Page Not Found (404) در Aspnet core

در این بخش به اموزش نحوه مدیریت خطا و هدایت کاربر به صفحه Page Not Found (404) در Aspnet core می پردازیم. یکی از مشکلات مهمی ک ...


پیوندها
5 (1)

الگوریتم‌های ژنتیک (با نماد اختصاری GA) تکنیک جستجویی در علم رایانه برای یافتن راه‌حل تقریبی برای بهینه‌سازی و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوریتم‌های تکامل است که از تکنیک‌های زیست‌شناسی فرگشتی مانند وراثت و جهش استفاده می‌کند. این الگوریتم برای اولین بار توسط جان هنری هالند معرفی شد.
گروه : ژنتیک
تاریخ انتشار: 1396/06/18

فکر بکر

الگوریتم‌های ژنتیک  (با نماد اختصاری GA) تکنیک جستجویی در علم رایانه برای یافتن راه‌حل تقریبی برای بهینه‌سازی و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوریتم‌های تکامل است که از تکنیک‌های زیست‌شناسی فرگشتی مانند وراثت و جهش استفاده می‌کند. این الگوریتم برای اولین بار توسط جان هنری هالند معرفی شد.

مسئله چند وزیر یک معمای شطرنجی و ریاضیاتی است که بر اساس آن باید n وزیر شطرنج در یک صفحه n×n شطرنج به‌گونه‌ای قرار داده شوند که هیچ‌یک زیر ضرب دیگری نباشند. با توجه به اینکه وزیر به‌صورت افقی، عمودی و اُریب حرکت می‌کند، باید هر وزیر را در طول، عرض و قطر متفاوتی قرار داد . 

در این آموزش با استفاده از الگوریتم ژنتیک و زبان برنامه نویسی سی شارپ به حل مساله خواهیم پرداخت.

ابتدا یک پروژه از نوع ویندوزی ایجاد میکنیم . و سپس متغیر و اشیای اولیه مساله را بصورت زیر ایجاد میکنیم.

        const int n = 8;
        Panel[,] pnl = new Panel[n, n];
        const  int p = 100;
        int[,] firstGen = new int[p, n+1];
        int[,] secondGen = new int[p, n+1];

در قطعه کد بالا متغیرهایی برای ساختن مجموعه ژنهای نسل جاری و آینده را ایجاد نمودیم .

برای تعیین مقادیر اولیه برای ژنهای نسل اول از کدهای زیر استفاده میکنیم.

  Random r = new Random();
            for(int i=0;i<p;i++)
            {
              
                for(int j=0;j<n;j++)
                {
                    firstGen[i, j] = r.Next(0, n);
                 
                }
              
            }

تابع fitness جهت ارزیابی کروموزومها و تابع sort جهت مرتب سازی آنها را بصورت زیر درج کنید.

  public void Fitness(int[,] gen)
        {
            int count = 0;
            for(int i=0;i<p;i++)
            {
                count = 0;
                for(int j=0;j<n;j++)
                {
                    for(int l=j+1;l<n;l++)
                    {
                        if(gen[i,j]==gen[i,l])
                        {
                            count++;
                        }
                        if(Math.Abs(j-l)==Math.Abs(gen[i,j]-gen[i,l]))
                        {
                            count++;
                        }
                    }
                }
                gen[i, n ] = count;
            }
        }
      
        public void Sort(int[,]gen)
        {
            int temp;
            for(int i=0;i<p-1;i++)
            {
                for(int j=i+1;j<p;j++)
                {
                    if (gen[i, n] > gen[j, n])
                    {
                        for(int l=0;l<=n;l++)
                        {
                            temp = gen[i, l];
                            gen[i, l] = gen[j, l];
                            gen[j, l] = temp;
                        }
                    }
                }
            }
        }

عمل ایجاد نسل جدید با توجه به الگوریتم ژنتیک تا زمانیکه مساله حل نشده است تکرار خواهد شد. با توجه به قطعه کدهای زیر.

   bool tf = true;
           // bool ft = false;
            int ftt = 0;
            int t = 0;
            while (tf)
            {
                t++;
                for (int i = 0; i < (p / 2); i++)
                {
                    for (int l = 0; l < n; l++)
                    {
                        secondGen[i, l] = firstGen[i, l];
                    }
                }
                for (int i = 0; i < (p / 2); i += 2)
                {
                    for (int l = 0; l <= n; l++)
                    {
                        if (l < n / 2)
                        {
                            secondGen[i + (p / 2), l] = firstGen[i, l];
                            secondGen[i + (p / 2) + 1, l] = firstGen[i + 1, l];
                        }
                        else
                        {
                            secondGen[i + (p / 2), l] = firstGen[i + 1, l];
                            secondGen[i + (p / 2) + 1, l] = firstGen[i, l];
                        }
                    }
                    secondGen[i, r.Next(n)] = r.Next(n);
                    secondGen[i + 1, r.Next(n)] = r.Next(n);
                }
              
              
                Fitness(secondGen);
                Sort(secondGen);
              
                t++;
                if(secondGen[ftt,n]==0)
                {
                    pic0.Top = 10;
                    pic0.Left = 10;
                    pic1.Top = 10;
                    pic1.Left = 10;
                    pic2.Top = 10;
                    pic2.Left = 10;
                    pic3.Top = 10;
                    pic3.Left = 10;
                    pic4.Top = 10;
                    pic4.Left = 10;
                    pic5.Top = 10;
                    pic5.Left = 10;
                    pic6.Top = 10;
                    pic6.Left = 10;
                    pic7.Top = 10;
                    pic7.Left = 10;
                    // ftt++;
                    this.Text=(t.ToString());
                    int col1 = secondGen[0, 0];
                    pnl[0, col1].Controls.Add(pic0);
                    int col2 = secondGen[0, 1];
                    pnl[1, col2].Controls.Add(pic1);
                    int col3 = secondGen[0, 2];
                    pnl[2, col3].Controls.Add(pic2);
                    int col4 = secondGen[0, 3];
                    pnl[3, col4].Controls.Add(pic3);
                    int col5 = secondGen[0, 4];
                    pnl[4, col5].Controls.Add(pic4);
                    int col6 = secondGen[0, 5];
                    pnl[5, col6].Controls.Add(pic5);
                    int col7 = secondGen[0, 6];
                    pnl[6, col7].Controls.Add(pic6);
                    int col8 = secondGen[0, 7];
                    pnl[7, col8].Controls.Add(pic7);
                    tf = false;
                    button1.Enabled = true;
                  
                }
                else
                {
                    firstGen = secondGen;
                }
            }
        

شکل خروجی برنامه :

n وزیر 

مطلب مشابهی وجود ندارد
شما اولین نفری باشید که نظر میدهید

EXVfKf

آموزش کار با کوکی ها (Cookie) در Asp.net core -------- آموزش رمزنگاری فایلها در asp.net core -------- مقایسه واحدهای اندازه گیری rem و em در css -------- آشنایی با مفهوم Generic در C#.net -------- نحوه خواندن اطلاعات از فایل appsetting.json در Asp.net Core -------- آموزش استفاده از CQRS و Mediator در Asp.Net Core -------- نحوه ایجاد image checkbox در html css -------- عملیات crud و WebApi در Asp.net 6 -------- آموزش ایجاد custom model binder در Asp.net core -------- آموزش استفاده از Log4net در Asp.net 5 -------- آموزش پیاده سازی UnitOfWork در Asp.net Core قسمت اول -------- پیاده سازی Repository Pattern بصورت Generic Class -------- وارد کردن فقط حروف فارسی و جلوگیری از ورود حروف فارسی در تکست باکس با استفاده از JQuery -------- سورس استفاده از کامپوننت Roxy File manager در Asp.net core -------- آموزش ساخت صفحه Page Not Found (404) در Aspnet core -------- آموزش ایجاد Tag Helper سفارشی در Asp.net core -------- آموزش نحوه ایجاد Model برای دیتابیس موجود در Entity Framework Core -------- آموزش نحوه Upload و Download در Asp.net core 2 -------- آموزش dependency injection در Asp.net core 2 -------- آموزش تحت شبکه کردن برنامه های مبتنی بر c# در sql server -------- آموزش استفاده از Bundler & Minifier در Asp.Net Core -------- مروری بر Identity در Asp.net core2.1 (بخش دوم) -------- مروری بر Identity در Asp.net core2.1 (بخش اول) -------- آموزش مبحث Single Responsibility Principle (SRP) از بخش اصول طراحی شی گرا (SOLID) -------- آموزش publish کردن برنامه های Asp.net core بر روی سرور iis -------- پیاده سازی مسیریابی با استفاده از الگوریتم پیمایش اول سطح یا جستجوی اول سطح (BFS) در سی شارپ -------- آشنایی با SignalR در Asp.net core -------- آموزش استفاده از کلاس SeedData در Asp.net Core -------- قالب سایت فروشگاهی -------- آموزش ایجاد برنامه نصب (setup) قسمت سوم -------- آموزش ایجاد برنامه نصب (setup) قسمت دوم -------- آموزش ایجاد برنامه نصب (setup) قسمت اول -------- آموزش عملیات CRUD با استفاده از Ragor Pages در Asp.net Core2.0 -------- آموزش ثبت تصویر توسط دوربین در برنامه نویسی اندروید به زبان c#.net -------- حل مساله n وزیر با استفاده از الگوریتم ژنتیک و بصورت گرافیکی -------- آموزش نمایش تصویر loading در سمت client جهت بارگزاری صفحات با حجم زیاد از سرور در asp.net mvc -------- آموزش اعتبار سنجی غیر همزمان(AsyncValidation) با استفاده از جاوااسکریپت در Asp.net mvc -------- آموزش ایجاد breadcrumb با استفاده از sitemap در MVC -------- آموزش ایجاد برنامه چت دوطرفه با استفاده از Socket در سی شارپ -------- آموزش ارسال و دریافت فایل در برنامه تحت شبکه با استفاده ار سوکت (Socket) --------

ابتدای صفحه