【LINGO教程】 Ling
Lingo是一款强大的数学优化软件,专用于解决线性和非线性优化问题。它配备了一种内置的建模语言,使得构建大规模优化模型变得简单易行。通过Lingo高效的求解器,用户能快速找到最优解并进行深入的分析。
**快速入门**
对于初学者,Lingo的界面友好且操作直观。在Windows环境下启动Lingo,会看到一个主框架窗口,包含了所有菜单命令和工具条。默认模型窗口是建立和编辑模型的地方。例如,要解决一个简单的线性规划(LP)问题,可以在模型窗口中输入模型描述,如以下例子:
**例1.1**
```markdown
min=2*x1+3*x2;
x1+x2>=350;
x1>=100;
2*x1+x2<=600;
```
然后点击工具条上的运行按钮即可求解。
**例1.2**
对于6个产地和8个销地的最小费用运输问题,可以构建如下模型:
```markdown
model:
!6 发点 8 收点运输问题 ;
sets:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
endsets
! 目标函数 ;
min=@sum(links: cost*volume);
! 需求约束 ;
@for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J));
! 产量约束 ;
@for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I));
! 数据 ;
data:
capacity=60 55 51 43 41 52;
demand=35 37 22 32 41 32 43 38;
cost=6 2 6 7 4 2 9 5 ...
4 9 5 3 8 5 8 2 ...
5 2 1 9 7 4 3 3 ...
7 6 7 3 9 2 7 1 ...
2 3 9 5 7 2 6 5 ...
5 5 2 2 8 1 4 3;
enddata
end
```
同样,编好模型后点击运行按钮即可得到解决方案。
**集的使用**
在实际问题建模中,集是至关重要的概念。Lingo中的集允许将相关对象组织在一起,便于表达复杂的模型。集有两种类型:原始集(primitive set)和派生集(derived set)。原始集由基本对象构成,而派生集则根据其他集定义其成员。
**2.1 为何使用集**
集是Lingo建模语言的核心,能用简洁的公式表示一系列相似的约束,简化大型模型的表达,提高编程效率。
**2.2 什么是集**
集是一组相关对象,每个对象称为集的成员。成员可以有多个属性,属性值可能是预设的,也可能是待求解的未知数。例如,产品集的每个产品可以有价格属性,卡车集的每辆卡车有牵引力属性,员工集的每个员工有薪水和生日属性等。
**2.3 集的定义**
在Lingo模型中,集的定义通常位于模型的集部分,以`sets:`开头,`endsets`结束。模型可以不包含集部分,或者只有一个简单的集部分,也可以有多个集部分。集部分的定义有助于清晰地组织模型结构,并为后续的模型建立打下基础。
在深入学习Lingo的集和建模技巧后,用户将能够更加熟练地构建和解决各种实际问题的优化模型。Lingo不仅适用于初学者,也是专业人士解决复杂优化问题的理想工具。