应用MATLAB工具箱求解规划问题

上传人:无*** 文档编号:45743833 上传时间:2021-12-08 格式:DOC 页数:11 大小:113.50KB
收藏 版权申诉 举报 下载
应用MATLAB工具箱求解规划问题_第1页
第1页 / 共11页
应用MATLAB工具箱求解规划问题_第2页
第2页 / 共11页
应用MATLAB工具箱求解规划问题_第3页
第3页 / 共11页
资源描述:

《应用MATLAB工具箱求解规划问题》由会员分享,可在线阅读,更多相关《应用MATLAB工具箱求解规划问题(11页珍藏版)》请在装配图网上搜索。

1、应用MATLAB优化工具箱求解规划问题如今,规划类问题是常见的数学建模问题,离散系统的优化问题一般都可以通过规划模型来求解。用MATLAB求解规划问题,可以避免手工的烦琐计算,大大提高工作效率和结果的准确性。MATLAB是一种应用于数学计算及计算结果可视化处理的面向对象的高性能计算机语言,它以矩阵和向量为基本数据单位,从而提高程序的向量化程度,提高计算效率,尤其适合于线性规划、整数规划、多元规划、二元规划类问题的算法编写,以及数据拟合、参数估计、插值等数据处理法。利用MATLAB提供的强大的规划模型求解命令,可以简单快速地得到所要的结果。本文主要对线性规划、非线性规划、整数规划、单目标约束规划

2、以及多目标规划等规划问题在MATLAB中的实现做比较详细的讲解. 线性规划问题线性规划是一种优化方法,MATLAB优化工具箱中有现成函数linprog对标准型LP问题求解。线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB中线性规划的标准型为: Min fx 其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。其他形式的线性规划问题都可经过适当变化化为以上标准型。线性规划是一种优化方法,MATLAB优化工具箱中有现成函数linprog对标准型LP问题求解。在MATLAB指令窗口运行help linprog可以看到所有的函数调用形式,如下: x = linprog(f,A,

3、b) %求min fx ;s.t. 线性规划的最优解x = linprog(f,A,b,Aeq,beq) %等式约束,若没有不等式约束,则A=,b=。若没有等式约束,则Aeq=,beq=x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定优化参数进行最小化x,fval = linprog(.) %返回目标函数最优值,即fval= fxx,lambda,exitflag =

4、 linprog(.) % lambda为解x的Lagrange乘子x,lambda,exitflag,output = linprog(.) % exitflag为终止迭代的条件x,fval,exitflag,output,lambda = linprog(.) % output为输出优化信息exitflag描述函数计算的退出条件:若exitflag0表示函数收敛于解x,exitflag=0表示目标达到函数估值或迭代的最大次数,exitflag0表示函数不收敛于解x;lambda返回x处的拉个朗日乘子:lambda.lower 表示下界lb,lambda.upper表示上界ub,lambda

5、.ineqlin表示线性不等式约束,lambda.eqlin表示线性等式约束,lambda中的非0元素表示对应的约束是有效约束;output返回优化信息:output.iterations表示迭代次数,output.algorithm表示使用的运算规则,output.cgiterations表示PCG迭代次数。非线性规划 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。简记为(NP),NP问题及其相关问题分为两类:无约束规划和约束规划.可概括为一般形式是: 其中,.在MATLAB中非线性规划的数学模型可写成以下形式: 其中:x、b、beq、lb、ub是向量,A、Aeq

6、为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)是非线性函数。无约束规划 无约束NLP方法是确定下列函数式表示的无约束变量函数极小值的一种方法: 这里, f(x)为一标量目标函数.解决这个问题可由两个函数实现,即fminunc函数和fminsearch函数,其中fminunc函数基于梯度搜索法实现,而fminsearch函数基于直接搜索法实现。调用fminunc的格式如下:x = fminunc(fun,x0) %参数x0表示x的起始值x = fminunc(fun,x0,options) %options为optimset定义的参数赋值,o

7、ptions参数带有空矩阵符号表示用其默认值x,fval = fminunc(.) %fval最优点x处的函数值x,fval,exitflag = fminunc(.) % exitflag为终止迭代的条件,与上同。x,fval,exitflag,output = fminunc(.) %output为输出优化信息x,fval,exitflag,output,grad = fminunc(.) % grad为函数在解x处的梯度值x,fval,exitflag,output,grad,hessian = fminunc(.) %目标函数在解x处的海赛值 调用fminsearch的命令如下:x =

8、 fminsearch(fun,x0)x = fminsearch(fun,x0,options)x,fval = fminsearch(.)x,fval,exitflag = fminsearch(.)x,fval,exitflag,output = fminsearch(.) 其中各个参数的定义与fminunc一致.约束规划(1)单变量约束规划单变量约束规划是对分布于固定区间上的单变量目标函数求最优解的一种方法.问题描述如下: s.t. 解决这个问题由MATLAB中的fminbnd函数实现:x = fminbnd(fun,x1,x2) %参数x1,x2为x所属的区间范围x = fminbn

9、d(fun,x1,x2,options)x,fval = fminbnd(.)x,fval,exitflag = fminbnd(.)x,fval,exitflag,output = fminbnd(.)其中各个参数的定义与fminunc一致多变量约束规划多变量约束规划是解决非线性多变量约束问题的一种优化方法,MATLAB最优化工具箱中提供了fmincon函数,专门用于求解各种约束下地最优化问题。其可做如下描述:其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)是非线性函数。该函数的调用格式是:

