Lingo基础语法笔记

内容来源

注意事项

  • 模型是以MODEL: 开始,END结尾,每句;结尾
  • min=模型,max=模型,表示求函数最大最小值
  • 不区分大小写
  • 默认所有变量非负,解除用@free(x)
  • 注释符号为:!
  • 可以给每个语句加上标号;例如 [ 标 号 ] M A X = x 1 + x 2 [标号] MAX=x_1+x_2 []MAX=x1+x2

基本运算符

算术运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

在这里插入图片描述

关系运算符

在这里插入图片描述

常见数学函数

在这里插入图片描述

目 标 函 数 最 大 值 max ⁡ z = 4 x 1 + 3 x 2 约 束 条 件 { 2 x 1 + x 2 ≤ 10 x 1 + x 2 ≤ 8 x 2 ≤ 7 x 1 , x 2 ≥ 0 目标函数最大值 \max z=4 x_{1}+3 x_{2} \\ 约束条件 \left\{\begin{array}{l} 2 x_{1}+x_{2} \leq 10 \\ x_{1}+x_{2} \leq 8 \\ x_{2} \leq 7 \\ x_{1}, x_{2} \geq 0 \end{array}\right. maxz=4x1+3x22x1+x210x1+x28x27x1,x20

model:
max=4*x1+3*x2;
2*x1+x2<10;
x1+x2<8;
x2<7;
end

整数规划@gin(x)

在这里插入图片描述

01规划@bin(x)

在这里插入图片描述

可取负数@free(x)

min ⁡ z = ∣ x 1 ∣ − 2 ∣ x 2 ∣ − 3 ∣ x 3 ∣ + 4 ∣ x 4 ∣ { x 1 − x 2 − x 3 + x 4 = 0 x 1 − x 2 + x 3 − 3 x 4 = 1 x 1 − x 2 − 2 x 3 + 3 x 4 = − 1 2 \begin{array}{l} \min z=\left|x_{1}\right|-2\left|x_{2}\right|-3\left|x_{3}\right|+4\left|x_{4}\right| \\ \left\{\begin{array}{l} x_{1}-x_{2}-x_{3}+x_{4}=0 \\ x_{1}-x_{2}+x_{3}-3 x_{4}=1 \\ x_{1}-x_{2}-2 x_{3}+3 x_{4}=-\frac{1}{2} \end{array}\right. \end{array} minz=x12x23x3+4x4x1x2x3+x4=0x1x2+x33x4=1x1x22x3+3x4=21

model:
max=@abs(x1)-2*@abs(x2)-3*@abs(x3)+4*@abs(x4);
x1-x2-x3+x4=0;
x1-x2+x3-3*x4=1;
x1-x2-2*x3+3*x4=-1/2;
@free(x1 ); @free(x2);@free(x3); @free(x4);
end

集合和条件约束

 S.t.  { min ⁡ = ∑ j = 1 3 ∑ i = 1 2 g i j × L i j ∑ i = 1 2 g i j = d j ( j = 1 , 2 , 3 ) ∑ j = 1 3 g i j = s i ( i = 1 , 2 ) \text { S.t. }\left\{\begin{array}{l} \min =\sum_{j=1}^{3} \sum_{i=1}^{2} g_{i j} \times L_{i j} \\ \sum_{i=1}^{2} g_{i j}=d_{j} \quad(j=1,2,3) \\ \sum_{j=1}^{3} g_{i j}=s_{i} \quad(i=1,2) \end{array}\right.  S.t. min=j=13i=12gij×Liji=12gij=dj(j=1,2,3)j=13gij=si(i=1,2)

model:
! 集合的本质就是拥有几个元素的集合,类型名自定义,变量名自定义
sets:
supply/1..2/:s;		!表示supply类型的数据是一个有两个元素的向量,s就是supply类型的一个数据,supply类自定义,变量名称也是自定义
demand/1..3/:d;		! 和supply相同,不过是三个元素的
link(supply,demand):road,g;		!组合元素类型名(行类型,列类型),link就是一个两行三列的二维数据组合,两个变量road和g
end sets

data:
road=10,5,6;
4,8,12;
d=50,70,40;
s=60,100;
end data

min=@sum(link(i,j):road(i,j)*g(i,j));
!@sum(类型名:数据表达式);类型名本质就是确定i,j等索引变量的范围,sum函数会依次取出范围中的数据进行数据表达式的运算。

@for(demand(j):@sum(supply(i):g(i,j))=d(j));
!和sum类似,demand(j)本质就是确定了j范围是1~3,一次遍历循环。

@for(supply(i):@sum(demand(j):g(i,j))=s(i));
end

min ⁡ Z = ∑ i = 1 n ∑ j = 1 n w i j f i j \min Z=\sum_{i=1}^{n} \sum_{j=1}^{n} w_{i j} f_{i j} minZ=i=1nj=1nwijfij
 s.t.  { ∑ j = 1 n f 1 j = 1 ∑ j = 1 n f j n = 1 ∑ j = 1 n f j i = ∑ j = 1 n f i j i ≠ 1 , n \text { s.t. }\left\{\begin{array}{l} \sum_{j=1}^{n} f_{1 j}=1 \\ \sum_{j=1}^{n} f_{j n}=1 \\ \sum_{j=1}^{n} f_{j i}=\sum_{j=1}^{n} f_{i j} \quad i \neq 1, n \end{array}\right.  s.t. j=1nf1j=1j=1nfjn=1j=1nfji=j=1nfiji=1,n

model:
sets:
node/1..6/;
road(node,node)/1,2,1,3,2,4,2,5,3,4,3,5,4,6,5,6/:w,f;
end sets

data:
w=2,1,5,3,4,3,0,0;
end data

n=@size(node);
[obj]min=@sum(road(i,j):w(i,j)*f(i,j));
@for(node(i)|i#ne#1 #and# i#ne#n:@sum(road(j,i):f(j,i))=@sum(road(i,j):f(i,j)));
! 类型后添加 | 可以后加条件约束,只有满足条件约束的才运行后面的表达式,sum类似

@sum(road(i,j)|i#eq#1:f(i,j))=1;
@sum(road(j,i)|i#eq#n:f(j,i))=1;
end

从excel中读取数据

data
d=@ole("excel文件路径","区域名称");
end data

区域名称通过选中若干单元格按 C t r l + F 3 Ctrl+F3 Ctrl+F3命名即可读取。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

「 25' h 」

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

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

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

打赏作者

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

抵扣说明:

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

余额充值