为了小伙伴们能够更好的掌握数模知识,数乐君今天给大家分享一篇详细的Lingo软件介绍文章,大家快来一起学习吧!

一、语法规定

  • 求目标函数的最大值或最小值分别用MAx=...或MIN=...来表示

  • 一行可以输入多个语句,一个语句也可以多行输入,但是每个语句必须以分号“;”结束;

  • 注释语句以“!”开头,以“;“结束

  • 默认情形下程序中所有的决策变量均取非负值

  • Lingo模型以“model:”开头,以“end”结束

  • 变量名以字母开头,后跟字母、数字或下划线

  • Lingo不区分大小写,即MAX和max一致

二、Lingo的运算符

1.算术运算符:用于数与数之间的数学运算。

  • +(加法)

  • -(减法或负号)

  • *(乘法)

  • /(除法)

  • ^ (求幂)

2.关系运算符:表示 “数与数之间”的大小关系。

  • < (即<=,小于等于)

  • = (等于)

  • > (即>=,大于等于)

3.逻辑运算符

运算符

作用

#EQ#

若两个运算对象相等则为真,否则为假

#NE#

若两个运算对象不等则为真,否则为假

#GT#

若两个运算对象左边大于右边则为真,否则为假

#GE#

若两个运算对象左边大于或等于右边则为真,否则为假

#LT#

若两个运算对象左边小于右边则为真,否则为假

#LE#

若两个运算对象左边小于或等于右边则为真,否则为假

#NOT#

取反运算,使真为假,假为真

#AND#

当且仅当两个运算对象都为真时为真,否则为假

#OR#

当且仅当两个运算对象都为假时为假,否则为假

4.数学函数

函数

作用

@abs(x)

返回x的绝对值

@sqrt(x)

返回x的平方根

@sin(x)

返回x的正弦值

@cos(x)

返回x的余弦值

@tan(x)

返回x的正切值

@exp(x)

返回常数e的x次方

@log(x)

返回x的自然对数

@lgm(x)

返回x的gamma函数的自然对数

@sign(x)

如果x<0返回-1;否则返回1

@floor(x)

返回x的整数部分

@smax(x1,x2,…,xn)

返回x1,x2,…,xn中的最大值

@smin(x1,x2,…,xn)

返回x1,x2,…,xn中的最小值

5.变量定界函数

函数

作用

@bin(x)

限制x为0或1

@bnd(L,x,R)

限制L<=x<=R

@free(x)

x可以取任意实数

@gin(x)

限制x为整数

6.循环函数

  • @for:该函数用来产生对成员的约束(类似C/C++中的for循环用法)

  • @sum:返回遍历指定成员的一个表达式的和

  • @min:返回指定成员的一个表达式的最小值

  • @max:返回指定成员的一个表达式的最大值

7.其他函数

  • @if(logical_condition,true_result,false_result):评价一个逻辑表达式logical_condition,如果为真返回true_ result,否则返回false_result。

三、一维数组型变量

1.段的概念:LINGO中建立的优化模型可以由六个部分组成,或称为六“段”。

  • 集合段:用于定义数组型性变量SETS: …… ENDSETS

  • 数据段:用于变量赋值与数据传递DATA: ……ENDDATA

  • 目标与约束段:用于列出目标与约束唯一一个没有段的开始和结束标记

  • 计算段:用于数据初始整理计算CALC: …… ENDCALC

  • 初始段:用于变量赋初值迭代寻优INIT: ……ENDINIT

  • 子模型段:用于表达子模型进行调用@SUBMODEL mymodel:可执行语句(约束+目标)ENDSUBMODEL

2.基本集合与属性变量

  • 集合 name/n1…n4/:a;

  • name是集合名,n1…n4表示集合内到四个成员

  • a是集合属性

  • 集合定义以语句“sets:”开始,“endsets”结束,“endsets”单独成一行,后面不加标点符号

1 !举例;

2 sets:!集合段;

3 s/1..100/:x;

4 endsets

5 !目标与约束段

6 @sum(s(i):x(i))<90;!循环求和函数

  • 缺省属性的集合:work/w1w2w3/;

  • 初始集合:name、work

  • 派生集合:links(name,work):b;

  • links成员取name和work的所有可能组合,是一个由12个成员构成的矩阵

  • 该矩阵的行数与name中的成员个数相等

  • 该矩阵的列数与work中的成员个数相等

四、应用举例

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

数模备赛同时,小伙伴们不妨以赛代练来参加这场高含金量的数模竞赛!

2023第八届数维杯数学建模挑战赛等你来战!

或复制下方链接进行报名:

报名官网:http://www.nmmcm.org.cn/match_detail/26

竞赛交流群↓

(进群领取历年赛前真题及优秀论文、招募队友、赛前资讯)进群备注:学校+姓名,不可重复加群。

数学建模竞赛结束后,还需要做这件事!!