有一个C#遗传算法程序求y=x*x在[0,31]范围内的极值。有的地方看不太懂,请大神解读,最好详细1点
有一个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 sum = 0;
for(int j=0;j<M;j++)
{
sum += DNA[i,j]*(int)System.Math.Pow(2,j);
}
show[i] = sum;
}
}
//适应度函数
static int f(int x)
{
int result = -x * x + 31*x;
return (result);
}
//求累计存活概率函数
static void icanlive()
{
int sum = 0;
double alivesum = 0;
for (int i = 0; i < N; i++)
{
sum += f(show[i]);
}
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 sum = 0;
for(int j=0;j<M;j++)
{
sum += DNA[i,j]*(int)System.Math.Pow(2,j);
}
show[i] = sum;
}
}
//适应度函数
static int f(int x)
{
int result = -x * x + 31*x;
return (result);
}
//求累计存活概率函数
static void icanlive()
{
int sum = 0;
double alivesum = 0;
for (int i = 0; i < N; i++)
{
sum += f(show[i]);
}