【发布时间】:2017-02-10 21:13:56
【问题描述】:
考虑这个问题:有一个包含 1000 个实数正数的向量,找到 7 个部分的 1000 个元素的最佳划分,使得部分的总和具有近似(接近)值。
您将如何制作染色体表示、运算符(突变、交叉)、适应度函数、选择..以便您以最有效和优化的方式解决问题?
我的想法是给每个数字一个索引(例如,最小的数字有索引 1,最高的有索引 1000)......但我认为这不是最有效的方式吗?欢迎任何建议!
【问题讨论】:
考虑这个问题:有一个包含 1000 个实数正数的向量,找到 7 个部分的 1000 个元素的最佳划分,使得部分的总和具有近似(接近)值。
您将如何制作染色体表示、运算符(突变、交叉)、适应度函数、选择..以便您以最有效和优化的方式解决问题?
我的想法是给每个数字一个索引(例如,最小的数字有索引 1,最高的有索引 1000)......但我认为这不是最有效的方式吗?欢迎任何建议!
【问题讨论】:
由于这是一个分区问题,我认为您需要将整个集合放在一个染色体中。假设您有一个长度为 1000 的数组,其值可以从 1 到 7。适应度函数可以计算每个分区之和的差异(越少越好)。交叉可以用单点或双点完成。然后突变可以将单个基因从其值随机更改为随机值,例如位置 102 为 4,然后突变为 1。使用此解决方案,您可以保证每个染色体都是有效的解决方案,尽管可能是一个坏的解决方案,所以您不要不必在每次迭代后检查不遵循问题规则的染色体(如果您选择每个分区有一个染色体,则会遇到问题)。像往常一样,交叉标准和突变的可能性需要在达到最佳性能之前进行探索和调整。
【讨论】: