lingo软件及其应用(经典).pptVIP

  • 232
  • 0
  • 约3.8万字
  • 约 128页
  • 2017-10-16 发布于浙江
  • 举报
LINGO软件及其应用 薛申芳 2009.3.15 目录 1 软件平台 2 lingo编程 3 应用举例 1 软件平台 (1)美国芝加哥(Chicago)大学的Linus Schrage(莱纳斯.施拉盖 )教授于1980年前后开发。 (2) LINGO: Linear Interactive General Optimizer (线性交互式通用优化器)。 (3)用来求解的优化模型(连续优化和整数规划(IP))。 类型:线性规划(LP)、二次规划(QP)、非线性规划(NLP)。 (4)LINGO的界面如下 (6)LINGO 模型的最基本特征 : 有max=(或min=) 每行后面均有一个分号“;” 系数与变量间有“*” 首行可增添:”model:”,末行增添”end” 2 lingo编程 2.1 LINGO模型构成的4个段 (1)集合段(SETS ENDSETS) (2)数据段(DATA ENDDATA) (3)初始段(INIT ENDINIT) (4)目标与约束段 2.2 集合段 (1)集:集是一群相联系的对象(集部分是LINGO模型的一个可选部分,即一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们,集部分以关键字“sets:”开始,以“endsets”结束 (2)成员:集的对象 (3)属性:集成员可能有一个或多个与之有关联的特征,称为属性(属性值可以预先给定,也可以是未知的,有待于lINGO求解) (4)集的类型 说明: 集名字必须严格符合标准命名规则:以字母或下划线(_)为首字符,其后由字母(A—Z)、下划线、阿拉伯数字(0,1,…,9)组成的总长度不超过32个字符的字符串,且不区分大小写。 如果集成员放在集定义中,那么对它们可采取显式罗列(必须为每个成员输入一个不同的名字,中间用空格或逗号搁开)和隐式罗列(不必罗列出每个集成员。可采用如下语法: setname/member1..memberN/[: attribute_list]; 这里的 member1 是集的第一个成员名,memberN 是集的最末一个成员名。LINGO 将自动产生中间的所有成员名)两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们,如: !集部分; sets: students:sex,age; endsets !数据部分; data: students,sex,age= John 1 16 Jill 0 14 Rose 0 17 Mike 1 13; enddata 2.3 运算符的优先级 2.4 数据段 data: 变量1=数据列; 变量2=数据列; ……; Enddata 例 1 例2 有时只想为一个集的某个属性的部分成员指定值,而让该属性的其余成员的保持未知,以便让LINGO去求出它们的最优值。在数据声明中输入两个相连的逗号表示该位置对应的集成员的属性值未知。两个逗号间可以有空格 。 2.5初始段 init: 变量列=数据列; Endinit 说明:(1)初始部分输入的值仅被LINGO求解器当作初始点来用,并且仅仅对非线性模型有用。和数据部分指定变量的值不同,LINGO求解器可以自由改变初始部分初始化的变量的值。 (2)初始部分的初始声明规则和数据部分的数据声明规则相同。也就是说,我们可以在声明的左边同时初始化多个集属性,可以把集属性初始化为一个值,可以用问号实现实时数据处理,还可以用逗号指定未知数值。 init: X, Y = 0, .1; endinit Y=@log(X); X^2+Y^2=1; 好的初始点会减少模型的求解时间。 2.6 目标和约束段 目标函数 约束条件 2.7 各种函数 (1) 常用函数 @sin(x); @cos(x); @tan(x); @exp(x); @log(x); @abs(x); @smax(x); @smin(x); @sign(x);符号函数(与数学中的符号函数一致) @floor(x);原点方向取整 (2) 变量界定函数 @bnd(L,x,U):限定LxU; @bin(x):限定x取0、1值; @free(x):取消x的非负限制; @gin(x):限定x为整数(general interger) (3) 集合循环函数 @function(setname(index_list)|condi

文档评论(0)

1亿VIP精品文档

相关文档