优化建模与LINGO第04章全解.ppt
文本预览下载声明
优化建模与LINDO/LINGO软件
第 4 章 LINGO软件与外部文件的接口
通过文件输入输出数据
通过文件输入输出数据可以将LINGO程序和程序处理的数据分离开来。
“程序和数据的分离”是结构化程序设计、面向对象编程的基本要求。
实际问题通常需要处理大规模的实际数据,而这些数据通常都是在其它应用系统中生成的,或者已经存放在其它应用系统中的某个文件或数据库中。
LINGO计算的结果需要以文件方式提供给其它应用系统使用。
通过WINDOWS剪贴板传递数据
通过文本文件传递数据
通过电子表格文件传递数据
LINGO命令脚本文件
内容提要
1. 通过WINDOWS剪贴板传递数据
粘贴命令 ( Edit|Paste )
特殊粘贴命令(Edit|Paste Special … )
粘贴命令 ( Edit|Paste )
将WORD文件或其他外部文件中的数据拷贝到Windows剪贴板
在LINGO程序中直接粘贴到需要的地方
步骤:
注意:
粘贴的数据保持了WORD表格的风格,且LINGO能够正常识别甚至编辑其字体等。
由于LINGO对集合的属性是按列赋值的,所以在外部文件中的数据与实际需要复制的数据可能发生行列颠倒的情况,需进行调整。
类似的方法也可以将LINGO程序中的数据复制到其他外部文件中。
特殊粘贴命令(Edit|Paste Special …)
选择特殊粘贴命令,则会出现“选择性粘贴”对话框,请你选择粘贴格式。
粘贴一个WORD对象,双击时可以打开WORD进行编辑
将剪贴板中的内容以图形格式插入到LINGO模型中
效果与直接使用“Ctrl+V”的效果是一样的,粘贴的是格式化的文本
选择了“显示为图标”选项,则只显示一个“文档”图标而不显示剪贴板中的具体内容;
选择“粘贴链接” 时会建立与原文件的链接,当数据文件改变时,LINGO中这部分的内容也会随之改变
粘贴纯文本文件,不保留文本的格式信息
特殊粘贴命令(Edit|Paste Special …)
在这种粘贴方式中,只有选择 “多信息文本(RTF)”或“未格式化文本” ,才能正确输入数据;
其他两种方式:WORD文档和图形,LINGO在运行时完全将它们忽略掉;
选择“粘贴链接”建立链接关系后,可以随时用“EDIT|LINKS…”命令修改这个连接的属性。
如果数据不是放在WORD文件,而是EXCEL电子表格文件或者其他应用程序的文件,操作和结果与上面介绍的过程完全类似。
注意:
2. 通过文本文件传递数据
通过文本文件输入数据 @FILE(filename)
通过文本文件输出数据 @TEXT([filename])
通过文本文件输入数据
@FILE函数通常可以在集合段和数据段使用,但不允许嵌套使用。
调用格式:@FILE(filename)
filename为存放数据的文件名(可以包含完整的路径名,或表示在当前目录下寻找这个文件)
数据文件中记录之间必须用“~”分开
例:
MODEL:
SETS:
MYSET / @FILE(myfile.ldt) / : @FILE(myfile.ldt);
ENDSETS
MIN = @SUM( MYSET( I):
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
数据文件myfile.ldt的内容:
Lingo程序exam0402.LG4 :
每调用一次@FILE(myfile.ldt)
就输入一个数据记录
Seattle,Detroit,Chicago,Denver~
COST,NEED,SUPPLY,ORDERED~
12,28,15,20~
1600,1800,1200,1000~
1700,1900,1300,1100
如输入数据发生变化,则只要修改数据文件myfile.ldt中的内容,程序不变,实现数据与程序分离
通过文本文件输出数据
@TEXT函数通常只在数据段使用
调用格式:@TEXT([filename])
它用于数据段中将解答结果送到文本文件filename中,
当省略filename时,结果送到标准的输出设备(通常就是屏幕)
Filename可以使用相对路径或绝对路径,若文件已经存在,则覆盖原文件
例:
@TEXT(exam0403.txt)=@writ
显示全部