VB.NET - 遗传算法 - 背包问题

时间:2010-07-05 20:07:22

标签: vb.net algorithm genetic-algorithm knapsack-problem

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

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

我很好地让程序计算健身值,选择父母,生产孩子,然后改变孩子。但由于某些原因,只有在人口较少时才有效。当我的人口较少时,我的计划将不断发展,但当我的人口较多时,我的计划会非常不一致。

例如:当我的人口约为10-200时,遗传算法运行完美无缺。但是当我到达更高的人口(大约300+)时,我会点击运行并且没有任何反应。然后我重新启动程序并使用相同的精确数据集,程序成功执行。

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

非常感谢!

2 个答案:

答案 0 :(得分:2)

我想可能有三个原因。

1)代码中的错误

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

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

3)一些算法怪癖

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

答案 1 :(得分:1)

也许程序记忆受到较高人口的限制?