当前使用的算法是遗传算法使用,变异和有序交叉。我们通过删除软件仓库(端点)然后执行交叉并在之后添加它们来修改原始有序交叉算法。父选择算法使用轮盘选择
善良 = 1 / time_to_travel_route。
如果没有Crossover,算法会产生良好的结果(仅使用突变),但添加它会显着恶化它们。以下是指向具有类似问题的帖子的链接:Why does adding Crossover to my Genetic Algorithm gives me worse results?
根据帖子中的建议,善意改为
善良 = 1 /(time_to_travel_route)^ n,具有不同的n
然而,这仍然没有产生有利的结果。
人口规模:尝试从100到10,000 停止条件:尝试从10代到1000代 适应度算法:尝试了1 /(time_to_travel_route)^ n,其中n从1变为大数
变异算法:算法使用2-opt。 所有后代都发生了变异。突变算法尝试不同的突变,直到找到更好的解决方案。但是,如果它找到了更糟糕的解决方案,它可能会以概率p返回更差的人口。这样做是为了增加一些随机性并逃避局部最小值。我们将p从5%变化到20%。