评估 DQN、车辆路径问题 (VRP)

问题描述 投票:0回答:1

我正在运行这个 DQN 算法,该算法试图最小化车辆行驶的总距离 (VRP)。 在训练中,正如您在图像中看到的那样,一切正常。损失在减少,平均长度在减少,而奖励在增加。

然而,在评估阶段,模型的行为却出乎意料。我正在运行 100 次评估迭代。在第一次运行中,结果很好。但是,接下来的评估有时会给我很好的结果,有时会带来非常糟糕的结果。在良好的结果中,我得到最小总距离(最小长度)值

4
,但有时评估会返回最小值
13
,即使评估是在相同的训练模型上完成的。

所以我的问题是这是正常行为吗?有没有办法改善这些评估结果?

附言:

  • 训练的集数是4000(我也尝试过10000,结果是一样的)
  • 数据是坐标的随机数组和坐标之间的欧氏距离的邻接矩阵。对于每个新剧集,都有一个新的随机坐标和距离数组。
  • 评估也是如此。我进行了 100 次评估迭代,并为每次迭代提供新的随机数据
  • 在评估中我没有使用任何惩罚或奖励。我只在训练中使用它们。 我在这个项目中使用pytorch

以下是评估输出的示例: 找到的最短平均长度:5.406301895156503(这是训练的值) 现在这里是评估中的 2 个解决方案的示例

解决方案1:

[0, 1, 9, 4, 2, 3, 5, 0, 6, 7, 8, 10]
length 4.955087028443813

解决方案2:

[0, 4, 9, 3, 13, 0, 7, 13, 0, 10, 0, 6, 11, 5, 12, 1, 12, 0, 2, 12, 0, 8, 0]
length 10.15813521668315

前 100 次评估与解决方案 1 类似,我重新运行另外 100 次评估,得到与解决方案 2 类似的结果。

deep-learning pytorch training-data vehicle-routing dqn
1个回答
0
投票

添加源代码肯定会有帮助。可能有几个原因,

  1. 你是否洗牌训练数据
  2. 奖励函数是如何设计的?它是对偶间隙的函数吗?
  3. cuda
    是否配置为确定性
  4. 在评估步骤之前,您是否将模型设置为
    eval
    模式
  5. 所有评估迭代中意外行为结果的密度是多少?也许模型只需要更多更长的剧集,或者您的模型过度拟合。
  6. 训练数据和测试数据是如何分割的? VRP 或 TSP 实例的拓扑复杂性可能会产生影响。
© www.soinside.com 2019 - 2024. All rights reserved.