数学规划及软件2013.ppt
《数学规划及软件2013.ppt》由会员分享,可在线阅读,更多相关《数学规划及软件2013.ppt(160页珍藏版)》请在三一办公上搜索。
1、2023/11/14,王文祥 2013.7,数学规划模型、案例与软件求解,2023/11/14,一.数学规划模型与优化软件简介,二.LINDO/LINGO软件,Outline,四.LINGO建模语言,三.建模实例,2023/11/14,数学规划是优化问题的一个分支,起始于20世纪30年代末,50年代与60年代发展成为一个完整的分支并受到数学界和社会各界的重视。七八十年代是数学规划飞速发展时期,无论是从理论上还是算法方面都得到了进一步完善。时至今日数学规划仍然是运筹学领域中热点研究问题。从国内外的数学建模竞赛的试题中看,有一半以上的问题可用数学规划进行求解。,一.数学规划模型与优化软件简介,20
2、23/11/14,数学规划模型的一般形式,可行域,三要素:决策变量;目标函数;约束条件,可行解(只满足约束)与最优解(取到最优值),“受约束于”之意,2023/11/14,数学规划类型,连续规划:全部决策变量取值均 为连续数值(实数)离散规划:部分或全部决策变量 只取离散数值,2023/11/14,线性规划(LP)目标和约束均为线性函数 非线性规划(NLP)目标或约束中存在非线性函数 二次规划(QP)目标为二次函数、约束为线性 整数规划(IP)决策变量(全部或部分)为整数 整数线性规划(ILP),整数非线性规划(INLP)纯整数规划(PIP),混合整数规划(MIP)一般整数规划,0-1(整数)
3、规划,连续规划,离散规划,数学规划(Mathematical Programming),2023/11/14,常用优化软件,LINDO/LINGO软件MATLAB优化工具箱/mathematica优化程序包EXCEL软件的优化功能SAS(统计分析)软件的优化功能,2023/11/14,LINDO 公司软件产品简要介绍,美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发,后来成立 LINDO系统公司(LINDO Systems Inc.),网址:http:/,LINDO:Linear Interaction and Discrete OptimizerLINGO
4、:Linear Interaction General Optimizer,2023/11/14,LINDO和LINGO能求解的数学规划模型,LINGO,LINDO,数学规划模型,线性规划(LP),非线性规划(NLP),二次规划(QP),连续规划,整数规划(IP),2023/11/14,LINDO 是专门用于求解数学规划的软件包。LINDO 执行速度很快、易于方便输入,因此在数学、科研和工业界得到广泛应用。LINDO 主要用于解线性规划、二次规划。也可以用于线性方程组的求解以及代数方程求根等。LINDO 中包含了建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。一
5、般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划,二.LINDO/LINGO软件简介,2023/11/14,最大规模的模型的非零系数可以达到1,000,000个最大变量个数可以达到100,000个,最大目标函数和约束条件个数可以达到32000个最大整数变量个数可以达到100,000个 LINDO 6.1 学生版至多可求解多达300 个变量和150 个约束的规划问题,2023/11/14,1.求解线性规划和非线性规划问题2.模型输入简练直观3.运行速度快 计算能力强4.内置建模语言 提供内部函数 较少语句直观描述大规模优化模型5.引
6、入集合 容易建模6.数据交换方便(与EXCEL和数据库),LINGO软件的主要功能和特点,2023/11/14,例1 简单的线性规划(LP)问题:,在空白的模型窗口中输入这个LP模型:,max 2x+3yst 4x+3y=10 3x+5y12end,2023/11/14,如图:,2023/11/14,LINDO程序有以下特点:,程序以“MAX”(或“MIN”)开始,表示目标最大化(或最小化)问题,后面直接写目标函数表达式和约束表达式;目标函数和约束之间用“ST”分开;(或用“s.t.”)程序以“END”结束(“END”也可以省略)。系数与变量之间的乘号必须省略。系统对目标函数所在行自动生成行名
7、“1)”,对约束默认的行名分别是“2)”“3)”,用户也可以自己输入行名;行名放在对应的约束之前。书写相当灵活,不必对齐,不区分字符的大小写。默认所有的变量都是非负的,所以不必输入非负约束。约束条件中的“=”可分别用“”代替。一行中感叹号“!”后面的文字为是注释语句,可增强程序的可读性,不参与模型的建立。,2023/11/14,模型求解:,用鼠标点击工具栏中的图标,或从菜单中选择Solve|Solve(Ctrl+S)命令,LINDO首先开始编译这个模型,编译没有错误则开始求解;求解时会首先显示如右图所示的LINDO“求解器运行状态窗口”。,2023/11/14,求解器运行状态窗口显示的相应信息
8、及含义:,2023/11/14,2023/11/14,紧接着弹出一对话框,询问你是否需要做灵敏性分析(DO RANGE(SENSITIVITY)ANALYSIS?)先选择“否(N)”按钮,这个窗口就会关闭。然后,再把状态窗口也关闭。,2023/11/14,报告窗口,用鼠标选择“Window|Reports Window”(报告窗口),就可以查看该窗口的内容,2023/11/14,输出结果表示的意思是:,“LP OPTIMUM FOUND AT STEP2”表示单纯形法在两次迭代(旋转)后得到最优解。,“OBJECTIVE FUNCTION VALUE 1)7.454545”表示最优目标值为7.
9、454545.(注意:在LINDO中目标函数所在的行总是被认为是第1行,这就是这里“1)”的含义)。,2023/11/14,“VALUE”给出最优解中各变量(VARIABLE)的值:X=1.272727,Y=1.636364.,“REDUCED COST”给出最优的单纯形表中目标函数行(第1行)中变量对应的系数.,“SLACK OR SURPLUS(松驰或剩余)”给出约束对应的松驰变量的值:第2、3行松驰变量均为0,说明对于最优解来讲,两个约束(第2、3行)均取等号,即都是紧约束。,2023/11/14,“DUAL PRICES”给出对偶价格(或影子价格)的值:表示最优解下“资源”增加1单位时
10、“效益”的增量。第2、3行对偶价格分别为.090909,.545455。“NO.ITERATIONS=2”表示用单纯形法进行了两次迭代。,2023/11/14,使用LINDO的一些注意事项,“”(或“=”(或“=”)功能相同变量与系数间可有空格(甚至回车),但无运算符变量名以字母开头,不能超过8个字符变量名不区分大小写(包括LINDO中的关键字)目标函数所在行是第一行,第二行起为约束条件行号(行名)自动产生或人为定义。行名以“)”结束行中注有“!”符号的后面部分为注释。如:!Its Comment.在模型的任何地方都可以用“TITLE”对模型命名(最多72个字符),如:TITLE This M
11、odel is only an Example,2023/11/14,变量不能出现在一个约束条件的右端表达式中不接受括号“()”和逗号“,”等任何符号,例:400(X1+X2)需写为400X1+400X2表达式应化简,如2X1+3X2-4X1应写成-2X1+3X2缺省假定所有变量非负;可在模型的“END”语句后用“FREE name”将变量name的非负假定取消可在“END”后用“SUB”或“SLB”设定变量上下界 例如:“sub x1 10”的作用等价于“x1=10”但用“SUB”和“SLB”表示的上下界约束不计入模型的约束,也不能给出其松紧判断和敏感性分析。,使用LINDO的一些注意事项,
12、2023/11/14,14.“END”后对0-1变量说明:INT n 或 INT name15.“END”后对整数变量说明:GIN n 或 GIN name,使用LINDO的一些注意事项,16.简单错误的检查和避免:输入模型时可能会有某些输入错误.当问题规模较大时,要查找错误是比较困难的。在LINDO 中有一些可帮助寻找错误的功能,其中之一就是菜单命令“Report|Picture(Alt+5)”,它的功能是可以将目标函数和约束表达式中的非零系数通过列表(或图形)显示出来。,2023/11/14,三个变量范围限定命令(FREE、SUB、SLB)的作用,求解如下的LP问题:,这个模型中对变量x没
13、有非负限制,对y有上限限制,对z有下限限制。用FREE、SUB、SLB三个命令可以实现这些功能。,2023/11/14,MAX 2x 3y+4zS.T.con2)4 x+3y+2z 8con5)-5x-y-z 2ENDfree x!说明:变量x没有非负限制sub y 20!说明:变量y的上界为20slb z 30!说明:变量z的下界为30,具体输入如下:,求解得到的结果:最大值为122,最优解为x=-17,y=0,z=39。可以看出y的上界(20)在最优解中并没有达到,z的下界(30)也没有达到,因此模型中去掉“sub y 20”和“slb z 30”两个语句,得到的结不变。但由于最优解中x的
14、取值为负值,所以“free x”这个语句确实是不能少的。不妨试一下,去掉这个语句后效果会怎样?,2023/11/14,LINGO入门,设有线性规划模型如下:,2023/11/14,2023/11/14,LINGO的语法规则,1.最大值MAX=,最小值MIN=2.语句必须以分号”;”结束 每行可多个语句 语句可跨行3.变量名由字母、数字和下划线组成 以字母开头 长度 不超32个字符 不区分大小写4.默认决策变量非负 其他要求可做说明5.模型以MODEL:开头,以END结束(此结构也可省略)6.注释以!开始,以;结束;7.可以用表示=,2023/11/14,程序语句输入的备注:,LINGO总是根据
15、“MAX=”或“MIN=”寻找目标函数,而除注释语句和TITLE语句外的其他语句都是约束条件,因此语句的顺序并不重要。限定变量取整数值的语句为“GIN(X1)”和“GIN(X2)”,不可以写成“GIN(2)”,否则LINGO将把这个模型看成没有整数变量。LINGO中函数一律需要以“”开头,其中整型变量函数(BIN、GIN)和上下界限定函数(FREE、SUB、SLB)与LINDO中的命令类似。而且0/1变量函数是BIN函数。,2023/11/14,一个简单的LINGO程序,例 直接用LINGO来解如下二次规划问题:,输入窗口如下:,2023/11/14,输出结果:,运行菜单命令“LINGO|So
16、lve”,最优整数解X=(35,65),最大利润=11077.5,2023/11/14,LINGO求解实例,例 1,model:max=2*x1-3*x2-2*x3+x4;x1-2*x2-3*x3-2*x4=5;x1-x2+2*x3+x4=10;End,2023/11/14,Global optimal solution found at iteration:2 Objective value:18.33333 Variable Value Reduced Cost X1 8.333333 0.000000 X2 0.000000 0.6666667 X3 0.000000 4.333333
17、X4 1.666667 0.000000 Row Slack or Surplus Dual Price 1 18.33333 1.000000 2 0.000000 0.3333333 3 0.000000 1.666667,运行结果如下:,2023/11/14,看完例1后,能解下面这个问题吗?,例 2,2023/11/14,例 3,model:!this is an integer programming problem;max=4*x1+3*x2;4*x1+x2=10;2*x1+3*x2=8;gin(x1);gin(x2);end,2023/11/14,Global optimal so
18、lution found at iteration:0 Objective value:11.00000 Variable Value Reduced Cost X1 2.000000-4.000000 X2 1.000000-3.000000 Row Slack or Surplus Dual Price 1 11.00000 1.000000 2 1.000000 0.000000 3 1.000000 0.000000,运行结果如下:,2023/11/14,例 4,model:!this is an uncontrained optimal problem;min=3/2*x12+1/2
19、*x22-x1*x2-2*x1;free(x1);free(x2);end,2023/11/14,Local optimal solution found at iteration:73 Objective value:-1.000000 Variable Value Reduced Cost X1 0.9999995 0.000000 X2 0.9999992 0.000000 Row Slack or Surplus Dual Price 1-1.000000-1.000000,运行结果如下:,2023/11/14,例 5,model:min=-3*x12-x22-2*x32;x12+x2
20、2+x32-3=0;-x1+x2=0;end,2023/11/14,Local optimal solution found at iteration:37 Objective value:-6.000000 Variable Value Reduced Cost X1 1.212809 0.000000 X2 1.212809 0.000000 X3 0.2412201 0.000000 Row Slack or Surplus Dual Price 1-6.000000-1.000000 2 0.000000 2.000000 3 0.000000-2.425619,运行结果如下:,202
21、3/11/14,例1 加工奶制品的生产计划,50桶牛奶,时间480小时,至多加工100千克A1,制订生产计划,使每天获利最大,35元可买到1桶牛奶,买吗?若买,每天最多买多少?,可聘用临时工人,付出的工资最多是每小时几元?,A1的获利增加到 30元/千克,应否改变生产计划?,每天:,三、建模实例,2023/11/14,x1桶牛奶生产A1,x2桶牛奶生产A2,原料供应,劳动时间,加工能力,决策变量,目标函数,每天获利,约束条件,非负约束,线性规划模型(LP),时间480小时,至多加工100千克A1,2023/11/14,模型求解,软件实现,LINDO,max 72x1+64x2st2)x1+x2
22、503)12x1+8x24804)3x1100end,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,利润
23、3360元。,2023/11/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,原料无剩余,时间无剩余,加工能力剩余40,max 72x1+64x2st2)x1+x2503)12x1+8x2480
24、4)3x1100end,三种资源,“资源”剩余为零的约束为紧约束(有效约束),2023/11/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单位时“效益”的增量,原料增加
25、1单位,利润增长48,时间增加1单位,利润增长2,加工能力增长不影响利润,影子价格,35元可买到1桶牛奶,要买吗?,35 48,应该买!,聘用临时工人付出的工资最多每小时几元?,2元!,2023/11/14,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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 规划 软件 2013
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6578250.html