精华内容
下载资源
问答
  • 全局优化工具箱提供了一些函数, 用于寻找包含多个极大值或极小值的问题的全局解。工具箱包括全局搜索、多初始点、模式搜索、遗传算法、多目标遗传算法、模拟退火和粒子群求解。您可以使用这些求解器解决优化问题。...
  • 这是 MATLAB 中最新的优化工具箱,它利用 7 种最近提出的算法来优化您的问题。 此工具箱中可用的算法有: 灰狼优化器 (GWO)、蚁狮优化器 (ALO)、多节优化器 (MVO)、蜻蜓算法 (DA)、飞蛾-火焰算法 (MFO)、正弦余弦...
  • 遗传算法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。 在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据...

    遗传算法概述

    工具箱下载地址

    遗传算法( genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。
    在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。基因组成的串就是染色体,或者称为基因型个体( individuals)。一定数量的个体组成了群体( population)。群体中个体的数目称为群体大小( population size),也称为群体规模。而各个个体对环境的适应程度叫做适应度( fitness)。
    遗传算法的基本步骤如下:

    1.编码

    GA在进行搜索之前先将解空间的解数据表示成遗传空间的基因型串结构数据,这些串结构数据的不同组合便构成了不同的点

    2.初始群体的生成

    随机产生N个初始串结构数据,每个串结构数据称为一个个体,N个个体构成了一个群体。GA以这N个串结构数据作为初始点开始进化。

    3.适应度评估

    适应度表明个体或解的优劣性。不同的问题,适应性函数的定义方式也不同

    4.选择

    选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁殖子孙。遗传算法通过选择过程体现这一思想,进行选择的原则是适应性强的个体为下一代贡献一个或多个后代的概率大。选择体现了达尔文的适者生存原则

    5.交叉

    交叉操作是遗传算法中最主要的遗传操作。通过交叉操作可以得到新一代个体,新个体组合了其父辈个体的特性。交叉体现了信息交换的思想。

    6.变异

    变异首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机地改变串结构数据中某个串的值。同生物界一样,GA中变异发生的概率很低,通常取值很小。

    工具箱添加

    用户可以通过网络下载 Sheffield工具箱,然后把工具箱添加到本机的 MATLAB环境中,工具箱的安装步骤如下:
    (1)将工具箱文件夹复制到本地计算机中的工具箱目录下,路径为 matlabroot\ toolbox其中 matlabroot为 MATLAB的安装根目录。
    (2)将工具箱所在的文件夹添加到 MATLAB的搜索路径中,有两种方式可以实现,即命令行方式和图形用户界面方式。
    找到工具箱所在的文件夹( gatbx),单击“OK”按钮,则工具箱所在的文件夹出现在
    “ MATLAB search path”的最上端。单击“Save”按钮保存搜索路径的设置,然后单击“ Close”
    按钮关闭对话框。
    (3)查看工具箱是否安装成功。
    使用函数ver查看 gatbx工具箱的名字、发行版本、发行字符串及发行日期,如果返回均为空,则说明安装未成功;如果返回了相应的参数,则表明工具箱安装成功,该工具箱就可以使用。

    工具箱结构

    遗传算法工具箱中的主要函数

    在这里插入图片描述
    在这里插入图片描述

    遗传算法常用函数

    1.创建种群函数— crbp功能:刨建任意离散随机种群。

    调用格式:
    1【Chrom, Lind, Basev】= crtbp(Nind, Lind)
    2 【Chrom, Lind, Base v】=crtbp(Nind, Base)
    3 【Chrom, Lind, Basev】= crtbp(Nind, Lind, Base)
    格式①创建一个大小为Nind×Lind的随机二进制矩阵,其中,Nind为种群个体数,Lind为个体长度。返回种群编码 Chrom和染色体基因位的基本字符向量 Base v。
    格式②创建一个种群个体为Nind,个体的每位编码的进制数由Base决定(Base的列数即为个体长度)。
    格式③创建一个大小为Nind×Lind的随机矩阵,个体的各位的进制数由Base决定,这时输入参数Lind可省略(Base的列数即为Lind),即为格式②。
    【用法举例】使用函数 crbp创建任意离散随机种群的应用举例
    (1)创建一个种群大小为5,个体长度为10的二进制随机种群:

    >>【Chrom, Lind, Basev】=crtbp(5,10

    (2)创建一个种群大小为5,个体长度为8,各位的进制数分别为{2,3,4,5,6,7,8,9}:

    > 【Chrom, Lind, Base v】=crtbp(58,【23 456789】)
    

    2.适应度计算函数— ranking功能:基于排序的适应度分配。

    调用格式:
    ① FitnV= ranking(0bjv
    (2 Fitnv= ranking(Obj, RFun)
    3 Fitnv= ranking(Obj, RFun, SUBPOP格式①是按照个体的目标值ObV(列向量)由小到大的顺序对个体进行排序的,并返回个体适应度值FtnV的列向量。
    格式②中RFun有三种情况:
    (1)若RFun是一个在【1,2】区间内的标量,则采用线性排序,这个标量指定选择的压差
    (2)若RFun是一个具有两个参数的向量,则RFun(2):指定排序方法,0为线性排序,1为非线性排序。
    RFun(1):对线性排序,标量指定的选择压差RFun(1)必须在【1,2】区间;对非线性排序,RFun(1)必须在【1, length(ObV)-2】区间;如果为NAN,则RFun(1)假设为2。
    (3)若RFun是长度为 length(ObjV)的向量,则它包含对每一行的适应度值计算格式③中的参数ObjV和RFun与格式①和格式②一致,参数 SUBPOP是一个任选参数,指明在ObjⅤ中子种群的数量。省略 SUBPOP或 SUBPOP为NAN,则 SUBPOP=1.在ObV中的所有子种群大小必须相同。如果 ranking被调用于多子种群,则 ranking独立地对每个子种群执行。

    3.选择函数— elect功能:从种群中选择个体(高级函数)

    调用格式:
    1 Selch= select(SEL F, Chrom, Fitnv)
    2 Selch= select(SEL, F, Chrom, FitnV, GGAP)
    3 Selch= select(SEL F, Chrom, FitnV, GGAP, SUBPOP)
    SELF是一个字符串,包含一个低级选择函数名,如rws或sus Fitnv是列向量,包含种群 Chrom中个体的适应度值。这个适应度值表明了每个个体被选择的预期概率。
    GGAP是可选参数,指出了代沟部分种群被复制。如果GGAP省略或为NAN,则GGAP假设为1.0。
    SUBPOP是一个可选参数,决定 Chron中子种群的数量。如果 SUBPOP省略或为NAN,则 SUBPOP=1。 Chrom中所有子种群必须有相同的大小

    4.交叉算子函数— recombin功能:重组个体(高级函数)。

    调用格式:
    1 NewChrom= recombin (REC F, Chrom)
    2 NewChrom= recombin(REC F, Chrom, Recopt)
    3 NewChrom= recombin(REC F, Chrom, RecOpt, SUBPOP)
    recombin完成种群 Chrom中个体的重组,在新种群 NewChron中返回重组后的个体。
    Chrom和 New Chrom中的一行对应一个个体。
    RECF是一个包含低级重组函数名的字符串,例如 ecdis或 XoVsP。
    RecEpt是一个指明交叉概率的任选参数,如省略或为NAN,将设为缺省值。
    SUBPOP是一个决定 Chrom中子群个数的可选参数,如果省略或为NAN,则 SUBPOP为1。 Chrom中的所有子种群必须有相同的大小。

    5.变异算子函数—mut功能:离散变异算子。

    调用格式:Newchroa=mt( older.m,P,BaeV Old Chrom为当前种群,Pm为变异概率(省略时为0.7/Lind), Base指明染色体个体元素的变异的基本字符(省略时种群为二进制编码)。

    6.重插入函数— . reins功能:重插入子代到种群调用格式:

    1Chrom= reins(Chrom, Selch)
    2 Chrom reins(Chrom, Selch, SUBPOP)
    3 Chrom= reins (Chrom, SelCh, SUBPOP, InsOpt, ObjVCh)
    【Chrom, Objvch】=reinsChrom, SelCh, SUBPOP, Insopt, ObjVCh, ObjVSel)
    reins完成插入子代到当前种群,用子代代替父代并返回结果种群。 Chron为父代种群SelCh为子代,每一行对应一个个体SUBPOP是一个可选参数,指明 Chron和SlCh中子种群的个数。如果省略或者为NAN,则假设为1.在 Chrom和SlCh中每个子种群必须具有相同大小。
    InsOpt是一个最多有两个参数的任选向量。
    InsOpt(1)是一个标量,指明用子代代替父代的方法。0为均匀选择,子代代替父代使用均匀随机选择。1为基于适应度的选择,子代代替父代中适应度最小的个体。如果省略Ins Opt(1)或 InsOpt(1)为NAN,则假设为0。
    Ins Opt(2)是一个在【0,1】区间的标量,表示每个子种群中重插入的子代个体在整个子种群中个体的比率。如果 Ins Opt(2)省略或为NAN,则假设 Ins Opt(2)=1.0。
    ObⅤCh是一个可选列向量,包括 Chrom中个体的目标值。对基于适应度的重插入, ObjvCh是必需的。
    Obj vSel是一个可选参数,包含 SelCh中个体的目标值。如果子代的数量大于重插入种群中的子代数量,则 Objvsel是必需的。这种情况子代将按它们的适应度大小选择插入.

    7.实用函数—bs2rv功能:二进制到十进制的转换。

    调用格式:Phen=b2rv( Chrom, Field)
    bs2rv根据译码矩阵 Field将二进制串矩阵 Chrom转换为实值向量,返回十进制的矩阵。

    8.实用函数—rep功能:矩阵复制。

    调用格式:MatOut=rep(atIn,REN函数rep完成矩阵Matn的复制,REPN指明复制次数,返回复制后的矩阵 MatOut.REPN包含每个方向复制的次数,REPN(1)表示纵向复制次数,REPN(2)表示水平方向复制次数

    遣传算法工具箱应用举例

    clc
    clear all
    close all
    %% 画出函数图
    figure(1);
    hold on;
    lb=1;ub=2; %函数自变量范围【1,2ezplot('sin(10*pi*X)/X',[lb,ub]);   %画出函数曲线
    xlabel('自变量/X')
    ylabel('函数值/Y')
    %% 定义遗传算法参数
    NIND=40;        %个体数目
    MAXGEN=20;      %最大遗传代数
    PRECI=20;       %变量的二进制位数
    GGAP=0.95;      %代沟
    px=0.7;         %交叉概率
    pm=0.01;        %变异概率
    trace=zeros(2,MAXGEN);                        %寻优结果的初始值
    FieldD=[PRECI;lb;ub;1;0;1;1];                      %区域描述器
    Chrom=crtbp(NIND,PRECI);                      %初始种群
    %% 优化
    gen=0;                                  %代计数器
    X=bs2rv(Chrom,FieldD);                 %计算初始种群的十进制转换
    ObjV=sin(10*pi*X)./X;        %计算目标函数值
    while gen<MAXGEN
       FitnV=ranking(ObjV);                               %分配适应度值
       SelCh=select('sus',Chrom,FitnV,GGAP);              %选择
       SelCh=recombin('xovsp',SelCh,px);                  %重组
       SelCh=mut(SelCh,pm);                               %变异
       X=bs2rv(SelCh,FieldD);               %子代个体的十进制转换
       ObjVSel=sin(10*pi*X)./X;             %计算子代的目标函数值
       [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群
       X=bs2rv(Chrom,FieldD);
       gen=gen+1;                                             %代计数器增加
       %获取每代的最优解及其序号,Y为最优解,I为个体的序号
       [Y,I]=min(ObjV);
       trace(1,gen)=X(I);                            %记下每代的最优值
       trace(2,gen)=Y;                               %记下每代的最优值
    end
    plot(trace(1,:),trace(2,:),'bo');                            %画出每代的最优点
    grid on;
    plot(X,ObjV,'b*');   %画出最后一代的种群
    hold off
    %% 画进化图
    figure(2);
    plot(1:MAXGEN,trace(2,:));
    grid on
    xlabel('遗传代数')
    ylabel('解的变化')
    title('进化过程')
    bestY=trace(2,end);
    bestX=trace(1,end);
    fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])
    
    

    在这里插入图片描述

    展开全文
  • Matlab--优化工具箱

    千次阅读 2019-11-14 19:05:45
    优化工具箱(Optimization Toolbox)是对MATLAB数值计算环境扩展得一组函数,它包括以下最优化方法的内容: 1.无约束非线性最小化(Unconstrained nonlinear minimization) 2.有约束非线性最小化(Constrained ...

    优化工具箱
    优化工具箱(Optimization Toolbox)是对MATLAB数值计算环境扩展得一组函数,它包括以下最优化方法的内容:
    1.无约束非线性最小化(Unconstrained nonlinear minimization)
    2.有约束非线性最小化(Constrained nonlinear minimization)
    3.二次规划和线性规划(Quadratic and linear programming)
    4.最小二乘和曲线拟合(Nonlinear least squares and curve-fitting)
    5.非线性系统的方程求解(Nonlinear system of equation solving)
    6.有约束线性最小二乘(Constrained linear least squares)
    所有功能都是M文件实现,你可以扩展这些函数。
    关于下表的变量说明:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    一元非线性方程求根
    语法:
    x = fzero(fun,x0)
    x = fzero(fun,x0,options)
    x = fzero(fun,x0,options,P1,P2,…)
    [x,fval] = fzero(…)
    [x,fval,exitflag] = fzero(…)
    [x,fval,exitflag,output] = fzero(…)
    说明:
    [X,FVAL,EXITFLAG,OUTPUT] = FZERO(FUN,X0,OPTIONS,P1,P2,…)
    参数X0表示搜索的起点,一个函数可能有多个零点,但该命令只给出离X0最近的那个零点。
    结构OPTIONS只有两个域:Display 和TolX。
    输出参数EXITFLAG大于0表示找到了零点,小于0表示没有找到零点或者在搜索过程中遇到了无穷大的函数值。

    例子:寻找函数sin(x)在3附近的零点
    输入:x = fzero('sin',3)
    输出:
    x =
    3.1416
    例子:寻找函数在1到2之间的零点
    输入:x = fzero('cos',[1 2])
    输出:
    x =
         1.5708
    例子:解方程
    方法1:编写一个M文件f.m
    function y = f(x)
    y = x.^3-2*x-5;
    输入: 
    z = fzero('f',2)
    输出:
    z =
    2.0946
    方法2:
    输入:
    f=inline(‘x.^3-2*x-5’,’x’)   %定义内联函数
    z=fzero(f,2)
    注意:2种定义函数在调用时的差异,一个有引号,一个没有引号。
    

    非线性方程组求解
    语法:
    x = fsolve(fun,x0)
    x = fsolve(fun,x0,options)
    x = fsolve(fun,x0,options,P1,P2, … )
    [x,fval] = fsolve(…)
    [x,fval,exitflag] = fsolve(…)
    [x,fval,exitflag,output] = fsolve(…)
    [x,fval,exitflag,output,jacobian] = fsolve(…)
    说明:
    例子:求解方程组
    在这里插入图片描述
    搜索起点: x0 = [-5 -5]
    第一步:写一个M-文件计算在x处F:

    function F = myfun(x)
    F = [2*x(1) - x(2) - exp(-x(1));
          -x(1) + 2*x(2) - exp(-x(2))];
    

    第二步:调用优化函数

    x0 = [-5; -5];       % Make a starting guess at the solution
    options=optimset('Display','iter');   % Option to display output
    [x,fval] = fsolve('myfun',x0,options)    % call optimizer
    

    第三步:输出结果

    x =
        0.5671
        0.5671
    fval =
       1.0e-08 *
        -0.5320
        -0.5320
    

    无约束非线性最小化

    fminbnd求单变量函数最小值点
    fminbnd
    语法:
    x = fminbnd(fun,x1,x2)
    x = fminbnd(fun,x1,x2,options)
    x = fminbnd(fun,x1,x2,options,P1,P2,…)
    [x,fval] = fminbnd(…)
    [x,fval,exitflag] = fminbnd(…)
    [x,fval,exitflag,output] = fminbnd(…)

    说明:fminbnd用于求单变量函数的最小值点,它采用黄金分割查找和抛物线插值算法。
    调用格式:
    [X,FVAL,EXITFLAG,OUTPUT] = FMINBND(FUN,x1,x2,OPTIONS,P1,P2,…)
    输入参数fun,x1,x2是必须的,其余参数允许缺省。fun为被计算的最小值点的单变量函数(目标函数)名的字符串,x1,x2为目标函数的自变量的取值范围。Fun可以为MATLAB系统内嵌的函数(如sin,cos等等),也可以为自定义函数。自定义函数可以通过MATLAB文件定义,也可以通过内联函数定义。
    其它参数:P1,P2,…是向目标函数传递的附加参数;options是一个结构型的变量,用于指定优化参数,可通过optimset函数设置。
    目标函数内嵌函数:
    求解模型在这里插入图片描述
    使用命令:

    [x,fval]=fminbnd('cos(4*x+5)',0,pi/2)
    x1=0:0.1:pi/2;
    plot(x1,cos(4*x1+5))
    运行结果:
    Optimization terminated successfully:
     the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 
    x =
        1.1062
    fval =
       -1.0000
    

    表示当x=1.1062时,函数取得最小值-1。
    目标函数为非内嵌函数:
    比如求解模型:在这里插入图片描述
    将上述问题转化为求模型:在这里插入图片描述该模型的最小值点,也就是原模型的最大值点。

    方法1:采用m文件定义函数
    function fx=funmin1(x)
    fx=-(x.*x.*x-8*x-15*x.*x);
    输入命令:[x,fval]=fminbnd('funmin1',-10,10)
    得到如下结果:
    Optimization terminated successfully:
     the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 
    x =
       -0.2599
    fval =
       -1.0484
    所以原模型中当x=-0.2599时,取得最大值1.0484。
    可以将这里的结果与解析结果比较。
    方法2:采用内联函数
    定义内联函数用inline。
    输入命令:
    f=inline('-(x.*x.*x -15*x.*x-8*x)')
    [x,fval]=fminbnd(f,-10,10)
    输出结果:
    f =
         Inline function:
         f(x) = -(x.*x.*x-8*x-15*x.*x)
    
    Optimization terminated successfully:
     the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 
    x =
       -0.2599
    
    fval =
       -1.0484
    

    fminunc
    语法:
    x = fminunc(fun,x0)
    x = fminunc(fun,x0,options)
    x = fminunc(fun,x0,options,P1,P2,…)
    [x,fval] = fminunc(…)
    [x,fval,exitflag] = fminunc(…)
    [x,fval,exitflag,output] = fminunc(…)
    [x,fval,exitflag,output,grad] = fminunc(…)
    [x,fval,exitflag,output,grad,hessian] = fminunc(…)
    说明:
    例子:求函数f(x) = sin(x) + 3 的最小值
    函数f(x)采用内联函数定义。
    输入:
    f = inline(‘sin(x)+3’);
    x = fminunc(f,4)
    输出结果:
    x =
    4.7124
    fminsearch求多变量函数最小值点
    命令:fminsearch函数用于求多变量函数的最小值点,它采用Neder-Mead单纯形算法。
    调用格式:
    [X,FVAL,EXITFLAG,OUTPUT] = fminsearch (FUN,X0,OPTIONS,P1,P2,…)
    必须的参数为:FUN和X0。
    此调用的大部分参数意义与fminbnd相同。
    x0是最小值点的初始值,这一般由用户自己根据实际确定,也可猜测。
    这里的结构options的域比函数fminbnd多一个:TolFun,指终止计算的目标函数的容差值。
    退出标志EXITFLAG,也比函数fminbnd增加一种情况:小于0表示目标函数不收敛。

    举例:设目前建立了下面的无约束最优化模型
    从理论上该目标函数的最小值点在(1,3)处取得。
    编写目标函数程序文件,这里命名为fun2x.m:

    function y=fun2x(x)
    

    %此模型的目标函数,注意x为向量,其元素依次对应于x1,x2,…;
    %这里对应于x1,x2。
    y= 2*(x(1)-1)2+3*(x(2)-3)2;

    在命令行输入:

    [x,funminvalue,exitflag]=fminsearch(‘fun2x’,zeros(1,2))
    输入结果如下:
    Optimization terminated successfully:
    x =
        1.0000    3.0000
    funminvalue =
      3.1076e-009
    exitflag =
         1
    

    由结果输出,可见目标函数在(1,3)处取得最小值。退出标志exitflag=1表示找到最小值点,搜索成功。
    有约束非线性最小化fmincon
    求解非线性规划问题的Matlab函数。
    (有关fmincon的使用例子可以参考高速公路问题的模型求解)
    fmincon函数求解形如下面的有约束非线性规划模型。约束中可以有等式约束。
    (可以含线性、非线性约束均可)

    语法:
    x = fmincon(fun,x0,A,b)
    x = fmincon(fun,x0,A,b,Aeq,beq)
    x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
    x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
    x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
    x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, …)
    [x,fval] = fmincon(…)
    [x,fval,exitflag] = fmincon(…)
    [x,fval,exitflag,output] = fmincon(…)
    [x,fval,exitflag,output,lambda] = fmincon(…)
    [x,fval,exitflag,output,lambda,grad] = fmincon(…)
    [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(…)
    例1:求解如下规划问题。
    在这里插入图片描述
    第一步:编写一个M文件返回目标函数在点处的值。
    第一步:编写一个M文件返回目标函数f在点x处的值。
    function f = myfun(x)
    f = -x(1) * x(2) * x(3);

    第二步:为了调用MATLAB函数,必须将模型中的约束转化为如下形式。
    在这里插入图片描述
    这是2个线性约束,形如,
    这里:
    A=[-1 -2 -2; 1 2 2 ];
    b=[0 72]’;

    第三步:提供一个搜索起点,然后调用相应函数,程序如下:

    x0 = [10; 10; 10]; % Starting guess at the solution
    [x,fval] = fmincon(‘myfun’,x0,A,b)

    最后得到如下结果:
    x =
    24.0000
    12.0000
    12.0000

    此时目标函数值为:
    fval =
    -3.4560e+03
    其中线性非等式约束(Ax<=b)的结果如下:
    A*x-b=
    -72
    0
    可见满足模型约束要求。

    线性规划linprog
    函数:linprog
    求解如下线性规划模型:
    在这里插入图片描述
    语法:
    x = linprog(f,A,b,Aeq,beq)
    x = linprog(f,A,b,Aeq,beq,lb,ub)
    x = linprog(f,A,b,Aeq,beq,lb,ub,x0)
    x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
    [x,fval] = linprog(…)
    [x,fval,exitflag] = linprog(…)
    [x,fval,exitflag,output] = linprog(…)
    [x,fval,exitflag,output,lambda] = linprog(…)
    输入参数:
    f 目标函数费用系数向量
    A
    B
    exitflag
    > 0 成功找到最优解
    0 达到最大迭代次数也没有找到最优解
    < 0 该线性规划问题不可行或者linprog计算失败
    边界设置lb,ub
    如果x(i)无边界,则lb(i)=-Inf,ub(i)=Inf

    例1:求解如下线性规划模型
    目标函数:在这里插入图片描述
    约束条件:
    在这里插入图片描述

    第一步:根据模型和语法输入有关系数
    
    f = [-5; -4; -6]
    A =  [1 -1  1
          3  2  4
          3  2  0];
    b = [20; 42; 30];
    lb = zeros(3,1);
    
    第二步:编写调用程序
    [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);
    
    第三步:输入x,fval,lambda.ineqlin,和lambda.lower得到如下结果:
    x = 
         0.0000
        15.0000
    3.0000
    fval =
      -78.0000
    
    lambda.ineqlin =
         0
         1.5000
    0.5000
    lambda.lower =
         1.0000
         0
    0
    结果说明:当x1=0,x2=15,x3=3时,目标函数 f 取得最小值-78

    最小二乘和曲线拟合
    线性最小二乘
    适合如下模型:
    在这里插入图片描述
    语法:C=MLDIVIDE(A,B) 等价于C=A\B
    (1)如果A是方阵,B是列向量,则其表示求解方程组A*X=B,结果是X=A\B即Inv(A)*B
    (2)如果A不是方阵,则表示用最小二乘法求解模型
    在这里插入图片描述
    有m组样本,即已知在这里插入图片描述
    求向量a满足上式。
    Matlab求解方法:
    构造矩阵
    在这里插入图片描述
    非线性曲线拟合lsqcurvefit
    解决最小二乘意义下的非线性曲线拟合问题。
    这类问题的模型如下:
    在这里插入图片描述
    语法:
    x = lsqcurvefit(fun,x0,xdata,ydata)
    x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
    x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
    x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options,P1,P2,…)
    [x,resnorm] = lsqcurvefit(…)
    [x,resnorm,residual] = lsqcurvefit(…)
    [x,resnorm,residual,exitflag] = lsqcurvefit(…)
    [x,resnorm,residual,exitflag,output] = lsqcurvefit(…)
    [x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(…)
    [x,resnorm,residual,exitflag,output,lambda,jacobian] =
    lsqcurvefit(…)

    例1:
    向量数据xdata和ydata长度均为n,求系数 满足下列方程:
    在这里插入图片描述
    也就是求解如下的规划模型:
    在这里插入图片描述
    其中F(x,xdata) = x(1)*xdata.^2+ x(2)*sin(xdata) + x(3)*xdata.^3,起点x0 = [0.3, 0.4, 0.1]。

    第一步:编写F函数的M文件:
    function F = myfun(x,xdata)
    F = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3;

    第二步:调用优化程序
    % xdata 和 ydata 是用实验方法得到的数据

    xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
    ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];
    x0 = [10, 10, 10]                    % Starting guess
    [x,resnorm] = lsqcurvefit('myfun',x0,xdata,ydata)
    

    注意:xdata和ydata必须有相同的长度。
    经过 33 次函数计算,得到如下结果:

    x = 
    0.2269    0.3385    0.3021
    % residual or sum of squares
    resnorm = 
         6.2950
    
    展开全文
  • matlab emd工具箱是一款功能非常强大的时频分析计算工具,在可以自由编程的同时,MATLAB也为我们封装好了一些功能,以工具箱的形式供我们使用,还在等什么,欢迎下载。时频分析简介:时频分析(JTFA)即时频联合域分析...

    matlab emd工具箱是一款功能非常强大的时频分析计算工具,在可以自由编程的同时,MATLAB也为我们封装好了一些功能,以工具箱的形式供我们使用,还在等什么,欢迎下载。

    时频分析简介:

    时频分析(JTFA)即时频联合域分析(Joint Time-Frequency Analysis)的简称,作为分析时变非平稳信号的有力工具,成为现代信号处理研究的一个热点,它作为一种新兴的信号处理方法,近年来受到越来越多的重视。时频分析方法提供了时间域与频率域的联合分布信息,清楚地描述了信号频率随时间变化的关系。

    函数简介:

    一、信号产生函数:

    amexpo1s  单边指数幅值调制信号

    amexpo2s  双边指数幅值调制信号

    amgauss  高斯幅值调制信号

    amrect  矩形幅值调制信号

    amtriang  三角形幅值调制信号

    fmconst  定频调制信号

    fmhyp  双曲线频率调制信号

    fmlin  线性频率调制信号

    fmodany  任意频率调制信号

    fmpar  抛物线频率调制信号

    fmpower  幂指数频率调制信号

    fmsin 正弦频率调制信号

    gdpower 能量律群延迟信号

    altes 时域Altes信号

    anaask  幅值键移信号

    anabpsk  二进制相位键移信号

    anafsk  频率键移信号

    anapulse  单位脉冲信号的解析投影

    anaqpsk  四进制相位键移信号

    anasing  Lipscjitz 奇异性

    anaste  单位阶跃信号的解析投影

    atoms 基本高斯元的线性组合

    dopnoise  复多普勒任意信号

    doppler  复多普勒信号

    klauder  时域Klauder小波

    mexhat 时域墨西哥帽小波

    二、噪声产生函数

    noiseecg  解析复高斯噪声

    noiseecu  解析复单位高斯噪声

    tfrgabor  Gabor表示

    tfrstft  短时傅立叶变换

    ifestar2  使用AR(2)模型的瞬时频率估计

    instfreq  瞬时频率估计

    sqrpdlay  群延迟估计

    三、模糊函数

    ambifunb 窄带模糊函数

    ambifuwb  宽带模糊函数

    四、Affine类双核线性时频处理函数

    tfrbert  单式Bertrand分布

    tfrdfla  D-Flandrin分布

    tfrscalo  尺度图

    tfrspaw  平滑伪Affine类Wigner分布

    tfrunter  Unterberger分布

    五、Cohen类双核线性时频处理函数

    tfrbj  Born-Jordan分布

    tfrbud  Butterworth分布

    tfrcw  Choi-Williams分布

    tfrgrd  归一化的矩形分布

    tfrmh  Margenau-Hill分布

    tfrmhs  Margenau-Hill频谱分布

    tfrmmce  谱图的最小平均互熵组合

    tfrpage  Page分布

    tfrwv  伪Wigner-Ville分布

    tfrri  Rihaczek分布

    tfrridb  降低交叉项的分布(Bessel窗)

    tfrridbn  降低交叉项的分布(二项式窗)

    tfrridh  降低交叉项的分布(汉宁窗)

    tfrridt  降低交叉项的分布(三角窗)

    tfrsp  谱图分布

    tfrspwv  平滑伪Wigner-Ville分布

    tfrwv  Wigner-Ville分布

    tfrzam  Zhao-Atlas-Marks分布

    六、其他处理函数:

    friedman  瞬时频率密度

    htl  图像直线检测中的Hough变换

    margtfr  时频表示的能量

    momftfr  时频表示的频率矩

    momttfr  时频表示的时间矩

    renyi  Renyi信息度量

    ridges  波峰提取

    plotifl  绘制归一化的瞬时频率规律

    tfrparam  返回用于显示时频表示的参数

    tfrqview  时频表示的快速可视化

    tfrsave  保存时频表示的参数

    tfrview  时频表示的可视化

    EMD工具箱安装方法:

    1.下载emd工具箱:下载后解压放在matlab的toolbox工作路径下package_emd文件夹。

    2、打开matlab,选择File- Set Path- Add with Subfolders-你刚才下载的工具箱(package_emd)点进去- Save- Close。

    3、此时选择work下package_emd文件夹作为工作路径,即是C:\Program Files\MATLAB\R2010a\toolbox\package_emd。

    4、在Command Window里面输入mex -setup回车,问是否选择已有的编译器你选y回车,再问选择哪个编译器,你可以选择C++的那个选择相应的编号(如 2)回车,然后让你核对是否选择对了编译器等等,你输入y回车。就安装成功了

    matlab emd使用教程:

    1.MATLAB自带工具箱

    查看方式:

    我们首先详细介绍一下MATLAB自带工具箱的使用。

    在我们不熟悉一些调用工具箱的命令的时候,我们可以按照如下图所示:

    在MATLAB主窗口中,点击左下角start--toolboxes,就会罗列出你的MATLAB已经安装的所有工具箱,可以根据你的需要选择你将要使用的工具箱。我们可以看到有拟合工具箱、金融工具箱、最优化工具箱等等。

    4fb25f2eaa84ceace4f063c0e01c9b35.png

    2.调用(打开)方式:

    下面我们介绍一下如何打开一个工具箱。

    我们以调用拟合工具箱为例,进行详细的示例。

    调用方式一:

    按照如下图所示的步骤:

    点击主窗口左下角start--toolboxes--curve fitting--curve fitting tool 单击,就可以打开拟合工具箱。

    5974b50fb0e2e4eea7fea5e9d5485d82.png

    3.调用方式二:

    在上一步中,我们在start--toolboxes--curve fitting--curve fitting tool ,到这里的时候,会看到在其后面有一个简写  cftool  如下图,这就是我们的拟合工具箱调用命令函数。在MATLAB主窗口中输入cftool ,回车,同样可以打开拟合工具箱。

    0177270a29906d0e3f14cff361999794.png

    4.工具箱的使用:

    拟合工具箱打开之后,如下,我们就可以进行多种曲线拟合了。

    关于MATLAB拟合工具箱等,一些工具箱的详细用法,由于篇幅的有限,在我的其他经验中都会陆续给出,有兴趣的可以查看。

    574a272daf6fd92cbceadc56b4ac9fc7.png

    5.非自带工具箱

    非自带工具箱,需另外下载,然后按照一定的步骤导入,导入后一般不能像上面工具箱一样,通过界面操作,一般都通过函数使用。由于工具箱的导入有几个小的细节需要注意,所以在我的其他经验中,关于如何导入工具箱,我也进行了详细的介绍。

    展开全文
  • matlab优化工具箱笔记(1)

    万次阅读 多人点赞 2018-02-20 00:15:36
    1、线性规划[x,fval]=linprog(c,A,b,Aeq,Beq,VLB,VUB)用于解决min(z)=cX%%求满足条件的X与已定系数c乘积之和的... matlab优化工具箱求解优化问题的主要函数3.优化函数的输入变量4.优化函数的输出变量5.options的设...

    1、线性规划

    [x,fval]=linprog(c,A,b,Aeq,Beq,VLB,VUB)

    用于解决

    min(z)=cX%%求满足条件的X与已定系数c乘积之和的最小值
    s.t. 
    AX<=b    %不定约束
    AeqX=Beq   %定约束
    VLB<=X<=VUB %天花板约束

    2. matlab优化工具箱求解优化问题的主要函数


    3.优化函数的输入变量


    4.优化函数的输出变量


    5.options的设置

    (1)Display (显示水平):

    off不显示输出;iter显示每次迭代的信息;final显示最终结果;默认为final;

    (2)MaxFunEvals(允许函数评价的最大次数):取值为正整数;

    (3)MaxIter(允许进行迭代的最大次数):取值为正整数;

    * MaxFunEvals与MaxIter的区别:

    (4)FunValCheck:'on' 当目标函数返回值是一个complex、inf、NaN时,显示一个erro;'off'则不显示

    (5)TolX;X的退出条件 为一个正的标量。默认为1e-4

    MaxFunEvals是目标函数的调用次数,而MaxIter是迭代次数。在一次迭代中,可能需要多次调用目标函数。

    options的创建和修改:

    options = optimset('param1',value1,'param2',value2,...) %设置所有参数及其值,未设置的为默认值
    options = optimset                                                         %全部设置为默认                                                   
    options = optimset(optimfun)                                        %设置与最优化函数有关的参数为默认
    options = optimset(oldopts,'param1',value1,...)             %复制一个已存在的选项,修改特定项

    options = optimset(oldopts,newopts)                            %用另一个新选项合并目前选项


    6.一元函数无约束问题求解(fminbnd)%不一定是一次函数

    **fminbnd的算法是基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解

    fimbnd函数:在固定的区间上找到单变量函数的最小值。

    (find minimun of single-variable function on fixed interval)


    * x1;x2;output(x)都要是标量

    常用格式如下:

    (1)x= fminbnd (fun,x1,x2)

    (2)x= fminbnd (fun,x1,x2 ,options)

    (3)[x,fval]= fminbnd(...)

    (4)[x,fval,exitflag]= fminbnd(...)

    (5)[x,fval,exitflag,output]= fminbnd(...)


    例子:

    clc;
    clear;
    %%求解f在x=0~8之间的最小和最大值
    %%
    %% 第一步:设定函数
    f='2*exp(-x).*sin(x)';
    f1='-2*exp(-x).*sin(x)';


    %% 第二步:优化函数参数设定
    options=optimset('Display','iter',...%%显示每次每次迭代的信息
        'FunValCheck','on',...%%函数输出值可用性检测
        'MaxFunEvals',800,...%%允许函数评价的最多次数
        'MaxIter',1000,...%%允许进行迭代的最大次数
        'PlotFcns',@optimplotfunccount,...%%图像显示@optimplotx,显示当前x的值;
         'TolX',1e-4);%X的终止误差        %%@optimplotfval,显示函数值变化情况
                                         %%@optimplotfunccount,显示函数的计数?
        
    %%计算
    [xmin,ymin,exitflag,output]=fminbnd (f, 0,8,options) 

    %exitflag表示函数退出条件,1-函数找到结果;0-函数最大功能评价次数或者迭代次数达到;-1-算法由外部函数结束
    [xmax,ymax]=fminbnd (f1, 0,8,options)


    7.多元函数无约束优化问题

    多元函数无约束优化问题可以通过两种函数,

    1.[x,fval,exitflag,output]=fminunc(fun,x0,options);

    2.[x,fval,exitflag,output]=fminsearch(fun,x0,options)

    x0可以是标量、向量、矩阵 fun是一个函数句柄

    (1)fminsearch 是用单纯形法寻优法

    这是一种不会使用数值或者梯度分析的直接的方法。

    (2)fminunc:找到非约束多变量函数的最小值。(这里需要补充)

    fminunc 为无约束优化提供了大型优化和中型优化算法。由options中参数LargeScale控制:

    LargeScale='on',使用大型算法

    LargeScale='off',使用中型算法

    ** fminunc为中型优化算法的搜索方向提供了4中算法,由options中的参数HessUpdate控制

    HessUpdate=‘bfgs’(默认值),为拟牛顿的BFGS法

    HessUpdate='dfp'为拟牛顿DFP法

    HessUpdate=‘steepdesc’最速下降法

    **fminunc中为中型优化算法的步长一维搜索提供了两种算法,由options中参数LineSearchType控制,

    LineSearchType='quadcubic'混合的二次和三次多项式插值

    LineSearchType=‘cubicpoly’三次多项式插值

    *使用fminunc和fminsearch都可能会得到局部最优解。


    非线性规划の二次规划

    标准型为 


    与线性规划的不同只在于评价函数的不同

    用Matlab软件求解,其输入格式如下:

    [x,fval,exitflag,output]=quaprog(H,C,A,b,Aeq,Beq,VLB,VUB,X0,options)


    一般非线性规划

    标准型为:



    用Matlab求解上述问题,基本步骤分为三步:

    1、首先建立M文件 fun.m定义目标函数F(X)

    function f=fun(x)

    f=F(X)

    2、若约束条件中由非线性约束:G(X)<=0或Ceq(X)=0,

    则建立M文件nonlcon.m定义函数G(X)和Ceq(X)

    function [G,Ceq]=nonlcon(X)

    G=G(X)

    Ceq=Ceq(X)

    3、建立主程序,非线性规划求解的函数时fmincon,命令的基本格式如下:

    [x,fval,exitflag,output]=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB,'nonlcon',options)


    ** fmincon 函数提供了大型优化算法和中型优化算法。 默认时:

    若在fun函数中提供了梯度,即GradObj设置为‘on’,并且只有上下界存在或只有等式约束时,

    fmincon函数将选择大型算法。如果既有梯度约束又有等式约束的话,那么使用中型算法。

    fmincon函数中型算法使用的矢序列二次规划法。即在每一次迭代中求解二次规划子问题,

    并用BFGS法更新拉格朗日Hessian矩阵

    fmincon函数可能会给出局部最优解,这与初值的选择有关.













    展开全文
  • 本博文源于《小迈步学习》,
  • SURROGATES工具箱是一个多维函数逼近和优化方法的通用MATLAB库。当前版本包括以下功能: 实验设计:中心复合设计,全因子设计,拉丁超立方体设计,D-optimal和maxmin设计。 代理:克里金法,多项式响应面,径向基...
  • MATLAB优化工具箱;线性规划;线性规划的MATLAB命令;例1 求解 max z = 3x1+x2 s.t. x1+x2 2 x12x2 2 3x1+2x2 14 x1,x20;例3 求解 ; 例题;二次规划;二次规划的MATLAB命令; 例题; 例题;非线性规划;非线性规划;问题; 控制...
  • 序号工具箱备注数学、统计与优化1Symbolic Math Toolbox符号数学工具箱2Partial Differential Euqation Toolbox...优化工具箱6Global Optimization Toolbox全局优化工具箱7Neural Network Toolbox神经网络工具箱8Model...
  • MATLAB优化工具箱使用

    万次阅读 2015-01-27 21:46:16
    转自 ... 1 工具箱概述 1.1 功能  (1)求解无约束条件非线性极小值;  (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题和半无限极小值问题;  
  • matlab优化工具箱

    千次阅读 2012-09-03 16:54:17
    摘自:...  1 工具箱概述 1.1 功能  (1)求解无约束条件非线性极小值;  (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题和半无限极小值问题;  (3)求解二次规
  • matlab优化工具箱介绍

    万次阅读 2007-11-03 20:27:00
    由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。用最优化...
  • Global Optimization Toolbox   在MATLAB R2018a 中发现了全局优化...全局优化工具箱提供了一些函数, 用于寻找包含多个极大值或极小值的问题的全局解。工具箱包括全局搜索、多初始点、模式搜索、遗传算法、多目标...
  • 一组优化工具,旨在使它们可以应用于广泛的连续和离散问题,并在需要时进行组合。 主要强调的是代码的可红性而不是性能。 目前可用的工具有: -带或不带孤岛的遗传算法-模拟退火-粒子群开发ETSEIAT/UPC。 欢迎评论!
  • matlab代码粒子群算法软计算优化工具箱(SCOT) 它能做什么: 1.一个工具箱,在一个保护伞下结合了六个优化算法。 2.每种算法都有单独的GUI。 3.结果的图形表示。 如何运行: 脚步: 打开MATLAB 打开包含所有必需...
  • Matlab金融工具箱提供了用于数学建模和统计分析的功能财务数据。包括了各种金融衍生品定价模型的回测和优化投资组合。 该工具箱可以估算风险,对信用建模,分析收益率曲线,价格固定收益工具和欧洲期权都有所涉猎。
  • 这是此matlab工具箱包含的一些很酷的功能的不完整列表: TetGen,Triangle,QSlim,meshfix的包装 网格平滑 网格清理(删除重复项,删除未引用的项) 三角形和四面体网格上的测地距离 网格数量和查询(法线,离散...
  • MvCAT 是在 Matlab 中作为用户友好的工具箱(软件)开发的,可帮助科学家和研究人员进行严格而全面的多元相关性分析。 它使用具有1至3个参数的26个系动词科来描述两个随机变量的依存结构。 MvCAT使用局部优化以及...
  • 主要介绍了如何快速入手CVX工具箱和特定的语法要求 通过两个最小二乘法的介绍引入。 快速入门 安装CVX之后(请参见官网:http://cvxr.com),您可以通过将CVX规范输入到Matlab脚本或函数,或直接从命令附带下。进行...
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • Matlab优化工具箱使用详解

    万次阅读 2014-06-28 22:10:37
    一直知道Matlab优化工具箱,可是一直都没有学习,Matlab提供的功能主要有线性规划、非线性规划、极值问题等,这些也是比较常见的优化问题。 优化工具箱概述   1.MATLAB求解优化问题的主要函数   ...
  • 第五章 遗传算法工具箱函数 5.1 工具箱结构 5.1.1 种群表示和初始化 5.1.2 适应度计算 5.1.3 选择函数 5.1.4 交叉算子 5.1.5 变异算子 5.1.6 多子群支持 5.2 遗传算法中的通用函数 5.2.1 函数 bs2rv 5.2.2 函数 ...
  • MATLAB优化工具箱简介3. 统计工具箱简介4. 求解微分方程的命令 引言 1. MATLAB基本命令 命令窗口 M文件 要运行M文件,则函数名和文件名必须一致 常用变量表 特殊变量表 数学运算符号及标点符号 数学函数 二...
  • Matlab优化工具箱学习

    千次阅读 2017-07-06 21:45:00
    一直知道Matlab优化工具箱,可是一直都没有学习,Matlab提供的功能主要有线性规划、非线性规划、极值问题等,这些也是比较常见的优化问题。 优化工具箱概述 1.MATLAB求解优化问题的主要函数 2.优化函数的输入...
  • MATLAB 优化工具箱的用户应该有宾至如归的感觉,但即使您不使用该工具箱,这也很容易理解。 包括广泛的帮助。 从严肃的 AI 研究人员到初学者,任何人都应该从中有所收获。 这个工具箱在不断发展,我欢迎提出建议...
  • 优化工具箱——CVX每日忠告欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中...
  • matlab优化工具箱.doc

    2009-04-07 13:04:08
    详细介绍Matlab优化工具箱的各个函数并给出相关性能描述,同时提供实际应用的问题。
  • matlab模糊控制工具箱使用和模糊控制pid实例参考

    万次阅读 多人点赞 2019-02-28 13:26:17
    Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过它我们不需要进行复杂的模糊化、模糊推理及反模糊化运算,只需要设定相应参数,就可以很快得到我们所需要的控制器,而且修改也非常方便。...

空空如也

空空如也

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

matlab优化工具箱的功能介绍

matlab 订阅