优化方法(元启发式、基于图形的、MILP)
Optimization Approaches (Meta-heuristic, Graph-based, MILP)
我对算法还很陌生,现在正在研究一些路线优化问题,并看到了一些关于以下方法的论文:
元启发式方法
基于种群(遗传算法、蚁群优化等)
基于单一解决方案(迭代本地搜索)
基于图的方法
例如 A* 算法
混合整数线性规划方法
我对这些方法之间的关系有点困惑,我们是使用例如 GA 来解决 MILP,还是它们都是单独的方法?
提前致谢!!
Mixed-Integer 线性规划 与其说是算法,不如说是class 问题。它包含所有归结为最大化线性且具有整数值的成本函数的问题。这些假设使得创建算法来解决这个非常具体的问题变得更加容易,我认为这就是你所指的 "MILP Approach"。不过,实施可能会有很大差异,因为 problem-specific 优化可能适用于良好的通用解决方案。
Graph-based更难定义,因为所有涉及图论的算法都没有明确表示它们使用的是图,而是正确性或最优性的证明可能需要在图表上使用一些 non-trivial 定理。
Meta-heuristics 是 class 旨在扩展启发式算法的算法。启发式是解决问题的 "practical" 方法,它不能保证是最优的,但足以实现近期目标。 Meta-heuristics 将抽象级别提高一个级别:不是直接对问题进行推理,而是为问题构建解决方案(即 GA 中的个体)并对其进行推理(即在 GA 中进化你的人口)。
路由优化可能属于这三个类别中的任何一个,您需要更精确才能正确回答,但这里有几个例子:
流量最大化问题:线性规划。
例如:你的网络的每条路线最多可以被 k 辆卡车使用,你想在尽可能短的时间内将沙子从 A 点运到 B 点,你可以在每条路径上发送多少辆卡车?一条路径可能会分裂成两条更受限制的路径,或者缩小并让你的卡车卡在一条路径的中间,甚至合并等等。(注意它仍然是graph-based)
最短路径,最长路径,路径数:纯Graph-based.
Depth-first 和 Breadth-first 搜索(我假设您已经知道)可以解决大量 graph-based 问题,而无需任何更复杂的方法。例如,A* 是 "only" DFS 的扩展版本。通过路线优化,您很可能将路线网络表示为图形,因此这可能是一个很好的起点。
旅行商问题:Meta-heuristics
TSP 基本上是找到一条访问所有城市恰好一次的路径。它比看起来要困难得多(NP-complete,如果它响起的话)。 Meta-heuristics 在这里非常有效,因为没有有效的解决方案。 遗传算法、Ant-colony优化和模拟退火都给出了很好的结果,如果适当的话实施的。正如您引用的那样,迭代局部搜索可能用于例如每个全局优化轮次之间的局部 individual-based 优化,从而产生更好的结果。
很抱歉,我的三个示例属于 graph-related 个问题,但它也表明图表可以帮助解决数量惊人的问题,即使术语 graph 没有在问题陈述中明确引用。
这三个也恰好是路由优化问题,这完全取决于您要寻找的优化。您的问题可能最好使用这三种方法中的一种来解决,或者结合两种方法(例如 Meta-heuristics 的局部 LP 优化)。
我对算法还很陌生,现在正在研究一些路线优化问题,并看到了一些关于以下方法的论文:
元启发式方法 基于种群(遗传算法、蚁群优化等) 基于单一解决方案(迭代本地搜索)
基于图的方法 例如 A* 算法
混合整数线性规划方法
我对这些方法之间的关系有点困惑,我们是使用例如 GA 来解决 MILP,还是它们都是单独的方法?
提前致谢!!
Mixed-Integer 线性规划 与其说是算法,不如说是class 问题。它包含所有归结为最大化线性且具有整数值的成本函数的问题。这些假设使得创建算法来解决这个非常具体的问题变得更加容易,我认为这就是你所指的 "MILP Approach"。不过,实施可能会有很大差异,因为 problem-specific 优化可能适用于良好的通用解决方案。
Graph-based更难定义,因为所有涉及图论的算法都没有明确表示它们使用的是图,而是正确性或最优性的证明可能需要在图表上使用一些 non-trivial 定理。
Meta-heuristics 是 class 旨在扩展启发式算法的算法。启发式是解决问题的 "practical" 方法,它不能保证是最优的,但足以实现近期目标。 Meta-heuristics 将抽象级别提高一个级别:不是直接对问题进行推理,而是为问题构建解决方案(即 GA 中的个体)并对其进行推理(即在 GA 中进化你的人口)。
路由优化可能属于这三个类别中的任何一个,您需要更精确才能正确回答,但这里有几个例子:
流量最大化问题:线性规划。
例如:你的网络的每条路线最多可以被 k 辆卡车使用,你想在尽可能短的时间内将沙子从 A 点运到 B 点,你可以在每条路径上发送多少辆卡车?一条路径可能会分裂成两条更受限制的路径,或者缩小并让你的卡车卡在一条路径的中间,甚至合并等等。(注意它仍然是graph-based)
最短路径,最长路径,路径数:纯Graph-based.
Depth-first 和 Breadth-first 搜索(我假设您已经知道)可以解决大量 graph-based 问题,而无需任何更复杂的方法。例如,A* 是 "only" DFS 的扩展版本。通过路线优化,您很可能将路线网络表示为图形,因此这可能是一个很好的起点。
旅行商问题:Meta-heuristics
TSP 基本上是找到一条访问所有城市恰好一次的路径。它比看起来要困难得多(NP-complete,如果它响起的话)。 Meta-heuristics 在这里非常有效,因为没有有效的解决方案。 遗传算法、Ant-colony优化和模拟退火都给出了很好的结果,如果适当的话实施的。正如您引用的那样,迭代局部搜索可能用于例如每个全局优化轮次之间的局部 individual-based 优化,从而产生更好的结果。
很抱歉,我的三个示例属于 graph-related 个问题,但它也表明图表可以帮助解决数量惊人的问题,即使术语 graph 没有在问题陈述中明确引用。
这三个也恰好是路由优化问题,这完全取决于您要寻找的优化。您的问题可能最好使用这三种方法中的一种来解决,或者结合两种方法(例如 Meta-heuristics 的局部 LP 优化)。