文档介绍:MATLAB中的线性规划问题
2004-9-19 21:59:42      阅读368次
 
 
MATLAB中的线性规划问题的标准形式描述如下:
Min z=fTX
.  b£AX
AeqX=beq
ub£X£lb
其中:f、X、b、beq、lb、ub为向量,A、Aeq为矩阵。
注意:1 本教材中标准形式的目标函数是求Max;
2 任何形式的线性规划问题都能够经过适当的变换化成上述的标准形式。
,求解线性规划问题的函数是linprog。
调用格式1:x=linprog(f,A,b)
说明:求Min b线性规划的最优解。£z=fTX,. AX
调用格式2:x=linprog(f,A,b,Aeq,beq)
说明:等式约束Aeq X = b,则A=[],b=[]。£beq,若没有不等式约束AX
调用格式3:x=linprog(f,A,b,Aeq,beq,lb,ub)
ub,若没有等式约束AeqX=beq,则Aeq=[],beq=[]。£X£说明:约束X:lb
调用格式4:x=linprog(f,A,b,Aeq,beq,lb,ub,x0)
说明:设置初值x0。该选项只适用于中型问题,默认时大型问题将忽略初值。
调用格式5:x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
说明:options为指定的优化参数,参数详情请查看optimset和optimget函数。
调用格式6:[x,fval]=linprog(…)
说明:返回目标函数最优值,即fval= fTX。
调用格式7:[x,lambda,exitflag]=linprog(…)
说明:lambda为解x的Lagrange乘子。若lambda=lower表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束。
调用格式8:[x,lambda,fval,exitflag]=linprog(…)
说明:exitflag为终止迭代的错误条件:若exitflag>0表示函数收敛于解x, exitflag=0,表示超过函数估值或迭代的最大数字,exitflag<0表示函数不收敛于解x。
根据问题规模的不同,linprog函数使用不同的算法:
 大型优化问题——采用的是LIPSOL法。该方法在迭代计算之前首先要进行一系列的预处理。l
 中型优化问题——采用的是投影法,就象quadprog函数的算法一样。Linprog函数使用的是一种活动集方法,是线性规划中单纯形的变种。它通过求解另外一个线性规划问题来找到初始可行解。
l
对于大型问题算法,算法的第一步涉及到一些约束条件的预处理问题。有些问题可能导致Linprog函数退出,并显示不可行的消息。
若Aeq参数中某行的所有元素都为零,但beq参数中对应的元素不为零,则显示以下退出信息:
exiting due to infeasibility: an all zero row in the constraint matrix does not have a zero in correspon