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

上传人:ba****u 文档编号:182239583 上传时间:2023-01-21 格式:DOCX 页数:7 大小:27.18KB
收藏 版权申诉 举报 下载
应用MATLAB工具箱求解规划问题_第1页
第1页 / 共7页
应用MATLAB工具箱求解规划问题_第2页
第2页 / 共7页
应用MATLAB工具箱求解规划问题_第3页
第3页 / 共7页
资源描述:

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

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

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

3、窗 口运行 help linprog 可以看到所有的函数调用形式,如下:x = linprog(f,A,b)%求 min fx ; s.t. A - x b 线性规划的最优解x = linprog(f,A,b,Aeq,beq)%等式约束 Aeq - x = beq,若没有不等式约束,则 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,

4、lambda,exitflag = linprog(.)x,lambda,exitflag,output = linprog(.)x,fval,exitflag,output,lambda = linprog(.)%指定x的范围lb x 0表示函数收敛于解x,exitflag=0表示 目标达到函数估值或迭代的最大次数,exitflagvO表示函数不收敛于解x;lambda返回x处的拉个朗日乘子:lambda.lower表示下界lb,lambda.upper表示上界 ub, lambda.ineqlin表示线性不等式约束,lambda.eqlin表示线性等式约束,lambda中的非0 元素表示对

5、应的约束是有效约束;output返回优化信息:output.iterations表示迭代次数,output.algorithm 表示使用的运算规则,output.cgiterations表示PCG迭代次数。非线性规划 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。简 记为(NP), NP问题及其相关问题分为两类:无约束规划和约束规划.可概括为一般形式是: min f ( x)h (x) 0, j 二 1,2,,qst jg (x)二 0, i 二 1,2,pi其中,x二x ,x,x T .在MATLAB中非线性规划的数学模型可写成以下形式:1 2 n min f (

6、 x)A - x BAeq - x = beqs.t C (x) 0Ceq(x) = 0其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x) 为目标函数,f(x)、C(x)、Ceq(x)是非线性函数。无约束规划无约束NLP方法是确定下列函数式表示的无约束变量函数极小值的一种方法:min f(x)x这里x = x ,x,x t , f(x)为一标量目标函数.解决这个问题可由两个函数实现,即fminunc 1 2 n函数和fminsearch函数,其中fminunc函数基于梯度搜索法实现,而fminsearch函数基于直 接搜索法实现。调用 f

7、minunc 的格式如下:x = fminunc(fun,x0)x = fminunc(fun,x0,options)%参数x0表示x的起始值%options 为 optimset 定义的参数赋值, options 参数带 有空矩阵符号表示用其默认值x,fval = fminunc(.)x,fval,exitflag = fminunc(.)%fval 最优点 x 处的函数值% exitflag 为终止迭代的条件,与上同。x,fval,exitflag,output = fminunc(.) %output 为输出优化信息x,fval,exitflag,output,grad = fminun

8、c(.) % 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)单变量约束规划 单变量约束规划是对分布

9、于固定区间上的单变量目标函数求最优解 的一种方法.问题描述如下: min f(x)xS.t. X1 x x2解决这个问题由MATLAB中的fminbnd函数实现:x = fminbnd(fun,xl,x2)%参数xl,x2为x所属的区间范围x = fminbnd(fun,x1,x2,options)x,fval = fminbnd(.)x,fval,exitflag = fminbnd(.)x,fval,exitflag,output = fminbnd(.)其中各个参数的定义与fminunc 致多变量约束规划多变量约束规划是解决非线性多变量约束问题的一种优化方法,MATLAB最优化工具 箱中

