我应该如何对启发式算法进行单元测试?

时间:2014-02-14 02:20:01

标签: python unit-testing heuristics traveling-salesman

所以我编写了蚁群优化(ACO)元启发式的实现,我想编写一些单元测试。但是,我不确定测试一种方法的最佳方法,该方法根据各种设置返回“正确”答案的能力会有所不同。

一个单元如何测试启发式算法?

顺便说一下,代码仍然在https://github.com/rhgrant10/pants

1 个答案:

答案 0 :(得分:1)

我用this integration test class测试我的TSP实现,它执行了2次测试:

  • 断言它在600秒内达到一定分数。我在我的机器上在10秒内获得了这个分数,因此长时间超时仅适用于非常慢的jenkins奴隶。如果它没有在那个时间限制内达到那个分数,它可能永远不会达到它。这个测试的重点是没有抛出异常(=冒烟测试),至少它会在合理的时间内提高分数。所以它比没有测试更好:)。
  • 将解算器置于assertionMode(FAST_ASSERT)中并断言它在600秒内达到一定的,更容易的分数。在assertionMode中,Solver可以在其最深的循环中进行健全性检查(性能成本)。这是为了清除增量分数计算中的错误(=增量分数计算)等。

除此之外,我还有单元测试来测试算法的特定组件,以检查它们是否按预期运行,例如this unit test class