Jes*_*ose 2 language-agnostic algorithm artificial-intelligence dynamic-programming genetic-algorithm
是的,在SO上有很多这样的问题.我看到遗传算法是最常见的答案.
但是,我担心GA的这些特征
我希望该程序能够被用户轻松推向相互冲突的标准和不可能的解决方案 .
因此,我想要一种方法
有100000个尽可能详尽的时间表.
我四处搜索,发现像模拟退火这样的元启发式算法是一个很好的选择.那么动态编程算法呢?
对于这样的数据集,蛮力方法是否合适?
什么是符合标准的好算法?
对于小输入,只有100,000个可能性 - 我会选择一个简单的蛮力解决方案:只需检查所有可能性,并选择最好的.对于现代机器,在大小为100,000的输入上运行评分函数在计算上并不困难,并且很可能只需几秒钟.
GA和其他AI算法,通常用于很多较大的输入[千亿和更多的可能性],所以他们可能不会在你的情况最好的解决方案.
与任何其他解决方案不同,强力解决方案将确保您获得最佳解决方案,并在耗尽所有可能的解决方案时终止.
(*)注意:你可以修改GA和最陡峭的登山攀爬,以克服你提到的第二个问题[逃避局部最大值],当解决方案没有改善k步时强制执行随机重启,但是再次 - 你不知道有多接近你是每个点的最佳解决方案.