Matlab在线性规划中的使用.docx

上传人:小飞机 文档编号:3161242 上传时间:2023-03-11 格式:DOCX 页数:8 大小:40.33KB
返回 下载 相关 举报
Matlab在线性规划中的使用.docx_第1页
第1页 / 共8页
Matlab在线性规划中的使用.docx_第2页
第2页 / 共8页
Matlab在线性规划中的使用.docx_第3页
第3页 / 共8页
Matlab在线性规划中的使用.docx_第4页
第4页 / 共8页
Matlab在线性规划中的使用.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Matlab在线性规划中的使用.docx》由会员分享,可在线阅读,更多相关《Matlab在线性规划中的使用.docx(8页珍藏版)》请在三一办公上搜索。

1、Matlab在线性规划中的使用 优化问题及其数学模型 假设有一个问题,它有几个因素来决定,当这些因素处于某个状态时,可以使问题得到我们最想要的结果。优化问题就是寻求这个状态的过程。例如: 某工厂生产A,B两种产品,所用原料均为甲、乙、丙三种;生产一件产品所需原料和所获利润以及库存原料情况如下所示: 产品A 产品B 库存原料 原料甲 8 6 380 原料乙 4 8 300 原料丙 4 6 220 利润(元) 7000 10000 问题:在该厂只有库存原料甲380单位,原料乙300单位,原料丙220单位的情况下如何安排A,B两种产品的生产数量可以获得最大的利润? 设生产A中产品x1件,生产B中产品

2、x2件,z为所获得的利润,于是有关系式: z=7000x1+10000x2 我们称它为目标函数。生产的条件我们可以表示为: 8x1+6x2380 4x+8x300 124x1+6x2220我们把上面的不等式称为约束条件。 产品A的产量x1和B的产量x2是优化问题的变量。在满足约束条件的前提下使目标函数得到最优的值成为最优解。根据以上定义,也可以说优化运算是通过某种计算寻求最优解的过程。 以上这个用等式或不等式来表达我们要解决的问题的过程就是优化问题的建模过程。我们平时遇到的问题常常不是上面的这几个数学表达式就能表达得清清楚楚的,但是建立像上面类似的数学模型却是优化求解的第一步。优化问题常常表现

3、为在多约束条件下求某一函数的极值问题,例如上面的这个例子。 Matlab有一个优化工具箱,可以帮助我们方便的解决好这类问题。 优化工具箱 Matlab的优化工具箱有一些对普通非线性函数求解最小化或最大化的函数组成,另外还包括一些解决诸如线性规划等标准矩阵问题的函数。所有的优化函数都是用Matlab语言编写的m文件,我们可以通过在命令窗口里输入type function_name来查看这些函数。 优化工具箱的优化功能包括: 求无约束非线性最小化; 求有约束非线性最小化; 二次和线性规划问题; 非线性最小二乘法和曲线拟合问题; 非线性等式的求解; 约束线性最小二乘法; 稀疏和结构化大尺度问题。 工

4、具箱中求非线性函数极小值的命令函数如下表所示: 问题类型 线性规划问题 函数用法 x=linprog(f,A,b) 含义 在条件Axb下求minf(xi) xi无限定标量问题 无限定条件矩阵问题 有限定条件 目标条件 最小最大极值 非线性二次平方极值 非线性方程 半无穷条件 x=fminunc(f,x) x=fminunc(f,x) x=fmincon(fg,x) minf(x),x为标量 xminf(X),X为矩阵 Xminf(X),条件为 G(X)0 Xgming,条件为F(x)-Wgoal x=fgoalattain(f,x,goal,w) Xx=fminmax(fg,x) x=lsqn

5、onneg(f,x) x=fsolve(f,x) x=fsemimf(ft,n,x) minmaxf(X),条件为 G(X)0 Xmin(F(X)*F(X) F(X)=0 minf(X),条件为任意给定w值f(X,w)0 上面表中函数可以对标量、向量和矩阵进行运算;我们一般用大写字母表示矩阵,用小写字母表示向量和标量。在Matlab中用符号“*”表示矩阵的元素乘。当然,上述运算是在定义好了一个最小化函数的前提下进行的,也就是说要先建立数学模型。 注:Matlab自身提供了一个优化演示示例,其命令为optdemo。 线性规划问题 前面6-1中所举的例子就是一个典型的线性规划问题。线性规划数学模型

6、的特点是:在线性不等式或线性等式的约束条件下,求能满足目标函数取得最大值或最小值的一组变量的值,目标函数也要求是线性函数。 命令:linprog 格式:X= linprog(f,A,b) X,fval,exitflag,output,lambda=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options) 功能:计算使目标函数f(x)取得最小值的一组变量的值。 说明:这里f为由目标函数的系数组成的向量。A是一个矩阵,b是一个向量,A和b构成了线性规划的不等式约束条件Axib。X是一个向量,为返回的满足目标函数取得极小值的一组变量的值。Aeq是一个矩阵,Beq是一个向量,Ae

7、q和Beq构成了线性规划的等式约束条件Aeqxi=Beq。LB和UB分别是变量的下界和上界约束。X0是给出的变量的初始值。Exitflag、output、lambda的意义我们放在后面的示例中给出解释。 注:如果要计算的是使目标函数f(x)取得最大值的情况,则通过转化为计算-f(x)的最小值的办法来实现。 例6-1 对前面6-1中所举的例子进行线性规划问题的计算。 分析: 优化的目标为使函数f(x)=7000x1+10000x2取得最大值,也就是使函数-f(x)=-7000x1-10000x2取得最小值,故线性规划目标函数的系数组成的向量为 f=-7000,10000; 约束条件为三个不等式:

8、8x1+6x2380,4x1+8x2300,4x1+6x2220,所以由不等式约束条件的系数构成的矩阵为:A=8,6;4,8;4,6,而b=380,300,220。 程序: clear f=-7000,10000; A=8,6;4,8;4,6; b=380,300,220; X,fval=linprog(f,A,b) 运行结果: Optimization terminated. X = 40.0000 10.0000 fval = -3.8000e+005 注: 优化的结果,目标函数值fval = -3.8000e+005,由于我们的目标函数是-f(x),所以最后应该是maxf(x)=3.80

9、00e+005。 在优化问题中,涉及到优化结果只能取整数值的情况时,如果我们对优化结果随意的进行取整,可能导致最后结果不是最优,这一点需要注意。 例2 中国石油天然气集团公司天然气的运送案例分析 中国石油天然气集团公司在东海有一个油气田,该公司要将开采的天然气通过管道运送到上海的一个配送中心,天然气在运送途中要经过两次管道换接点,换接前后管道长短不一,而且不同的管道对应不同的单位流量运费。如图,天然气运送的管道网络图,弧线表示管道,弧旁的数字为,其中bij表示管道上的单位流量费用,cij表示管道上的容量。公司希望选择一个经济实惠的管道路线运送天然气,既运送最多的天然气又使总的运输费用最少。 B

10、1 (1,4) C1 (2,5) (2,1) vs (3,5) (1,1) (1,3) vt(4,2) B2(4,2) C2 这是一个最小费用最大流问题。为了建立该问题的数学模型,首先设每段管道上的流量作为问题的决策变量,分别记为x1,x2,x3,x4,x5,x6,x7,x8,x9,称分段流量。 从始点vs处,可得流量函数f=x1+x2, 且有约束条件:xi0,1=1,2,L9; x14,x25,x31,x43,x51,x62,x73,x85,x92; x1-x3-x4+x5=0x2+x3-x6=0x4+x7-x8=0x6-x5-x7-x9=0; 一方面要使流量最大,另一方面要是费用最小。 所

11、以分两部分计算,先求出最大流,再求最小费用最大流。 对应matlab程序如下: clear f=-1,1,0,0,0,0,0,0,0; aeq=1,0,-1,-1,1,0,0,0,0; 0,1,1,0,0,-1,0,0,0; 0,0,0,1,0,0,1,-1,0; 0,0,0,0,-1,1,-1,0,-1; beq=zeros(4,1); lb=zeros(9,1); ub=4;5;1;3;1;2;3;5;2; x,fval=linprog(f,aeq,beq,lb,ub) %求出最大流 f1=1,3,1,3,2,4,1,2,4; aeq1= 1,1,0,0,0,0,0,0,0; 1,0,-1

12、,-1,1,0,0,0,0; 0,1,1,0,0,-1,0,0,0; 0,0,0,1,0,0,1,-1,0; 0,0,0,0,-1,1,-1,0,-1; beq1=-fval;beq; z,fvall=linprog(f1,aeq1,beq1,lb,ub) 程序执行后,结果为: z = 4.0000 1.0000 1.0000 3.0000 0.0000 2.0000 2.0000 5.0000 0.0000 fvall = 37.0000 练习: 某快餐店一周中每天需要不同数目的雇员,设周一至少a1人,周二至少a2人,周三至少a3人,周四至少a4人,周五至少a5人,周六至少a6人,周日至少a

13、7人,又规定雇员需连续工作5天,每人每天的工资为C元。问快餐店怎样聘用雇员才能满足需求,又能使总聘用费用最少。 提示:由于每个雇员需连续工作5天,故快餐店聘用的总人数不一定是每天聘用人数之和。我们定义周一开始工作的雇员数为x1,周日开始工作的雇员数为x7,则一周的聘用总费用为:z=C(x1+x2+x3+x4+x5+x6+x7),由于除了周二和周三开始工作的雇员之外,其余的雇员都会在周一工作,所以周一至少应有a1人的约束应表示为: x1+x4+x5+x6+x7a1 类似地可以得出其他的约束条件。 现给定C=100元,a1=16人,a2=15人,a3=16人,a4=19人,a5=14人,a6=12人,a7=18人,请给出问题的数学模型,并用matlab求解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号