数学建模MATLAB之线性规划PPT课件.ppt

上传人:rrsccc 文档编号:9885450 上传时间:2021-04-01 格式:PPT 页数:45 大小:589.50KB
返回 下载 相关 举报
数学建模MATLAB之线性规划PPT课件.ppt_第1页
第1页 / 共45页
数学建模MATLAB之线性规划PPT课件.ppt_第2页
第2页 / 共45页
数学建模MATLAB之线性规划PPT课件.ppt_第3页
第3页 / 共45页
数学建模MATLAB之线性规划PPT课件.ppt_第4页
第4页 / 共45页
数学建模MATLAB之线性规划PPT课件.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《数学建模MATLAB之线性规划PPT课件.ppt》由会员分享,可在线阅读,更多相关《数学建模MATLAB之线性规划PPT课件.ppt(45页珍藏版)》请在三一文库上搜索。

1、1,线性规划,数学建模与数学实验,2,实验目的,实验内容,2. 掌握用数学软件包求解线性规划问题.,1. 了解线性规划的基本内容.,2. 用数学软件包MATLAB求解线性规划问题.,5. 实验作业.,3. 用数学软件包LINDO、LINGO求解线性规划问题.,1. 两个引例.,4. 建模案例:投资的收益与风险.,3,问题一 : 任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件.假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表.问怎样分配车床的加工任务,才能既满足加工工件的要求

2、,又使加工费用最低?,两个引例,4,解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6,可建立以下线性规划模型:,解答,5,问题二: 某厂每日8小时的产量不低于1800件.为了进行质量控制,计划聘请两种不同水平的检验员.一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15件/小时,正确率95%,计时工资3元/小时.检验员每错检一次,工厂要损失2元.为使总检验费用最省,该工厂应聘一级、二级检验员各几名?,解 设需要一级和二级检验员的人数分别为x1、x2人, 则应付检验员的工资为:

3、,因检验员错检而造成的损失为:,6,故目标函数为:,约束条件为:,7,线性规划模型:,解答,返 回,8,线性规划模型的一般形式,目标函数和所有的约束条件都是设计变量 的线性函数.,9,实际问题中 的优化模型,x是决策变量,f(x)是目标函数,gi(x)0是约束条件,数学规划,线性规划(LP) 二次规划(QP) 非线性规划(NLP),纯整数规划(PIP) 混合整数规划(MIP),整数规划(IP),0-1整数规划 一般整数规划,连续规划,优化模型的分类,10,用MATLAB优化工具箱解线性规划,命令:x=linprog(c, A, b),2. 模型:min z=cX,命令:x=linprog(c,

4、A,b,Aeq,beq),注意:若没有不等式: 存在,则令A= ,b= .,11,命令:1 x=linprog(c,A,b,Aeq,beq, VLB,VUB) 2 x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0),注意:1 若没有等式约束: , 则令Aeq= , beq= . 2其中X0表示初始点,4. 命令:x,fval=linprog() 返回最优解及处的目标函数值fval.,12,解 编写M文件xxgh1.m如下: c=-0.4 -0.28 -0.32 -0.72 -0.64 -0.6; A=0.01 0.01 0.01 0.03 0.03 0.03;0.02

5、0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08; b=850;700;100;900; Aeq=; beq=; vlb=0;0;0;0;0;0; vub=; x,fval=linprog(c,A,b,Aeq,beq,vlb,vub),To MATLAB (xxgh1),13,解: 编写M文件xxgh2.m如下: c=6 3 4; A=0 1 0; b=50; Aeq=1 1 1; beq=120; vlb=30,0,20; vub=; x,fval=linprog(c,A,b,Aeq,beq,vlb,vub),To MATLAB (xxgh2)

6、,14,例3 问题一的解答,问题,15,编写M文件xxgh3.m如下: f = 13 9 10 11 12 8; A = 0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3; b = 800; 900; Aeq=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1; beq=400 600 500; vlb = zeros(6,1); vub=; x,fval = linprog(f,A,b,Aeq,beq,vlb,vub),To MATLAB (xxgh3),16,结果: x = 0.0000 600.0000 0.0000 400.0000 0.0000

7、500.0000 fval =1.3800e+004 即在甲机床上加工600个工件2,在乙机床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费最小为13800.,17,例2 问题二的解答,问题,改写为:,18,编写M文件xxgh4.m如下: c = 40;36; A=-5 -3; b=-45; Aeq=; beq=; vlb = zeros(2,1); vub=9;15; %调用linprog函数: x,fval = linprog(c,A,b,Aeq,beq,vlb,vub),To MATLAB (xxgh4),19,结果为: x = 9.0000 0.0000 fval

