考虑到这个问题:拥有1000个实数正数的向量,找到7个部分中1000个元素的极值分区,这样部分之和就具有近似(接近)值。
你将如何制作染色体表示,操作符(突变,交叉),适应度函数,选择......这样你才能在最有效的方法中解决问题。优化方式?
我的想法是给每个数字一个索引(最低数字有索引1,最高有索引1000)...但我不认为这是最有效的方法?欢迎任何建议!
答案 0 :(得分:0)
由于它的分区问题,我认为你需要将整个集合放在一条染色体上。假设您有一个长度为1000的数组,其值可以是1到7.健身函数可以计算每个分区之和的差异(越小越好)。可以使用单点或双点进行交叉。然后突变可以随机将个体基因从其值变为随机值,比如位置102为4,然后变异为1.使用此解决方案,您可以保证每个染色体都是有效的解决方案,尽管可能是坏的,所以你不要# 39;必须在每次迭代后检查不遵循问题规则的染色体(如果您选择每个分区有一条染色体,则会出现问题)。像往常一样,交叉的标准和突变的可能性需要在获得最佳性能之前进行探索和调整。