0

我一直在使用遗传算法研究背包问题。但是我遇到了一些困难......

首先,用户生成存储在文本文档中的数据集。从那里我将数据读入程序。

我很好地让程序计算适应度值,选择父母,生孩子,然后变异孩子。但由于某种原因,它仅在我人口较少时才有效。当我的人口较少时,我的程序会不断发展,但当我的人口较多时,我的程序就会非常不一致。

例如:当我的人口约为 10-200 时,遗传算法运行完美。但是当我到达更多的人口(大约 300+)时,我会点击运行,但什么也没有发生。然后我重新启动程序并使用相同的数据集,程序成功执行。

我不确定我的代码的哪一部分导致了问题,所以如果您需要一段示例代码,请告诉我您想要哪一部分代码(父选择、加载数据集等)。

多谢!

4

2 回答 2

2

我想这可能有三个原因。

1)代码中的错误

这应该是相对简单的消除。尝试编写一些测试来检查程序的特定部分是否正确运行(例如父选择等)。试着用一些你可以自己在纸上弄清楚的小例子来测试它们。

2)内存不足问题 - btreat 提到的

3)一些算法怪癖

这将更加难以战斗。我只是在猜测,所以我可能是错的,但我已经看到当问题大小超过某个阈值时算法会彻底改变它们的行为。不太可能,但也不是不可能。在这里,您可以看到如果缓慢增加人口规模,您会看到运行时间的突然变化。

于 2010-07-05T20:23:26.023 回答
1

也许程序内存受限于较高的人口?

于 2010-07-05T20:12:00.720 回答