解非线性规划培训讲义课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《解非线性规划培训讲义课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 非线性 规划 培训 讲义 课件
- 资源描述:
-
1、解非线性规划三、三、LINGO软件的基本使用方法软件的基本使用方法1、Lingo入门入门2、在、在Lingo中使用集合中使用集合3、运算符和函数、运算符和函数4、Lingo的主要菜单命令的主要菜单命令1、Lingo入门入门LINGOLINGO的界面的界面LINGO软件的主窗口(用软件的主窗口(用户界面),所有其他窗口户界面),所有其他窗口都在这个窗口之内。都在这个窗口之内。模型窗口(模型窗口(Model Window),用于输入),用于输入LINGO优化模型(即优化模型(即LINGO程序)。程序)。状态行(最左边显状态行(最左边显示示“Ready”,表示,表示“准备就绪准备就绪”)当前时间当前
2、时间 当前光标当前光标的位置的位置 简单程序举例:简单程序举例:Lindo程序:max 2x+3yst4x+3y103x+5y12endLingo 程序:MODEL:max=2*x+3*y;4*x+3*y10;3*x+5*y12;end请大家仔细区分它们的不同。请大家仔细区分它们的不同。求求z=2x+3y在约束条件在约束条件4x+3y=10,3x+5y=12下的最大值下的最大值这是这是lingo程序最基本的格式之一程序最基本的格式之一在在lingo模型窗口中输入右框中的程序,并保存为模型窗口中输入右框中的程序,并保存为LG4 格式文件,格式文件,这是这是LINGO格式的模型文件,保存了模型窗口
3、中所能够看到的格式的模型文件,保存了模型窗口中所能够看到的所有文本和其他对象及其格式信息;所有文本和其他对象及其格式信息;在在LINGOLINGO中使用中使用LINDOLINDO模型模型 运行程序运行程序:点点“LINGO菜单菜单Solve 命令命令”或或 按按ctrl+s运行运行 或或 用鼠标点用鼠标点在在LINGOLINGO中使用中使用LINDOLINDO模型模型 运行状态窗口运行状态窗口求解求解器器(求求解程解程序序)状状态框态框当前解的状态当前解的状态:Global Optimum,Local Optimum,Feasible,Infeasible“(不可行不可行),Unbounded
4、“(无界无界),Interrupted“(中断中断),Undetermined“(未确定未确定)解的目标函数值解的目标函数值 运行程序的运行程序的LINGO报告窗口(如下图)报告窗口(如下图)在在LINGOLINGO中使用中使用LINDOLINDO模型模型注:注:LINGO不询问是否进行敏感性分析,敏感性分析不询问是否进行敏感性分析,敏感性分析需要将来通过修改系统选项启动敏感性分析后,再调需要将来通过修改系统选项启动敏感性分析后,再调用用“REPORT|RANGE”菜单命令来实现。现在同样可菜单命令来实现。现在同样可以把模型和结果报告保存在文件中。以把模型和结果报告保存在文件中。一个简单的一个
5、简单的LINGO程序程序例例 直接用LINGO来解如下二次规划问题:40,322100.123.02779821212122212121为整数xxxxxxtsxxxxxxMax输入窗口如下:输入窗口如下:对本例,结果是X=1(真)。最后非线性可行性误差限:控制模型中约束满足的最后误差限(缺省值为10-6)有两个临时料场位于P(5,1),Q(2,7),日储量各有20吨。Global Solver前打钩。冷启动:当不以前面的求解结果为基础,冷启动求解程序时采用的算法,有四种可能的设置(同热启动)MPS Format(MPS格式):是IBM公司制定的一种数学规划文件格式。None:所有变量都不使用这
6、个上界;相对上限:控制生成的割(平面)的个数相对于原问题的约束个数的上限(比值),缺省值为0.变量可以放在约束条件的右端(同时数字也可放在约束条件的左端)。对变量的取值范围附加限制,共有以下四种:使用全局最优求解程序:选择该选项,LINGO将用全局最优求解程序求解模型,尽可能得到全局最优解(求解花费的时间可能很长);下四个季度的帆船需求量分别是40条,60条,75条,25条,这些需求必须按时满足。编辑(Edit)主菜单display of the object:对象的显示;SET 可设置的参数及简要功能SIN(X):正弦函数,返回X的正弦值(X的单位是弧度)。TEXT()=WRITEFOR(R
7、OAD(I,J)|RP:正常生产的产量程序语句输入的备注:程序语句输入的备注:max=98*x1+277*x2-x12-0.3*x1*x2-2*x22;LINGO总是根据总是根据“MAX=”或或“MIN=”寻找目标函数。寻找目标函数。gin(x1);gin(x2);限定变量取整数值的语句为限定变量取整数值的语句为“GIN(X1)”和和“GIN(X2)”LINGO中函数一律需要以中函数一律需要以“”开头。开头。BIN(x)限定变量限定变量x为为0/1变量函数变量函数FREE(x)设定变量设定变量x的取值范围为实数。的取值范围为实数。注意:如果注意:如果0/1变量的个数很多,还可以采用循环语句设变
8、量的个数很多,还可以采用循环语句设定。定。选择全局求解的方法:点 Lindo菜单optionsGlobal Solver,在use Global Solver前打钩。点 save,应用,ok.然后运行这个程序输出结果:输出结果:最优整数解最优整数解X=(35,65)最大利润最大利润=11077.5 一个简单的一个简单的LINGO程序程序LINGO的基本用法的几点注意事项的基本用法的几点注意事项 LINGO中不区分大小写字母;变量和行名可以超过8个字符,但不能超过32个字符,且必须以字母开头。用LINGO解优化模型时已假定所有变量非负(除非用限定变量取值范围的函数free或sub或slb另行说明
9、)。变量可以放在约束条件的右端(同时数字也可放在约束条件的左端)。但为了提高LINGO求解时的效率,应尽可能采用线性表达式定义目标和约束(如果可能的话)。语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编写程序时应注意模型的可读性。例如:一行只写一个语句,按照语句之间的嵌套关系对语句安排适当的缩进,增强层次感。以感叹号开始的是说明语句(说明语句也需要以分号结束))。课堂练习:求解下列模型且为整数,0,;2054;62;max21212121xxxxxxxxz22121222121212min (,)(3)(2)50 240 ,0f x xxxstxxxxx x22121222122m
10、in (,)(1)(1)20 10f x xxxstxxx 二、集合的基本用法和二、集合的基本用法和LINGO模型的基本要素模型的基本要素 理解理解LINGO建模语言最重要的是理解集合(建模语言最重要的是理解集合(Set)及其)及其属性(属性(Attribute)的概念。)的概念。例例 SAILCO公司需要决定下四个季度的帆船生产量。下公司需要决定下四个季度的帆船生产量。下四个季度的帆船需求量分别是四个季度的帆船需求量分别是40条,条,60条,条,75条,条,25条,条,这些需求必须按时满足。每个季度正常的生产能力是这些需求必须按时满足。每个季度正常的生产能力是40条帆船,每条船的生产费用为条
11、帆船,每条船的生产费用为400美元。如果加班生产,美元。如果加班生产,每条船的生产费用为每条船的生产费用为450美元。每个季度末,每条船的美元。每个季度末,每条船的库存费用为库存费用为20美元。假定生产提前期为美元。假定生产提前期为0,初始库存为,初始库存为10条船。如何安排生产可使总费用最小?条船。如何安排生产可使总费用最小?DEM,RP,OP,INV对每个季度都应该有一个对应的值,也就说他们都应该是一对每个季度都应该有一个对应的值,也就说他们都应该是一个由个由4个元素组成的数组,其中个元素组成的数组,其中DEM是已知的,而是已知的,而RP,OP,INV是未知数。是未知数。第一季度第一季度
12、第二季度第二季度 第三季度第三季度 第四季度第四季度DEM:需求量需求量(为已知为已知)40 60 75 25RP:正常生产的产量正常生产的产量 OP:加班生产的产量加班生产的产量 INV:库存量库存量总费用:四个季度的(生产费用总费用:四个季度的(生产费用+加班费用加班费用+库存费用)库存费用)设设将迭代次数显示在屏幕上。SET 可设置的参数及简要功能编辑(Edit)主菜单3:最好界的节点优先)SET 可设置的参数及简要功能弹出对话框,用户输入用户使用数据库时需要验证的用户名(User ID)和密码(Password),这些信息在使用ODBC()函数访问数据库时要用到。全局最优求解程序中模型
13、重整的级别(0:不进行重整;此后才使用相对误差限策略。LINGO|Options|General Solver(通用求解程序)选项卡type of update(automatic or manual):修改方式(自动或人工修改);PTD(N,X):自由度为N的t分布的分布函数在X点的取值。状态行(最左边显示“Ready”,表示“准备就绪”)分枝中每个节点使用启发式搜索的最小时间(秒)POINTER(N)在Windows下使用LINGO的动态连接库DLL,直接从共享的内存中传送数据。Dual Simplex:对偶单纯形法本例的LINGO求解结果对冒号“:”前面的集合的每个元素(下标),冒号“:
14、”后面的约束关系式都要成立DUAL(variable_or_row_name)输出级别(0:详细型,1:简洁型)Only when text changes:只有当模型的文本修改后才再生成模型;问题的模型问题的模型(可以看出是可以看出是LP模型模型)目标函数是所有费用的和目标函数是所有费用的和4,3,2,1)(20)(450)(400MINIIINVIOPIRP 约束条件主要有两个:约束条件主要有两个:1)能力限制:)能力限制:RP()40,1,2,3,4II2)产品数量的平衡方程:)产品数量的平衡方程:()(1)()()(),1,2,3,4INV IINV IRP IOP IDEM II10
15、)0(INV加上变量的非负约加上变量的非负约束束正常生产的产量正常生产的产量加班产量加班产量库存量库存量注:注:LINDO中没有数组,只能对每个季度分别定义变量,如正常产量就要有RP1,RP2,RP3,RP4 4个变量等。写起来就比较麻烦,尤其是更多(如1000个季度)的时候。记四个季度组成的集合QUARTERS=1,2,3,4,它们就是上面数组的下标集合,而数组DEM,RP,OP,INV对集合QUARTERS中的每个元素1,2,3,4分别对应于一个值。LINGO正是充分利用了这种数组及其下标的关系,引入了“集合”及其“属性”的概念,把QUARTERS=1,2,3,4称为集合,把DEM,RP,
16、OP,INV称为该集合的属性(即定义在该集合上的属性)。QUARTERS集合的属性 DEM RP OP INV QUARTERS集合 2 3 4 1 集合及其属性集合及其属性 集合元素及集合的属性确定的所有变量集合元素及集合的属性确定的所有变量集合QUARTERS的元素1234定义在集合QUARTERS上的属性DEM DEM(1)DEM(2)DEM(3)DEM(4)RPRP(1)RP(2)RP(3)RP(4)OPOP(1)OP(2)OP(3)OP(4)INVINV(1)INV(2)INV(3)INV(4)LINGO中定义集合及其属性中定义集合及其属性 LP模型在模型在LINGO中的一个典型输入
17、方式中的一个典型输入方式 以以“MODEL:”开开始始 以以“END”结结束束集合定义部分从集合定义部分从(“SETS:”到到“ENDSETS”):定义集合及其属性定义集合及其属性集合定义部分从集合定义部分从(“DATA:”到到“ENDDATA”)给出优化目标给出优化目标和约束和约束 目标函数的定义方式目标函数的定义方式对语句中冒号对语句中冒号“:”后面的表达式,按照后面的表达式,按照“:”前前面的集合指定的下标(元素)进行求和。面的集合指定的下标(元素)进行求和。本例中目标函数也可以等价地写成本例中目标函数也可以等价地写成SUM(QUARTERS(i):400*RP(i)+450*OP(i)
18、+20*INV(i),“SUM”相当于求和符号相当于求和符号“”,由于本例中目标函数对集合由于本例中目标函数对集合QUARTERS的所有元素的所有元素(下下标标)都要求和,所以可以将下标都要求和,所以可以将下标i省去。省去。min=sum(Quarters:400*RP+450*OP+20*INV);SUM(集合(下标):关于集合的属性的表达式集合(下标):关于集合的属性的表达式)约束的定义方式约束的定义方式循环函数循环函数FOR(集合集合(下标下标):关于集合的属性的约束关系式:关于集合的属性的约束关系式)对冒号对冒号“:”前面的集合的每个元素(下标),冒号前面的集合的每个元素(下标),冒号
19、“:”后面的约束关系式都要成立后面的约束关系式都要成立 本例中,每个季度正常的生产能力是本例中,每个季度正常的生产能力是40条帆船,这正是条帆船,这正是语句语句“FOR(QUARTERS(I):RP(I)40);”的含义。的含义。这个语句可以简化成这个语句可以简化成“FOR(QUARTERS:RP40);”。for(quarters(I):RP(I)1;“#GT#”是逻辑运算符号,意思是是逻辑运算符号,意思是“大于(大于(Greater Than的字首字母缩写)的字首字母缩写)”。约束的定义方式约束的定义方式()(1)()()(),1,2,3,4INV IINV IRP IOP IDEM II
20、10)0(INV问题的求解:运行菜单命令问题的求解:运行菜单命令“LINGO|Solve”全局最优解全局最优解RP=(40,40,40,25),OP=(0,10,35,0)最小成本最小成本=78450 Lingo模型的基本结构模型的基本结构(1)集合段()集合段(SETS):):sets:Quarters/1,2,3,4/:DEM,RP,OP,INV,I;endsets或者或者 sets:Quarters/1.4/:DEM,RP,OP,INV,I;endsets(2)目标与约束段:)目标与约束段:min=sum(Quarters:400*RP+450*OP+20*INV);For(quarte
21、rs(I):RP(I)40);For(Quarters(I)|I#GT#1:INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););INV(1)=10+RP(1)+OP(1)-DEM(1);(3)数据段)数据段(DATA):DATA:DEM=40,60,75,25;(或写成(或写成DEM=40 60 75 25;);)Enddata(4 4)初始段)初始段(INIT)(INIT):以:以“INIT:”开始,开始,“ENDINIT”结束,对集合的属性结束,对集合的属性(数组数组)定义初值定义初值(因为求解算法一般因为求解算法一般是迭代算法,所以用户如果能给出一个比较好的迭代初是
22、迭代算法,所以用户如果能给出一个比较好的迭代初值,对提高算法的计算效果是有益的值,对提高算法的计算效果是有益的)。如果有一个接近最优解的初值,对如果有一个接近最优解的初值,对LINGO求解模型求解模型是有帮助的。定义初值的格式为:是有帮助的。定义初值的格式为:“attribute(属性)(属性)=value_list(常数列表);(常数列表);”这与数据段中的用法是类似的。这与数据段中的用法是类似的。上例中没有初始化部分,我们将在下一个例子中举例上例中没有初始化部分,我们将在下一个例子中举例说明。说明。(5 5)计算段)计算段(CALC)(CALC):以:以“CALC:”开始,开始,“ENDC
23、ALC”结束,对一些原始数据进行计算处理。结束,对一些原始数据进行计算处理。在实际问题中,输入的数据通常是原始数据,不一定在实际问题中,输入的数据通常是原始数据,不一定能在模型中直接使用,可以在这个段对这些原始数据进能在模型中直接使用,可以在这个段对这些原始数据进行一定的行一定的“预处理预处理”,得到模型中真正需要的数据。,得到模型中真正需要的数据。例如上例,如果希望得到全年的总需求和季度平均需求,可以增加这个段:例如上例,如果希望得到全年的总需求和季度平均需求,可以增加这个段:CALC:T_DEM=SUM(quarters:DEM);!总需求总需求;A_DEM=T_DEM/size(quar
24、ters);!平均需求平均需求;ENDCALC在计算段中也可以使用集合函数(其中函数在计算段中也可以使用集合函数(其中函数size(quarters)表示集合表示集合quarters的元素个数,这里也就是的元素个数,这里也就是4)。这时,变量)。这时,变量T_DEM的值就是总需求,的值就是总需求,A_DEM的值就是平均需求(如果需要的话,这两个变量就可以在程序的的值就是平均需求(如果需要的话,这两个变量就可以在程序的其它地方作为常数使用了)。其它地方作为常数使用了)。注:上面的两个语句不能交换顺序,因为计算注:上面的两个语句不能交换顺序,因为计算A_DEM必须要用到必须要用到T_DEM的的值。
25、此外,在计算段中只能直接使用赋值语句,而不能包含需要经过解方值。此外,在计算段中只能直接使用赋值语句,而不能包含需要经过解方程或经过求解优化问题以后才能决定的变量。程或经过求解优化问题以后才能决定的变量。1,2,3,4,5LINGO|OPTIONS|Integer Pre-Solver(整数预处理程序)选项卡NAME(var_or_row_refernce)返回变量名或行名。文件(File)主菜单DATA:L:CITIES对应的属性变量(我们要求的最短路长)注:这里省略了部分输出结果MPS Format(MPS格式):是IBM公司制定的一种数学规划文件格式。将WINDOWS剪贴板中的内容粘贴到
展开阅读全文