8、 =360 即只需聘用9个一级检验员.,注:本问题应还有一个约束条件:x1、x2取整数.故它是一个整数线性规划问题.这里把它当成一个线性规划来解,求得其最优解刚好是整数:x1=9,x2=0,故它就是该整数规划的最优解.若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解.,返 回,20,用LINDO、LINGO优化工具箱解线性规划,21,一、LINDO软件包,下面我们通过一个例题来说明LINDO软件包的使用方法.,22,LINDO和LINGO软件能求解的优化模型,LINGO,LINDO,优化模型,线性规划 (LP),非线性规划 (NLP

9、),二次规划 (QP),连续优化,整数规划(IP),23,50桶牛奶,时间: 480小时,至多加工100千克A1,制订生产计划,使每天获利最大,35元可买到1桶牛奶,买吗?若买,每天最多买多少?,可聘用临时工人,付出的工资最多是每小时几元?,A1的获利增加到 30元/千克,是否应改变生产计划?,每天:,例1 加工奶制品的生产计划,24,x1桶牛奶生产A1,x2桶牛奶生产A2,获利 243x1,获利 164 x2,原料供应,劳动时间,加工能力,决策变量,目标函数,每天获利,约束条件,非负约束,线性规划模型(LP),建立模型,25,max 72x1+64x2 st 2)x1+x250 3)12x1

10、+8x2480 4)3x1100 end,OBJECTIVE FUNCTION VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 48.000000 3) 0.000000 2.000000 4) 40.000000 0.000000 NO. ITERATIONS= 2,DO RANGE (SENSITIVITY) ANALYSIS?,No,20桶牛奶生产A1, 30桶生产A2

11、,利润3360元.,模型求解,26,OBJECTIVE FUNCTION VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 48.000000 3) 0.000000 2.000000 4) 40.000000 0.000000,原料无剩余,时间无剩余,加工能力剩余40,max 72x1+64x2 st 2)x1+x250 3)12x1+8x2480 4)3x1100 end,

12、三种资源,“资源” 剩余为零的约束为紧约束(有效约束),结果解释,27,模型求解,reduced cost值表示当该非基变量增加一个单位时(其他非基变量保持不变),目标函数减少的量(对max型问题) .,OBJECTIVE FUNCTION VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 48.000000 3) 0.000000 2.000000 4) 40.000000

13、0.000000 NO. ITERATIONS= 2,也可理解为: 为了使该非基变量变成基变量,目标函数中对应系数应增加的量,28,OBJECTIVE FUNCTION VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 48.000000 3) 0.000000 2.000000 4) 40.000000 0.000000,结果解释,最优解下“资源”增加1单位时“效益”的增量,

14、原料增1单位, 利润增48,时间增1单位, 利润增2,能力增减不影响利润,影子价格,35元可买到1桶牛奶,要买吗?,35 48, 应该买!,聘用临时工人付出的工资最多每小时几元?,2元!,29,RANGES IN WHICH THE BASIS IS UNCHANGED: OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X1 72.000000 24.000000 8.000000 X2 64.000000 8.000000 16.000000 RIGHTHAND SIDE R

15、ANGES ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE 2 50.000000 10.000000 6.666667 3 480.000000 53.333332 80.000000 4 100.000000 INFINITY 40.000000,最优解不变时目标系数允许变化范围,DO RANGE(SENSITIVITY) ANALYSIS?,Yes,x1系数范围(64,96),x2系数范围(48,72),A1获利增加到 30元/千克,应否改变生产计划,x1系数由243= 72 增加为303= 90,在允许范围内,不变!,(约束条

16、件不变),结果解释,30,结果解释,RANGES IN WHICH THE BASIS IS UNCHANGED: OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X1 72.000000 24.000000 8.000000 X2 64.000000 8.000000 16.000000 RIGHTHAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE 2 50.000000 10.0000

