精华内容
下载资源
问答
  • MATLAB中的各种寻优方法的代码,多种经典方法,包含二分法、黄金分割法、牛顿法、拟牛顿法等等,寻优问题中一定有一款你可以用到的。
  • 本代码主要利用MATLAB工具进行MATLAB——基于PSO工具箱的函数寻优算法仿真,实现函数寻优的模拟
  • MATLAB源码集锦-基于粒子群算法的寻优算法-非线性函数极值寻优
  • MATLAB源码集锦-基于罚函数的粒子群算法的函数寻优
  • MATLAB中实现神经网络遗传算法函数极值寻优——非线性函数极值寻优的源代码
  • 本代码主要利用MATLAB工具进行MATLAB——基于鱼群算法的函数寻优算法的仿真
  • 比较新的算法,对一个简单函数寻优,最优值为1.0054。。
  • 入侵杂草算法是近年来提出的比较新颖的一种群体智能算法。
  • matlab最优化函数

    千次阅读 2020-03-21 16:32:57
    Matlab优化方法 一、求无约束多变量(多元)极小值非线性优化问题有fminsearch和fminunc fminsearch利用了单纯形法的原理 fminunc利用了拟牛顿法的原理 这两个函数都容易陷入局部优化,并且结果的正确与否还要取决 ...

    Matlab优化方法

    一、求无约束多变量(多元)极小值非线性优化问题有fminsearch和fminunc
    fminsearch利用了单纯形法的原理
    fminunc利用了拟牛顿法的原理
    这两个函数都容易陷入局部优化,并且结果的正确与否还要取决 于初值点x0的选取。

    1 fminsearch
    [x,fval,exitflag,output] = fminsearch(…)
      结构输出output,包含最优化函数的信息:output.algorithm 使用的优化算法,output.funcCount 函式计算(评价)次数,output.iterations 迭代次数,output.message 退出信息
      exitflag值来表示fminsearch退出的条件:1–函数找到结果x,0–函数最大评价次数达到,或者是迭代次数达到(评价次数=迭代次数*参数个数),-1–算法由外部函数结束
      fval:在结果x处的目标函数的函数值
      x:解(可以为向量或者矩阵)

    2 fminunc
    [x,fval,exitflag,output,grad,hessian] = fminunc(… )
      hessian:解x的海森(Hessian)矩阵
    在这里插入图片描述
      grad:解x处的梯度
      exitflag:退出标志:大于0时表明函数收敛于x,等于0时表示达到最大迭代次数或者最大目标函数评价次数,小于0时表示函数不收敛
      其他参数同上

    fminunc为无约束优化提供了大型优化和中型优化算法。之前由options中的参数LargeScale控制:LargeScale='on’使用大型算法,LargeScale='off’使用中型算法。当前设置在‘Algorithm’。
    在这里插入图片描述
      fminunc为中型优化算法的搜索方向提供了3种算法,由options中的参数HessUpdate控制:
      HessUpdate=‘bfgs’(默认值),拟牛顿法的BFGS公式
      HessUpdate=‘dfp’,拟牛顿法的DFP公式
      HessUpdate=‘steepdesc’,最速下降法
    在这里插入图片描述 
      fminunc为中型优化算法的步长一维搜索提供了两种算法,由options中参数LineSearchType控制:
      LineSearchType=‘quadcubic’(缺省值),混合的二次和三次多项式插值
      LineSearchType=‘cubicpoly’,三次多项式插值
      
      使用fminunc和fminsearch可能会得到局部最优解

    二、求有约束多变量(多元)极小值非线性优化问题fmincon

    [x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
    在这里插入图片描述
    返回值同上
    输入值如下:
      fun是用M文件定义的函数f(x),代表了(非)线性目标函数,
      x0是x的初始值,
      A,b,Aeq,beq定义了线性约束 ,如果没有线性约束,则A=[],b=[],Aeq=[],beq=[],
      lb和ub是变量x的下界和上界,如果下界和上界没有约束,则lb=[],ub=[],也可以写成lb的各分量都为 -inf,ub的各分量都为inf(多元变量这的lb与ub都为向量,每一个元素代表对每一个变量的约束),
      nonlcon是用M文件定义的非线性向量函数约束,
      options定义了优化参数,不填写表示使用Matlab默认的参数设置
      
      fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。
      fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。
      fmincon函数可能会给出局部最优解,这与初值X0的选取有关。

    三、控制参数options的设置
      Options中常用的几个参数的名称、含义、取值如下:
    (1) Display: 显示水平.取值为’off’时,不显示输出; 取值为’iter’时,显示每次迭代的信息;取值为’final’时,显示最终结果.默认值为’final’,notify只有当求解不收敛的时候才显示结果.
    (2) MaxFunEvals: 允许进行函数评价的最大次数,取值为正整数.(评价次数=迭代次数*参数个数)
    (3) MaxIter: 允许进行迭代的最大次数,取值为正整数
    (4) TolFun:函数值(计算结果)精度,正整数。
    (5) TolX:自变量的精度,正整数。
    (6) Algorithm:使用的算法,如果函数能够提供梯度则选择"trust-region"选项,否则选择 拟牛顿法 -“quasi-newton”。

    控制参数options可以通过函数optimset或者optimoptions创建或修改。命令的格式如下:
    (1) options=optimset(‘optimfun’)
    创建一个含有所有参数名,并与优化函数optimfun相关的默认值的选项结构options.
    (2)options=optimset(‘param1’,value1,’param2’,value2,…)
    创建一个名称为options的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值.
    (3)options=optimset(oldops,‘param1’,value1,’param2’,value2,…)
    创建名称为oldops的参数的拷贝,用指定的参数值修改oldops中相应的参数.
    例:opts=optimset(‘Display’,’iter’,’TolFun’,1e-8)
    该语句创建一个称为opts的优化选项结构,其中显示参数设为’iter’, TolFun参数设为1e-8.

    四、问题结构模型
    problem.options=options;
    problem.x0=…;
    problem.objective=@loss;(目标函数)
    problem.sover=‘fminunc’;
    [X,fval,exitflag]= fminunc(problem);
    在这里插入图片描述
    fmincon的如下:
    在这里插入图片描述

    五、优化函数通用参数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    参考:
    [1]https://blog.csdn.net/cclethe/article/details/77200997?utm_source=blogxgwz4
    [2]https://blog.csdn.net/u013555719/article/details/97260571

    展开全文
  • 基于粒子群算法的寻优算法-非线性函数极值寻优matlab代码.zip
  • 粒子群算法是一种基于群体智能的优化算法。对于一维函数的最小值寻优问题,MATLAB提供了多种函数。基于一维函数的全局最小模型,采用fmincon、fminbnd和GlobalSearch分别进行求解,以实现快速地寻找全局最小。
  • matlab鱼群算法函数寻优
  • SVM Optimization function
  • 神经网络和遗传算法结合的函数极值寻优matlab算法
  • 粒子群算法的寻优算法-非线性函数极值寻优(matlab实现),包含源代码和测试数据
  • PSO粒子群算法的寻优算法-非线性函数极值寻优+matlab源代码.zip
  • 绝对可以运行的,亲自尝试,函数寻优,还能改进。非常的好
  • SVM参数寻优,寻找最佳的C和g,还可以做数据集的交叉验证。
  • 神经网络遗传算法函数极值寻优-非线性函数极值(matlab实现),包含源代码和测试数据
  • 本资源是神经网络遗传算法函数极值寻优-非线性函数极值的matlab仿真,分析了神经网络遗传算法函数极值寻优,主要分为BP神经网络训练拟合和遗传算法极值寻优
  • 粒子群算法是一种基于群体智能的优化算法。对于无约束的非线性函数极值寻优问题,采用粒子群算法进行解决,快速、准确且鲁棒性好。
  • 对于 Ackley 函数,该函数称为 Ackley 函数,有很多局部最优的值。
  • 函数寻优,函数寻优不能收敛原因,matlab源码.rar
  • 函数寻优,函数寻优不能收敛原因,matlab源码.zip
  • 例 : 求解函数最小值 粒子群算法的驱动因素 从鸟群觅食行为到粒子群算法 鸟群寻找食物的过程中,鸟与鸟之间存在着信息的交换,每只鸟搜索目前离食物最近的鸟的周围区域是找到食物的最简单有效的办法。 ...

    从鸟群觅食行为到粒子群算法

    这里写图片描述

    鸟群寻找食物的过程中,鸟与鸟之间存在着信息的交换,每只鸟搜索目前离食物最近的鸟的周围区域是找到食物的最简单有效的办法。

    粒子群算法(以下简称PSO)就是模拟鸟群觅食行为的一种彷生算法 。 解=粒子=鸟 (鸟的位置象征着离食物的距离,粒子的位置也象征着离最优解的距离,是评价解质量的唯一标准), 找食物=找最优解,一个西瓜=一个粒子找到的历史最优解,一块肉=整个粒子群找到历史最优解 ,

    就像鸟的飞行路线会受到自己曾经寻找到的最优食物和鸟群曾经找到过的最优食物的双重影响一样,算法中,每一次迭代,粒子通过两个"极值"(全局历史最优解gBest和个体历史最优解pBest)来更新自己的速度,该速度又是更新粒子位置的关键,而粒子的位置象征着离最优解的距离,也是评价该粒子(解)的唯一标准 。

    粒子群算法的核心

    该算法的核心是如何根据pBest与gBest来更新粒子的速度和位置,标准粒子群给出了如下的更新公式:

    $ V_{t+1} =w \cdot V_t +c_1r_1\cdot(pBest-X_t) +c_2r_2\cdot(gBest-X_t) $

    X t + 1 = X t + V t + 1 X_{t+1} = X_t+V_{t+1} Xt+1=Xt+Vt+1

    $其中 , t:代数 , X是位置,V是速度,w是惯性权重,c是学习因子,r是随机数 $

    这里写图片描述

    如上图所示,假设这是一个在2维平面内寻找最优解的待求解问题,某一时间的某一粒子 X t X_t Xt处在原点位置 。则该粒子更新后的速度如上图所示 。 更新公式可以分为三个部门:

    • Part.1 : "惯性"或"动量"部分,反映粒子有维持自己先前速度的趋势
    • Part.2 : "认知"部门 , 反映粒子有向自身历史最优位置逼近的趋势
    • Part.3 : "社会"部门 , 反映粒子有向去群体历史最优位置逼近的趋势

    例 : 求解函数最小值

    ​ 求$f(x)=\sum_{i=1}{n}x_i2,(-20 \leq x\leq 20,n=10) $ 的最小值 ?

    % author zhaoyuqiang
    clear all ;
    close all ;
    clc ;
    N = 100 ; % 种群规模
    D = 10 ; % 粒子维度
    T = 100 ; % 迭代次数
    Xmax = 20 ;
    Xmin = -20 ;
    C1 = 1.5 ; % 学习因子1
    C2 = 1.5 ; % 学习因子2
    W = 0.8 ; % 惯性权重
    Vmax = 10 ; % 最大飞行速度
    Vmin = -10 ; % 最小飞行速度
    popx = rand(N,D)*(Xmax-Xmin)+Xmin ; % 初始化粒子群的位置(粒子位置是一个D维向量)
    popv = rand(N,D)*(Vmax-Vmin)+Vmin ; % 初始化粒子群的速度(粒子速度是一个D维度向量) 
    % 初始化每个历史最优粒子
    pBest = popx ; 
    pBestValue = func_fitness(pBest) ; 
    %初始化全局历史最优粒子
    [gBestValue,index] = max(func_fitness(popx)) ;
    gBest = popx(index,:) ;
    for t=1:T
        for i=1:N
            % 更新个体的位置和速度
            popv(i,:) = W*popv(i,:)+C1*rand*(pBest(i,:)-popx(i,:))+C2*rand*(gBest-popx(i,:)) ;
            popx(i,:) = popx(i,:)+popv(i,:) ;
            % 边界处理,超过定义域范围就取该范围极值
            index = find(popv(i,:)>Vmax | popv(i,:)<Vmin);
            popv(i,index) = rand*(Vmax-Vmin)+Vmin ; %#ok<*FNDSB>
            index = find(popx(i,:)>Xmax | popx(i,:)<Xmin);
            popx(i,index) = rand*(Xmax-Xmin)+Xmin ;
            % 更新粒子历史最优
            if func_fitness(popx(i,:))>pBestValue(i)    
               pBest(i,:) = popx(i,:) ;
               pBestValue(i) = func_fitness(popx(i,:));
            end
           if pBestValue(i) > gBestValue
                gBest = pBest(i,:) ;
                gBestValue = pBestValue(i) ;
           end
        end
        % 每代最优解对应的目标函数值
        tBest(t) = func_objValue(gBest); %#ok<*SAGROW>
    end
    figure
    plot(tBest);
    xlabel('迭代次数') ;
    ylabel('适应度值') ;
    title('适应度进化曲线') ;
    

    完整代码下载:https://download.csdn.net/download/g425680992/10502951

    这里写图片描述

    粒子群算法的驱动因素

    粒子群算法是一种随机搜索算法 。粒子的下一个位置受到自身历史经验和全局历史经验的双重影响,全局历史经验时刻左右着粒子的更新,群体中一旦出现新的全局最优,则后面的粒子立马应用这个新的全局最优来更新自己,大大提高了效率,相比与一般的算法(如遗传算法的交叉),这个更新过程具有了潜在的指导,而并非盲目的随机 。

    自身历史经验和全局历史经验的比例尤其重要,这能左右粒子的下一个位置的大体方向,所以,粒子群算法的改进也多种多样,尤其是针对参数和混合其他算法的改进 。

    总体来说,粒子群算法是一种较大概率收敛于全局最优解的,适合在动态、多目标优化环境中寻优的一种高效率的群体智能算法。

    展开全文
  • Rosenbrock函数Matlab代码BO_工具箱 这个存储库提供了在 Matlab 中贝叶斯优化的实现。 要求 只需要 Matlab 环境。 此存储库提供了所有必需的代码 如何使用 在不同的基准测试中实现了功能,而该文件夹包含在贝叶斯...
  • 标准粒子群优化算法,单目标,基于粒子群算法PSO的函数极值寻优
  • 基于遗传算法的函数寻优算法以及相关代码及教程讲解 由于网速不稳定,里边教程需要高清版可以另找我要。
  • matlab蚁群算法函数寻优

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,297
精华内容 918
关键字:

matlab寻优函数

matlab 订阅