数学建模——LINGO入门学习笔记(1)
作者:互联网
数学建模——LINGO入门学习笔记(1)
*本篇笔记参考自中国大学mooc 西北工业大学《数学建模》1.3篇 *
LINGO简介
LINGO是一种专门用于求解数学规划问题的软件包。由于LINGO执行速度快,易于方便地输入、求解和分析数学规划问题,因此在 教学、科研和工业界得到广泛应用。 LINGO主要用于求解线性规划 、非线性规划、二次规划和整数规划等问题,也可以用于求解一 些线性和非线性方程组及代数方程求根等。
LINGO使用介绍
1.1编写格式
LINGO模型以MODEL开始,以END结束.中间为语句,分为四大部分。
(1)集合部分(SETS):这部分以“sets:”开始,以“endsets” 结束。定义必要的变量,便于后面进行编程进行大规模计算,在LINGO中称为集合(SET)及其元素和属性。
sets
//原始集合
SETNAME/member list(or 1..n)/:attribute,attribute,etc
/* task/1,2,3/: step1,step2,step3;
集合task类似于数组,step等表示该集合包含的元素,这里一共有3个元素。/1,2,3/表示该集合
的大小,等价于/1..3/,当集合大小比较大时,建议写后者;*/
//导出集合
SETNAME(set1,set2,etc.):attribute,attribute,etc
/*set(task,member):c;
其中task和member集为原始集合(见上),而 set则是在前两个集合的基础上定义的集合(导出
集合)。set中的元素就是task和member的笛卡儿积,也就是set={(S,T)|S∈task,T∈member}
因此,其属性 C 也就是一个m*n的矩阵(或数组)*/
endsets
(2) 目标与约束:定义了目标函数、约束条件等。 一般要用到 LINGO的内部函数.
//目标函数:
MAX=/MIN=(一定要有等于号)
//约束条件
(3)数据部分(DATA):这部分以“DATA:”开始,以“END DATA” 结束。其作用在于对集合的属性(数组)输入必要的数值.该部分主要是方便数据的输入.
attribute=value_list
/*step1=1,2,3,4;
对step1进行参数赋值;格式为:变量名= ;*/
(4)初始化部分(INIT):这部分以“INIT:”开始,以“END INIT”结 束。作用在于对集合的属性(数组)定义初值.
attribute=value_list;
- 注意:
(1) 所有的语句除SETS、ENDSETS、DATA、ENDDATA、INIT、ENDINIT和 MODEL,END之外必须以一个分号“;”结尾。
(2) LINGO求解非线性规划时已约定各变量非负.
1.2 常用函数
LINGO建立优化模型时可以引用大量内部函数, 这些函数以“@”符号打头.
(1)常用数学函数
@ABS(X) 返回变量X的绝对数值. @COS(X) 返回X的余弦值,X的单位为弧度
@EXP(X)返回指数函数值,其中e=2.72828…
@FLOOR(X)向0靠近返回X的整数部分. @LGM( X) 返回Γ函数的自然对数值. @LOG( X) 返回变量X的自然对数值
@SIGN( X) 返回变量X的符号值,当X<0时为-1; 当X>0时为1.
@SIN( X) 返回X的正弦值,X的单位为弧度 @SMAX( X1, X2,…, XN) 返回一列值X1, X2,…, XN的最大值.
@SMIN( X1, X2,…, XN) 返回一列值X1, X2,…, XN的最小值.
@TAN( X) 返回X的正切值,X的单位为弧度
(2)集合函数 集合函数的用法如下: set_operator (set_name|condition:expression)
//其中set_operator是集合函数名,set_name是数据集合名,expression 部分是表达式,|condition部分是条件,用逻辑表达式描述(无条件时 可省略)。
逻辑表达式中可以三种逻辑算符#AND#(与),#OR#(或),#NOT#(非) 和六种关系算符#EQ#(等于),#NE#(不等于),#GT#(大于),#GE# (大于等于),#LT#(小于),#LE#(小于等于)。
常见的集合函数如下:
@FOR (set_name:constraint_expressions)对集合(set_name)的每个元素 独立地生成约束,约束由约束表达式(constraint_expressions)描述. @MAX(set_name:expression)返回集合上表达式(expression)的最大值. @MIN(set_name:expression)返回集合上的表达式(expression)最小值. @SUM(set_name:expression)返回集合上的表达式(expression)的和. @SIZE(set_name)返回数据集set_name中包含元素的个数. @IN(set_name,set_element)如果数据集set_name中包含元素 set_element 则返回1,否则返回0.
(3)变量界定函数
变量函数对变量的取值范围附加限制,共有四种.
@BND(L,X,U)限制L<=X<=U
@BIN(X)限制X为0或1.
@FREE(X)取消对X的符号限制(可取任意实数值).
@GIN(X)限制X为整数值
标签:返回,set,name,函数,建模,集合,LINGO,入门 来源: https://blog.csdn.net/m0_52609088/article/details/113244258