实验三十用MATLAB求解线性规划问题一、实验目的了解MATLAB的优化工具箱,能利用MATLAB求解线性规划问题。二、相关知识线性规划是运筹学中研究得比较早,理论上已趋于成熟,在方法上非常有效,并且应用广泛的一个重要分支。线性规划的数学模型有各种不同的形式,其一般形式可以写为:目标函数为,约束条件为:nnxfxfxfz2211minsnsnssnnbxaxaxabxaxaxa221111212111sntnttnndxcxcxcdxcxcxc2211112121110,,,21nxxx二、相关知识这里称为目标函数,称为价值系数,称为价值向量,为求解的变量,由系数组成的矩阵snsnssnnbxaxaxabxaxaxa221111212111sntnttnndxcxcxcdxcxcxc2211112121110,,,21nxxxnnxfxfxfz2211jfTnffff),,,(21jxijamnmnaaaaA1111这里称为目标函数,称为价值系数,称为价值向量,为求解的变量,由系数组成的矩阵称为不等式约束矩阵,由系数组成的矩阵称为等式约束矩阵,nnxfxfxfz2211jfTnffff),,,(21jxijamnmnaaaaA1111ijcsnsnccccC1111列向量和为右端向量,条件称为非负约束。一个满足约束条件的向量,称为可行解或可行点,所有可行点的集合称为可行区域,达到目标函数值最大的可行解称为该线性规划的最称为不等式约束矩阵,由系数组成的矩阵称为等式约束矩阵,ijcsnsnccccC1111Tnbbbb),,,(21Tndddd),,,(210jxTnxxxx),,,(21列向量和为右端向量,条件称为非负约束。一个满足约束条件的向量,称为可行解或可行点,所有可行点的集合称为可行区域,达到目标函数值最大的可行解称为该线性规划的最优解,相应的目标函数值称为最优目标函数值,简称最优值。求解线性规划问题已有一些成熟的方法,我们这里介绍利用MATLAB来求解线性规划问题的求解。Tnbbbb),,,(21Tndddd),,,(210jxTnxxxx),,,(21求解线性规划问题已有一些成熟的方法,我们这里介绍利用MATLAB来求解线性规划问题的求解。在MATLAB中有一个专门的函数linprog()来解决这类问题,我们知道,极值有最大和最小两种,但求优解,相应的目标函数值称为最优目标函数值,简称最优值。求解线性规划问题已有一些成熟的方法,我们这里介绍利用MATLAB来求解线性规划问题的求解。求解线性规划问题已有一些成熟的方法,我们这里介绍利用MATLAB来求解线性规划问题的求解。在MATLAB中有一个专门的函数linprog()来解决这类问题,我们知道,极值有最大和最小两种,但求的极大就是求的极小,因此在MATLAB中以求极小为标准形式,函数linprog()的具体格式如下:X=linprog(f,A,b)[X,fval,exitflag,ouyput,lamnda]=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options)这里X是问题的解向量,f是由目标函数的系数构成的向量,A是一个矩阵,b是一个向量,A,b和变量x={x1,x2,…,xn}一起,表示了线性规划中不等式约束条件,A,b是系数矩阵和右端向量。的极大就是求的极小,因此在MATLAB中以求极小为标准形式,函数linprog()的具体格式如下:X=linprog(f,A,b)[X,fval,exitflag,ouyput,lamnda]=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options)这里X是问题的解向量,f是由目标函数的系数构成的向量,A是一个矩阵,b是一个向量,A,b和变量x={x1,x2,…,xn}一起,表示了线性规划中不等式约束条件,A,b是系数矩阵和右端向量。Aeq和Beq表示了线性规划中等式约束条件中的系数矩阵和右端向量。LB和UB是约束变量的下界和上界向量,X0是给定的变量的初始值,options为控制规划过程的参数系列。返回值中fval是优化结束后得到的目标函数值。exitflag=0表示优化结果已经超过了函数的估计值或者已声明的最大迭代次数;exitflag0表示优化过程中变量收敛于解X,exitflag0表示不收敛。output有3个分量,iterations表示优化过程的迭代次数,Aeq和Beq表示了线性规划中等式约束条件中的系数矩阵和右端向量。LB和UB是约束变量的下界和上界向量,X0是给定的变量的初始值,options为控制规划过程的参数系列。返回值中fval是优化结束后得到的目标函数值。exitflag=0表示优化结果已经超过了函数的估计值或者已声明的最大迭代次数;exitflag0表示优化过程中变量收敛于解X,exitflag0表示不收敛。output有3个分量,iterations表示优化过程的迭代次数,cgiterations表示PCG迭代次数,algorithm表示优化所采用的运算规则。lambda有4个分量,ineqlin是线性不等式约束条件,eqlin是线性等式约束条件,upper是变量的上界约束条件,lower是变量的下界约束条件。cgiterations表示PCG迭代次数,algorithm表示优化所采用的运算规则。lambda有4个分量,ineqlin是线性不等式约束条件,eqlin是线性等式约束条件,upper是变量的上界约束条件,lower是变量的下界约束条件。它们的返回值分别表示相应的约束条件在约束条件在优化过程中是否有效。例1:某工厂生产A,B两种产品,所用原料均为甲、乙、丙三种:生产一件产品所需原料和所获利润以及库存原料情况如下所示:在该厂只有表中所列库存原料的情况下,如何安排A,B两种产品的生产数量可以获得最大利润?原料甲(公斤)原料乙(公斤)原料丙(公斤)利润(元)产品A8447000产品B68610000库存原料量380300220设生产A产品件,生产B产品件,为所获利润,我们将问题归结为如下的线性规划问题:接着写出MATLAB程序如下:clearf=-[7000,10000];A=[8,6;4,8;4,6];b=[380,300,220];[X,fval]=linprog(f,A,b)1x2xz12min{(700010000)}xx12121286380..4830046220xxstxxxx运行结果为:Optimizationterminatedsuccessfully.X=40.000010.0000fval=-3.8000e+005接着写出MATLAB程序如下:clearf=-[7000,10000];A=[8,6;4,8;4,6];b=[380,300,220];[X,fval]=linprog(f,A,b)运行结果为:Optimizationterminatedsuccessfully.X=40.000010.0000fval=-3.8000e+005例2:求解下面的线性规划问题:123min{546}xxx123123121232032442s.t.32300,0,0xxxxxxxxxxx解决上述问题的MATLAB程序为:clearf=-[5,4,6];A=[1,-2,1;3,2,4;3,2,0];b=[20,42,30];LB=[0;0;0];[X,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],LB)程序运行的结果为:Optimizationterminatedsuccessfully.X=0.000015.00003.0000fval=-78.0000exitflag=1output=iterations:6cgiterations:0algorithm:'lipsol'lambda=ineqlin:[3x1double]eqlin:[0x1double]upper:[3x1double]lower:[3x1double]在使用linprog()命令时,系统默认它的参数至少为3个,但如果我们需要给定第5个参数,则第4个参数也必须给出,否则系统无法认定给出的是第5个参数。遇到无法给出时,则用空矩阵“[]”替代。三、实验内容1.求解线性规划问题1234min()3285fxxxxx123412341234138236523s.t.733100xxxxxxxxxxxxxx2.求解线性规划问题3.某快餐店一周中每天需要不同数目的雇员,设周一至少人,周二至少人,周三至少人,周四至少人,周五至少人,周六至少人,周日至少人,又规定雇员需连续工作5天,每人每天的工资为元。问快餐店怎样聘用雇员才能满足需求,又能使总聘用费用最少?12345min()fxxxxxx3512524569422s.t.2290(1,2,3,4,5)ixxxxxxxxxi1a2a3a4a5a6a7aC提示:由于每个雇员需连续工作5天,故快餐店聘用的总人数不一定是每天聘用人数之和。我们定义周一开始工作的雇员数为,周日开始工作的雇员数为,则一周的聘用总费用为:由于除了周二和周三开始工作的雇员之外,其余的雇员都会在周一工作,所以周一至少应有人的约束应表示为:类似地可以得出其它的约束条件。1x7x)(7654321xxxxxxxCz1a176541axxxxx现给定元,人,人,人,人,人,人,人,请给出问题的数学模型,并用MATLAB来求解。4.完成实验报告。100C161a152a163a194a145a126a187a