当前位置:
文档之家› LINGO教程(数据输入输出)
LINGO教程(数据输入输出)
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