Artificial intelligence 模拟退火算法和遗传算法有什么区别?

Artificial intelligence 模拟退火算法和遗传算法有什么区别?,artificial-intelligence,genetic-algorithm,simulated-annealing,constraint-satisfaction,Artificial Intelligence,Genetic Algorithm,Simulated Annealing,Constraint Satisfaction,在性能和用例方面,模拟退火(带bean搜索)和遗传算法之间的相关差异是什么 我知道SA可以被认为是GA,其中种群规模只有一个,但我不知道两者之间的关键区别 此外,我正在尝试思考一种情况,即SA将优于GA或GA将优于SA。只要一个简单的例子就能帮助我理解就足够了。我还远不是这些算法的专家,但我会尽力帮助 我认为两者之间最大的区别在于遗传算法中的交叉思想,因此任何比SA更适合遗传算法的学习任务的例子都将取决于交叉在这种情况下的含义以及如何实现 交叉的想法是,你可以有意义地结合两个解决方案,以产生一个

在性能和用例方面,模拟退火(带bean搜索)和遗传算法之间的相关差异是什么


我知道SA可以被认为是GA,其中种群规模只有一个,但我不知道两者之间的关键区别


此外,我正在尝试思考一种情况,即SA将优于GA或GA将优于SA。只要一个简单的例子就能帮助我理解就足够了。

我还远不是这些算法的专家,但我会尽力帮助

我认为两者之间最大的区别在于遗传算法中的交叉思想,因此任何比SA更适合遗传算法的学习任务的例子都将取决于交叉在这种情况下的含义以及如何实现

交叉的想法是,你可以有意义地结合两个解决方案,以产生一个更好的。我认为,只有当问题的解决方案以某种方式结构化时,这才有意义。例如,我可以想象,在多类分类中,使用两个(或多个)分类器,它们擅长对特定类进行分类,并通过投票将它们组合在一起,从而生成更好的分类器。另一个例子可能是,解决方案可以表示为一棵树,但我发现很难找到一个好的例子,可以将两个程序组合起来创建一个更好的程序


我认为很难提出一个令人信服的例子来说明两者之间的区别,因为它们实际上是非常相似的算法,可能是从非常不同的起点开发出来的。

很难比较两者,因为它们来自不同的领域

遗传算法维持可能解的总体,在每一步,选择可能解对,组合它们(交叉),并应用一些随机变化(变异)。该算法基于“适者生存”的思想,其中选择过程根据适应度标准进行(通常在优化问题中,它只是使用当前解决方案评估的目标函数值)。交叉是希望两个好的解决方案结合起来,可能会给出更好的解决方案


另一方面,模拟退火仅跟踪可能解空间中的一个解,并且在每次迭代时根据某些概率(随时间衰减)考虑是移动到相邻解还是停留在当前解。这与启发式搜索(比如贪婪搜索)不同,因为它不会遇到局部最优问题,因为它可以从所有相邻解都是当前最差解的情况中解脱出来。

严格来说,这两件事--模拟退火(SA)遗传算法既不是算法,也不是目的“数据挖掘”

这两种方法都是元启发式——在抽象尺度上比“算法”高出两个层次。换句话说,这两个术语都指高级隐喻——一个来自冶金,另一个来自进化生物学。在元启发式分类法中,SA是一种单一状态方法,GA是一种群体方法(与PSO、ACO等一起,在一个子类中,通常称为生物启发元启发式)

这两种元启发式算法用于解决优化问题,特别是(尽管不是唯一的)组合优化(又名约束满足规划)。组合优化是指从一组离散项中进行选择的优化——换句话说,没有连续函数可以最小化。背包问题、旅行商问题、库存问题都是组合优化问题

与数据挖掘的联系在于,许多(大多数?)有监督机器学习(ML)算法的核心是优化问题的解决方案——(例如多层感知器和支持向量机)

解决cap问题的任何解决方案技术,无论采用何种算法,基本上都包括以下步骤(通常在递归循环中编码为单个块):

  • 编码特定于域的详细信息 在成本函数中(它是 值的逐步最小化 从该函数返回的 构成c/o的“解决方案” 问题)

  • 评估通过的成本函数 在最初的“猜测”(开始时) 迭代)

  • 基于从 成本函数,生成后续的 候选解决方案(或多个) 一个,视情况而定 元启发式)的成本 功能

  • 通过以下方式评估每个候选解决方案: 在参数集中传递它,以 成本函数

  • 重复步骤(iii)和(iv)直到 或者某个收敛准则是 满足或最大数量的 达到迭代次数

  • 元启发法直接用于上述步骤(iii);因此,SA和GA在如何生成候选解决方案以通过成本函数进行评估方面有所不同。换句话说,这是了解这两种元启发式的不同之处的地方

    非正式地说,针对组合优化解决方案的算法的本质是如何处理从成本函数返回的值比当前最佳候选解(从成本函数返回的最小值)更差的候选解。对于一个优化算法来说,处理这样一个候选解的最简单方法是直接拒绝它——这就是爬山算法所做的。但是这样做,简单的爬山总是会错过一个更好的解决方案,与当前的解决方案相隔一个小山。换句话说,复杂的优化算法必须包括(暂时)接受比cu更差的候选解决方案的技术
    p = e((-highCost - lowCost)/temperature)
    
    p = pow(math.e, (-hiCost - loCost) / T)