10、x = fmincon(fun,x0,A,b) %fun是用M文件定义的函数f(x)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,fval = fmincon(.) x,fval,exitflag = fmincon(.) x,fval,exitflag,output = fmincon(.) x,f

11、val,exitflag,output,lambda = fmincon(.) x,fval,exitflag,output,lambda,grad = fmincon(.) %grad表示目标函数在x处的梯度x,fval,exitflag,output,lambda,grad,hessian = fmincon(.) %hessian表示目标函数在x处的海赛(Hessiab)值。其中:各个参数的定义与线性规划函数linprog一致.Fmincon函数可以处理很多非线性规划问题的求解。但是,注意到搜索函数需给出初值,这样就导致对不同初值可能得出不同的搜索结果,很难得出全局最优解,所以这种寻优方

12、式不一定能得出满意的结果。二次规划问题 二次规划QP指一类特殊的约束优化问题,其目标函数为二次多项式,约束条件为线性函数,即: 其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量在MATLAB工具箱中可用函数quadprog求解该问题,函数quadprog的调用格式为:x = quadprog(H,f,A,b) %其中H,f,A,b为标准形中的参数x = quadprog(H,f,A,b,Aeq,beq) x = quadprog(H,f,A,b,Aeq,beq,lb,ub) x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) x = quadprog(

13、H,f,A,b,Aeq,beq,lb,ub,x0,options) x,fval = quadprog(.) x,fval,exitflag = quadprog(.) x,fval,exitflag,output = quadprog(.) x,fval,exitflag,output,lambda = quadprog(.)其中:各个参数的定义与线性规划函数linprog一致.半无穷约束规划半无穷约束规划是对下述优化问题求解: 其中:x、b、beq、lb、ub都是向量;A、Aeq是矩阵;C(x)、Ceq(x)、是返回向量的函数,f(x)为目标函数;f(x)、C(x)、Ceq(x)是非线性函

14、数;为半无限约束,通常是长度为2的向量。在MATLAB工具箱中可用函数fseminf求解该问题,函数fseminf的调用格式为: x = fseminf(fun,x0,ntheta,seminfcon) %ntheta为半无穷约束条件的个数x = fseminf(fun,x0,ntheta,seminfcon,A,b) %seminfcon用来确定非线性约束向量C和Ceq以及半无限约束的向量K1,K2,Knx = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq) x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,be

15、q,lb,ub) x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options) x,fval = fseminf(.) x,fval,exitflag = fseminf(.) x,fval,exitflag,output = fseminf(.) x,fval,exitflag,output,lambda = fseminf(.)其中:各个参数的定义与线性规划函数linprog一致多目标规划多目标规划指设计目标多于一个的优化问题,它的最终解将根据决策者的选择从解集中确定.MATLAB用于求解多目标优化问题的函数有两个fminim

16、ax和fgoalattain. (1).函数fminimax主要求解极小化极大问题,其极小化极大问题的标准形式为: 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)和F(x)是返回向量的函数,F(x)、C(x)、Ceq(x)可以是非线性函数。函数fminimax的调用格式为:x = fminimax(fun,x0)x = fminimax(fun,x0,A,b)x = fminimax(fun,x0,A,b,Aeq,beq)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)x = fminimax(fun,x0,A,b,Aeq,beq,

17、lb,ub,nonlcon)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval,maxfval = fminimax()x,fval,maxfval,exitflag = fminimax()x,fval,maxfval,exitflag,output = fminimax()x,fval,maxfval,exitflag,output,lambda = fminimax()其中:maxfval为目标函数在x处的最大值;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的值C和Ceq,通过指定函数

18、柄来使用;其它各个参数的定义与函数linprog一致。(2) 函数fgoalattain用于求解下述多目标优化问题: 其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用户设计的与目标函数相应的目标函数值向量;为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。该函数的调用格式为:x = fgoalattain(fun,x0,goal,weight)x = fgoalattain(fun,

19、x0,goal,weight,A,b)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval = fgoalattain()x,fval,attainfactor = fgoalat

20、tain()x,fval,attainfactor,exitflag = fgoalattain()x,fval,attainfactor,exitflag,output = fgoalattain()x,fval,attainfactor,exitflag,output,lambda = fgoalattain()其中:attainfactor为解x处的目标规划因子;其它各个参数的定义与函数fminimax一致。整数规划一般地,整数规划模型可表示为: 在MATLAB优化工具箱中函数bintprog用于求解以下0-1整数规划的问题: 其中:f、b、beq是向量,A、Aeq为矩阵.该函数的调用格

21、式为: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(.)x,fval, exitflag = bintprog(.)x, fval, exitflag, output = bintprog(.)其中:各个参数的定义与函数linprog一致。MATLAB虽然提供了强大的优化工具箱,但在整数规划方面,只提供了bintprog这个函数以求解0-1整数规划,而对于一般的整数规划模型无法直接用MATLAB的内部函数,只能自己编程实现,我们一般情况只是用最简单的分支定界法和割平面法进行MATLAB编程实现。总结根据以上主要对线性规划、非线性规划、整数规划、单目标约束规划以及多目标规划等规划问题在MATLAB中的实现做比较详细的讲解,用MATLAB求解规划问题,可以避免手工的烦琐计算,大大提高工作效率和结果的准确性。 (注:可编辑下载,若有不当之处,请指正,谢谢!)

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!