交叉算子排列 [英] Crossover operator for permutations

查看:242
本文介绍了交叉算子排列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图解决交叉的问题,在我的排列遗传算法。 比方说,我有20整数2排列。我想,交叉他们得到两个孩子。父母有相同的整数内,但顺序不同。

i'm trying to solve the problem of crossover in genetic algorithm on my permutations. Let's say I have two permutations of 20 integers. I want to crossover them to get two children. Parents have the same integers inside, but the order is different.

例如:

Parent1: 
 5 12 60 50 42 21 530 999 112 234 15 152 601 750 442 221 30 969 113 134
Parent2: 
 12 750 42 113 530 112 5 23415 60 152 601 999 442 221 50 30 969  134 21

让它是这样 - 我怎么能得到这两个孩子?

Let it be that way - how can I get children of these two?

推荐答案

您要找的是<一个href="http://en.wikipedia.org/wiki/Crossover_%28genetic_algorithm%29#Crossover_for_Ordered_Chromosomes">ordered交叉。目前在旅行商问题解释这里

What you are looking for is ordered crossover. There is an explanation for the Travelling Salesman Problem here.

下面是<一href="https://github.com/dwdyer/watchmaker/blob/master/framework/src/java/main/org/uncommons/watchmaker/framework/operators/ListOrderCrossover.java">some Java的code 实现部分映射交叉(PMX)的变体。

Here is some Java code that implements the partially mapped crossover (PMX) variant.

这篇关于交叉算子排列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