问题描述
我正在检查用于路线优化的交叉技术,并且已经经历了下面提到的一些 thgem
1 - single point crossover
2 - two point crossover
3 - uniform crossover
在单点交叉中,我们通常从每个父节点交换一个变量并得到子节点。与两点交叉相同,我们交换来自两个父母的两个变量。
在我的问题中,父母的长度不一样,例如 p1: ['a','b','c'] and p2:['v','n','m','h','k']
。由于我们父母的长度不一样,所以我可以使用基于偶数和奇数技术的单点交叉。
现在我想使用带遮罩的均匀交叉,发现它很难用于不同的长度。 有什么建议吗?
解决方法
后代的长度是多少,如果它们与父母的长度相同,那么您可以按照正常的统一顺序进行。例如
IWebDriver driver;
string chromeDriverPath;
void SetChromeDriverPath()
{
OperatingSystem os = Environment.OSVersion;
string osName = os.Platform.ToString().ToLower();
if (osName == "win32nt")
chromeDriverPath = Environment.CurrentDirectory.ToString() + "\\tools\\selenium\\chrome\\windows\\";
if (osName == "unix")
chromeDriverPath = Environment.CurrentDirectory.ToString() + "\\tools\\selenium\\chrome\\linux\\";
if (osName == "macosx")
chromeDriverPath = Environment.CurrentDirectory.ToString() + "\\tools\\selenium\\chrome\\mac\\";
}
public IWebDriver GetChromeDriver()
{
ChromeOptions options = new ChromeOptions();
options.AddArgument("use-fake-ui-for-media-stream");
options.AddArgument("--start-maximized");
SetChromeDriverPath();
driver = new ChromeDriver(options);
return driver;
}
您甚至可以随机放置较小的位置,例如:
[a,b,c] = p1
[v,n,m,h,k] = p2
[0,1,1] = mask (this should be random)
[v,c] = o1
[a,k] = o2
所以后代会
[-,-,v,c]
[a,k]