您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Lingo入门学习ppt
优化模型与Lingo软件优化模型与LINGO优化软件优化模型与Lingo软件简要提纲•优化模型简介•LINDO公司的主要软件产品及功能简介•LINGO软件的使用简介•建模与求解实例(结合软件使用)•参考教材:《优化建模与LINDO/LINGO软件》谢金星,薛毅,清华大学出版社,2006优化模型与Lingo软件优化模型实际问题中的优化模型1()(),(,)..()0,1,2,TniMinMaxzfxxxxstgxim或x~决策变量f(x)~目标函数gi(x)0~约束条件数学规划线性规划(LP)二次规划(QP)非线性规划(NLP)纯整数规划(PIP)混合整数规划(MIP)整数规划(IP)0-1整数规划一般整数规划连续规划优化模型与Lingo软件LINDO公司软件产品简要介绍美国芝加哥(Chicago)大学的LinusSchrage教授于1980年前后开发,后来成立LINDO系统公司(LINDOSystemsInc.),网址:(V6.1)LINGO:LinearINteractiveGeneralOptimizer(V10.0)LINDOAPI:LINDOApplicationProgrammingInterface(V2.0)What’sBest!:(SpreadSheete.g.EXCEL)(V7.0)演示(试用)版、学生版、高级版、超级版、工业版、扩展版…(求解问题规模和选件不同)优化模型与Lingo软件Matlab优化工具箱能求解的优化问题优化模型与Lingo软件LINGO软件能求解的优化模型LINGOLINDO优化模型线性规划(LP)非线性规划(NLP)二次规划(QP)连续优化整数规划(IP)优化模型与Lingo软件LPQPNLPIP全局优化(选)ILPIQPINLPLINGO软件的求解过程LINGO预处理程序线性优化求解程序非线性优化求解程序分枝定界管理程序1.确定常数2.识别类型1.单纯形算法2.内点算法(选)1、顺序线性规划法(SLP)2、广义既约梯度法(GRG)(选)3、多点搜索(Multistart)(选)优化模型与Lingo软件建模时需要注意的几个基本问题1、尽量使用实数优化,减少整数约束和整数变量2、尽量使用光滑优化,减少非光滑约束的个数如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等3、尽量使用线性模型,减少非线性约束和非线性变量的个数(如x/y5改为x5y)4、合理设定变量上下界,尽可能给出变量初始值5、模型中使用的参数数量级要适当(如小于103)优化模型与Lingo软件需要掌握的几个重要方面1、掌握集合(SETS)的应用;2、正确阅读求解报告;3、正确理解求解状态窗口;4、学会设置基本的求解选项(OPTIONS);5、掌握与外部文件的基本接口方法优化模型与Lingo软件LINGO软件简介•目标与约束段•集合段(SETSENDSETS)•数据段(DATAENDDATA)•初始段(INITENDINIT)•计算段(CALCENDCALC)——LINGO9.0以上LINGO模型的构成:LINGO模型的优点•集成了线性(非线性)/连续(整数)/全局优化功能•提供了灵活的编程语言(矩阵生成器)优化模型与Lingo软件LINGO模型—例:选址问题某公司有6个建筑工地,位置坐标为(ai,bi)(单位:公里),水泥日用量di(单位:吨)i123456a1.258.750.55.7537.25b1.250.754.7556.57.75d35476111)现有2料场,位于A(5,1),B(2,7),记(xj,yj),j=1,2,日储量ej各有20吨。假设:料场和工地之间有直线道路目标:制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。优化模型与Lingo软件用例中数据计算,最优解为i1234561ic(料场A)3507012ic(料场B)0040610总吨公里数为136.22,1,6,...,1,..])()[(min612121612/122jecidctsbyaxcjijiiijjjiijijij线性规划模型决策变量:cij(料场j到工地i的运量)~12维演示Location_LP.lg4优化模型与Lingo软件选址问题:NLP2)改建两个新料场,需要确定新料场位置(xj,yj)和运量cij,在其它条件不变下使总吨公里数最小。2,1,6,...,1,..])()[(min612121612/122jecidctsbyaxcjijiiijjjiijijij决策变量:cij,(xj,yj)~16维非线性规划模型演示Location_NLP.lg4优化模型与Lingo软件LINGO模型的构成:4个段集合段(SETSENDSETS)数据段(DATAENDDATA)初始段(INITENDINIT)目标与约束段局部最优:89.8835(吨公里)LP:移到数据段优化模型与Lingo软件边界优化模型与Lingo软件LINGO中的集•对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。优化模型与Lingo软件为什么使用集•集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。优化模型与Lingo软件什么是集•集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。优化模型与Lingo软件•LINGO有两种类型的集:基本集(primitiveset)派生集(derivedset)•一个基本集是由一些最基本的对象组成的。•一个派生集是用一个或多个其它集来定义的,也就是说,派生集的成员来自于其它已存在的集。优化模型与Lingo软件基本集•定义基本集的语法:setname[/member_list/][:attribute_list];必须部分可选部分可选部分集名成员列表属性列表•集合定义方法:直接列举法隐式列举法优化模型与Lingo软件1、集合元素的直接列举•例定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和agesets:students/JohnJill,RoseMike/:sex,age;endsets优化模型与Lingo软件2、集合元素的隐式列举类型隐式列举格式示例示例集合的元素数字型1..n1..51,2,3,4,5字符-数字型stringM..stringNCar101..car208Car101,car102,…,car208星期型dayM..dayNMON..FRIMON,TUE,WED,THU,FRI月份型monthM..monthNOCT..JANOCT,NOV,DEC,JAN年份-月份型monthYearM..monthYearNOCT2001..JAN2002OCT2001,NOV2001,DEC2001,JAN2002优化模型与Lingo软件语法:setname/member1..memberN/[:attribute_list];set:students/s1..s7/:sex,age;date/MON..FRI/:aa,bb;month/OCT2001..JAN2002/;endsets优化模型与Lingo软件•集成员不放在集定义中,而在随后的数据部分来定义。sets:students:sex,age;endsetsdata:students,sex,age=John116Jill014Rose017Mike113;enddata优化模型与Lingo软件•可以把集、集成员和集属性同C语言中的结构体作个类比。如下图:•集←→结构体•集成员←→结构体的域•集属性←→结构体实例优化模型与Lingo软件•LINGO内置的建模语言是一种描述性语言,用它可以描述现实世界中的一些问题,然后再借助于LINGO求解器求解。因此,集属性的值一旦在模型中被确定,就不可能再更改。在LINGO中,只有在初始部分中给出的集属性值在以后的求解中可更改。这与前面并不矛盾,初始部分是LINGO求解器的需要,并不是描述问题所必须的。优化模型与Lingo软件定义派生集•定义一个派生集,必须详细声明:集的名字父集的名字[集成员][成员的属性]•语法如下:setname(parent_set_list)[/member_list/][:attribute_list];•setname是集的名字。parent_set_list是已定义的集的列表,多个时必须用逗号隔开。如果没有指定成员列表,那么LINGO会自动创建父集成员的所有组合作为派生集的成员。派生集的父集既可以是原始集,也可以是其它的派生集。优化模型与Lingo软件•sets:•product/AB/;•machine/MN/;•week/1..2/;•allowed(product,machine,week):x;•endsets优化模型与Lingo软件•LINGO生成了三个父集的所有组合共八组作为allowed集的成员。列表如下:•编号成员•1(A,M,1)•2(A,M,2)•3(A,N,1)•4(A,N,2)•5(B,M,1)•6(B,M,2)7(B,N,1)•8(B,N,2)优化模型与Lingo软件•稠密集•稀疏集•派生集成员的声明也可以放在数据部分•①显式罗列;allowed(product,machine,week)/AM1,AN2,BN1/:x;•②设置成员资格过滤器。优化模型与Lingo软件sets:!学生集:性别属性sex,1表示男性,0表示女性;年龄属性age.;students/John,Jill,Rose,Mike/:sex,age;!男学生和女学生的联系集:友好程度属性friend,[0,1]之间的数。;linkmf(students,students)|sex(&1)#eq#1#and#sex(&2)#eq#0:friend;!男学生和女学生的友好程度大于0.5的集;linkmf2(linkmf)|friend(&1,&2)#ge#0.5:x;endsets优化模型与Lingo软件•data:•sex,age=116•014•017•013;•friend=0.30.50.6;•enddata优化模型与Lingo软件•LINGO可识别的集只有两种类型:原始集和派生集。•在一个模型中,原始集是基本的对象,不能再被拆分成更小的组分。•原始集可以由显式罗列和隐式罗列两种方式来定义。当用显式罗列方式时,需在集成员列表中逐个输入每个成员。当用隐式罗列方式时,只需在集成员列表中输入首成员和末成员。•派生集是由其它的集来创建。这些集被称为该派生集的父集(原始集或其它的派生集)。稠密集包含了父集成员的所有组合(有时也称为父集的笛卡尔乘积)。稀疏集仅包含了父集的笛卡尔乘积的一个子集优化模型与Lingo软件集合的类型集合派生集合基本集合稀疏集合稠密集合元素列表法元素过滤法直接列举法隐式列举法setname[/member_list/][:attribute_list];setname(parent_set_list)[/member_list/][:attribute_list];SETS:
本文标题:Lingo入门学习ppt
链接地址:https://www.777doc.com/doc-4472941 .html