C#正确值仅在调试时显示

时间:2019-02-03 22:48:00

标签: c# algorithm genetic-algorithm genetic

我在C#(.NET)中有一个实现遗传算法的应用程序。

它有一个带有“个人”数组的“人口”类(另一个类),也有一个“基因”对象数组。问题是,在打印Population数组的内容时,除非我调试Individual类构造函数,否则它不会显示正确的值。如果不进行调试,则将其数组的全部大小填充相同的第一个“个人”对象。除了放置断点外,我什么也没做,它显示正确的值。

人口构造函数:

        public Population(int populationSize, bool initial,int noOfReq)
    {
        population = new Individual[populationSize];
        if (initial)
        {
            for (int i = 0; i < populationSize; i++)
            {
                Individual ind = new Individual(noOfReq,true);
                population[i] = ind;
            }
        }
    }

个体构造器

public Individual(int noOfReq, bool initial)
    {
        req = new Gene[noOfReq];
        if (initial)
        { 
        Random rand = new Random();

            //Randomly assign the Req to a value between 0 and 2
            for (int gene = 0; gene < noOfReq; gene++)
        {
            Gene newGene = new Gene();
            req[gene] = newGene;
            req[gene].name = "R" + gene;
            req[gene].cost = rand.Next(1, 10);
            int r = rand.Next(3);
            req[gene].value= r;
        }//if initial
    }

如何解决这个问题?

注意:

  • 在没有断点的情况下运行应用程序->人口数组的内容错误。
  • 在各个构造函数上放置断点,然后运行应用程序->显示正确的值。
  • 我正在使用Random rand = new Random(); int r = rand.Next(3);在个人数组中的每个元素处填充Gene对象。

0 个答案:

没有答案