精华内容
下载资源
问答
  • 启发式算法启发式算法
  • 用EvoHyp实现一维装箱问题的选择构造超启发式算法
  • 启发式算法文档

    2017-12-15 09:18:40
    对元启发式算法和禁忌算法的综合性描述,基于禁忌搜索的算法
  • 曾经数学建模用过的启发式算法资料,含讲义和代码
  • 四种经典启发式算法求解TSP问题,包括模拟退火(Simulated annealing)、禁忌搜索(Tabu search)、遗传算法(Genetic algorithms)和蚁群算法(Ant colonies)
  • 启发式算法的优化

    2018-08-27 20:44:58
    启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高了效率。
  • 算法推荐:基于深度递归神经网络的连续启发式元启发式算法推荐系统
  • 基础的启发式算法样例
  • 第4讲 多资源车间调度优先分配启发式算法 1 4.1 多资源车间调度概述 1 4.2 优先分配Giffler Thompson启发式算法及其流程 3 4.3 优先分配Giffler Thompson启发式算法Matlab实现 6 4.3.1 数据结构设计 6 4.3.2 Matlab...
  • 结合最优冗余分配理论和可重构度定义给出了可重构度最大化的冗余分配模型,在此基础上提出了基于启发式算法的可重构性指标分配方法,该方法可解决约束条件内资源优化配置问题,并得到系统最大可重构度的解.直接寻查法...
  • 启发式算法

    2017-12-17 13:46:30
    详细的讲解了各种启发式算法的原理与实现方法,很全面,适合初学者学习了解
  • CARP问题的元启发式算法综述,李庆华,李波,本文全面综述了国内外用于求解容量约束弧路径问题(CARP问题)及其变异形式的各种元启发式算法的研究现状,指出了元启发式算法的�
  • 启发式算法 定义:启发式算法(heuristic algorithm)是相对于最优化算法提出的。一个问题的最优算法求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算...

    启发式算法

    定义:启发式算法(heuristic algorithm)是相对于最优化算法提出的。一个问题的最优算法求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。现阶段,启发式算法以仿自然体算法为主,主要有蚁群算法模拟退火法神经网络等。

    通俗解释:针对某个特定(problem specific)的问题,由于这个问题的最优解不好求或者求不出,那么就退而求其次,求次优解或者可行解,巧了,启发式算法就是来干这个事的,即启发式算法用来求问题的可行解

     

    元启发式算法

    定义:元启发式算法主要指一类通用型的启发式算法,这类算法的优化机理不过分依赖于算法的组织结构信息,可以广泛的应用到函数的组合优化和函数计算中

    通俗解释:说白了,元启发式算法是启发式算法的一种改进,它不依赖于特定问题,通常是一个通用的启发式策略(problem independent),因而能够运用于更广泛的方面

     

    异同点比较

    首先说相同点:(1)两者都无法保证得到某优化问题的全局最优解(2)二者目的相同,都是为了快速地求解那些不存在或者暂时未找到多项式时间内算法的问题,比如TSP问题,flowshop问题。而像Linear programming就不会用heuristics或者meta-heuristics去求解了

    不同点:不同点在于:heuristics算法中不会存在“随机因素”。对于同样一个问题,只要给定了一个输入,那么算法执行的步骤就固定下来了,输出也因此固定。但是meta-heuristics就不一样了,里面包括了“随机因素”。就拿遗传算法来说,同样一个初始的种群(输入一致),运行两次(每次100代),得到的结果很可能是不同的。因为交叉、变异操作的对象是随机选择的。在比如模拟退火,按照metropolis准则跳出局部最优解时也是随机的,这也解释了为神马SA可能得到全局最优解。总之,heuristics在固定的输入下得到固定的输出。meta-heuristics在固定的输入下得到的输出不固定。(PS:我有个疑问,看了网上很多资料,发现很多人把遗传算法、模拟退火、蚁群算法等也称作启发式算法,那它们到底是启发式算法还是元启发式算法?或者说根本没必要去对它们分类?希望有大神给予解答)

     

    超启发式算法

    定义:超启发式算法提供了某种高层策略(High-Level Strategy,HLS),通过操纵或管理一组低层启发式算法(Low-Level Heuristics, LLH),以获得新启发式算法。这些新启发式算法则被运用于求解各类NP-难解问题。

    通俗解释:这个概念是近些年新兴的,我只说下我自己的理解(没有深入研究,肯定存在不足之处)。首先,二者共同点是超启发式算法与启发式算法均是为了求解问题实例而提出的;二者的不同点在于各自的搜索空间构成不同:传统启发式算法是工作在由问题实例的解构成的搜索空间上;而超启发式算法运行在一个由启发式算法构成的搜索空间上。换句话说,就是超启发方法先对一堆启发式方法进行组合优化,之后拿着这一组方法再去对问题进行求解。

     

    主要参考以下文章:

    1. https://leovan.me/cn/2019/04/heuristic-algorithms/
    2. http://oscar-lab.org/paper/cccf_11.pdf
    3. https://www.cnblogs.com/tsingke/p/12512250.html
    4. https://zhuanlan.zhihu.com/p/37199993
    5. https://blog.csdn.net/econe_wei/article/details/102531451
    6. https://blog.csdn.net/u011561033/article/details/85623533?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
    展开全文
  • 启发式算法和元启发式算法

    千次阅读 2019-10-13 12:08:59
    启发式算法(Heuristic Algorigthm): 是一种基于直观或经验构造的算法,在可接受的花费(指计算时间、计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般不可以事先预计。 启发...

    启发式算法(Heuristic Algorigthm):

    是一种基于直观或经验构造的算法,在可接受的花费(指计算时间、计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般不可以事先预计。

    启发式算法是一种技术,这种算法可以在可接受的计算费用内找到最好的解,但不一定能保证所得到解的可行性及最优性,甚至大多数情况下无法阐述所得解与最优解之间的近似程度。

    元启发式算法(MetaHeuristic Algorigthm):

    是启发式算法的改进,它是随机算法局部搜索算法相结合的产物。

    .

    启发式算法包括遗传算法、模拟退火算法、粒子群算法、禁忌搜索算法及神经网络算法等。

    比较:

    1)两者无法保证得到某个优化问题的全局最优解;
    2)两者存在意义就是快速地求解那些不存在或者暂时未找到多项式时间内算法的问题。比如TSP问题,flowshop问题。而像Linear programming就不会用heuristics或者meta-heuristics去求解了;
    3)不同点在于:heuristics算法中不会存在“随机因素”。对于同样一个问题,只要给定了一个输入,那么算法执行的步骤就固定下来了,输出也因此固定。但是meta-heuristics就不一样了,里面包括了“随机因素”。就拿遗传算法来说,同样一个初始的种群(输入一致),运行两次(每次100代),得到的结果很可能是不同的。因为交叉、变异操作的对象是随机选择的。在比如模拟退火,按照metropolis准则跳出局部最优解时也是随机的,这也解释了为神马SA可能得到全局最优解。总之,heuristics在固定的输入下得到固定的输出。meta-heuristics在固定的输入下得到的输出不固定。
    (引用自评论)

    展开全文
  • 动态规划启发式算法求解时变车辆调度问题
  • 启发式算法-武汉大学

    2019-12-03 20:30:41
    启发算法 武汉大学 研究生 课件 内容丰富 遗传算法、模拟退火法、蚁群算法、禁忌搜索算法、贪婪算法 遗传算法、模拟退火法、蚁群算法、禁忌搜索算法、贪婪算法 遗传算法、模拟退火法、蚁群算法、禁忌搜索算法、...
  • 运行脚本文件夹中的文件,您的环境需要2个软件包:copy和numpy 还可以更改脚本文件中模型的参数 笔记 这个资料库包含我研究期间所有以python(Numpy)编码的最佳化演算法 如果您想知道如何使用神经网络来实现优化...
  • 目录启发式(Heuristic)元启发式(Metaheuristic)超启发式(Hyper-heuristic)三者区别参考文献 启发式(Heuristic) 元启发式(Metaheuristic)       In computer science and mathematical ...

    启发式(Heuristic)

          根据问题特征、求解经验等,在可接受时间内找到一个近似解,它是依赖于问题的,不普遍适用。

         The objective of a heuristic is to produce a solution in a reasonable time frame that is good enough for solving the problem at hand. This solution may not be the best of all the solutions to this problem, or it may simply approximate the exact solution. But it is still valuable because finding it does not require a prohibitively long time.

         Heuristics may produce results by themselves, or they may be used in conjunction with optimization algorithms to improve their efficiency (e.g., they may be used to generate good seed values).

         Results about NP-hardness in theoretical computer science make heuristics the only viable option for a variety of complex optimization problems that need to be routinely solved in real-world applications.

    元启发式(Metaheuristic)

         元启发式算法是对整个解空间进行搜索,包括模拟退火、遗传算法、蚁群算法、禁忌搜索、迭代局部搜索、变邻域搜索等等。

          In computer science and mathematical optimization , a metaheuristic is a higher-level procedure or heuristic designed to find, generate, or select a heuristic (partial search algorithm ) that may provide a sufficiently good solution to an optimization problem, especially with incomplete or imperfect information or limited computation capacity.

          Compared to optimization algorithms and iterative methods, metaheuristics do not guarantee that a globally optimal solution can be found on some class of problems. Many metaheuristics implement some form of stochastic optimization, so that the solution found is dependent on the set of random variables generated. In combinatorial optimization, by searching over a large set of feasible solutions, metaheuristics can often find good solutions with less computational effort than optimization algorithms, iterative methods, or simple heuristics. As such, they are useful approaches for optimization problems.

    超启发式(Hyper-heuristic)

          超启发式是一种用于选择或生成启发式来解决计算性搜索问题的自动化方法。

          A hyper-heuristic is an automated methodology for selecting or generating heuristics to solve computational search problems. (Hyper-heuristics comprise a set of approaches that aim to automate the development of computational search methodologies.)

          There is an underlying theme to these two clear categories of hyper-heuristics. In both cases a high-level hyper-heuristic operates on a set of heuristics which in turn operate on the solution space. In the case of selection, we are choosing from a set of atomic predefined heuristics. In the case of generation, we are operating on a space of heuristic components.

          In a typical hyper-heuristic framework there is a high-level methodology and a set of low-level heuristics (either constructive or perturbative heuristics). Given a problem instance, the high-level method selects which low-level heuristic should be applied at any given time, depending upon the current problem state (or search stage) determined by features

    超启发式 vs 元启发式 区别

         The fundamental difference between metaheuristics and hyper-heuristics is that most implementations of metaheuristics search within a search space of problem solutions, whereas hyper-heuristics always search within a search space of heuristics. Thus, when using hyper-heuristics, we are attempting to find the right method or sequence of heuristics in a given situation rather than trying to solve a problem directly. Moreover, we are searching for a generally applicable methodology rather than solving a single problem instance.

         Hyper-heuristics could be regarded as “off-the-peg” methods as opposed to “made-to-measure” metaheuristics. They aim to be generic methods, which should produce solutions of acceptable quality, based on a set of easy-to-implement low-level heuristics.

    启发式 vs 元启发式 vs 超启发式 三者区别

          We differentiate between the terms heuristic, metaheuristic and hyper-heuristic.

    • A heuristic is a “rule of thumb” offering guidance for finding good solutions according to domain knowledge. Two main types of search heuristics can be distinguished, perturbative or local search heuristics, which operate on fully instantiated candidate solutions, and constructive heuristics which iteratively expand partial candidate solutions.
    • Metaheuristics are search methodologies that coordinate local search and higher-level strategies to perform a robust search on a solution space and which aim to escape local optima.
    • Hyper-heuristics are high-level strategies that operate on a search space of heuristics rather than directly on a search space of solutions.

          简单总结一下就是:启发式是依赖问题特定的知识和经验,构建可行解,或者进行局部搜索获得可行解;元启发式是通过对整个解空间进行随机搜索,寻优找到可行解;超启发式是优化问题的启发式空间,在解的启发式空间内搜索,自动选择或者生成启发式方法。

    参考文献

    [1] Handbook of metaheuristics[M]. Springer Science & Business Media, 2019. (3rd edition)
    [2] https://en.wikipedia.org/wiki/Heuristic_(computer_science)
    [3] https://en.wikipedia.org/wiki/Metaheuristic

    展开全文
  • 启发式算法详解

    2021-06-15 15:33:19
    启发式算法详解NP问题解决NP问题的算法启发式算法的诞生第一个版本的启发式算法更好的启发式算法 NP问题       了解启发式算法之前,我们需要先了解下启发式算法所使用的场景,启发式算法主要的使用...

    NP问题

          了解启发式算法之前,我们需要先了解下启发式算法所使用的场景,启发式算法主要的使用场景是NP问题,例如一维装箱,旅行商问题。这些问题有一个显著的特征:获得准确解需要付出很大的代价,而启发式算法则是利用有限的资源,尽可能的去计算较优解。

    解决NP问题的算法

    以一维装箱为例,传统的NP问题解法有:

    • 穷举法:穷尽法需要搜索 n! 次,这么搞cpu吃不消;
    • 动态规划:搜索次数是能减少,但是一旦输入的参数较大,创建DP所需的数组可能直接OOM了;
    • 贪心算法:贪心算法的确能获得一个较好的结构,常见的贪心算法有:
      • First-fit:遍历当前箱子,把物品放入第一个能放下该物品的箱子,都放不下则新开一个箱子。
      • Best-fit:对每个物品遍历当前箱子,把物品放入最合适放下该物品的箱子。
      • Worst-fit:对每个物品遍历当前箱子,把物品放入最不合适放下该物品的箱子。

          贪心算法虽然能获取到一个比较好的解,但是上述提到的贪心算法比较依赖于输入顺序,举个栗子,有一堆物品 {14,6,14,6,4,6,6,4},箱子的总容量为30,使用First-fit解得的结果为:{14,6,6,4},{14,6,6,4}。
          如果改变下输入顺序,排个序变成{4,4,6,6,6,6,14,14},结果:{4,4,6,6,6},{6,6,6},{14,14}

    启发式算法的诞生

          既然得到最优解需要耗费很多资源,那退而求其次,获取次优解或者以一定概率获取最优解也是能接受的。那么随机改变数组的输入顺序,就有那么一丝希望能获取到最优解或者次优解。

          启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。

    第一个版本的启发式算法

    第一个版本的启发式算法,乱数搜索,只接受比当前更好的解

        private void getMinBoxes(int[] bins) {
        	// 利用贪心算法计算结果
            int best = fitness.getMinimumBins(bins);
            for (int i = 0; i < 1000; i++) {
                int positionA = random.nextInt(length);
                int positionB = random.nextInt(length);
                int[] temp = Arrays.copyOf(bins, bins.length);
                swap(temp, positionA, positionB);
                int cur = fitness.getMinimumBins(temp);
                if (cur <= best) {
                    bins = temp;
                    best = cur;
                }
            }
        }
    

    这个最初版本的启发式算法有很多的不足,我们只一味的接受更好的解,而有些时候往往会产生一些局限性,导致最优解无法被找到。

    更好的启发式算法

    现在诞生的启发式算法都是由第一个版本的启发式算法改良得到的,可以参考后续的文章:

    展开全文
  • MATLAB源码集锦-基于启发式算法的函数优化分析
  • 启发式算法: 面向单件生产的车间生产作业计划排产问题一直是研究的热点和难点
  • 针对与城市物流密切相关的双层车辆路径问题(2E-VRP), 提出了一种用来求解的混合启发式算法。该算法利用贪心算法的快速性、蚁群算法的搜索多样性以及邻域搜索算法较强的局部寻优能力来提高求解质量, 加速算法的收敛...
  • 启发式算法 相对与精确算法提出的。是一种群体智能算法。平衡局部最优解与全局最优解。 启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个...
  • 墨西哥Axolotl优化:一种新颖的生物启发式启发式方法。 数学,9(7),781。 https://www.mdpi.com/2227-7390/9/7/781 作者* Yenny Villuendas-Rey *何塞·路易斯·贝拉克斯克斯·罗德里格斯(JoséLuisVelá...
  • 五种典型启发式算法对比总结

    千次阅读 2021-08-24 16:42:49
    遗传算法(GA),粒子群算法(PSO),蚁群算法(ACO),禁忌搜索(TS),模拟退火(SA)的对比总结
  • 启发式算法介绍

    千次阅读 2019-08-10 16:30:53
    启发式算法(Heuristic Algorithm)有不同的定义:一种定义为,一个基于直观或经验的构造的算法,对优化问题的实例能给出可接受的计算成本(计算时间、占用空间等)内,给出一个近似最优解,该近似解于真实最优解的...
  • 综述了VANETs的特点,并总结了最近提出的基于生物启发式算法的VANET路由协议。重点分析了这些协议的关键特性、优点和缺点。然后还总结了生物启发式算法在VANETs中面临的挑战和未来的发展趋势。
  • 进阶生产规划及排程系统 便是利用先进的信息科技及规划技术,例如基因算法﹝Genetic Algorithm﹞、限制理论﹝Theory of Constraints﹞、作业分析 ﹝Operations Research﹞、 生产仿真﹝Simulation﹞及限制条件满足...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,738
精华内容 26,295
关键字:

启发式算法2