我有大量的加权节点,其边缘将节点群集连接在一起。该图遵循典型的小世界布局。
我希望找到一种路径查找算法,该算法在处理器能力上并不昂贵,可以沿着最佳路径找到一条路径,在该路径上,节点的权重最高,最快的路径并不是最重要的因素。该算法还考虑了承载和流量重新路由。
(旁注:可以在此处使用神经网络吗?)
谢谢
我在看 ACO 。对于这种问题,有没有什么比ACO更好的了?
没错, A * 算法可以找到成本最低或最快的路由,而无需进行负载平衡。
可以说最快或最短路径不是最重要的路径,更重要的是遵循加权节点具有特定值的路径。1号
2号 如果使用A ,该路由上的流量会过载,那么该路径突然变得多余。因此,与A 一样酷,它没有ACO的某些功能,即固有的负载平衡。
-除非我误解了A *
那么,什么比ACO更好呢?
确实看起来像是在ACO和A 之间进行的一场秀,关于A 的讨论非常积极,我当然会更深入地研究它。
首先是对大卫的回应;我可以在后台运行ACO仿真,并提出最佳路径,所以是的,虽然有初始启动成本,但幸运的是,启动并不是必需的。因此,我可以承受多次运行仿真的费用。一个真正的麻烦是找到连接的源节点和目标节点。看来A 可以很容易地做到这一点。现在,当该网络变得庞大如数百万个节点时,会发生什么。A 是否可以轻松扩展?
我将进一步研究A *。但是我有一个问题要问你!
A *是否可以像Antnet(ACO)一样进行扩展?
Dijkstra的算法及其优化的变体A *通过图形以最小的成本找到了路径。重要的事情是:a)正确定义图形,以及b)定义适当的成本函数。
面对不断变化的成本函数,Dijksta需要重新计算解决方案。
对于负载平衡,我将扩展Dikstra不仅可以计算最佳路径,还可以使用某种泛洪行为来创建一组可能的路径(按成本排序)以查找替代路径。只有有关特定问题和成本函数的知识才能回答这是否可行以及如何运作。
另一方面,通过在成本函数更改之后/期间继续迭代,蚁群优化似乎在适应变化的成本函数时更加灵活。
这在很大程度上取决于您的问题领域。如果您具有良好的启发性(请参阅A *文章的“ 复杂性”部分)并且很少更改成本,则A 的多项式运行时可能会支持重复进行重新计算。另一方面,在收敛到近似解之前,ACO必须反复进行迭代。如果成本变化非常频繁地发生,则以恒定速率继续迭代可能比更新A 解更有效,因为信息保留在算法状态内。ACO不承诺 的 最佳解决方案,但与 可能 在融合为“好的”解决方案之前,具有较高的启动成本。同样,这很大程度上取决于您的特定领域,图形和成本函数以及您对最优性的要求。