资源描述:
《应用MATLAB工具箱求解规划问题.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、..应用MATLAB优化工具箱求解规划问题如今,规划类问题是常见的数学建模问题,离散系统的优化问题一般都可以通过规划模型来求解。用MATLAB求解规划问题,可以避免手工的烦琐计算,大大提高工作效率和结果的准确性。MATLAB是一种应用于数学计算及计算结果可视化处理的面向对象的高性能计算机语言,它以矩阵和向量为基本数据单位,从而提高程序的向量化程度,提高计算效率,尤其适合于线性规划、整数规划、多元规划、二元规划类问题的算法编写,以及数据拟合、参数估计、插值等数据处理法。利用MATLAB提供的强大的规划模型求解命令,可以简单快速地得到所要的结果。本文主要对线性
2、规划、非线性规划、整数规划、单目标约束规划以及多目标规划等规划问题在MATLAB中的实现做比较详细的讲解.线性规划问题线性规划是一种优化方法,MATLAB优化工具箱中有现成函数linprog对标准型LP问题求解。线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB中线性规划的标准型为:Minf’x其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。其他形式的线性规划问题都可经过适当变化化为以上标准型。线性规划是一种优化方法,MATLAB优化工具箱中有现成函数linprog对标准型LP问题求解。在MATLAB指令窗口运行helplinpr
3、og可以看到所有的函数调用形式,如下:x=linprog(f,A,b)%求minf’x;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]=linpro
4、g(...)%返回目标函数最优值,即fval=f’x[x,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表示函数不收
5、敛于解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问题及其相关
6、问题分为两类:无约束规划和约束规划.可概括为一般形式是:其中,.在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函数基于直接搜索法实现。调用
7、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,gr
8、ad]=fminunc(...)%grad为函数在解x处的梯度值[