演化算法及其衍生算法的主要思想

…/lib/libcaffe.so.1.0.0: undefined reference to leveldb::DB::Open(leveldb::Options const&, std::string const&, leveldb::DB**)' ../lib/libcaffe.so.1.0.0: undefined reference toleveldb::Status::ToString() const’
collect2: error: ld returned 1 exit status
tools/CMakeFiles/compute_image_mean.dir/build.make:142: recipe for target ‘tools/compute_image_mean’ failed
make[2]: *** [tools/compute_image_mean] Error 1
CMakeFiles/Makefile2:495: recipe for target ‘tools/CMakeFiles/compute_image_mean.dir/all’ failed
make[1]: *** [tools/CMakeFiles/compute_image_mean.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs…

Wiki:

In artificial intelligence, an evolutionary algorithm (EA) is a subset of evolutionary computation,[1] a generic population-based metaheuristic optimization algorithm. An EA uses mechanisms inspired by biological evolution, such as reproduction, mutation, recombination, and selection. Candidate solutions to the optimization problem play the role of individuals in a population, and the fitness function determines the quality of the solutions (see also loss function). Evolution of the population then takes place after the repeated application of the above operators.

Evolutionary algorithms often perform well approximating solutions to all types of problems because they ideally do not make any assumption about the underlying fitness landscape. Techniques from evolutionary algorithms applied to the modeling of biological evolution are generally limited to explorations of microevolutionary processes and planning models based upon cellular processes. In most real applications of EAs, computational complexity is a prohibiting factor.[2] In fact, this computational complexity is due to fitness function evaluation. Fitness approximation is one of the solutions to overcome this difficulty. However, seemingly simple EA can solve often complex problems[citation needed]; therefore, there may be no direct link between algorithm complexity and problem complexity.

百度:

进化算法,或称“演化算法” (evolutionary algorithms, EAS) 是一个“算法簇”,尽管它有很多的变化,有不同的遗传基因表达方式,不同的交叉和变异算子,特殊算子的引用,以及不同的再生和选择方法,但它们产生的灵感都来自于大自然的生物进化。与传统的基于微积分的方法和穷举法等优化算法相比,进化计算是一种成熟的具有高鲁棒性和广泛适用性的全局优化方法,具有自组织、自适应、自学习的特性,能够不受问题性质的限制,有效地处理传统优化算法难以解决的复杂问题。

进化算法包括遗传算法、遗传规划、进化规划和进化策略等等。进化算法的基本框架还是简单遗传算法所描述的框架,但在进化的方式上有较大的差异,选择、交叉、变异、种群控制等有很多变化。

同遗传算法一样,进化算法的收敛性也有一些结果,文献证明了在保存最优个体时通用的进化计算是收敛的,但进化算法的很多结果是从遗传算法推过去的。

遗传算法对交叉操作要看重一些,认为变异操作是算法的辅助操作;而进化规划和进化策略认为在一般意义上说交叉并不优于变异,甚至可以不要交叉操作。

进化计算是基于自然选择和自然遗传等生物进化机制的一种搜索算法。与普通的搜索方法一样,进化计算也是一种迭代算法,不同的是进化计算在最优解的搜索过程中,一般是从原问题的一组解出发改进到另一组较好的解,再从这组改进的解出发进一步改进。而且在进化问题中,要求当原问题的优化模型建立后,还必须对原问题的解进行编码。进化计算在搜索过程中利用结构化和随机性的信息,使最满足目标的决策获得最大的生存可能,是一种概率型的算法。

知乎

遗传算法的思想在于,认为优质的基因片段一定会在多次迭代过程中保留下来。(其它算法也许会在目标值表达,交叉变异的,目标值筛选等步骤上和遗传算法的思路不同,可以尝试触类旁通。)但是遗传算法这样的算法存在的问题在于 没法证明问题的收敛性,也就是说,如果我想得到一个精度在x%范围内的解,从理论上遗传算法没法给出得到一个这样精度的解所必需的迭代次数。所以这种方法也被很多学者所不齿,认为它纯粹是一个撞运气的大规模随机搜索算法。

作者:Sixiang
链接:https://www.zhihu.com/question/39152390/answer/85645463
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

分类

演化算法(进化算法)的四种典型模型

1、遗传算法(Genetic Algorithm,GA)
2、进化策略 (Evolution Strategy,ES)
3、遗传规划 (Genetic Programming,,GP)
4、进化规划 (Evolutionary Programming,EP)

演化算法(进化算法)的衍生

1、多目标演化算法((Multi-Objective Evolutionary Algorithm,MOEA))
2、神经进化算法(Neuroevolution)
3、差分进化算法(Differential Evolution,DE)
4、文化基因算法(Memetic Algorithm,MA)
5、蚁群算法(Ant Colony Optimization,ACO)
6、粒子群算法(Particle Swarm Optimization,PSO)

literature:

视觉机器学习20讲:

第19讲 遗传算法

遗传算法(Genetic Algorithm)起始于20世纪60年代,受达尔文进化论的启发,借鉴生物学中的遗传、突变、自然选择以及杂交等思想,是一种模拟自然界生物进化机制的启发式搜索方法。最早的相关著作为1975年美国Michigan大学的John Holland编写的 Adaptation in Natural and Artificial Systems,引用次数超过37000次。

核心思想:遗传算法通常是使一定数量的候选解抽象表示的种群向更好的种群进化的过程。遗传算法的进化过程从完全随机生成的种群开始,随后逐代向适应度更高的种群进化。在进化的每一代中,整个种群的适应度按照一定规则被评价,基于个体的适应度高低从当前种群中随机选择多个个体,通过个体自然选择和基因突变操作而产生新种群,生成的新种群在算法的下一次迭代中成为当前种群。在遗传算法中,需解决的问题的解通常被成为基因个体,它通常以参数列表的形式进行标示,被称作染色体或基因串。其中染色体通常以编码形式体现,即表达为简单的字符串或数字串。

遗传算法流程图

Created with Raphaël 2.2.0 开始 初始化种群 计算适应度值 选择操作 交叉操作 变异操作 确认? 输出适应度值最优的个体 结束 yes no

遗传算法的优点:

遗传算法一般从问题解的串集开始搜索,而并不是从单个解开始搜索。这是遗传算法与传统进化计算方法的区别。
传统进化算法一般采用单点搜索机制,因此这种方法容易导致局部最优解。遗传算法可以同时处理种群中的多个个体,可以对搜索空间中的多个不同的解进行评估,因此可以使算法减少陷入局部最优解的风险;同时也可以使算法更容易实现并行优化。
遗传算法在求解过程中通常不借助搜索空间或其他辅助信息,而仅采用适应度函数对个体进行评估,并进行相应的遗传变异等操作。遗传算法的适应度函数不仅没有连续可微的约束,而且适应度函数的定义域也可以任意设定,这便使得遗传算法的应用范围大大扩展。遗传算法通常不采用确定性规则,而采用有规律的变迁规则来对搜索方向进行指导。遗传算法通常具有自组织、自适应和自学习性,在利用获得的信息进行组织搜索时,适应度高的个体具有较高的生存概率,更加容易获得适应环境的基因结构。

遗传算法的不足:

对于任何优化问题,遗传算法的参数调节都会影响收敛速度,具体参数包括种群规模、初始种群个体、交叉概率、变异概率和个体适应度函数等。参数选择没有实用的上下限,初始种群的数量很重要,过多会占用大量系统资源,过少会忽略掉最优解。变异率非常重要,太大会导致丢失最优解,过小会导致过早收敛于局部最优。在适应度函数选择不当时,可能收敛于局部最优,不能达到全局最优解。遗传算法并不一定是最好的优化策略,优化问题要具体情况具体分析。遗传算法不能解决大海捞针问题,所谓的大海捞针问题就是没有确切的适应度函数表征个体好坏的我呢提,从而使算法的进化失去导向。

其他

一个算法的提出,必须以解决一个问题为目标。真正的研究就是:面向科学问题的研究,是可能增加人类知识的研究。

猜你喜欢

转载自blog.csdn.net/qq_33838170/article/details/83411453