我正在编写一种遗传算法,用于查找具有给定X,Y点的系数。此页面上描述了操作原理-https://towardsdatascience.com/introduction-to-genetic-algorithms-includes-example-code-e396e98d8bf3
我有问题,因为有时在突变或交叉后,我的双精度值是NaN。
我试过使用byte []和BitArray来执行此操作,但是在两种方法中我都得到相同的结果。
转换双<-> BitArray:
public void ConvertByteArrayToCoefficients(BitArray array)
{
Coefficients.Clear(); //Coefficients are stored in List<double>
for (int i = 0; i < _degree + 1; i++)
{
var arr = array.ToByteArray();
double value = BitConverter.ToDouble(array.ToByteArray(), i * sizeof(double));
Coefficients.Add(value);
}
}
public BitArray GetAllCoefficientsInBytes()
{
BitArray bytes = new BitArray(0);
for (int i = 0; i < Coefficients.Count; i++) //append is extension method
bytes = bytes.Append(new BitArray(BitConverter.GetBytes(Coefficients[i])));
return bytes;
}
Run Code Online (Sandbox Code Playgroud)
突变:
public void Mutate(int percentageChance)
{
BitArray …Run Code Online (Sandbox Code Playgroud)