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

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


مطالب تصادفی
اخبار و مقالات در فکر بکر سورس استفاده از کامپوننت Roxy File manager در Asp.net core

در این سورس شما با نحوه استفاده از کامپوننتهای ckeditor و Roxy File manager در Asp.net core اشنا خواهید شد. جهت دانلود بر روی ادا ...


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

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


اخبار و مقالات در فکر بکر آموزش ایجاد برنامه چت دوطرفه با استفاده از Socket در سی شارپ

در این برنامه با استفاده از Socket و پروتکل UDP دو برنامه جهت ارسال و دریافت پیام بصورت دوطرفه ایجاد میکنیم. لطفا به ادامه مطلب ت ...


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

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


اخبار و مقالات در فکر بکر آموزش ایجاد custom model binder در Asp.net core

در این اموزش قصد داریم مروری بر نحوه ایجاد اتصال داده ای سفارشی جهت درخواست بر روی مدل موجود در پروژه داشته باشیم. ...


اخبار و مقالات در فکر بکر استفاده از AutoMapper در C #

با سلام – در این مقاله قصد دارم کلاس کاربردی AutoMapper را به شما کاربران فکر بکر معرفی کنم. ...


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

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


اخبار و مقالات در فکر بکر آشنایی با SignalR در Asp.net core

در این آموزش به ساخت یک برنامه real-time با استفاده از SignalR در Asp.net core 2.1 خواهیم پرداخت. ...


اخبار و مقالات در فکر بکر آموزش مبحث Single Responsibility Principle (SRP) از بخش اصول طراحی شی گرا (SOLID)

در این اموزش هدف ایجاد کلاس و اشیاء با کمترین وابستگی جهت بهینه کردن تست و آسان نمودن توسعه نرم افزار می باشد. لذا برنامه نویس با ...


اخبار و مقالات در فکر بکر طراحی سایت با HTML 6

ورژن 6HTML نسخه ی توسعه یافته HTML ها است که دارای NameSpaces با ساختار XML می باشد. از ویژگی های مهم NameSpaces این است که با ا ...


اخبار و مقالات در فکر بکر قالب پنل ادمین

جهت دانلود قالب پنل مدیریتی به ادامه مطلب مراجعه نمایید ...


اخبار و مقالات در فکر بکر پیاده سازی سیستم احراز هویت کاربران در Asp.net MVC (بخش چهارم)

در این آموزش به پیاده سازی سیستم لاگین کاربران در Asp.net mvc خواهیم پرداخت. نکته ای که در اینجا حائز اهمیت است بدست آوردن نقش ...


اخبار و مقالات در فکر بکر آموزش ساخت صفحه 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 وزیر 

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

ODVAEA

آموزش کار با کوکی ها (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) --------

ابتدای صفحه