《数学规划模型与lingo入门ppt课件.pptx》由会员分享,可在线阅读,更多相关《数学规划模型与lingo入门ppt课件.pptx(44页珍藏版)》请在三一办公上搜索。
1、数学规划模型与lingo入门,数学规划模型,决策变量 x =(x1, x2, , xn )目标函数 Min Z = f (x)约束条件 s.t x A ( Rn ) 等式或不等式求解线性:单纯形法非线性:,一、Lingo软件,二、Lingo基本语法,1、定义了目标函数为MIN=. MAX=. 2、以一个分号“;”结尾 除SETS, ENDSETS, DATA , ENDDATA, END之外3、可以放在约束条件的右端,同时数字也可放在约束条件的左端。4、假定各变量非负。5、注释:“!”6、为、,三、Lingo运算符和函数,1、运算符及其优先级,Lingo内部函数”,2、Lingo基本数学函数,
2、3、Lingo变量定界函数,分段函数,IF(logical_condition, true_result, false_result),4、Lingo条件判断函数,5、Lingo集合循环函数,难点!重点!略,例1,free(x2);,min=1.4*x1+7*x2+0.9*x3+6*x4+3*x5+4.1*x6;,6.1*x1+8.4*x2+.9*x3+8.5*x4+4.8*x5+2.3*x6=31.82;x6=x4+0.1;,x3=if(x5 #gt# 0,x5-0.2,x1+0.4);x4=if(x6 #gt# 0,x6-0.1,x4);,bnd(-5,x1,5); bnd(0,x3,1.
3、3);,例2 加工奶制品的生产计划,50桶牛奶,时间480小时,至多加工100公斤A1,制订生产计划,使每天获利最大,每天:,x1桶牛奶生产A1,x2桶牛奶生产A2,获利 243x1,获利 164 x2,原料供应,劳动时间,加工能力,决策变量,目标函数,每天获利,约束条件,非负约束,线性规划模型(LP),时间480小时,至多加工100公斤A1,线性规划模型的一般形式,目标函数和所有的约束条件都是设计变量的线性函数.,模型求解,图解法,约束条件,目标函数,z=c (常数) 等值线,在B(20,30)点得到最优解,目标函数和约束条件是线性函数,可行域为直线段围成的凸多边形,目标函数的等值线为直线,
4、最优解一定在凸多边形的某个顶点取得。,模型求解,软件实现,LINGO,max=72*x1+64*x2;x1+x250;12*x1+8*x2480;3*x1100;,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. ITERATI
5、ONS= 2,DO RANGE (SENSITIVITY) ANALYSIS?,No,20桶牛奶生产A1, 30桶生产A2,利润3360元。,例2 加工奶制品的生产计划,50桶牛奶,时间480小时,至多加工100公斤A1,35元可买到1桶牛奶,买吗?若买,每天最多买多少?,可聘用临时工人,付出的工资最多是每小时几元?,A1的获利增加到 30元/公斤,应否改变生产计划?,每天:,结果解释,OBJECTIVE FUNCTION VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000
6、000 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+x250;12*x1+8*x2480;3*x1100;,三种资源,“资源” 剩余为零的约束为紧约束(有效约束),结果解释,OBJECTIVE FUNCTION VALUE 1) 3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0
7、.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元!,RANGES IN WHICH THE BASIS IS UNC
8、HANGED: 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
9、.000000 INFINITY 40.000000,最优解不变时目标函数系数允许变化范围,DO RANGE(SENSITIVITY) ANALYSIS?,Yes,x1系数范围(64,96),x2系数范围(48,72),A1获利增加到 30元/千克,应否改变生产计划,x1系数由24 3=72增加为303=90,在允许范围内,不变!,(约束条件不变),结果解释,RANGES IN WHICH THE BASIS IS UNCHANGED: OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECRE
10、ASE 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桶牛奶,每天最多买多少?,最多
11、买10桶!,(目标函数不变),基本使用,构成:4个段,目标与约束段集合段(SETS ENDSETS)数据段(DATA ENDDATA)初始段(INIT ENDINIT)(计算段 (CALC ENDCALC)),四、Lingo建模语言,某公司有6个建筑工地,位置坐标为(ai,bi) (单位:公里),水泥日用量di (单位:吨),假设:料场和工地之间有直线道路(1)现有2料场,位于A(5,1),B(2,7),记(xj,yj),j=1,2,日储量ej各有20吨。制定每天的供应计划:即从A, B两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。,例3 选址问题,决策 目标 约束,解:,决策变量:料
12、场j到工地i的运量 cij 12维线性规划模型?lingo表达式?,目标:吨公里,约束:需求 供应,目标与约束段,MODEL:Title Location Problem;sets: demand/1.6/:a,b,d; supply/1.2/:x,y,e; link(demand,supply):c;endsetsdata: a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75; d=3,5,4,7,6,11; e=20,20; x,y=5,1,2,7; enddatainit:endinitmin=sum(link(i,j):c(
13、i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2);for(demand(i):sum(supply(j):c(i,j)=d(i);); for(supply(i):sum(demand(j):c(j,i)=e(i););for(supply: free(X); free(Y); );END,集合段,数据段,初始段,供应约束,需求,需求点的位置,供需量,供应,初始点,目标,需求约束,连接,建筑工地位置坐标 (ai,bi) 、水泥日用量di :对每个建筑工地(6个)都有一个对应的值都是一个由6个元素组成的数组是已知的料场位置坐标 (xj,yj) 、日储量ej对每个料场(2个)都
14、有一个对应的值都是一个由2个元素组成的数组目前是已知的料场到建筑工地的供应计划 c i j 对每个料场与建筑工地之间(62)都有一个对应的值是一个62 个元素组成的矩阵是未知数LINDO无数组,每个变量输入麻烦,(1)Lingo的集合Set下标集合,100个工地?,1、Lingo的集合Set及其属性Attribute,例3,Lingo中集的定义语法:setname/member_list/:attribute_list; 说明: setname为集的名称; /member_list/为成员列表; attribute_list为属性列表。,(2)集合Set及其属性Attribute,定义数组下标
15、集合demand/1.6/表示6个建筑工地a,b,d称为该集合的属性表示坐标(ai,bi) 、水泥日用量di定义数组下标集合supply/1.2/表示6个建筑工地该集合的属性x,y,e表示坐标(xj,yj) 、日储量ej 定义数组下标集合link(demand,supply)表示62个料场到建筑工地的连接该集合的属性c表示每个料场与建筑工地之间供应计划c i j,1到6的整数,建立下标集合,(3)Lingo 建模语言集合段 数据段,需求点的位置,供需量,sets: demand/1.6/:a,b,d; supply/1.2/:x,y,e; link(demand,supply):c;endse
16、ts,data:a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75; d=3,5,4,7,6,11; e=20,20;x,y=5,1,2,7;enddata,赋值,需求,供应,连接,直接把元素列举出来定义格式 集合名 元素列表 属性列表 setname /member_list/ : attribute_list; 可选项元素列表显式列举法列出全部元素, 用逗号或空格分开隐式列举法 1.n属性列表缺省集合可在程序中作为一循环变量使用,构造更复杂的派生集合元素列表缺省必须在数据段给出元素列表赋值,基本集合primary set,(4)
17、定义集合Set,派生集合derived set,基于其它集合而派生出来的二维或多维集合定义格式 集合名 父集合列表 元素列表 属性列表 setname(parent_set_list) /member_list/ : attribute_list;元素列表缺省所有组合稠密集合、或数据段列表赋值元素列表稀疏集合元素列表法枚举元素过滤法利用过滤条件setname(parent_set_list) |filtrate_condition :attribute_list;,建立 下标集合,例3选址问题,需求点的位置,供需量,sets:demand/1.6/:a,b,d;supply/1.2/:x,y,
18、e;link(demand,supply):c;endsets,data:a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75; d=3,5,4,7,6,11; e=20,20;x,y=5,1,2,7;enddata,赋值,需求,供应,连接,基本集合,派生集合,集合的类型,setname /member_list/ : attribute_list;,setname(parent_set_list) /member_list/ : attribute_list;,SETS: CITIES /A1,A2,A3,B1,B2/; ROADS
19、(CITIES, CITIES)/ A1,B1 A1,B2 A2,B1 A3,B2/:D; ENDSETS,SETS: STUDENTS /S1.S8/; PAIRS( STUDENTS, STUDENTS) | ENDSETS,集合,基本集合,派生集合,稠密集合,稀疏集合,直接列举法,隐式列举法,元素列表法,元素过滤法,难点!重点!,循环操作函数集合上的元素下标:,集合函数名,function(setname (set_index_list)|condition:expression_list);,集合名,集合索引列表,过滤条件,表达式,FORMAXMINSUM PROD,2、Lingo集合
20、循环函数,目标:吨公里,例3 选址问题,min=sum(link(i,j):c(i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2);,sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(demand,supply):c;endsets,约束: 非负,!for(supply: free(X); free(Y); );,for(demand(i):sum(supply(j):c(i,j)=d(i);); for(supply(i):sum(demand(j):c(j,i)=e(i););,约束:需求供应,目标与约束段,MODEL:Title
21、 Location Problem;sets: demand/1.6/:a,b,d; supply/1.2/:x,y,e; link(demand,supply):c;endsetsdata: a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75; d=3,5,4,7,6,11; e=20,20; x,y=5,1,2,7; enddatainit:endinitmin=sum(link(i,j):c(i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2);for(demand(i):sum(supply(j):c(i,j
22、)=d(i);); for(supply(i):sum(demand(j):c(j,i)=e(i););for(supply: free(X); free(Y); );END,集合段,数据段,初始段,供应约束,需求,需求点的位置,供需量,供应,初始点,目标,需求约束,连接,结果:总吨公里数为136.2,小结,定义集合,输入数据,使用集合,6个建筑工地:坐标为(ai,bi) ,水泥日用量di (2)改建两个新料场 需要确定新料场位置(xj,yj)和运量cij ,使总吨公里数最小。,决策变量:ci j,(xj,yj)16维,线性规划模型?,例3 选址问题进一步讨论,目标:吨公里,约束:需求 供应,
23、集合段,数据段,初始段,目标与约束段,最优:89.8835(吨公里 ),局部,全部?,LINGO,求全局解,Lingooptions,边界,界面,主窗口,模型窗口Model Window,状态栏,当前时间,当前光标位置,五、Lingo的菜单及对话框,1、LINGO的界面,File|Open(F3)打开文件,File|Print(F7)打印文件,Edit|Copy(Ctrl+C)复制,Edit|Undo(Ctrl+Z)取消操作,Edit|Find (Ctrl+F)查找,LINGO|Solution(Alt+O)显示解答,Edit|Match Parenthesis(Ctrl+P)匹配括号,LIN
24、GO|Options(Ctrl+I)选项设置,Window|Close All (Alt+X)关闭所有窗口,Help|Contents(F1)在线帮助,File|New(F2)新建文件,File|Save(F4)保存文件,Edit|Cut(Ctrl+X)剪切,Edit|Paste(Ctrl+V)粘贴,Edit|Redo(Ctrl+Y)恢复操作,Edit | Go To Line(Ctrl+T)定位某行,LINGO|Solve (Ctrl+S)求解模型,LINGO|Picture(Ctrl+K)模型图示,Window|Send to Back (Ctrl+B)窗口后置,Window|Tile(A
25、lt+T) 平铺窗口,上下文相关的帮助,2、LINGO的工具栏,FileExport FileUser Database InfoEditPaste Paste Special Match Parenthesis Paste FunctionSelect Font Insert New Object Links Object Properties,LINGOLOOKGeneratePicture FileGenerateOptions,3、LINGO的菜单栏,Variables(变量数量): 变量总数(Total)、 非线性变量数(Nonlinear)、 整数变量数(Integer)。,Con
26、straints(约束数量): 约束总数(Total)、 非线性约束个数(Nonlinear)。,Nonzeros(非零系数数量): 总数(Total)、 非线性项系数个数(Nonlinear),Generator Memory Used (K) (内存使用量),Elapsed Runtime (hh:mm:ss)(求解花费的时间),4、LINGO的运行状态窗口,求解器(求解程序)状态框,当前模型的类型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I开头表示IP,以PI开头表示PIP),当前解的状态 : Global Optimum, Local Op
27、timum, Feasible, Infeasible“(不可行), Unbounded“(无界), Interrupted“(中断), Undetermined“(未确定),解的目标函数值,当前约束不满足的总量(不是不满足的约束的个数):实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界命令形式给出的约束),目前为止的迭代次数,运行状态,扩展的求解器(求解程序)状态框,使用的特殊求解程序 :B-and-B (分枝定界算法)Global (全局最优求解程序)Multistart(用多个初始点求解的程序),目前为止找到的可行解的最佳目标函数值,目标函数值的界,特殊求解程序当前运行步数:分枝数(对B-and-B程序);子问题数(对Global程序);初始点数(对Multistart程序),有效步数,运行状态,可设置80-90个控制参数,Interface界面General Solver通用求解Linear Solver线性求解Nonlinear Solver非线性求解Integer Pre-Solver整数预处理Integer Solver整数求解Global Solver全局最优求解,5、Options 7个选项卡,