云手机网页版 禁忌搜索与遗传算法:两种优化技术的对比

频道:生活应用 日期: 浏览:23

1.背景介绍

优化技术属于计算机科学以及数学领域里的一项重要研究方向,其目的在于寻觅一个或者一组能让一个函数达成最大值或者最小值之输入值。优化技术在各个领域有着广泛应用,像人工智能、机器学习、经济学、工程等。在这篇文章当中,我们会关注两种常见的优化技术,分别是禁忌搜索(Tabu Search)以及遗传算法(Genetic Algorithm)。我们会从以下几个方面展开探讨:

阐述背景情况,介绍核心概念,说明其与联系,解说核心算法原理,讲述具体操作步骤,讲解数学模型公式,详细说明未来将会朝着怎样的方向发展以及会面临哪些挑战,给出附录当中的常见问题及其解答,介绍1.1 禁忌搜索(Tabu Search),列举具体代码实例并给出详细解释说明 。

禁忌搜索属于一种基于本地搜索的优化技术, 它借助在搜索空间当中逐步探索有可能的解去寻觅最优解, 禁忌搜索的核心思想是经由维护一个禁忌列表也就是Tabu List来防止搜索空间里的局部最优解, 进而防止陷入局部最优陷阱 。

禁忌搜索所具备的主要优点在于,它拥有颇为不错的局部搜索能力 ,能够在限定的时间范围以内寻觅到相对较好的解 。然而 ,它存在的主要缺点是 ,它极有可能找寻不到全局最优解 ,尤其是在搜索空间极为庞大的情形之下 。

1.2 遗传算法(Genetic Algorithm)

基于从天然生物演化流程而来这样特点的优化技术是遗传算法,它借助摹绘自然选择和基因传导的历程查找最佳解释,其中心想法是,靠缔造首次的解排列(种群),并利用筛选、交汇与变体等行径,产出新颖的解排列,渐次接近最佳解释。

遗传算法的关键优势在于其有超出寻常的全局搜索本领,能够于搜索范围特别广阔之际寻觅到全局最优解答。然而,其突出的短处则是求取最优解所需时间颇为漫长,尤其是在搜索范围极大的状况下 。

2. 核心概念与联系

在这一个部分当中,我们会针对禁忌搜索连同遗传算法所具有的核心概念展开详尽的介绍,并且会对它们相互之间存在的联系进行一番探讨。

2.1,禁忌搜索(即Tabu Search),2.1.1,核心概念,2.1.2,与遗传算法存在的联系 。

禁忌搜索属于优化技术,遗传算法也归为优化技术,它们的目的是寻觅能让目标函数达成最大值或者最小值的解。可是,它们于搜索策略方面存在很大差异,在搜索过程方面同样有着巨大不同。

被禁忌的搜索属于一种以本地搜索作为基础支撑的优化技术手段,它借助于在搜索空间里依照秩序慢慢探寻具备可能性的解从而寻觅到最为理想的最优解 ,遗传算法作为一种凭借自然生物进化历程构建起来的优化技术方式,它依靠开展自然选择以及遗传传播的相关过程去寻觅最符合要求的最优解 。

3. 核心算法原理和具体操作步骤以及数学模型公式详细讲解

在这节内容里,我们会对禁忌搜索以及遗传算法的核心算法原理予以详细介绍,还会给出具体的操作步骤,同时提供数学模型公式。

在3.1中,存在着禁忌搜索,也就是Tabu Search,而在3.1.1里,有着核心算法原理。

探索最优解的禁忌搜索核心算法原理为逐步探寻搜索空间中可能的解,同时规避搜索空间里局部处于最优状态的解以找到最优解,这借助维系一个禁忌列表达成,该禁忌列表记录已被访问过的解,借此避免重复的访问行为。

初始化搜索空间、目标函数以及禁忌列表等参数,这是其中的具体步骤之一。在这个步骤里,要从搜索空间当中随机选取一个初始解。当满足终止条件的时候,而这终止条件包含了时间限制、迭代次数限制等情况,就要停止搜索。紧接着对于现有的当前解,也就是指上一步得到的当前解,从中去做一个邻域方面的操作选择。又倘若这个邻域操作并不在禁忌列表里面,那么就要对这一步的当前解进行更新,同时也要更新禁忌列表。之后计算新得到的解的目标函数值,还要对最优解进行更新。最后返回最优解。这里还涉及到数学模型公式 。

设想一下,存在这样一种状况,我们面临一个优化问题哦,在这个问题当中呢出现了 nnn 个变量,其目标函数是 f(x)f(x)f(x) ,搜索空间设定为 XXX 。而禁忌搜索的数学模型能够以上述形式去进行表示呢:

