我一直在使用遗传算法研究背包问题。但是我遇到了一些困难......
首先,用户生成一个存储在文本文档中的数据集。从那里我将数据读入程序。
我很好地让程序计算健身值,选择父母,生产孩子,然后改变孩子。但由于某些原因,只有在人口较少时才有效。当我的人口较少时,我的计划将不断发展,但当我的人口较多时,我的计划会非常不一致。
例如:当我的人口约为10-200时,遗传算法运行完美无缺。但是当我到达更高的人口(大约300+)时,我会点击运行并且没有任何反应。然后我重新启动程序并使用相同的精确数据集,程序成功执行。
我不确定我的代码的哪一部分导致了问题,所以如果您需要一段示例代码,请告诉我您想要哪部分代码(父选择,加载数据集等)。
非常感谢!
答案 0 :(得分:2)
我想可能有三个原因。
1)代码中的错误
这应该是相对简单的消除。尝试编写一些测试,检查程序的特定部分是否正确运行(例如,父选择等)。尝试对照一些你可以在纸上自己弄清楚的小例子来测试它们。
2)内存不足问题 - btreat提到
3)一些算法怪癖
这将更难打。我只是在猜测,所以我可能错了,但是当问题大小超过某个阈值时,我已经看到了大大改变其行为的算法。不太可能,但也不是不可能。在这里你可以看到,如果慢慢增加人口规模,你可以看到运行时间的突然变化。
答案 1 :(得分:1)
也许程序记忆受到较高人口的限制?