资源描述
,*,首页,上页,返回,下页,数学规划与lingo,软件,第1页,数学规划,表示式:,x,决议变量,f,(,x,),目标函数,g,i,(,x,),0,约束条件,决议变量个数,n,和,约束条件个数,m,较大,数学规划,线性规划,非线性规划,第2页,一个简单例子(感受lingo):,第3页,怎么求解呢?,方法一:作图;,方法二:单纯形法;,方法三:,lingo,软件;,其它方法:,matlab,软件等等;,第4页,Lingo程序代码:,max=7*x1+5*x2;,3*x1+2*x2=95;,4*x1+6*x2=201;,7*x2=210;,第5页,Lingo求解结果:,Global optimal solution found.,Objective value:229.1000,Infeasibilities:0.000000,Total solver iterations:2,Variable Value Reduced Cost,X1 16.80000 0.000000,X2 22.30000 0.000000,Row Slack or Surplus Dual Price,1 229.1000 1.000000,2 0.000000 2.00,3 0.000000 0.1000000,4 53.90000 0.000000,第6页,Matlab程序代码:,f=-7;-5;,A=3 2;4 6;0 7;,b=90;200;210;,lb=zeros(2,1);,x,fval,exitflag,output,lambda=linprog(f,A,b,lb),第7页,附加整数约束(怎么处理呢?),第8页,Lingo程序代码:,max=7*x1+5*x2;,3*x1+2*x2=95;,4*x1+6*x2=201;,7*x2=210;,gin(x1);,gin(x2);,第9页,例,1,加工奶制品生产计划,1,桶牛奶,3,千克,A,1,12,小时,8,小时,4,千克,A,2,或,赢利,24,元,/,千克,赢利,16,元,/,千克,50,桶牛奶,时间,480,小时,至多加工,100,千克,A,1,制订生产计划,使天天赢利最大,35,元可买到,1,桶牛奶,买吗?若买,天天最多买多少,?,可聘用暂时工人,付出工资最多是每小时几元,?,A,1,赢利增加到,30,元,/,千克,应否改变生产计划?,天天:,第10页,1,桶牛奶,3,千克,A,1,12,小时,8,小时,4,千克,A,2,或,赢利,24,元,/,千克,赢利,16,元,/,千克,x,1,桶牛奶生产,A,1,x,2,桶牛奶生产,A,2,赢利,243,x,1,赢利,164,x,2,原料供给,劳动时间,加工能力,决议变量,目标函数,天天赢利,约束条件,非负约束,线性规划模型,(LP),时间,480,小时,至多加工,100,千克,A,1,50,桶牛奶,天天,第11页,模型求解,图解法,x,1,x,2,0,A,B,C,D,l,1,l,2,l,3,l,4,l,5,约束条件,目标函数,Z,=0,Z,=2400,Z,=3360,z,=,c,(,常数,),等值线,c,在,B,(20,30),点得到最优解,目标函数和约束条件是线性函数,可行域为直线段围成凸多边形,目标函数等值线为直线,最优解一定在凸多边形某个顶点取得。,第12页,模型求解,软件实现,LINDG 11.0,max=72*x1+64*x2;,x1+x2=50;,12*x1+8*x2=480;,3*x1=100;,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,桶牛奶生产,A,1,30,桶生产,A,2,,利润,3360,元。,第13页,结果解释,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,原料无剩下,时间无剩下,加工能力剩下,40,三种资源,“资源”剩下为零约束为紧约束(有效约束),max=72*x1+64*x2;,x1+x2=50;,12*x1+8*x2=480;,3*x1=100;,第14页,结果解释,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,最优解下“资源”增加,1,单位时“效益”增量,原料增加,1,单位,利润增加,48,时间增加,1,单位,利润增加,2,加工能力增加不影响利润,影子价格,35,元可买到,1,桶牛奶,要买吗?,35 48,应该买!,聘用暂时工人付出工资最多每小时几元?,2,元!,第15页,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.000000 6.666667,3 480.000000 53.333332 80.000000,4 100.000000 INFINITY 40.000000,最优解不变时目标函数系数允许改变范围,DO RANGE(SENSITIVITY)ANALYSIS?,Yes,x,1,系数范围,(64,96),x,2,系数范围,(48,72),A,1,赢利增加到,30,元,/,千克,应否改变生产计划,x,1,系数由,24,3=72,增加,为,30,3=90,,在,允许范围内,不变!,(,约束条件不变,),第16页,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.000000 6.666667,3 480.000000 53.333332 80.000000,4 100.000000 INFINITY 40.000000,影子价格有意义时约束右端允许改变范围,原料最多增加,10,时间最多增加,53,35,元可买到,1,桶牛奶,天天最多买多少?,最多买,10,桶,!,(,目标函数不变,),结 果 解 释,第17页,例2:复杂一点例子:,假设某企业有,6,个货栈向,8,个销售商供给小装饰品,每一个货栈供给量都是有限,每一个销售商需求量必须得到满足。该企业要决定怎样调运货栈装饰品满足销售商以使总运输成本最少。,第18页,数据:,货栈:,1 2 3 4 5 6,可供量:,60 55 51 43 41 52,销售商,1 2 3 4 5 6 7 8,需求量,35 37 22 32 41 32 43 38,运输成本:,1 2 3 4 5 6 7 8,1,6 2 6 7 4 2 5 9,2,4 9 5 3 8 5 8 2,3,5 2 1 9 7 4 3 3,4,7 6 7 3 9 2 7 1,5,2 3 9 5 7 2 6 5,6,5 5 2 2 8 1 4 3;,第19页,模 型,第20页,利用lingo编程求解?:,在,lingo,中怎么输入?!,假如按初等输入方法,怎么样?,烦!,有必要引进新方法:,Lingo,特点:集语言!,第21页,在,lingo,中引进集概念及定义主要目标是为了实现程序循环功效。,集:,由一些对象组成全体。,集组员,属性:,集组员可能有一个或多个与之相关联特征,我们把这些特征称为,属性,。比如雇员集中每位雇员能够有一个薪水属性,也能够有一个生日属性等等。,Lingo,中集,第22页,Lingo,中集定义语法:,setname/member_list/:attribute_list;,说明:,setname,为集名称;,/member_list/,为组员列表;,attribute_list,为属性列表。,Lingo,中集,第23页,集定义例子:,sets,:,students/John Jill,Rose Mike/:sex,age;,endsets,注意:,集部分以关键字“,sets:”,开始,以“,endsets”,结束。,一个集及其属性在模型约束中被引用之前必须定义了它们。,Lingo,中集,第24页,把上面代码在,lingo,中运行,可得到下面结果:,Variable Value SEX(JOHN)1.234568 SEX(JILL)1.234568 SEX(ROSE)1.234568 SEX(MIKE)1.234568 AGE(JOHN)1.234568 AGE(JILL)1.234568 AGE(ROSE)1.234568 AGE(MIKE)1.234568,第25页,sets:,w/1.6/:capacity;,endsets,也定义了一个集。注意该集合组员列表时所使用方法。,Lingo,中集,第26页,把上面代码在,lingo,中运行,可得到下面结果:,Variable Value CAPACITY(1)1.234568 CAPACITY(2)1.234568 CAPACITY(3)1.234568 CAPACITY(4)1.234568 CAPACITY(5)1.234568 CAPACITY(6)1.234568,第27页,派生集(高维数组)定义方法:,setname(parent_set_list)/member_list/:attribute_list;,比如:,sets,:,product/A B/;,machine/M N/;,week/1.2/;,allowed(product,machine,week):x;,endsets,Lingo,中集,第28页,把上面代码在,lingo,中运行,可得到下面结果:,Variable Value X(A,M,1)1.234568 X(A,M,2)1.234568 X(A,N,1)1.234568 X(A,N,2)1.234568 X(B,M,1)1.234568 X(B,M,2)1.234568 X(B,N,1)1.234568 X(B,N,2)1.234568,第29页,集合中对象每一个属性都是一个变量,,lingo,程序运行完成后全部变量都会有一个值,变量取值确实定有两种方法:第一,对变量进行赋值(数据部分就是处理这个问题)。,第二,没有赋值变量,就是决议变量。,数据部分,第30页,数据部分以关键字“,data:”,开始,以关键字“,enddata”,结束。在这里,能够指定集组员、集属性。其语法以下:,object_list=value_list;,数据部分定义方法,第31页,sets,:,set1/A,B,C/:X,Y;,endsets,data,:,X=1,2,3;,Y=4,5,6;,enddata,第32页,也能够写成下面形式:,sets,:,set1/A,B,C/:X,Y;,endsets,data,:,X,Y=1 4,2 5,3 6;,enddata,注意:,LINGO,在为对象指定值时,首先在,n,个对象第,1,个索引处依次分配数值列中前,n,个对象,然后在,n,个对象第,2,个索引处依次分配数值列中紧接着,n,个对象,,,以这类推。,第33页,把上面代码在,lingo,中运行,可得到下面结果:,Variable Value X(A)1.000000 X(B)2.000000 X(C)3.000000 Y(A)4.000000 Y(B)5.000000 Y(C)6.000000,第34页,在初始部分中,能够输入,初始申明,(,initialization statement,),和数据部分中数据申明相同。对实际问题建模时,初始部分并不起到描述模型作用,在初始部分输入值仅被,LINGO,求解器看成初始点来用,而且仅仅对非线性模型有用。和数据部分指定变量值不一样,,LINGO,求解器能够自由改变初始部分初始化变量值。,初始部分,第35页,初始部分定义方法:,一个初始部分以“,init:”,开始,以“,endinit”,结束。初始部分初始申明规则和数据部分数据申明规则相同。,比如(在,lingo,中全部变量是不分大小写):,init,:,X,Y=2,0.1;,endinit,max,=x+y;,Y=,log,(X);,X2+Y2=1;,第36页,函数:函数运算前必须加,号,abs(x),sin(x),cos(x),tan(x),exp(x),绝对值,正弦,余弦,正切,e,为底指数,log(x),sign(x),smax,smin,floop(x),e,为底对数,符号函数,最大数,最小数,取整,循环:,FOR(,集,名,(,循环字母,)|,循环条件,:,表示式列表,),最大:,MAX(,集,名,(,循环字母,)|,循环条件,:,表示式,),最小:,MIN(,集,名,(,循环字母,)|,循环条件,:,表示式,),取和:,SUM(,集,名,(,循环字母,)|,循环条件,:,表示式,),第37页,运输问题,lingo,程序,sets:,w/1.6/:capacity;,v/1.8/:demand;,links(w,v):c,x;,endsets,data:,capacity=60 55 51 43 41 52;,demand=35 37 22 32 41 32 43 38;,c=6 2 6 7 4 2 5 9,4 9 5 3 8 5 8 2,5 2 1 9 7 4 3 3,7 6 7 3 9 2 7 1,2 3 9 5 7 2 6 5,5 5 2 2 8 1 4 3;,enddata,min=sum(links(i,j):c(i,j)*x(i,j);,for(w(i):sum(v(j):x(i,j)=capacity(i);,for(v(j):sum(w(i):x(i,j)=demand(j);,第38页,Matlab,求解此线性规划(代码):,f=6;2;6;7;4;2;5;9;4;9;5;3;8;5;8;2;5;2;1;9;7;4;3;3;.,7;6;7;3;9;2;7;1;2;3;9;5;7;2;6;5;5;5;2;2;8;1;4;3;,A=1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1;,b=60;55;51;43;41;52;,Aeq=1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1;,beq=35,37,22,32,41,32,43,38;,lb=zeros(48,1);,x,fval=linprog(f,A,b,Aeq,beq,lb),第39页,谢 谢,第40页,
展开阅读全文