matlab在运筹学中的应用_第1页
matlab在运筹学中的应用_第2页
matlab在运筹学中的应用_第3页
matlab在运筹学中的应用_第4页
matlab在运筹学中的应用_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB 在运筹学中的应用在运筹学中的应用 绪绪 论论v 优化求解工作中常用的软件:优化求解工作中常用的软件:v 1、Matlab v 2、Mathematicav 3、Maplev 4、SASv 5、SPSSv 6、Lindo/Lingov 7、GAMSv 8、WinQSBv 9、Excelv 10、其他,如、其他,如SQP、DPS、ORS、Visual Decision、Decision Explore、AIMMS、Crystal Ball、TreeAge等。等。 Matlab (Matrix Laboratory ) 专业级的数值计算和符号计算、 强大的绘图功能、 可视化建模仿真和实

2、时控制从事理论研究的数学工作者和其他科学工作者 强大的符号计算能力 输入格式有严格的规定SAS(Statistical Analysis System)誉为统计分析的标准软件,统计方法齐、全、新集数据存取、管理、分析和展现于一体政府行政管理、科研、教育、生产和金融等领域 SPSS(Statistical Package for the Social Sciences)2000 (Statistical Product and Service Solutions)最早的统计分析软件类似Execl表格的方式输入和管理数据应用最广泛的专业统计软件Lindo/Lingo 求解最优化问题的软件包线性规划

3、、二次规划、整数规划、非线性规划解算器寻最佳模型进行求解,公式表示Lingo优化问题的建模语言,可与文本、Excel、数据库对接GAMS(General Algebraic Modeling System)针对大型、复杂系统的建模针对大型、复杂系统的建模建模迅速、易修改,丰富的模型求解引擎建模迅速、易修改,丰富的模型求解引擎 WinQSB(Quantitative Systems for Business)基于模块化设计的专业运筹规划和决策辅助软件基于模块化设计的专业运筹规划和决策辅助软件规划问题、计划编制、抽样分析、规划问题、计划编制、抽样分析、MRPMRP、质量控制、质量控制、马尔可夫过程

4、、决策分析等马尔可夫过程、决策分析等通过通过加载宏加载宏功能功能扩展为一个优化求解的工具扩展为一个优化求解的工具Matlab简介简介v 概述概述 Matlab是矩阵实验室(是矩阵实验室(Matrix Laboratory)的简称,是美国)的简称,是美国MathWorks公司公司出品的商业数学软件,和出品的商业数学软件,和Mathematica、Maple并称为三大数学软件。并称为三大数学软件。 用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括互式环境,主要包括Matlab和和Simulin

5、k两大部分。两大部分。 主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。融建模设计与分析等领域。 具有广泛应用前景的全新的计算机高级编程语言具有广泛应用前景的全新的计算机高级编程语言v 产生与发展产生与发展 70年代后期,基于特征计算的程序库年代后期,基于特征计算的程序库EISPACK和线性代数程序库和线性代数程序库LINPACK (FORTRAN语言)语言) 1984年,年,MathWorks公司正式推出的商业化版本,公司正式推出的商业化版本,C C语言;语言; 1992年,基于年

6、,基于Windows平台的平台的Matlab4.0,6.5 2004年,年,7.x 2006a,2006b,.,2011a,2011b。v 优势 强大易用的科学计算语言 全面的图形功能 独立开放的平台 实用的程序接口 Simulink动态仿真功能v Matlab是一个交互式开发系统,其基本数据单元是矩阵。是一个交互式开发系统,其基本数据单元是矩阵。 v MathWorks公司的描述:计算、可视化及编程一体公司的描述:计算、可视化及编程一体v 常用网址: v MATLAB 产品族可以用来进行以下各种工作: v 数值分析 v 数值和符号计算 v 工程与科学绘图 v 控制系统的设计与仿真 v 数字图

