【发布时间】:2023-03-05 16:51:01
【问题描述】:
所以我已经编写了蚁群优化 (ACO) 元启发式的实现,并且我想编写一些单元测试。但是,我不确定测试返回“正确”答案的能力因各种设置而异的方法的最佳方法。
一个单元如何测试启发式算法?
顺便说一句,代码位于https://github.com/rhgrant10/pants。
【问题讨论】:
-
它仍然是一个确定性算法,对吧?然后给定某些输入,它应该产生相同的输出。在给定可预测输入的情况下测试某些结果。
-
我想我无法摆脱我正在测试默认设置而不是实际的
solve方法的感觉。 -
什么是正确答案?我对算法不熟悉。
-
嗯,它目前正在解决旅行商问题。我实际上刚刚编写了一些实际上很好地满足我的目的的测试数据。我最终使用了一个圆圈中均匀分布的点。我可以简单地计算周长。该算法运行良好,可以在前 5 次迭代中以合理(和默认)设置找到它,所以我认为这在很大程度上解决了我的问题。
-
@BrianKelly 尽管 ACO(和其他元启发式算法)可以重复实现,但它不是确定性的。由于可重复性,相同代码的 2 次运行会给出相同的结果。由于不确定性,随着算法的改进,结果会有所不同(平均而言会有所改进,但不一定适用于每个数据集)。
标签: python unit-testing heuristics traveling-salesman