Lingo数学建模基础

1.基本运算符

1.1算数运算符

1.2逻辑运算

#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时为true,否则为false

1.3关系运算符

>=,<=,=。不严格区分大于和大于等于、小于和小于等于。

2.函数

注意事项:

  • Lingo中模型以”MODEL:“开始,以”EDN“结束
  • 每一行后面都有一个分号”;“
  • 所有符号需要在英文下输入
  • min=函数,max=函数,表示求函数的最小,最大值;
  • Lingo不区分大小写,变量名需要以字母开头
  • 求解模型是假定所有变量均为非负,若要解除需要用函数@free(x)
  • 若要整数规划需要声明@gin({x}_i)
  • 若要0-1规划,需要将变量设置为@bin({x}_i)

3.集合

sets:              !定义集合;
类名1/1..6/:a; 
类名2/1..3/:b;
endsets

data:               !赋初值;
a=1,2,3,4,5,6;
b(1)=5
enddata

其中类名是相当于我们C语言中的结构体变量类型(自己定义),如上类名1和类名2是两个不同的类(一个类表示1行6列的矩阵,另一个表示一行3列矩阵),后面的a,b为变量名,a、b均是个矩阵,

需要在data中赋初值(可以不赋值),可以进行()访问,如b(1)。

4.循环与求和

4.1for循环

例子: S={a}_i\ast {x}_i   i=1,2,3,4,5的表示:

sets:
gc/1..5/:a,x;
endsets

data:
a=1,2,3,4,5;
enddata

max=s;
@for(gc(i):s=a(i)*x(i));

上面的@for()是一个循环语句,第一个dc(i):表示在哪个类中循环,循环几次,i将前面与后面连接起来。

4.2.sum

例子:\sum_{i=1}^{5}{x}_i=5000

@sum(gc(i):x(i))=5000;

5.创建二维数据

sets:
row/1..6/:a;
col/1..5/:b;
Cooperation(row,col):c;!c是6行5列的矩阵。;
Cooperation(col,row):d !d是5行6列的矩阵;
coo(col,row):f          !前面的名字可以自己取;
Cooperation(2,3):e  ! 报错,必须用类型名来定义;
endsets

6.实战(使用讲解)

其实lingo更像是一个数学语言翻译软件,lingo的基本组成单位不是语句,而是“等式与不等式”,每个不等式之间没有关联,所以一定要方程组有解才能运行出结果

6.1先看一下简单解方程

操作步骤如下:

点击红色的“标靶”后会出现如下窗口:

再点击Close

上面就出来x1和x2的值了。

6.2解线性规划

  • 一个线性规划中只含有一个目标函数
  • 求目标函数最大值最小值用max=...或min=...来表示

6.3复杂条件表示

  • 31
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

背水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值