没有合适的资源?快使用搜索试试~ 我知道了~
lingo数学建模常用软件之一
资源详情
资源评论
资源推荐
LINGO 快速入门
LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优
化模型的语言,可以简便地表达大规模问题,利用 LINGO 高效的求解器可快速求解并分析
结果。
§1 LINGO快速入门 ......................................................................................................................2
§2 LINGO中的集 ..........................................................................................................................3
2.1 为什么使用集....................................................................................................................3
2.2 什么是集............................................................................................................................4
2.3 模型的集部分....................................................................................................................4
2.3.1 定义原始集.............................................................................................................4
2.3.2 定义派生集.............................................................................................................5
§3 模型的数据部分和初始部分...................................................................................................7
3.1 模型的数据部分................................................................................................................7
3.1.1 数据部分入门.........................................................................................................7
3.1.2 参数.........................................................................................................................8
3.1.3 实时数据处理.........................................................................................................8
3.1.4 指定属性为一个值.................................................................................................9
3.1.5 数据部分的未知数值.............................................................................................9
3.2 模型的初始部分..............................................................................................................10
§4 LINGO函数 ............................................................................................................................10
4.1 基本运算符......................................................................................................................10
4.1.1 算术运算符...........................................................................................................11
4.1.2 逻辑运算符...........................................................................................................11
4.1.3 关系运算符...........................................................................................................11
4.2 数学函数..........................................................................................................................12
4.3 金融函数..........................................................................................................................13
4.4 概率函数..........................................................................................................................13
4.5 变量界定函数..................................................................................................................15
4.6 集操作函数......................................................................................................................15
4.7 集循环函数......................................................................................................................16
4.8 输入和输出函数..............................................................................................................18
4.9 辅助函数..........................................................................................................................21
§5 LINGO WINDOWS命令........................................................................................................22
5.1 文件菜单(File Menu) .................................................................................................22
5.2 编辑菜单(Edit Menu)......................................................................................................23
5.3 LINGO菜单 ......................................................................................................................23
5.4 窗口菜单(Windows Menu) ........................................................................................35
5.5 帮助菜单(Help Menu).....................................................................................................37
§6 LINGO的命令行命令 ............................................................................................................37
§7 综合举例.................................................................................................................................41
1
§1 LINGO 快速入门
当你在 windows 下开始运行 LINGO 系统时,会得到类似下面的一个窗口:
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为 LINGO Model – LINGO1 的窗口是 LINGO 的默认模型窗口,建立的模型
都都要在该窗口内编码实现。下面举两个例子。
例 1.1 如何在 LINGO 中求解如下的 LP 问题:
0,
6002
100
350
..
32min
21
21
1
21
21
≥
≤+
≥
≥+
+
xx
xx
x
xx
ts
xx
在模型窗口中输入如下代码:
min=2*x1+3*x2;
x1+x2>=350;
x1>=100;
2*x1+x2<=600;
然后点击工具条上的按钮 即可。
例 1.2 使用 LINGO 软件计算 6 个发点 8 个收点的最小费用运输问题。产销单位运价如
下表。
单
位 销地
运
价
产地
B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
产量
A
1
6 2 6 7 4 2 5 9 60
A
2
4 9 5 3 8 5 8 2 55
A
3
5 2 1 9 7 4 3 3 51
A
4
7 6 7 3 9 2 7 1 43
A
5
2 3 9 5 7 2 6 5 41
A
6
5 5 2 2 8 1 4 3 52
2
销量 35 37 22 32 41 32 43 38
使用 LINGO 软件,编制程序如下:
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 的强大功能,接着第二节的学习吧。
§2 LINGO 中的集
对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、
交通工具和雇工等等。LINGO 允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合
成集,就可以利用集来最大限度的发挥 LINGO 建模语言的优势。
现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建
模技术的集如何引入模型会有一个基本的理解。
2.1 为什么使用集
集是 LINGO 建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个
单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大
的模型。
3
2.2 什么是集
集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或
雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值
可以预先给定,也可以是未知的,有待于 LINGO 求解。例如,产品集中的每个产品可以有一
个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个
薪水属性,也可以有一个生日属性等等。
LINGO 有两种类型的集:原始集(primitive set)和派生集(derived set)。
一个原始集是由一些最基本的对象组成的。
一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的
集。
2.3 模型的集部分
集部分是 LINGO 模型的一个可选部分。在 LINGO 模型中使用集之前,必须在集部分事先
定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分,或
有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个
集及其属性在模型约束中被引用之前必须定义了它们。
2.3.1 定义原始集
为了定义一个原始集,必须详细声明:
·集的名字
·可选,集的成员
·可选,集成员的属性
定义一个原始集,用下面的语法:
setname[/member_list/][:attribute_list];
注意:用“[]”表示该部分内容可选。下同,不再赘述。
Setname 是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标
准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z)、下划线、阿拉
伯数字(0,1,…,9)组成的总长度不超过 32 个字符的字符串,且不区分大小写。
注意:该命名规则同样适用于集成员名和属性名等的命名。
Member_list 是集成员列表。如果集成员放在集定义中,那么对它们可采取显式罗列和
隐式罗列两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们。
① 当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号搁开,
允许混合使用。
例 2.1 可以定义一个名为 students 的原始集,它具有成员 John、Jill、Rose 和 Mike,
属性有 sex 和 age:
sets:
students/John Jill, Rose Mike/: sex, age;
endsets
② 当隐式罗列成员时,不必罗列出每个集成员。可采用如下语法:
setname/member1..memberN/[: attribute_list];
这里的 member1 是集的第一个成员名,memberN 是集的最末一个成员名。LINGO 将自动产生
中间的所有成员名。LINGO 也接受一些特定的首成员名和末成员名,用于创建一些特殊的集。
列表如下:
隐式成员列表格式 示例 所产生集成员
4
1..n 1..5 1,2,3,4,5
StringM..StringN Car2..car14 Car2,Car3,Car4,…,Car14
DayM..DayN Mon..Fri Mon,Tue,Wed,Thu,Fri
MonthM..MonthN Oct..Jan Oct,Nov,Dec,Jan
MonthYearM..MonthYearN Oct2001..Jan2002 Oct2001,Nov2001,Dec2001,Jan2002
③ 集成员不放在集定义中,而在随后的数据部分来定义。
例 2.2
!集部分;
sets:
students:sex,age;
endsets
!数据部分;
data:
students,sex,age= John 1 16
Jill 0 14
Rose 0 17
Mike 1 13;
enddata
注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行。
在集部分只定义了一个集 students,并未指定成员。在数据部分罗列了集成员 John、
Jill、Rose 和 Mike,并对属性 sex 和 age 分别给出了值。
集成员无论用何种字符标记,它的索引都是从 1 开始连续计数。在 attribute_ list 可
以指定一个或多个集成员的属性,属性之间必须用逗号隔开。
可以把集、集成员和集属性同 C 语言中的结构体作个类比。如下图:
集 ←→ 结构体
集成员 ←→ 结构体的域
集属性 ←→ 结构体实例
LINGO 内置的建模语言是一种描述性语言,用它可以描述现实世界中的一些问题,然后
再借助于 LINGO 求解器求解。因此,集属性的值一旦在模型中被确定,就不可能再更改。在
LINGO 中,只有在初始部分中给出的集属性值在以后的求解中可更改。这与前面并不矛盾,
初始部分是 LINGO 求解器的需要,并不是描述问题所必须的。
2.3.2 定义派生集
为了定义一个派生集,必须详细声明:
·集的名字
·父集的名字
·可选,集成员
·可选,集成员的属性
可用下面的语法定义一个派生集:
setname(parent_set_list)[/member_list/][:attribute_list];
setname 是集的名字。parent_set_list 是已定义的集的列表,多个时必须用逗号隔开。
如果没有指定成员列表,那么 LINGO 会自动创建父集成员的所有组合作为派生集的成员。派
生集的父集既可以是原始集,也可以是其它的派生集。
例 2.3
sets:
product/A B/;
machine/M N/;
5
剩余52页未读,继续阅读
slimmm
- 粉丝: 1w+
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现图像处理,本程序使用背景差分法对来往车辆进行检测和跟踪.rar
- 基于matlab实现视频监控中车型识别代码,自己写的,希望和大家多多交流.rar
- sdk.config
- 基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
- 基于matlab实现配电网潮流 经典33节点 前推回代法潮流计算 回代电流 前推电压 带注释.rar
- 基于matlab实现模拟退火遗传算法的车辆调度问题研究,用MATLAB语言加以实现.rar
- 基于matlab实现蒙特卡洛的的移动传感器节点定位算法仿真代码.rar
- 华中数控系统818用户说明书
- 基于matlab实现卡尔曼滤波器完成多传感器数据融合 对多个机器人的不同传感器数据进行融合估计足球精确位置.rar
- 基于matlab实现进行简单车辆识别-车辆检测.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0