17、00 6.666667 3 480.000000 53.333332 80.000000 4 100.000000 INFINITY 40.000000,影子价格有意义时约束右端的允许变化范围,原料最多增加10,时间最多增加53,35元可买到1桶牛奶,每天最多买多少?,最多买10桶,(目标函数不变),注意: 充分但可能不必要,31,1.使用LINDO的一些注意事项?,“”(或“=”(或“=”)功能相同 变量与系数间可有空格(甚至回车), 但无运算符 变量名以字母开头,不能超过8个字符 变量名不区分大小写(包括LINDO中的关键字) 目标函数所在行是第一行,第二行起为约束条件 行号(行名)自动产

18、生或人为定义.行名以“)”结束 行中注有“!”符号的后面部分为注释.如: ! Its Comment. 在模型的任何地方都可以用“TITLE” 对模型命名(最多72个字符),如: TITLE This Model is only an Example,32,变量不能出现在一个约束条件的右端 表达式中不接受括号“( )”和逗号“,”等任何符号, 例: 400(X1+X2)需写为400X1+400X2 表达式应化简,如2X1+3X2- 4X1应写成 -2X1+3X2 缺省假定所有变量非负;可在模型的“END”语句后用“FREE name”将变量name的非负假定取消 可在 “END”后用“SUB”

19、 或“SLB” 设定变量上下界 例如: “sub x1 10”的作用等价于“x1=10” 但用“SUB”和“SLB”表示的上下界约束不计入模型的约束,也不能给出其松紧判断和敏感性分析. 14. “END”后对0-1变量说明:INT n 或 INT name 15. “END”后对整数变量说明:GIN n 或 GIN name,使用LINDO的一些注意事项,33,2.状态窗口(LINDO Solver Status),当前状态:已达最优解 迭代次数:18次 约束不满足的“量”(不是“约束个数”):0 当前的目标值:94 最好的整数解:94 整数规划的界:93.5 分枝数:1 所用时间:0.00秒

20、(太快了,还不到0.005秒) 刷新本界面的间隔:1(秒),34,二、LINGO软件包,35,(1) LINGO模型的优点,1. LINGO软件简介,(2) 对简单的LINGO程序,LINGO也可以和LINDO一样编程,但LINGO与LINDO语法有差异,提供了灵活的编程语言(矩阵生成器),包含了LINDO的全部功能,36,Lindo与简单Lingo程序的比较,Model:min=7*x1+3*x2; x1+x2=345.5; x1=98; 2*x1+x2=600; gin(x1); gin(x2);end,min 7x1+3x2 st x1+x2=345.5 x1=98 2*x1+x2=60

21、0 end gin 2,lindo程序:,lingo程序:,37,投资的收益和风险,38,二、基本假设和符号规定,39,三、模型的建立与分析,1.总体风险用所投资的Si中最大的一个风险来衡量,即max qixi|i=1,2,n,4. 模型简化:,40,41,四、模型1的求解,由于a是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者有不同的风险度.我们从a=0开始,以步长a=0.001进行循环搜索,编制程序如下:,42,a=0; while(1.1-a)1 c=-0.05 -0.27 -0.19 -0.185 -0.185; Aeq=1 1.01 1.02 1.045 1.065; be

22、q=1; A=0 0.025 0 0 0;0 0 0.015 0 0;0 0 0 0.055 0;0 0 0 0 0.026; b=a;a;a;a; vlb=0,0,0,0,0;vub=; x,val=linprog(c,A,b,Aeq,beq,vlb,vub); a x=x Q=-val plot(a,Q,.),axis(0 0.1 0 0.5),hold on a=a+0.001; end xlabel(a),ylabel(Q),To MATLAB(xxgh5),43,计算结果:,44,五、 结果分析,返 回,4.在a=0.006附近有一个转折点,在这一点左边,风险增加很少时,利润增长 很

23、快.在这一点右边,风险增加很大时,利润增长很缓慢,所以对于风险和 收益没有特殊偏好的投资者来说,应该选择曲线的拐点作为最优投资组合, 大约是a*=0.6%,Q*=20% ,所对应投资方案为: 风险度 收益 x0 x1 x2 x3 x4 0.0060 0.2019 0 0.2400 0.4000 0.1091 0.2212,3.曲线上的任一点都表示该风险水平的最大可能收益和该收益要求的最小风险.对于不同风险的承受能力,选择该风险水平下的最优投资组合.,2.当投资越分散时,投资者承担的风险越小,这与题意一致.即: 冒险的投资者会出现集中投资的情况,保守的投资者则尽量分散投资.,1.风险大,收益也大.,45,实验作业,某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过800箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论: 1)若投资0.8万元可增加原料1千克,问应否作这项投资. 2)若每100箱甲饮料获利可增加1万元,问应否改变生产计划.,返 回,

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1