文章目录
Lingo软件的基本语法
1.1.集合
set:
集合名称1/成员列表1/:属性1-1,属性1-2,……,属性1-n1;
集合名称2/成员列表2/:属性2-1,属性2-2,……,属性2-n2;
派生集合名称(集合名称1,集合名称2):属性3-1,属性3-2,……,属性3-n3;
endsets
例子
sets:
product/A B/;
machine/M N/;
week/1..2/;
allowed(product,machine,week):x;
endsets
1.2.数据
data:
属性1=数据列表;
属性2=数据列表;
enddata
1.3.数据计算段
数据计算段部分不能含有变量,必须是已知数据的运算
calc:
b=0;
a=a+1;
endcalc
1.4.变量的初始化
变量的初始化主要用于非线性问题赋值初始值
init:
X,Y=0,.1;
endinit
Y=@log(X);
X^2+Y^2<=1;
好的初始点会减少模型的求解时间
1.6. 实时数据处理
data:
interest_rate,inflation_rate=.085?;
enddata
注
- Lingo中是不区分大小写字符的
- Lingo中数据部分不能使用分式,不能用1/2
- Lingo中注释是用!进行引导的
- Lingo中默认的所有变量都是非负的
- Lingo中矩阵数据是逐行储存,Matlab中的数据是逐列储存的
Lingo函数
2.1.算术运算符
2.2.逻辑运算符
逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数值哪些集成员被包含,哪些被排斥。在创建稀疏矩阵集时用在成员资格过滤器中。
2.3.关系运算符
只有三种
=、<=,>=
他不支持严格小于或严格大于。
2.6.集循环函数
@for:该函数用来产生对集成员的约束
@sum:该函数返回遍历指定的集成员的一个表达式的和
@min和@max:返回指定的集成员的一个表达式的最小值和最大值
求向量[5,1,3,4,6,10]前5个数的最小值,后3个数的最大值。
model:
data:
N=6;
enddata
sets:
number/1..N/:x;
endsets
data:
x=5 1 3 4 6 10;
enddata
minv=@min(number(i)|i#le#5:x);
maxv=@max(number(i)|i#ge#N-2:x);
end
参考文献
司守奎,孙兆亮.数学建模算法与应用.国防工业出版社,第二版.
感谢百度翻译对本文章的大力支持
1.inflation
时间
2022年7月16日15:00:00——16:03:27