资源描述:
《数学规划模型的matlab求解.pdf》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数学规划模型的matlab求解数学规划模型是优化模型的一种,包括线性规划模型(目标函数和约束条件都是线性函数的优化问题);非线性规划模型(目标函数或者约束条件是非线性的函数);整数规划(决策变量是整数值得规划问题);多目标规划(具有多个目标函数的规划问题);目标规划(具有不同优先级的目标和偏差的规划问题)动态规划(求解多阶段决策问题的最优化方法)。数学规划模型相对比较好理解,关键是要能熟练地求出模型的解。以下是解线性规划模型的方法:1.线性规划问题线性规划问题的标准形式为:minf'*xsub.to:A*x
2、eq、lb、ub为向量,A、Aeq为矩阵。MATLAB中,线性规划问题(LinearProgramming)的求解使用的是函数linprog。函数linprog格式x=linprog(f,A,b)%求minf'*xsub.toA*x<=b线性规划的最优解。x=linprog(f,A,b,Aeq,beq)%等式约束,若没有不等式约束,则A=[],b=[]。x=linprog(f,A,b,Aeq,beq,lb,ub)%指定x的范围,若没有等式约束,则Aeq=[],beq=[]x=linprog(f,A,b,Aeq,beq,lb,ub
3、,x0)%设置初值x0x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)%options为指定的优化参数[x,fval]=linprog(…)%返回目标函数最优值,即fval=f'*x。[x,lambda,exitflag]=linprog(…)%lambda为解x的Lagrange乘子。[x,lambda,fval,exitflag]=linprog(…)%exitflag为终止迭代的错误条件。[x,fval,lambda,exitflag,output]=linprog(…)%output为关
4、于优化的一些信息说明若exitflag>0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag<0表示函数不收敛于解x;若lambda=lower表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数。2.非线
5、性规划问题利用函数fminbnd求有约束的一元函数的最小值格式x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,options)%options为指定优化参数选项[x,fval]=fminbnd(…)%fval为目标函数的最小值[x,fval,exitflag]=fminbnd(…)%xitflag为终止迭代的条件[x,fval,exitflag,output]=fminbnd(…)%output为优化信息命令利用函数fminsearch求无约束多元函数最小值函数fminsearch格式x=fmin
6、search(fun,x0)%x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄。x=fminsearch(fun,x0,options)%options查optimset[x,fval]=fminsearch(…)%最优点的函数值[x,fval,exitflag]=fminsearch(…)%exitflag与单变量情形一致[x,fval,exitflag,output]=fminsearch(…)%output与单变量情形一致注意:fminsearch采用了Nelder-Mead型简单搜寻法。命令利
7、用函数fminunc求多变量无约束函数最小值函数fminunc格式x=fminunc(fun,x0)%返回给定初始点x0的最小函数值点x=fminunc(fun,x0,options)%options为指定优化参数[x,fval]=fminunc(…)%fval最优点x处的函数值[x,fval,exitflag]=fminunc(…)%exitflag为终止迭代的条件,与上同。[x,fval,exitflag,output]=fminunc(…)%output为输出优化信息[x,fval,exitflag,output,grad
8、]=fminunc(…)%grad为函数在解x处的梯度值[x,fval,exitflag,output,grad,hessian]=fminunc(…)%目标函数在解x处的海赛(Hessian)值注意:当函数的阶数大于2时,使用fminunc比fminsearc