路线优化的最佳交叉

问题描述

我正在检查用于路线优化的交叉技术,并且已经经历了下面提到的一些 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]