600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Lingo 软件的使用 数学建模 司守奎

Lingo 软件的使用 数学建模 司守奎

时间:2023-09-29 02:15:08

相关推荐

Lingo 软件的使用 数学建模 司守奎

Lingo 软件的使用 数学建模 司守奎

1. Lingo 软件的基本语法

1.1集合

集合部分的语法

sets:集合名称1/成员列表1/:属性1_1,属性1_2,…,属性1_n1;集合名称2/成员列表2/:属性2_1,属性2_2,…,属性2_n2;派生集合名称(集合名称1,集合名称2):属性3_1,…,属性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!LINGO函数,后做解释;y=@log(x);x^2+y^2<=1;

注意:

Lingo中是不区分大小写字符的Lingo中数据部分不能使用分式,例如数据部分不能使用1/3Lingo中注释是使用"!"引导Lingo中默认所有变量都是非负Lingo中矩阵数据逐行存储,Matlab中数据逐列存储

2. Lingo函数

2.1 算术运算符

^乘方*乘/除+加-减

2.2 逻辑运算符

九种逻辑运算符

#not# 否定该操作数的逻辑值,#not#是一个一元运算符。#eq# 若两个运算数相等,则为 true;否则为 false。#ne# 若两个运算符不相等,则为 true;否则为 false。#gt# 若左边的运算符严格大于右边的运算符,则为 true;否则为 false。#ge# 若左边的运算符大于或等于右边的运算符,则为 true;否则为 false。#lt# 若左边的运算符严格小于右边的运算符,则为 true;否则为 false。#le# 若左边的运算符小于或等于右边的运算符,则为 true;否则为 false。#and# 仅当两个参数都为 true 时,结果为 true;否则为 false。#or# 仅当两个参数都为 false 时,结果为 false;否则为 true。

2.3 关系运算符

Lingo有三种关系运算符:"="、"<=“和”>="。

Lingo不支持严格小于和严格大于关系运算符,因此“<”也表示小于等于,“>”也表示大于等于。

2.4 数学函数

LINGO 提供了大量的标准数学函数

@abs(x)返回 x 的绝对值。@sin(x)返回 x 的正弦值,x 采用弧度制。@cos(x)返回 x 的余弦值。@tan(x)返回 x 的正切值。@exp(x)返回常数 e 的 x 次方。@log(x)返回 x 的自然对数。@lgm(x)返回 x 的 gamma 函数的自然对数。@mod(x,y)返回 x 除以 y 的余数。@sign(x)如果 x0 时返回 1,当 x=0 时返回 0。@floor(x)返回 x 的整数部分。当 x>=0 时,返回不超过 x 的最大整数;当 x<0 时,返回不低于 x 的最大整数。@smax(x1,x2,…,xn)返回 x1,x2,…,xn 中的最大值。@smin(x1,x2,…,xn)返回 x1,x2,…,xn 中的最小值。

2.5 变量界定函数

实现对变量取值范围的附加限制,有4种:

@bin(x)限制 x 为 0 或 1;@bnd(L,x,U)限制 L≤x≤U,L可以取负数,此时取消了变量x默认下界为零的约束;@free(x)取消对变量 x 的默认下界为 0 的限制,即 x 可以取任意实数;@gin(x)限制 x 为整数。

2.6 集循环函数

@for:该函数用来产生对集成员的约束。@sum:该函数返回遍历指定的集成员的一个表达式的和。@min 和@max:返回指定的集成员的一个表达式的最小值或最大值。

!@for程序示例;model:sets:number/1..5/:x;endsets@for(number(I): x(I)=I^2);end!@sum程序示例;model:data:N=6;enddatasets:number/1..N/:x;endsetsdata:x = 5 1 3 4 6 10;enddatas=@sum(number(I) | I #le# 5: x);end!@sum @max 程序示例model:data:N=6;enddatasets:number/1..N/:x;endsetsdata:x = 5 1 3 4 6 10;enddataminv=@min(number(I) | I #le# 5: x);maxv=@max(number(I) | I #ge# N-2: x);end

2.7 概率函数

2.8 集操作函数

3.对输出做一些简单解释

以简单的线性规划问题为例,求解程序如下

model:max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480; 3*x1<=100;end

Reduced Cost:变量变动时目标函数值的变化率

Slack or Surplus:最优解下的约束剩余值

Dual Price:约束变动时的目标函数值的变化率

Allowable Increase:最优解不变的允许最大变化值

Allowable Decrease:最优解不变的允许最小变化值

求解器状态窗口界面

学习了Lingo基本语法之后,读懂建模示例程序文件,再进一步自主应用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。