日期:2014-05-17  浏览次数:20957 次

有一个C#遗传算法程序求y=x*x在[0,31]范围内的极值。有的地方看不太懂,请大神解读,最好详细一点。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//遗传算法求Y=X*X 在区间[0-31]的最大值
namespace 遗传算法
{
    class Program
    {
        //定义样本数
        static int N = 10;
        //定义DNA位数
        static int M = 5;
        //定义样本DNA数组
        static int[,] DNA = new int[N,M];//定义多维数组
        //定义样本表现值
        static int[] show = new int[N];
        //定义样本存活累计概率0-1
        static double[] alive = new double[N];
        //定义淘汰阈值
        static int sigma = 3;
        //定义繁衍代数
        static int T = 100;
        //定义交换基因次数
        static int C = 1;


        //将样本10进制求2进制 j表示位数
        static void tentotwo()
        {
            for (int i = 0; i < N;i++ )
            {
                int j = 0;
                int tempshow = show[i];
                while (tempshow != 0)
                {                  
                    DNA[i,j] =  tempshow% 2;
                    tempshow /= 2;
                    j++;
                }
            }
        }

        //将样本2进制转10进制
        static void twototen()
        {
            for (int i = 0; i < N; i++)
            {
                int&