LINGO教程(数据输入输出)
LINGO教程
LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
设从第i 个产地(A i )运往第j 个销地(B j )的单位运价为cost (i,j );从第i 个产地(A i )运往第j 个销地(B j )的运送量为valume (i ,j );i=1,...,6;j=1, (8)第j 个销地(B j )的销量为demand (j ); 第i 个产地(A i )的产量为capacity (i );目标函数(object function ) 6811mincos ()()i j t ij volume ij ==∑∑需求约束 61()()i volume ij demand j =<=∑ j=1,…,8产量约束 81()()j volume ij capacity i =<=∑ i=1,…,6(注:14个约束条件,48个变量,采用集合的概念)使用LINGO 软件,编制程序如下:model :!6发点8收点运输问题; sets : !集合定义warehouses/wh1..wh6/: capacity; !capacity 为集合属性 vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;!由两个集合构成新的集合 endsets !集合定义结束!目标函数; min =@sum (links: cost*volume); !或min =@sum (links (i,j ): cost(i)*volume(j));在数组links 上去求和!需求约束; @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教程(数据输入输出)
10
LINGO LINGO 教 程
通过文本文件输出数据
• @TEXT函数通常只在数据段使用 函数通常只在数据段使用 • 调用格式:@TEXT(['filename']) 调用格式: • 它用于数据段中将解答结果送到文本文件 filename中, 中 • 当省略 当省略filename时,结果送到标准的输出设备 时 通常就是屏幕) (通常就是屏幕) • Filename可以使用相对路径或绝对路径,若文件 可以使用相对路径或绝对路径, 可以使用相对路径或绝对路径 已经存在, 已经存在,则覆盖原文件
7
LINGO LINGO 教 程
2. 通过文本文件传递数据
• 通过文本文件输入数据 @FILE(filename) • 通过文本文件输出数据 @TEXT(['filename'])
8
LINGO LINGO 教 程
通过文本文件输入数据
• @FILE函数通常可以在集合段和数据段使用, 函数通常可以在集合段和数据段使用, 函数通常可以在集合段和数据段使用 但不允许嵌套使用。 但不允许嵌套使用。 • 调用格式:@FILE(filename) 调用格式: • filename为存放数据的文件名(可以包含完整的 为存放数据的文件名( 为存放数据的文件名 路径名,或表示在当前目录下寻找这个文件) 路径名,或表示在当前目录下寻找这个文件) • 数据文件中记录之间必须用“~”分开 数据文件中记录之间必须用“~”分开
函数@RANGED, @RANGEU输出敏感性分析信息 输出敏感性分析信息, LINGO的缺省设置是不进行敏感性分析的 因此, 的缺省设置是不进行敏感性分析的, 函数@RANGED, @RANGEU输出敏感性分析信息,但LINGO的缺省设置是不进行敏感性分析的,因此, 必须进行设置,这个选项在OPTIONS|General 必须进行设置,这个选项在OPTIONS|General Solver
lingo教程(完整版)
LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如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 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击工具条上的按钮即可。
lingo教程
LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
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 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击工具条上的按钮即可。
Lingo的基本使用方法
除“LG4”文件外, 另外几种格式的文件 都是普通的文本文件,
.MPS:表示MPS(数学规划系统)格式的模可型以文用件任。何文本编辑
器打开和编辑。
2.在LINGO中使用集合
1. LINGO入门 2.在LINGO中使用集合 3. 运算符和函数 4. LINGO的主要菜单命令 5. LINGO命令窗口 6.习题
LINGO软件的基本使用方法
LINGO软件的功能与特点
LINGO模型的功能
集成了线性(非线性) / 连续(整数) 优化功能 具有多点搜索 / 全局优化功能 提供了灵活的编程语言(矩阵生成器),可方便地输入模型 提供与其他数据文件的接口 提供与其他编程语言的接口 LINDO API 可用于自主开发 运行速度较快
Generator Memory Used (K) (内存使用 量)
Elapsed Runtime (hh:mm:ss)(求 解花费的时间)
运行状态窗口
求解 器(求 解程 序)状 态框
当前模型的类型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I开头表示 IP,以PI开头表示PIP)
约束的定义方式
用DEM,RP,OP,INV分别表示需求量、正常生产的产量、加班生 产的产量、库存量,则DEM,RP,OP,INV对每个季度都应该有一 个对应的值,也就说他们都应该是一个由4个元素组成的数组, 其中DEM是已知的,而RP,OP,INV是未知数。
问题的模型(可以看出是LP模型 )
目标函数是所有费用的和
1、尽量使用实数优化,减少整数约束和整数变量 2、尽量使用光滑优化,减少非光滑约束的个数
如:尽量少使用绝对值、符号函数、多个变量求最大/最小 值、四舍五入、取整函数等 3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y <5 改为x<5y) 4、合理设定变量上下界,尽可能给出变量初始值 5、模型中使用的参数数量级要适当 (如小于103)
lingo使用教程
注意:用“[]”表示该部分内容可选。下同,不再赘述。
Setname 是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标 准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z) 、下划线、阿拉 伯数字(0,1,„,9)组成的总长度不超过 32 个字符的字符串,且不区分大小写。
min s.t.
2 x1 3 x 2 x1 x 2 350 x1 100
2 x1 x 2 600 x1 , x 2 0
在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例 1.2 使用 LINGO 软件计算 6 个发点 8 个收点的最小费用运输问题。产销单位运价如 下表。 单 位 销地 运 B1 B2 B3 B4 B5 B6 B7 B8 产量 价 产地
使用 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的基本使用方法
2021/10/10
5
1. LINGO入门
内容提要
2.在LINGO中使用集合
3. 运算符和函数
4. LINGO的主要菜单命令
5. LINGO命令窗口
6.习题
2021/10/10
6
1. LINGO入门
1. LINGO入门 2.在LINGO中使用集合 3. 运算符和函数 4. LINGO的主要菜单命令 5. LINGO命令窗口 6.习题
2021/10/10
18
一个简单的LINGO程序
LINGO的基本用法的几点注意事项
LINGO中不区分大小写字母;变量和行名可以超过8个字符,但 不能超过32个字符,且必须以字母开头。 用LINGO解优化模型时已假定所有变量非负(除非用限定变量取 值范围的函数@free或@sub或@slb另行说明)。 变量可以放在约束条件的右端(同时数字也可放在约束条件的左 端)。但为了提高LINGO求解时的效率,应尽可能采用线性表达 式定义目标和约束(如果可能的话)。 语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编 写程序时应注意模型的可读性。例如:一行只写一个语句,按照 语句之间的嵌套关系对语句安排适当的缩进,增强层次感。 以感叹号开始的是说明语句(说明语句也需要以分号结束)。
2021/10/10
2
优化模型和算法的重要意义
最优化: 在一定条件下,寻求使目标最大(小)的决策
最优化是工程技术、经济管理、科学研究、社会生活中 经常遇到的问题, 如:
结构设计 资源分配
生产计划
运输方案
解决优化问题的手段
经验积累,主观判断
作试验,比优劣
2021/10/建10 立数学模型,求解最优策略
LINGO使用教程
§6 LINGO的命令行命令
§7 综合举例
作者 胡志兴
LINGO 教程
LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模 型的语言,可以简便地表达大规模问题,利用 LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门
当你在 windows 下开始运行 LINGO 系统时,会得到类似下面的一个窗口:
·集的名字 ·父集的名字 ·可选,集成员 ·可选,集成员的属性 可用下面的语法定义一个派生集:
setname(parent_set_list)[/member_list/][:attribute_list]; setname 是集的名字。parent_set_list 是已定义的集的列表,多个时必须用逗号隔开。如 果没有指定成员列表,那么 LINGO 会自动创建父集成员的所有组合作为派生集的成员。派 生集的父集既可以是原始集,也可以是其它的派生集。
data: students,sex,age= John 1 16 Jill 0 14 Rose 0 17 Mike 1 13;
lingo教程
LINGO是美国LINDO系统公司专门开发的用于解决优化问题的软件包,包括表达优化模型的强大语言,构建和编辑问题的全功能环境,以及可以高效求解大多数优化模型的快速内置求解器。
该软件提供了强大的语言和快速的求解引擎来解释和求解优化模型。
他有函数强、计算结果好的优点,但他最大的特点是可以让优化模型中的决策变量为整数(即整数规划),执行速度非常快。
它是一个综合的工具,使线性、非线性和整数优化模型的建立和求解更快、更简单、更有效。
LINGO可应用于生产线规划、交通运输、财务财务、投资分配、资金预算、混合调度、库存管理、资源配置等领域,在国外运筹学教材中也被广泛用作教学软件。
LINGO的优点:(1)模型表示简单,(2)数据输入和输出选择方便,(3)强大的解决方案引擎,(4)交互式模型或交钥匙应用,(5)丰富的文件和帮助功能。
LINGO是数学建模的必备工具。
在这个炎热的夏天,许多学生都在为9月份的数学建模比赛做准备。
教程1。
1个行话快速入门。
2种行话套装。
2.1为什么使用集合。
2.2什么是套装。
2.3设置部分模型。
3模型的数据部分和初始部分。
3.1模型的数据部分。
3.2模型的初始部分。
4个行话功能。
4.1基本操作员。
4.2数学函数。
4.3财务职能。
4.4概率函数。
4.5变量定义函数。
4.6设置操作功能。
4.7集循环函数。
4.8输入输出功能。
4.9辅助功能。
5 LINGO WINDOWS命令。
5.1文件菜单(文件菜单)。
5.2编辑菜单(编辑菜单)。
5.3行话菜单。
5.4窗口菜单(Windows菜单)。
5.5帮助菜单(帮助菜单)。
lingo教程(word文档)
LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如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 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击工具条上的按钮即可。
LINGO使用说明(比较简单)
Lingo介绍Lingo是美国LINDO系统公司(Lindo Symtem Inc)开发的求解数学规划系列软件中的一个(其他软件为LINGDO,GINO,What’s Best等),它的主要功能是求解大型线性、非线性和整数规划问题,目前的版本是lingo11.0。
lingo分为Demo、solve suite、hyper、industrial、extended等六类不同版本,只有Demo版本是免费的,其他版本需要向LINDO系统公司(在中国的代理商)购买,Lingo的不同版本对模型的变量总数、非线性变量个数、整型变量个数和约束条件的数量做出不同的限制(其中extended版本无限制)。
Lingo的主要功能特色为:(1)既能求解线性规划,也有较强的求解非线性规划的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强;(4)内置建模语言,提供几十种内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为Lingo语言;(6)能方便地与excel、数据库等其他软件交换数据。
学校图书馆40本《lingo和excel在数学建模中的应用》,袁新生、邵大宏、郁时炼主编,科学出版社Lingo程序设计简要说明在数学建模中会遇到如规划类的题型,在这种模型中总存在着一个目标,并希望这个目标的取值尽可能的大或小,同时与这个目标有关的一系列变量之间存在一些约束。
在构造出目标函数和约束条件的表达式后,我们需要对求出这个最值和各变量的取值。
一般我们用LINGO来对模型进行求解,本文将通过举一个简单的例子,围绕这个例子逐步学习LINGO 的使用。
LINGO只是一个求解工具,我们主要的任务还是模型的建立!当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。
LINGO使用说明(比较简单)
@sum( xb1(j) : a(i,j)*x(j)) +c(i) <= b(i);
); 同时我们在E盘新建了一个名为DATA.XLS的EXCLE文件;关于 EXCLE的使用,这里不更多说明。需要指出的是‘ DA ’ , ‘ DB ’ , ‘ DC ’是EXCLE中对一系列单元格的命名,即先选中某个一维或多维单元格 区域,然后再在显示单元格行列坐标的文本框中写入对这个区域的命 名,再回车确认。这样就可以通过这个命名来控制访问EXCLE的数据 了。至于另一种操作方法请查找相关的help文件。 以上只是介绍了LINGO基本的知识,上面的程序未经调试,可能存 在一些问题!还有希望大家能尽可能使用help文件,在其中有着详细的 解答!
相应Lingo代码如下: @max( xb1( i ) : b( i )*c( i ) ) <=33 ;
同样MAX语句也可以用于多维变量。 4.MIN语句:
MIN语句的功能是从一组取值与下标有关的表达式中返回它们 的最小值。用法与MAX的相同。
三.EXCEL电子表格接口
在你解决一个模型的时候,或许会有大量的数据要整合到你的 代码中去,而这些数据大部分时候会被保存在电子表格中。而且 EXCEL也是用来处理你所得到的数据较好的一个选择。出于上述原
当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗 口:
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将 被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的 窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实 现。 示例:求解线性规划问题:
Lingo软件使用指南
Lingo软件使用指南摘要:本文介绍了Lingo软件的基本使用方法。
从最基本的使用到复杂问题的解决,本文给出了比较详细的介绍。
Lingo软件是美国Lindo公司的产品,主要用来求解优化问题。
它是一个非常强大的软件,可以求解大部分优化问题,包括线性规划、二次规划、整数规划、运输问题等,是目前全球应用最广泛的优化软件之一。
这里我们简单介绍它的使用方法。
一进入Lingo如果你的计算机已经安装了Lingo,只需要在桌面上双击Lingo的快捷方式,就可以进入Lingo。
为了使自己的程序易于阅读,经常需要有一些注释,因此在编写程序中,每一行前面有感叹号的表示这一行是注释行,在程序运行中不起作用,希望初学者养成注释的好习惯。
二建立数学模型和 Lingo模型语言例1 在Lingo的命令窗口中输入下面的线性规划模型!目标函数;MAX = 100 * x1 + 150 * x2;!第一个约束;X1<= 100;!第二个约束;X2 <= 120;!第三个约束;X1 + 2 * x2<= 160;!end可有可无;end求解可得全局最优解:Objective value: 14500.00Variable ValueX1 100.0000X2 30.00000从这个例子可以看出,用Lingo软件求解一个简单的优化问题是非常容易的。
我们只需要输入优化问题的两个主要部分:目标函数和约束,就可以直接求解。
对于比较简单的问题,我们可以采取这种直接的方式去求解,但是,对于比较复杂的问题,用这种方式就不现实。
比如下面的例2,这就必须要使用Lingo的模型语言。
例2 一个运输问题假设WWW公司有6个仓库,储存着8个分厂生产所需要的原材料。
要求每一个仓库的供应量不能超过储存量,而且每一个分厂的需求必须得到满足。
问:如何组织运输,使总运输费用最小?已知从6个仓库到8个分厂的运输费用表。
表1 供应表2 需求表3 运输费用Wh5 2 3 9 5 7 2 6 5Wh6 5 5 2 2 8 1 4 3 这个问题是一个典型的优化问题,通常称为运输问题。
lingo教程
Lingo是使用线性规划和非线性规划来解释,解决和分析复杂问题的简单工具。
Lingo因其执行速度快,易于输入,修改,求解和分析数学程序设计问题而被广泛用于教育,科学研究和工业中。
Lingo 软件包有很多版本,但是其软件内核和用法相似。
教学版本和分发版本之间的主要区别在于,对优化问题的规模(变量和约束的数量)存在不同的限制。
有关详细信息,请访问lingo软件网站:本课程的部分内容选自用于Windows软件和应用程序(编译)(WAN Baocheng)的lingo 8.0和[2]。
推荐的参考书[1]优化建模和Lindo / Lingo软件,谢金星等编辑,2005 [2] lingo和excel在数学建模中的应用,袁新胜等人编辑。
科学出版社,2007年2月,华南农业大学数学建模训练的内容,第2.1节为何使用集合2.2集合2.3模型的一部分2.3.1定义原始集合2.3.2定义导出的集合数据部分和模型的初始部分3.1模型的数据部分3.1.1数据部分的介绍3.1.2参数3.1.3实时数据处理3.1.4将属性指定为值3.1.5数据部分的未知值3.2模型的初始部分4.1语言功能4.1基本运算符4.1.1算术运算符4.1.2逻辑运算符4.1.3关系运算符4.2数学函数4.3金融函数4.4概率函数4.5变量定义函数4.6设置运算函数4.7设置循环函数4.8输入和输出函数4.9辅助函数﹤5 lingo windows命令5.1文件菜单5.2编辑菜单5.3语言菜单5.4窗口菜单5.5帮助菜单﹤6 lingo命令行命令﹤7综合示例comprehensive 8 lingo和外部文件之间的数据传输8.1通过Windows剪贴板进行数据传输注意:可通过单击本章后面的超链接来访问本章的内容。
3华南农业大学数学建模训练第一节lingo快速启动在Windows下运行lingo系统时,您会得到一个类似于以下的窗口:外层是主框架窗口,包括所有菜单命令和工具栏,以及所有其他窗口将包含在主窗口下。
lingo入门教程
lingo入门教程Lingo是一种广泛应用于计算机编程和计算机科学领域的编程语言。
它是用于Adobe Director(一种多媒体应用程序)中的脚本语言,用于控制多媒体元素和动画。
Lingo的语法比较简单易懂,有助于创建交互式和多媒体项目。
下面是一些Lingo的基本概念和用法。
1. 变量(Variables): 在Lingo中,变量用于存储数据值。
变量可以是数字、文本或其他数据类型。
要创建变量,可以使用关键字`global`或`local`,后跟变量名和初始值(可选)。
例如:```global myVariable = 10local myText = "Hello World"```2. 条件语句(Conditional statements): 条件语句用于根据条件执行特定的代码块。
常用的条件语句有`if-then`和`if-then-else`。
例如:```if myVariable > 5 thenalert "Value is greater than 5"elsealert "Value is less than or equal to 5"end if```3. 循环(Loops): 循环用于重复执行一段代码块,直到满足指定条件为止。
Lingo提供了`repeat`和`repeat while`循环语句。
例如:```repeat with i = 1 to 5put iend repeat```4. 函数(Functions): 函数是一组预定义的代码,用于执行特定的任务。
Lingo提供了许多内置函数,如`alert`、`put`等。
您还可以创建自己的函数。
例如:```on multiplyNumbers(a, b)return a * bend multiplyNumbersput multiplyNumbers(2, 4) -- 输出8```这些只是Lingo的一些基本概念和用法。
04-第四章 Lingo的输入输出及界面
Excel07版:在公式-》定义 的名称-》名称管理器 中
第四章 Lingo的输入输出及界面
输入输出函数
Lingo函数
4.@ranged(variable_or_row_name) 为了保持最优基不变,变量的费用系数或约束行的右端项允许减 少的量。 5.@rangeu(variable_or_row_name) 为了保持最优基不变,变量的费用系数或约束行的右端项允许增 加的量。
第四章 Lingo的输入输出及界面
输入输出函数
Lingo函数
! Here is the data; DATA: CAPACITY = 60 55 51 43 41 52; DEMAND = 35 37 22 32 41 32 43 38; COST = 6 2 6 7 4 2 5 9 49538582 52197433 76739271 23957265 红色的数据部分应该从程序中分离! 5 5 2 2 8 1 4 3; ENDDATA
第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面lingo的选项第四章lingo的输入输出及界面
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14
例:
LLIINNGGOO 教 程
首先,建立相应的EXCEL数据文件 mydata.xls ,并定义相应的数据单元
B4:B7单元 C4:C7单D元4:D7单元E4:E7单元 F4:F7单元 命名为 CITIES 命名为 CO命S名T 为 NEE命D 名为SUPP命LY名为SOLUTION
用于输出结果
已经存在,则覆盖原文件
11
例:
Lingo程序exam0403.LG4(部分) :
输出表头, 并换行
LLIINNGGOO 教 程
@TEXT('exam0403.txt')=@write(4*' ','Value',12*' ','Dual',13*' ', 输出变量Ordered
'Decrease',8*' ','Increase',@newline(2)); @TEXT('exam0403.txt')=@write('Variables:',@newline(2));
• 打开EXCEL文件 • 菜单命令“插入|对象” • 选择“新建|LINDO
Document”,建立一个空的 LINGO文件对象,且在EXCEL 中出现LINGO菜单 • 输入LINGO 程序内容,即可在 EXCEL中运行LINGO程序 •虽然在EXCEL文件中嵌入了LINGO对象,但需要人工干预才能运行这个对象。 •若希望在EXCEL中自动运行一个LINGO程序 ,则需要将LINGO程序用命令脚 本进行描述,并需要用EXCEL的宏命令进行调用。
数据单元定义方法:选择EXCEL的菜单命令“插入|名称|定义” ,才谈出对话框中输入单元名称
15
Lingo程序exam0404.LG4:
MODEL: SETS: MYSET / @OLE('mydata.xls','CITIES') / : COST,NEED,SUPPLY,ORDERED; ENDSETS MIN = @SUM( MYSET( I): ORDERED( I) * COST( I)); @FOR( MYSET( I):
12
LLIINNGGOO 教 程
3. 通过电子表格文件传递数据
• 在LINGO中使用电子表格文件的数据 • 将LINGO模型嵌入、链接到电子表格文件中
13
LLIINNGGOO 教 程
在LINGO中使用电子表格文件的数据
• 实际应用中,可能有大量数据是存放在各种电子表格中的 (如EXCEL表格)。
@TEXT('exam0403.txt')=CON2,@DUAL(CON2), @RANGED(CON2), 否全局最优
@RANGEU(CON2);
@TEXT('exam0403.txt')=@write(@newline(1),'Final status for exam0403: ',@status(),
• LINGO计算的结果需要以文件方式提供给其它 应用系统使用。
2
内容提要
LLIINNGGOO 教 程
1. 通过WINDOWS剪贴板传递数据
2. 通过文本文件传递数据
3. 通过电子表格文件传递数据
4. LINGO命令脚本文件
3
LLIINNGGOO 教 程
1. 通过WINDOWS剪贴板传递数据 • 粘贴命令 ( Edit|Paste ) • 特殊粘贴命令(Edit|Paste Special … )
通过文本文件输出数据
LLIINNGGOO 教 程
• @TEXT函数通常只在数据段使用 • 调用格式:@TEXT(['filename']) • 它用于数据段中将解答结果送到文本文件
filename中, • 当省略filename时,结果送到标准的输出设备
(通常就是屏幕) • Filename可以使用相对路径或绝对路径,若文件
@if(@status(),' (Maybe Not Global Optimal)',' (Global Optimal)'),@newline(1));
函数@RANGED, @RANGEU输出敏感性分析信息,但LINGO的缺省设置是不进行敏感性分析的,因此, 必须进行设置,这个选项在OPTIONS|General Solver
特殊粘贴命令(Edit|Paste Special …)
注意:
• 在这种粘贴方式中,只有选择 “多信息文本(RTF)”或 “未格式化文本” ,才能正确输入数据;
• 其他两种方式:WORD文档和图形,LINGO在运行时完 全将它们忽略掉;
• 选择“粘贴链接”建立链接关系后,可以随时用 “EDIT|LINKS…”命令修改这个连接的属性。
• 类似的方法也可以将LINGO程序中的数据复制到其他
5
外部文件中。
LLIINNGGOO 教 程
特殊粘贴命令(Edit|Paste Special …)
• 选择特殊粘贴命令,则会出现“选择性粘贴”对话框, 请你选择粘贴格式。
效果与直接使用“Ctrl+V”的效果是 一样的,粘贴的是格式化的文本
粘贴一个WORD对象, 双击时可以打开WORD 进行编辑
LLIINNGGOO 教 程
LINGO与数据库交换数据
• 不同的数据库有不同的数据库管理系统(DBMS: DataBase Management System)
• WINDOWS环境下可以用ODBC(Open DataBase Connectivity)进行连接
• LINGO中可以使用函数@ODBC,格式为 :
16
LLIINNGGOO 教 程
输出总结报告
• Export Summary Report
•
---------------------
•
Transfer Method:
OLE BASED
•
Workbook:Biblioteka mydata.xls•
Ranges Specified:
1
•
SOLUTION
•
Ranges Found:
@TEXT('exam0403.txt')=CON1,@DUAL(CON1), @RANGED(CON1), @RANGEU(CON1);
@TEXT('exam0403.txt')=@write(@newline(1),'SUPPLY @newline(2));
Constraints:'根, 据@status() 的值输出是
9
例:
LLIINNGGOO 教 程
数据文件myfile.ldt的内容: Seattle,Detroit,Chicago,Denver~
COST,NEED,SUPPLY,ORDERED~
12,28,15,20~ 1600,1800,1200,1000~ 1700,1900,1300,1100
每调用一次@FILE(myfile.ldt) 就输入一个数据记录
@ODBC(['data_source'[, 'table_name'[, 'col_1'[, 'col_2' ...]]]]) 其中data_source是数据库名,
table_name是数据表名, col_1, col_2,...是数据列名(数据域名)。
18
LLIINNGGOO 教 程
将LINGO模型嵌入、链接到电子表格文件中
ORDERED( I) * COST( I)); @FOR( MYSET( I):
ORDERED( I) > NEED( I); ORDERED( I) < SUPPLY( I)); DATA: COST = @FILE( myfile.ldt); NEED = @FILE( myfile.ldt); SUPPLY = @FILE( myfile.ldt); ENDDATA END
19
LLIINNGGOO 教 程
4. LINGO命令脚本文件
• LINGO命令脚本文件是一个普通的文本文件,但是文件中的内容是由 一系列LINGO命令构成的命令序列。
• 使用命令脚本文件,你可以同时运行一系列的LINGO批处理命令。 • 命令脚本文件可用任何文本编辑器生成,也可以用LINGO新建文件
将剪贴板中的内容以 图形格式插入到 LINGO模型中
选择“粘贴链接” 时会建立与原文件的 链接,当数据文件改 变时,LINGO中这部 分的内容也会随之改 变
6
粘贴纯文本文件,不保 留文本的格式信息
选择了“显示为图标” 选项,则只显示一个 “文档”图标而不显示 剪贴板中的具体内容;
LLIINNGGOO 教 程
[CON1] ORDERED( I) > NEED( I); [CON2] ORDERED( I) < SUPPLY( I)); DATA: COST,NEED,SUPPLY = @OLE('mydata.xls'); @OLE('mydata.xls','SOLUTION')=ORDERED; ENDDATA END
• LINGO系统与EXCEL文件传递数据的函数的一般用法是通过
@OLE函数。 • 调用格式:
电子表格文件名
数据的单元 范围
@OLE(spreadsheet_file [, range_name_list]) • 输入数据 :“属性(或变量)=@OLE(...)” • 输出数据 :“@OLE(...)=属性(或变量)”
4