【问题标题】:R genealg package rbga.bin evaluation functionR genealg 包 rbga.bin 评估函数
【发布时间】:2015-04-22 18:47:03
【问题描述】:

我正在尝试使用genealg 包中的rbga.bin 来解决TSP(旅行推销员问题)。我有存储城市之间距离的矩阵 像这样:

    [,1] [,2] [,3] [,4]
[1,]    0    2   10    4
[2,]    0    0   12   12
[3,]    0    0    0    5
[4,]    0    0    0    0

但我无法编写适当的评估函数(尽管我已经在文档和网络上看到了一些示例)。我知道染色体将作为参数传递给评估函数,但我不知道要执行哪些操作才能返回正确的值。

【问题讨论】:

    标签: r mathematical-optimization genetic-algorithm traveling-salesman


    【解决方案1】:

    基本上,您是在询问如何在给定路径上的端点和距离矩阵的情况下评估路径的长度(对于路径 1-3-2-4,您需要 d13+d32+d24+d41)。您可以使用矩阵索引和sum 函数来做到这一点。让我们考虑您的距离矩阵和解决方案 1-3-2-4(由于 TSP 通常以对称形式构成,因此我将其设为对称):

    (d <- matrix(c(0, 2, 10, 4, 2, 0, 12, 12, 10, 12, 0, 5, 4, 12, 5, 0), nrow=4))
    #      [,1] [,2] [,3] [,4]
    # [1,]    0    2   10    4
    # [2,]    2    0   12   12
    # [3,]   10   12    0    5
    # [4,]    4   12    5    0
    sln <- c(1, 3, 2, 4)
    

    现在您可以从解决方案中获取矩阵索引并拉出距离,将它们相加以进行最终评估:

    (idx <- cbind(sln, c(tail(sln, -1), sln[1])))
    # [1,]   1 3
    # [2,]   3 2
    # [3,]   2 4
    # [4,]   4 1
    d[idx]
    # [1] 10 12 12  4
    sum(d[idx])
    # [1] 38
    

    【讨论】:

      猜你喜欢
      • 2023-01-30
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多