欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

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

  • 资源ID:45743833       资源大小:113.50KB        全文页数:11页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

应用MATLAB优化工具箱求解规划问题如今,规划类问题是常见的数学建模问题,离散系统的优化问题一般都可以通过规划模型来求解。用MATLAB求解规划问题,可以避免手工的烦琐计算,大大提高工作效率和结果的准确性。MATLAB是一种应用于数学计算及计算结果可视化处理的面向对象的高性能计算机语言,它以矩阵和向量为基本数据单位,从而提高程序的向量化程度,提高计算效率,尤其适合于线性规划、整数规划、多元规划、二元规划类问题的算法编写,以及数据拟合、参数估计、插值等数据处理法。利用MATLAB提供的强大的规划模型求解命令,可以简单快速地得到所要的结果。本文主要对线性规划、非线性规划、整数规划、单目标约束规划以及多目标规划等规划问题在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,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 = linprog(.) % lambda为解x的Lagrange乘子x,lambda,exitflag,output = linprog(.) % exitflag为终止迭代的条件x,fval,exitflag,output,lambda = linprog(.) % output为输出优化信息exitflag描述函数计算的退出条件:若exitflag>0表示函数收敛于解x,exitflag=0表示目标达到函数估值或迭代的最大次数,exitflag<0表示函数不收敛于解x;lambda返回x处的拉个朗日乘子:lambda.lower 表示下界lb,lambda.upper表示上界ub,lambda.ineqlin表示线性不等式约束,lambda.eqlin表示线性等式约束,lambda中的非0元素表示对应的约束是有效约束;output返回优化信息:output.iterations表示迭代次数,output.algorithm表示使用的运算规则,output.cgiterations表示PCG迭代次数。非线性规划 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。简记为(NP),NP问题及其相关问题分为两类:无约束规划和约束规划.可概括为一般形式是: 其中,.在MATLAB中非线性规划的数学模型可写成以下形式: 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,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定义的参数赋值,options参数带有空矩阵符号表示用其默认值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 = 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 = fminbnd(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)是非线性函数。该函数的调用格式是: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,fval,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函数可以处理很多非线性规划问题的求解。但是,注意到搜索函数需给出初值,这样就导致对不同初值可能得出不同的搜索结果,很难得出全局最优解,所以这种寻优方式不一定能得出满意的结果。二次规划问题 二次规划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(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)是非线性函数;为半无限约束,通常是长度为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,beq,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用于求解多目标优化问题的函数有两个fminimax和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,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,通过指定函数柄来使用;其它各个参数的定义与函数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,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 = fgoalattain()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为矩阵.该函数的调用格式为: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求解规划问题,可以避免手工的烦琐计算,大大提高工作效率和结果的准确性。 (注:可编辑下载,若有不当之处,请指正,谢谢!)

注意事项

本文(应用MATLAB工具箱求解规划问题)为本站会员(无***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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