7、像处理 技术 v 数字信号处理 技术 v 通讯系统设计与仿真 v 财务与金融工程 v MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。 v Matlab Main Toolboxmatlab主工具箱 vControl System Toolbox控制系统工具箱 vCommunication Toolbox通讯工具箱 vFinancial Toolbox财政金融工具箱 vSystem Identificat

8、ion Toolbox系统辨识工具箱 vFuzzy Logic Toolbox模糊逻辑工具箱 vHigher-Order Spectral Analysis Toolbox高阶谱分析工具箱 vImage Processing Toolbox图象处理工具箱 vcomputer vision system toolbox-计算机视觉工具箱 vLMI Control Toolbox线性矩阵不等式工具箱 vModel predictive Control Toolbox模型预测控制工具箱 v-Analysis and Synthesis Toolbox分析工具箱 vNeural Network Too

9、lbox神经网络工具箱 vOptimization Toolbox优化工具箱 vPartial Differential Toolbox偏微分方程工具箱 vRobust Control Toolbox鲁棒控制工具箱 vSignal Processing Toolbox信号处理工具箱 vSpline Toolbox样条工具箱 vStatistics Toolbox统计工具箱 vSymbolic Math Toolbox符号数学工具箱 vSimulink Toolbox动态仿真工具箱 vWavele Toolbox小波工具箱 vDSP system toolbox-DSP处理工具箱Matlab界面

10、窗口MATLAB菜单菜单MATLAB工具栏工具栏工作空间窗口工作空间窗口/当当前目录浏览器窗口前目录浏览器窗口历史命令窗口历史命令窗口开始按钮开始按钮命令窗口命令窗口MATLAB界面窗口 v MATLABMATLAB中变量区别于其他编程语言的特点中变量区别于其他编程语言的特点MATLAB表达式中可以使用表达式中可以使用矩阵形式矩阵形式;MATLAB中中不需要预先声明变量的类型和维数不需要预先声明变量的类型和维数,MATLAB会根据对新变量会根据对新变量的操作创建该变量,确定其类型并为其分配存储空间;的操作创建该变量,确定其类型并为其分配存储空间;对已经存在的变量的赋值操作,对已经存在的变量的赋

11、值操作,MATLAB会以新值代替旧值。如果需要的话会以新值代替旧值。如果需要的话,MATLAB可以改变该变量的类型或者为其分配新的存储空间可以改变该变量的类型或者为其分配新的存储空间;MATLAB中的变量名是中的变量名是大小写敏感大小写敏感的,即的,即A和和a代表不同的变量;代表不同的变量;矩阵特征值参数运算v一、矩阵的行列式一、矩阵的行列式 函数:函数:det(A)v二、矩阵的迹二、矩阵的迹 函数:函数:trace(A)v三、矩阵的秩三、矩阵的秩 函数:函数:rank(A)v四、矩阵的范数四、矩阵的范数 函数:函数:norm(A,选项),选项)v五、矩阵的特征值五、矩阵的特征值 函数:函数:

12、eig(A)v六、矩阵的分解六、矩阵的分解-三角形分解(三角形分解(LU或或LR分解)分解)函数:函数:L, U=lu(A)v七、矩阵的分解七、矩阵的分解-正交分解(正交分解(QR分解)分解) 函数:函数:Q, R=qr(A)选选 项项意义及算法意义及算法无或无或 2矩阵的最大奇异值,即矩阵的最大奇异值,即 |A|21矩阵的矩阵的1-范数,即范数,即 |A|1Inf 或或 inf矩阵的无穷范数,即矩阵的无穷范数,即 |A|fro矩阵的矩阵的F-范数,即范数,即 |A|F数值数值 P对向量可取任何整数,而对矩阵只可取对向量可取任何整数,而对矩阵只可取1,2,inf或或fro-inf只可用于向量,