其中,x∗x^*x∗是最优解,TTT是禁忌列表。

对于3.2所阐述的遗传算法,也就是Genetic Algorithm,其3.2.1部分指明了核心算法原理 。

通过模拟自然选择以及遗传传播的进程来寻觅最优解,这便是遗传算法的核心算法原理,这里包含着选择、交叉以及变异等相关操作,以此来逐步靠近最优解 。

初始化搜索空间参数,初始化目标函数参数,初始化种群参数,初始化遗传操作等参数。从搜索空间里随机创建一个初始的种群。评估种群之中每个解的目标函数值。当达到终止条件的时候(像时间限制、迭代次数限制等等),停止搜索。依据目标函数值对种群开展选择。对数选择后的种群进行交叉操作。对交叉后的种群进行变异操作。更新种群里面的解。返回最优解。3.2.3 数学模型公式。

假令我们存有一个具备nnn个变量的优化问题事项,其目标函数乃是f(x)f(x)f(x) ,那搜索的空间是XXX 。遗传算法的数学方面的模型能够予以表示为:

这里面,x∗x^*x∗属于最优解范畴以内,XXX构成搜索空间所涵盖内容,遗传算法有关操作含有选择这种操作,还有交叉这种操作,并且存在变异这类操作。

4. 具体代码实例和详细解释说明

在这一个部分篇章当中,我们打算借助具体的代码示例实例,用以详细阐释说明禁忌搜索以及遗传算法的实行操作进程路径。

4.1当中的禁忌搜索,也就是Tabu Search,其对应的4.1.1部分存有Python代码实例 。

import numpy as np
def f(x):
    return -x**2
def tabu_search(n, lb, ub, max_iter):
首先弄一个随机的处在由下限与上限所界定范围之内的值,然后把这个值赋给名为x_current的变量,这里是通过使用numpy库当中的均匀分布取随机数。
    tabu_list = []
    best_x = x_current
    best_f = f(x_current)
    for _ in range(max_iter):
        candidates = []
        for i in range(n):
            x_neighbor = x_current + 0.1 * np.random.randn(n)
            if x_neighbor not in tabu_list and x_neighbor >= lb and x_neighbor <= ub:
                candidates.append(x_neighbor)
        x_current = max(candidates, key=lambda x: f(x))
        tabu_list.append(x_current)
        if len(tabu_list) > 5:
            tabu_list.pop(0)
        if f(x_current) > best_f:
            best_x = x_current
            best_f = f(x_current)
    return best_x, best_f
n = 1
lb = -10
ub = 10
max_iter = 100
x_best被赋值为通过禁忌搜索算法在给定的n、下限lb、上限ub以及最大迭代次数max_iter 的情况下所得到的结果,f_best同样被赋值为通过该算法在相同条件下所得到。
print("最优解: x =", x_best, "f(x) =", f_best)

4.1.2 解释说明

依据这个代码示例,我们运用了Python 编程语言,还导入了NumPy库用于处理数值计算,我们界定了一个简易的心目标函数f函数f(x)=−x2f(x) = -x^2f(x)=−x2,并且达成了一个禁忌搜索算法 。

于tabu_search函数里头,我们最先对当前解x_current、且兼禁忌列表以及最优解等参数予以初始化。接着步入迭代进程,于每一回迭代期间挑选一项邻域行动(在此实例当中,我们借由随机生成邻域解予以达成)。要是邻域行动不在禁忌列表之内,且符合边界条件,那就更新当前解并对禁忌列表加以更新。最终,我们算出新解的目标函数值,并对最优解进行更新。

4.2,遗传算法,即Genetic Algorithm,4.2.1,Python代码实例, 。

import numpy as np
def f(x):
    return -x**2
def genetic_algorithm(n, lb, ub, pop_size, max_iter):
生成大小为(种群规模,维度数量)的按均匀分布在下限与上限之间的随机数组,赋值给x_pop ,并且通过numpy的随机均匀分布函数来实现 。
那个被命名为 best_x 的值呀,它等于 x_pop 这个集合里的元素,而它对应的索引呢,是通过 np.argmax 这个函数,在 f 函数作用于 x_pop。0)]
    best_f = f(best_x)
    for _ in range(max_iter):
        fitness = f(x_pop)
平均适应度等于,通过numpy库的均值函数,对适应度进行计算得出的结果 。
x_pop_next被赋予空的状态,其形状等同于x_pop的形状,以numpy的方式呈现 。
        for i in range(pop_size):
            if fitness[i] == best_f:
                x_pop_next[i] = best_x
            else:
parent1等于,x_pop中,通过np.argmax函数获取的,在fitness中,经np.random.choice选取后的最大值对应的索引位置的值 。range(pop_size), size=2, replace=False)])]
parent2等于,x_pop中,通过np.argmax函数,在fitness里,经过np.random.choice选取后的那个最大值对应的元素 。range(pop_size), size=2, replace=False)])]
交叉点等于,通过随机方式,从整数范围中选取,这个整数范围包含从下限到上限的所有整数,下限是某个数值,上限是另一个数值,通过这种方式来确定交叉点所对应的数值 。  (。0, n)
child等于,parent1从起始位置到交叉点的部分,加上,parent2从交叉点开始到末尾的部分,。
随机数生成的函数,被运用在了获取变异率上面,其中变异率以随机生成的方式给出,是源于随机数模块里的随机函数所产生的结果,具体来说,变异率等于随机模块里的。
                if mutation_rate < 0.1:
                    child += np.random.randn(n) * 0.1
                x_pop_next[i] = child
该数据,即x_pop,是通过np.where函数来进行确定的,此函数依据fitness大于_avg_fitness这个条件,若满足,则取值为x_pop_next,若不满足,则取值为x_pop 。
        if将f(x_pop中通过np.argmax获取到的对应索引位置的值),与best_f进行比较,其结果是大于关系!。
最好的_x,等于_x群里,那个根据适应度计算出的最大索引所对应的_x,句号。
            best_f = f(best_x)
    return best_x, best_f
n = 1
lb = -10
ub = 10
pop_size = 100
max_iter = 100
x_best,等于从遗传算法中得出,该遗传算法的参数有n、lb、ub、pop_size、max_iter,而f_best,也是从这个得出的结果 。
print("最优解: x =", x_best, "f(x) =", f_best)

4.2.2 解释说明

在这个代码示例当中,我们运用了Python编程语言,还导入了NumPy库用以处理数值计算kia云手机版登录,我们定义了一个简单的目标函数f(x)=−x2,并且实现了一个遗传算法 。

于genetic_algorithm函数里头,我们最先去初始化种群、最优解这类参数,接着步入迭代进程,于每一回迭代期间依据目标函数之值进而对种群实施选择,被选择之后的种群开展交叉操作,以此生成全新的种群,随后实施变异操作,会使得部分种群产生变化,最终,我们去更新于种群之内的最优解 。

5. 未来发展趋势与挑战

在这一个部分当中,我们会针对禁忌搜索以及遗传算法的后续发展走向,还有面临的挑战展开探讨 。

5.1,禁忌搜索,5.1.1,未来发展趋势,5.1.2,挑战,5.2,遗传算法,5.2.1,未来发展趋势,5.2.2,挑战,6.,附录,常见问题与解答,。

在这一个部分当中, 我们会去提供一些常见问题的答案, 从而协助读者能够更加良好地领会禁忌搜索以及遗传算法 。

6.1,禁忌搜索,6.1.1,问题1,禁忌搜索跟本地搜索之间的区别究竟是什么呢?

答:禁忌搜索是一种优化技术,这种技术基于本地搜索,它借助在搜索空间里逐步探寻可能的解,以此来寻觅最优解,它跟其他本地搜索方法不一样,像梯度下降、纯随机搜索等kiayun手机版登录app游戏登录入口.手机端安装.cc,禁忌搜索依靠维护一个禁忌列表,目的是避开搜索空间中的局部最优解,进而避免落入局部最优陷阱。

6.1.2 问题2:禁忌搜索的缺点是什么?

答:禁忌搜索存有主要缺点,即或是无法找出全局最优解的情形而现了,实则特别是在搜索空间极为大的时候显现此项特点之状况时。另外一点是,禁忌搜索的搜索效率以及计算速度也许呈现较低这样之态势,尤其会是在搜索空间极大同时目标函数极为复杂的这种态势之下而呈现的此等情况时。

遗传算法,在6.2这一方面的内容里,其中的6.2.1部分,有一个问题,是提问,遗传算法与优化方程之间的区别究竟是什么 ?

回答指出,有一种叫遗传算法的东西,乃是基于自然进化进程的优化技术,它借助模拟自然选择、交叉以及变异这般过程去寻觅最优解。跟优化方程(像梯度下降、牛顿法之类)不一样,遗传算法无需求解目标函数的梯度或者二阶导数,所以对于非凸优化问题更具备优势 。

6.2.2 问题2:遗传算法的缺点是什么?

解:遗传算法的主要不足之处在于kiayun手机版登录app游戏登录入口.手机端安装.cc,它有可能耗费较长的时间去寻得最优的解答,特别是在搜索的空间极为庞大,并且目标函数十分复杂的情形之下。另外,遗传算法存在着陷入局部最优解的可能性,尤其是当种群之中的解过度集中的时候。

网友留言(0)

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。