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

VB.NET-遗传算法-背包问题,vb.net,algorithm,genetic-algorithm,knapsack-problem,Vb.net,Algorithm,Genetic Algorithm,Knapsack Problem,我一直在用遗传算法研究背包问题。但是我遇到了一些困难 首先,用户生成一个存储在文本文档中的数据集。从那里我把数据读入程序 我做得很好,让程序计算健康值,选择父母,产生孩子,然后变异孩子。但出于某种原因,它只在我人口较少的时候起作用。当我的人口较少时,我的计划将持续发展,但当我的人口较多时,我的计划将非常不一致 例如:当我有一个大约10-200人的群体时,遗传算法就会完美地运行。但当我到达更高的人群(大约300+)时,我会单击run,但什么也不会发生。然后我重新启动程序,使用相同的数据集,程序成功

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

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

我做得很好,让程序计算健康值,选择父母,产生孩子,然后变异孩子。但出于某种原因,它只在我人口较少的时候起作用。当我的人口较少时,我的计划将持续发展,但当我的人口较多时,我的计划将非常不一致

例如:当我有一个大约10-200人的群体时,遗传算法就会完美地运行。但当我到达更高的人群(大约300+)时,我会单击run,但什么也不会发生。然后我重新启动程序,使用相同的数据集,程序成功执行

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


非常感谢

可能是程序内存受较高总体限制?

可能是程序内存受较高总体限制?

我想可能有三个原因

1) 代码中的错误

这应该是相对容易消除的。尝试编写一些测试,检查程序的特定部分是否正确运行(例如父选择等)。试着用你自己能在一张纸上找到的一些小例子来测试它们

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

3) 一些算法上的怪癖


这将更加难以克服。我只是在猜测,所以我可能错了,但我见过当问题规模超过某个阈值时,算法会大幅改变其行为。不太可能,但也不是不可能。在这里,你可以看到人口规模的缓慢增长是否会导致运行时间的突然变化。

我想可能有三个原因

1) 代码中的错误

这应该是相对容易消除的。尝试编写一些测试,检查程序的特定部分是否正确运行(例如父选择等)。试着用你自己能在一张纸上找到的一些小例子来测试它们

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

3) 一些算法上的怪癖


这将更加难以克服。我只是在猜测,所以我可能错了,但我见过当问题规模超过某个阈值时,算法会大幅改变其行为。不太可能,但也不是不可能。在这里,您可以看到,如果缓慢增加总体规模,您可以看到运行时间的突然变化。

我认为,看到您的代码在这一点上对我们没有帮助。首先,尝试添加一些打印调试语句来报告任何感兴趣的系统变量,或者在遇到麻烦的总体大小时逐步检查代码,看看是什么在起作用……我认为看到您的代码在这一点上对我们没有帮助。首先尝试添加一些print debug语句来报告任何有趣的系统变量,或者在遇到麻烦的总体大小时逐步检查代码,看看是什么在起作用……这就是我的想法,但我不确定是什么占用了这么多内存。我会认为,如果您有内存问题,您可能会出现某种内存不足错误,或者您的系统将运行大量内存,但速度会慢得多(可能直到遇到内存不足异常)。这就是我的想法,但我不确定是什么占用了这么多内存。我认为,如果您有内存问题,您可能会出现某种内存不足错误,或者您的系统将运行大量内存,但速度要慢得多(可能直到遇到内存不足异常)。