1 Lingo 软件在求解数学优化问题的使用技巧 LINGO 是一种专门用于求解数学规划问题的软件包。由于LINGO 执行速度快,易于方便地输入、求解和分析数学规划问题,因此在教学、科研和工业界得到广泛应用。LINGO主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可以用于求解一些线性和非线性方程组及代数方程求根等。 LINGO 的最新版本为LINGO7.0,但解密版通常为4.0 和5.0 版本,本书就以LINGO5.0为参照而编写。 1.LINGO 编写格式 LINGO 模型以MODEL 开始,以END 结束。中间为语句,分为四大部分(SECTION): (1) 集合部分(SETS):这部分以“SETS:”开始,以“ENDSETS”结束。这部分的作用在于定义必要的变量,便于后面进行编程进行大规模计算,就象 C 语言在在程序的第一部分定义变量和数组一样。在LINGO 中称为集合(SET)及其元素(MEMBER 或ELEMENT,类似于数组的下标)和属性(ATTRIBUTE,类似于数组)。 LINGO 中的集合有两类:一类是原始集合(PRIMITIVE SETS),其定义的格式为: SETNAME/member list(or 1..n)/:attribu te,attribu te,etc。 另一类是是导出集合(DERIVED SETS),即引用其它集合定义的集合,其定义的格式为: SETNAME(set1,set2,etc。):attribu te,attribu te,etc。 如果要在程序中使用数组,就必须在该部分进行定义,否则可不需要该部分。 (2) 目标与约束:这部分定义了目标函数、约束条件等。一般要用到LINGO 的内部函数,可在后面的具体应用中体会其功能与用法。求解优化问题时,该部分是必须的。 (3) 数据部分(DATA):这部分以“DATA:”开始,以“END DATA”结束。其作用在于对集合的属性(数组)输入必要的数值。格式为:attribu t=v alu e_list 。该部分主要是方便数据的输入。 (4) 初始化部分(INIT):这部分以“INIT:”开始,以“END INIT”结束。作用在于对集合的属性(数组)定义初值。格式为:attribu te=v alu e_list。由于非线性规划求解时,通常得到的是局部最优解,而局部最优解受输入的初值影响。通常可改变初值来得到不同的解,从而发现更好的解。 编写LINGO 程序要注意的几点: 1.所有的语句除 SETS、ENDSETS、DATA、ENDDATA、INIT、ENDINIT 和MODEL,END之外必须以一个分号“;”结尾。 2.LINGO 求解非线性规划时已约定各变量非负。 LINGO 内部函数使用详解。 LINGO 建立优化模型时可以引用...