10、提供了一fmincon函数,专门用于求解各种约束下地最优化问题。其可做如下描述: min f ( x)A - x BAeq-x = beqs.t. C (x) 0Ceq(x) = 0其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x) 为目标函数,f(x)、C(x)、Ceq(x)是非线性函数。该函数的调用格式是:x = fmincon(fun,xO,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 =

11、 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,exitfl

12、ag,output,lambda,grad,hessian = fmincon(.) %hessian 表示目标函数在 x 处 的海赛(Hessiab)值。其中:各个参数的定义与线性规划函数linprog 一致.Fmincon函数可以处理很多非线性规划问题的求解。但是,注意到搜索函数需给出初值, 这样就导致对不同初值可能得出不同的搜索结果,很难得出全局最优解,所以这种寻优方式不一定能得出满意的结果。二次规划问题二次规划 QP 指一类特殊的约束优化问题,其目标函数为二次多项式,约束条件为线性 函数,即:min X H x + f x2” A - x bs.t Aeq - x = beqlb x

13、ub其中,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,fva

14、l,exitflag = quadprog(.)x,fval,exitflag,output = quadprog(.)x,fval,exitflag,output,lambda = quadprog(.)其中:各个参数的定义与线性规划函数linprog 一致.半无穷约束规划 半无穷约束规划是对下述优化问题求解:min f ( x)xC(x) 0Ceq( x) = 0A - x bAeq-x = beqs.t彳K (x, w ) 0K (x, w ) 02 2K (x, w ) 0nn其中:x、b、beq、lb、ub 都是向量;A、Aeq 是矩阵;C(x)、Ceq(x)、Ki (x, wi)是

15、返回向 量的函数,f(x)为目标函数;f(x)、C(x)、Ceq(x)是非线性函数;Ki (x, wi)为半无限约束, w w ,w通常是长度为2的向量。2n在 MATLAB 工具箱中可用函数 fseminf 求解该问题,函数 fseminf 的调用格式为:x = fseminf(fun,xO,ntheta,seminfcon)%ntheta 为半无穷约束条件的个数x = fseminf(fun,xO,ntheta,seminfcon,A,b) %seminfcon 用来确定非线性约束向量 C 和 Ceq 以及半无限约束的向量K1, K2,,K12nx = fseminf(fun,x0,nth

16、eta,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 一致多目标规划 多

17、目标规划指设计目标多于一个的优化问题,它的最终解将根据决策者的选择从解集中确定.MATLAB用于求解多目标优化问题的函数有两个fminimax和fgoalattain.(1).函数fminimax主要求解极小化极大问题,其极小化极大问题的标准形式为:min maxF ( x)x FiiC (x) 0Ceq(x) = 0s.t A - x bAeq - x = beq lb x ub其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)和F(x)是返回向量的 函数,F(x)、C(x)、Ceq(x)可以是非线性函数。函数fminimax的调用格式为:x = fminima

18、x(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 =

19、 fminimax(.)x,fval,maxfval,exitflag,output,lambda = fminimax(.)其中:maxfval为目标函数在x处的最大值;nonlcon的作用是通过接受的向量x来计算非线 性不等约束C(x) 0和等式约束Ceq (x) = 0分别在x处的值C和Ceq,通过指定函数柄来使 用;其它各个参数的定义与函数linprog 一致。(2)函数fgoalattain用于求解下述多目标优化问题:min imize Yx, YF(x) - weight -y goalC (x) 0Ceq(x) = 0 st A-xbAeq - x = beq lb x ub其中

20、:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的 函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目 标函数与用户定义的目标函数值的接近程度;oal为用户设计的与目标函数相应的目标函数 值向量;Y为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。该函数的调用格式为:x = fgoalattain(fun,x0,goal,weight)x = fgoalattain(fun,x0,goal,weight,A,b)x = fgoalattain(fun,x0,goal,weight,A,b,

21、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,fva

22、l,attainfactor,exitflag,output = fgoalattain(.)x,fval,attainfactor,exitflag,output,lambda = fgoalattain(.)其中:attainfactor为解x处的目标规划因子;其它各个参数的定义与函数fminimax 致。整数规划一般地,整数规划模型可表示为min z =工 c xjjj=1工a x b ,i = 1,2,,mij j i1j=1工a x = b ,i = m +1,mij j i1在 MATLAB 优化工具箱中函数 bintprog 用于求解以下0-1 整数规划的问题:min imize

23、 f - xxA - x bs.t Aeq - x 二 beq x 二 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 求解规划问题,可以避免 手工的烦琐计算,大大提高工作效率和结果的准确性。

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