优化算法简介

优化算法目录:http://t.csdnimg.cn/75T9p

一、什么是优化算法

        优化算法是一种寻优算法,通过迭代与概率控制在众多解决方案中寻找一个问题的相对最优解。

        通过上面这句话我们很容易产生以下疑惑:

        1.你凭什么说你找的解就是相对最优解?—适应度函数的含义

         答:显然一个问题有着众多的解决方案,每个解决方案对于问题的能力不尽相同。有的解堪称完美,有的解不尽人意,那么在计算机中我们如何表示一个解好还是不好?

                那当然是将感性认知的比较转换成数据的比较喽。我们将一个解对于问题的解决能力称为适应度值,显然适应度值越高越好。那么如何把一个解转换成适应度值呢?这个问题得具体问题具体分析,不同情景下有着不同的转换方式。不过这个转换方式我们统一称之为适应度函数,在具体的算法中这个适应度函数是需要用户自己实现的。适应度值越高说明解越优秀,那么只要我们最后找的解的适应度是最高的,那么我们就可以说这个解是最好的。

        2.为什么解是相对最优解?直接算最最优的解不好吗?

        答:从表面来看,由于算法中包含概率这种不确定性参数,因此每次迭代的结果可能不尽相同,没有唯一的结果。因此优化算法在解决复杂问题时,得到的解都是相对最优解。

                然而根本原因在于,一个相对复杂问题的解是无穷无尽的,我们不可能遍历每一种情况,比较每一种情况的适应度值来确定最最优解。当然在问题相对简单,解的数量相对有限,我们对解的要求不那么精确,可以通过暴力遍历每一种情况来找出比较好的解,然而这种解也不是最最优的解,同时暴力遍历需要消耗大量的计算机资源与时间,无论是解的适应度还是计算效率一般都不如寻优算法。因此,暴力遍历算法是极其不推荐的。

        3.迭代是怎么个迭代?

        答:假设我们要求解2x^{^{3}}+8x^{^{4}}-6x^{^{2}} = 5。我们第一想法可能是看公式能不能化简转化然后求精确解。遗憾的是,上面的式子没得化简办法,那怎么办?有的同学可能想到随便给个数字,比如给个1,然后拿计算机试,试出来是4,结果不对,换个数字接着试,直到计算结果接近5。那么换哪个数字呢?看一下公式好像是单调递增函数,那就试1.1,如果大了就往小的试,大了就往大的试。

                在上面这里例子中,我们给的1就是初始值,不断试的过程就是迭代。改变试值的策略就可以看作一个优化算法,公式计算结果与5的距离就可以看作适应度。

        优化算法的本质是有规律地试问题的解!!!

        4.概率控制是什么意思?

        答:通过概率为优化算法增加不确定性,降低迭代早期迅速收敛到局部最优的可能性。对于概率控制的详细理解需要具体了解某个实际优化算法后即可明了。

二、优化算法的基本步骤

        首先,任何一个优化算法,都需要用户预先对要解决的问题有充分的了解。用户需要预先设定好适应度函数表明解的优秀程度。

        其次,事先确定一些基本参数:

                解集中解的数量是指初始解集中解的个数疑也称为种群数量

                解的维度指的是一个解包含几个内容,也称为个体特征数量,比如要求{​{x_{1}}^{2}}+{​{x_{2}}^{3}} = 6,那么一个解就有两个维度

                解的上下边界也很好理解,X1的取值范围,X2的取值范围等等.....

                最大迭代次数,顾名思义最大能迭代几次,作为迭代结束条件,当然迭代结束条件多种多样,比如有人使用连续n次迭代结果相差不超过一个极小值作为结束条件。

           最后,在迭代一次生成新的种群后要记得更新新种群的适应度哦!

            最最后,从框架中可以看出,优化算法整体可以分成来两部分,一是整体运行框架,二是算法核心:优化算法策略(遗传算法、差分进化、粒子群算法等)。因此在代码实现时,我们可以将框架部分提取出来,而不用一个算法重复实现一份框架。

三、优化算法适用场景与优缺点

        优化算法适用于无法直接求解解析解,对结果精度要求不高(有个差不多说的过去的结果就行)、计算量巨大,对求解时间有限制要求的问题。

        对于要求稳定,要求计算结果唯一的问题是不适用的。

        优点:能够快速寻找到一个合适的解;算法种类多,可以相互印证;

        缺点:解不唯一,可能每次迭代出的结果都不一样;优化算法参数不确定得不断调试试错;存在迭代收敛至局部最优问题。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
遗传算法是一种通过模拟自然选择和遗传机制来进行优化的算法。在优化自抗扰控制器(ADRC)中,遗传算法可以用于寻找最优的控制器参数。根据引用,通过改进后的遗传算法对ADRC的参数进行寻优可以得到更好的评价指标,减小ITAE并提高种群个体的适应度值。这种改进是通过赋予个体不同基因变异阈值来改进传统遗传算法的局部收敛性。 然而,根据引用,尽管改进后的遗传算法优化了一些指标,但并不能完全防止遗传算法陷入局部最优和早熟收敛的问题。因此,还需要进一步优化遗传算法。引用提到了多次运行不同策略的遗传算法,并对结果进行分析来减少结果的偶然性。该研究共运行了100次基于遗传算法和改进遗传算法的优化程序,每次运行时间约为1小时30分钟。但也需要注意,由于程序错误导致误差,可能会浪费时间和计算资源。 为了更全面地了解遗传算法的优化情况,引用建议对每次优化结果进行数据分析,以探究遗传算法改进前后是否发生早熟收敛和陷入局部最优。可以使用方差、四分位差箱线图和均值分析来比较不同优化策略的结果偏离程度。这样可以更好地评估遗传算法的性能和效果。 总结来说,遗传算法可以用于优化ADRC的参数,通过改进算法可以得到更好的评价指标。然而,遗传算法仍然存在陷入局部最优和早熟收敛的问题,需要进一步优化和分析结果来提高算法的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值