如何在GA(遗传算法)中更快地获得elit chromosoms?

时间:2015-12-30 04:10:09

标签: sorting c#-4.0 genetic-algorithm

我正在为GA旅行推销员问题工作,我正在使用精英选择。但要做到这一点,我需要通过chromosom的健身值对人口排序进行排序。这个过程正在减慢我的应用程序。因为当新的子项添加到填充中时,线程会迭代地调用此过程。所以我想用另一种方法让一些染色体具有更高的适应值。我怎样才能做到这一点?

我获得精英的代码:

        Tour[] ElitChromosoms()
        {
            Array.Sort(population);

            Tour[] elits = new Tour[population.Length / 2];

            Array.Copy(population, elits, elits.Length);

            return elits;
        }

2 个答案:

答案 0 :(得分:1)

某些选择技巧需要排序,但还有其他技术不需要排序。您可以通过使用它们来提高程序的效率。你可以使用例如q-tournament。

答案 1 :(得分:0)

这不是GA问题。

然而,您(我认为)的问题是您的新人口被放入未列出的列表或数组中。如果您将它们添加到排序列表中,那么您只需要获得精英的顶部/底部x。

就插入时间而言,这应该更加昂贵,但仍然比从头开始排序更快。