小编Joe*_*Doe的帖子

为什么切换位后NaN是两倍?

我正在编写一种遗传算法,用于查找具有给定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)

c# genetic-algorithm

0
推荐指数
1
解决办法
57
查看次数

标签 统计

c# ×1

genetic-algorithm ×1