13、只可用于向量,|A|-MATLAB中的控制结构中的控制结构 v 循环结构循环结构 for循环循环 while循环循环v 选择结构选择结构 if结构结构 switch结构结构 try/catch结构结构 v 其他流程控制其他流程控制 break语句语句 continue语句语句 return语句语句 try 语句组1 catch 语句组2 end【例】解Lorenz方程-大气对流模型()xxyyxzrxyzxybz 112322331223( )8 ( )/3( )( )( )10( ) 10( )( )( )( )28( )( )x tx tx t x tx tx tx tx tx t x t

14、x tx t function xdot=lorenzeq(t,x)xdot=-8/3*x(1)+x(2)*x(3); -10*x(2)+10*x(3); -x(1)*x(2)+28*x(2)-x(3);线性规划问题的数学模型v 线性规划问题的数学描述线性规划问题的数学描述 v 或 其中其中 C 为为n维行向量维行向量 A 为为mn维矩阵维矩阵 b 为为m维列向量维列向量 X 为为n维列向量维列向量njxmibxatsxczjnjijijnjjj,.,2 , 10),.,2 , 1(),(.max(min)11 0),(.max(min) XbAXtsCXz线性规划问题的MATLAB求解 v

15、MATLAB中求解v 线性规划问题的v 标准形式 MATLAB标准型和教科书中讲解有所不同,标准型和教科书中讲解有所不同, 极小化的目标函数极小化的目标函数z 线性规划问题具有不等式约束线性规划问题具有不等式约束m1个,等式约束个,等式约束m2个个 f、x、lb 和和ub 均为均为n维列向量,维列向量,b为为m1维列向量,维列向量,beq为为m2维列向维列向量,量,A为为m1n维矩阵,维矩阵,Aeq为为m2n维矩阵维矩阵ubxlbbxAbxAtsxfzeqeqT .min 注意事项注意事项 MATLAB标准型是对目标函数标准型是对目标函数求极小求极小,如果遇到是对目标函数求,如果遇到是对目标函

16、数求极大的问题,在使用极大的问题,在使用MATLAB求解时,需要在函数前面加一个负求解时,需要在函数前面加一个负号转化为对目标函数求极小的问题;号转化为对目标函数求极小的问题; MATLAB标准型中的标准型中的不等式约束形式为不等式约束形式为“”,如果在线性规划问,如果在线性规划问题中出现题中出现“”形式的不等式约束,则我们需要在两边乘以形式的不等式约束,则我们需要在两边乘以(-1)使使其转化为其转化为MATLAB中的中的“”形式。如果在线性规划问题中出现了形式。如果在线性规划问题中出现了“”的约束形式,则我们需要通过添加松弛变量使得不的约束形式,则我们需要通过添加松弛变量使得不等式约束变为等

17、式约束等式约束变为等式约束v 将问题转化为MATLAB标准型原问题是对目标函数求极大,故添加负号使目标变为:原问题是对目标函数求极大,故添加负号使目标变为:min z=-4x1+2x2-x3原问题中存在原问题中存在“”的约束条件,故添加负号使其变为的约束条件,故添加负号使其变为 : 8x1-2x2+2x3 -8将约束整理为矩阵形式将约束整理为矩阵形式用用MATLAB表达则为表达则为f=-4; 2; -1;%将目标函数转化为求极小将目标函数转化为求极小A=2 -1 1; 8 -2 2; b=12; -8; %不等式约束系数矩阵不等式约束系数矩阵Aeq=-2 0 1; 1 1 0;beq=3; 7

18、;%等式约束系数矩阵等式约束系数矩阵lb=0; 0; 0;ub=Inf; Inf; Inf %边界约束边界约束 0,7328228122.24max3212131321321321xxxxxxxxxxxxxtsxxxz 73011102812228112eqeqbAbA v 函数调用格式 MATLAB优化工具箱中求解线性规划问题的函数为优化工具箱中求解线性规划问题的函数为 linprog() x = linprog(f, A, b) x = linprog(f, A, b, Aeq, beq) x = linprog(f, A, b, Aeq, beq, lb, ub) x = linprog

19、(f, A, b, Aeq, beq, lb, ub, x0) x = linprog(f, A, b, Aeq, beq, lb, ub, x0, options) x = linprog(problem) x, fval = linprog(.) x, fval, exitflag = linprog(.) x, fval, exitflag, output = linprog(.) x, fval, exitflag, output, lambda = linprog(.) v 输入参数 MATLAB工具箱中的工具箱中的linprog函数在求解线性规划问题时,提供的参数为:函数在求解线性

20、规划问题时,提供的参数为:模模型参数、初始解参数和算法控制参数型参数、初始解参数和算法控制参数。 模型参数模型参数x、c、lb、ub、b、beq、A和和Aeq在在MATLAB标准型中已经介绍了其具体标准型中已经介绍了其具体物理意义和获得方法物理意义和获得方法 x0为线性规划问题的为线性规划问题的初始解初始解,该设置仅在中型规模算法中有效,而在默认的大型规,该设置仅在中型规模算法中有效,而在默认的大型规模算法和单纯形算法中,模算法和单纯形算法中,MATLAB将忽略一切初始解。将忽略一切初始解。 options为包含为包含算法控制参数算法控制参数的结构变量,我们可以通过的结构变量,我们可以通过op

21、timset命令对这些具体命令对这些具体的控制参数进行设置,例如下述格式的控制参数进行设置,例如下述格式 options = optimset(param1,value1,param2,value2,.) 该命令格式创建一组控制参数结构变量该命令格式创建一组控制参数结构变量options,将参数的具体值赋给单引号之间,将参数的具体值赋给单引号之间的参数,任何未被指定的参数将被赋值为的参数,任何未被指定的参数将被赋值为,参数值为,参数值为的具体的含义是将该组控的具体的含义是将该组控制参数传递给优化函数时将使用制参数传递给优化函数时将使用MATLAB提供的默认值提供的默认值 在线性规划问题中可以用

22、到的设置参数如下一页的表所示在线性规划问题中可以用到的设置参数如下一页的表所示 参数设置 Diagnostics设置是否显示函数优化中的诊断信息,可以选择on或者off(默认值),该功能主要显示一些退出信息,即linprog函数运算终止的原因Display设置显示信息的级别,当该参数值为off时 ,不显示任何输出信息;当参数值为iter时,将显示每一步迭代的输出信息,iter参数值仅对大型规模算法和中型规模的单纯形算法有效;当参数值为final时,仅显示最终的输出信息Simplex当该参数值为on时,函数采用单纯形算法LargeScale设置是否采用大型规模算法,当参数值为on(默认值)时,使

23、用大型规模算法参数名称;当参数值为off时,使用中型规模算法MaxIter算法运行中的最大迭代次数,对于大型规模算法,默认值为85,对于单纯形算法,其默认值为10*设计变量的个数,对于中型有效集算法为10*max(设计变量的个数,不等式约束的个数+边界约束的个数)TolFun函数计算终止的误差限,对于大型规模算法其默认值为1e-8,该控制参数对于中型规模的有效集算法无效。 v 输出参数 linprog函数返回的输出参数有x、fval、exitflag、lambda和output。 输出参数x为线性规划问题的最优解 输出参数fval为线性规划问题在最优解x处的函数值 输出参数exitflag返回

24、的是优化函数计算终止时的状态指示,说明算法终止的原因,其取值和其代表的具体原因如表所示 值物理意义1已经收敛到解x0已经达到最大迭代次数限制options.MaxIter-2没有找到问题的可行点-3问题无有限最优解-4在算法执行过程中遇到了NaN值-5原线性规划问题和其对偶问题均不可行-7搜索方向变化太小,无法进一步获得更优解,说明原线性规划问题或者约束条件是病态的 v 输出参数 输出参数output是一个返回优化过程中相关信息的结构变量,其属性如表所示 输出参数lambda是返回线性规划问题最优解x处的拉格朗日乘子的一个结构变量,其总维数等于约束条件的个数,其非零分量对应于起作用的约束条件,

25、其属性如表所示。 属性名称属性含义output.iterations优化过程的实际迭代次数output.algorithm优化过程中所采用的具体算法output.cgiterations0(仅用于大型规模算法,为了后向兼容性而设置的参数)output.message退出信息属性名称属性含义ineqlin线性不等式约束的拉格朗日乘子eqlin线性等式约束的拉格朗日乘子upper上界约束的拉格朗日乘子lower下界约束的拉格朗日乘子 v 函数命令详解 x = linprog(f, A, b) 该函数调用格式求解线性规划问题该函数调用格式求解线性规划问题 x = linprog(f, A, b, A

26、eq, beq) 该函数调用格式求解线性规划问题该函数调用格式求解线性规划问题 即该函数调用格式解决的是既含有线性等式约束,又含有线性不等式约束的线性规划问题,即该函数调用格式解决的是既含有线性等式约束,又含有线性不等式约束的线性规划问题,如果在线性规划问题中无线性不等式约束,则可以设如果在线性规划问题中无线性不等式约束,则可以设A=以及以及b= bAxtsxfzT.min eqeqTbxAbAxtsxfz.min v 函数命令详解 x = linprog(f, A, b, Aeq, beq, lb, ub) 该函数调用格式求解线性规划问题该函数调用格式求解线性规划问题 即在线性规划问题的求解

27、过程中进一步考虑了对决策变量的约束,其中即在线性规划问题的求解过程中进一步考虑了对决策变量的约束,其中lb和和ub均是和决策变量维数相同的列向量,如果对决策变量没有上界约束,可以设置均是和决策变量维数相同的列向量,如果对决策变量没有上界约束,可以设置ub(i) = Inf,如果没有下界约束则可以设置,如果没有下界约束则可以设置lb(i) = -Inf,和,和(2)类似,如果问类似,如果问题中没有等式约束,则可以设题中没有等式约束,则可以设Aeq=以及以及beq= ubxlbbxAbAxtsxfzeqeqT.min v 命令详解 x = linprog(c,A,b,Aeq,beq,lb,ub,x

28、0) 在前面调用方法的基础上设置线性规划问题求解的初始解为在前面调用方法的基础上设置线性规划问题求解的初始解为x0,该参数仅在使用有效,该参数仅在使用有效集算法时生效,否则当使用默认的内点算法时,将忽略任何初始点,即参数无效。集算法时生效,否则当使用默认的内点算法时,将忽略任何初始点,即参数无效。 x = linprog(c,A,b,Aeq,beq,lb,ub,x0,options) 用用options指定的优化参数进行最小化。可以使用指定的优化参数进行最小化。可以使用optimset来设置这些参数来设置这些参数 x,fval = linprog(.) 在优化计算结束之时返回线性规划问题在解在

29、优化计算结束之时返回线性规划问题在解x处的目标函数值处的目标函数值fval。 x,fval,exitflag = linprog(.) 在优化计算结束之时返回在优化计算结束之时返回exitflag值,描述函数计算的退出条件值,描述函数计算的退出条件。 x,fval,exitflag,output = linprog(.) 在优化计算结束之时返回返回结构变量在优化计算结束之时返回返回结构变量output x,fval,exitflag,output,lambda = linprog(.) 在优化计算结束之时返回线性规划问题最优解在优化计算结束之时返回线性规划问题最优解x处的拉格朗日乘子处的拉格朗

30、日乘子lambda例题1v 用MATLAB求解线性规划问题f=-1; -1; %目标函数,为转化为极小,故取目标函数中设计变量的相反数目标函数,为转化为极小,故取目标函数中设计变量的相反数A=1 -2; 1 2;%线性不等式约束线性不等式约束b=4; 8;lb=0; 0; %边界约束,由于无上界,故设置边界约束,由于无上界,故设置ub=Inf;Inf;ub=Inf; Inf;x, fval=linprog(f, A, b, , , lb, ub)Optimization terminated.x = 6.0000 1.0000fval = -7.0000 0,8242.max21212121x

31、xxxxxtsxxz例题2v 用MATLAB求解线性规划问题f=-1; -3; 1; %目标函数,为转化为极小,故取目标函数中设计变量的相反目标函数,为转化为极小,故取目标函数中设计变量的相反数数Aeq=1 1 2; -1 2 1; %线性等式约束线性等式约束beq=4; 4;lb=0; 0; 0; %设计变量的边界约束,由于无上界,故设置设计变量的边界约束,由于无上界,故设置ub=Inf;Inf;Infub=Inf; Inf; Inf;x, fval, exitflag=linprog(f, , , Aeq, beq, lb, ub)Optimization terminated.x = 1

32、.3333 2.6667 0.0000fval = -9.3333exitflag = 1 )3 , 2 , 1(04242.3max321321321jxxxxxxxtsxxxzj例题3v 用MATLAB求解线性规划问题f=-3; 1; 1;A=1 -2 1; 4 -1 -2;%线性不等式约束线性不等式约束b=11; -3;Aeq=-2 0 1;%线性等式约束线性等式约束beq=1;lb=0; 0; 0;%变量的边界约束,由于无上界,故设置变量的边界约束,由于无上界,故设置ub=Inf;Inf;Infub=Inf; Inf; Inf;x, fval, exitflag, output, la

33、mbda=linprog(f, A, b, Aeq, beq, lb, ub)Optimization terminated.x = 4.0000 1.0000 9.0000fval = -2.0000output = exitflag = 1 )3 , 2 , 1(012324112.3max31321321321jxxxxxxxxxtsxxxzjvoutput = v iterations: 6v algorithm: large-scale: interior pointv cgiterations: 0v message: Optimization terminated.vlambda

34、 = v ineqlin: 2x1 doublev eqlin: -0.6667v upper: 3x1 doublev lower: 3x1 double0-1规划问题v MATLAB中求解v 0-1规划问题的v 标准形式v bintprog的调用格式 x = bintprog(f) x = bintprog(f, A, b) x = bintprog(f, A, b, Aeq, beq) x = bintprog(f, A, b, Aeq, beq, x0) x = bintprog(f, A, b, Aeq, beq, x0, options) x, fval = bintprog(.)

35、 x, fval, exitflag = bintprog(.) x, fval, exitflag, output = bintprog(.)1,0.min xbxAbxAtsxfzeqeqT线性二次规划问题v MATLAB中求解v 线性二次规划问v 题的标准形式v 函数调用格式:v x = quadprog(H, f, A, b) v x = quadprog(H, f, A, b, Aeq, beq) v x = quadprog(H, f, A, b, Aeq, beq, lb, ub) v x = quadprog(H, f, A, b, Aeq, beq, lb, ub, x0)

36、v x = quadprog(H, f, A, b, Aeq, beq, lb, ub, x0, options) v x, fval = quadprog(.) v x, fval, exitflag = quadprog(.) v x, fval, exitflag, output = quadprog(.) v x, fval, exitflag, output, lambda = quadprog(.) ubXlbbXAbXAtsXfHXXzeqeqTT .21min 线性目标规划问题 线性目标规划的MATLAB求解 输入输出参数v 输入参数中,fun为目标函数,x0是求解的初始值,g

37、oal是目标函数的期 望值,nonlcon是非线性约束函数,weight是目标权重。v fun:最小化的目标函数,fun可以是一个在M函数中定义的函数句柄;v Weight:可以控制低于或超过fgoalattain函数指定目标的相对程度。需要注意的是,如果将weight向量中的任一元素设置为0时,则算法将把对应的目标约束当做是硬约束来处理;当设置weight为不同的数值时,fgoalattain将对目标函数采取不同的处理方式:v (1) 当权重weight设置为正时,fgoalattain函数则试图使目标函数值小于期望值;v (2) 当权重weight设置为负时;fgoalattain函数则试图使目标函数值大于期望值;v (3) 当需要目标函数值尽可能等于期望值时,则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论