朱旭生 LINGO 学习心得
LINGO 的主要特点:一是数学化的语言,用的是数学模型比较直观;二
是数据段与程序语句段分开,甚至可以利用不在 lingo 文件中的外界
数据文件来给变量赋值.
1.可以利用 EXCEL 与 LINGO 之间直接传递数据;从 EXCEL 到 LINGO 的语句为
“变量=@OLE(‘EXCEL 文件的详细名称(包括路径)’)”;
从 LINGO 到 EXCEL 的语句为
“@OLE(‘EXCEL 文件的详细名称(包括路径)’)=变量”.
放在 LINGO 数据区
注意:这里的电子表格 EXCEL 的数据段应该取名,方法是用鼠标左键锁定数据区后从菜单“插
入”中选“名称”,再选“定义”,在弹出的表格中输入该数据段的名称(英文,本来在 excel 中是可
以定义中文名称的,但是作为 lingo 变量则不能)。输出的 EXCEL 表格也是如此定义数据区。
输出的表格可以与输入的表格不在同一个文件里,在 lingo 程序运行前定义出输出区域的名
称。
注意在用 cut,paste 功能时很容易多出一些标点符号,使得语句不符合语法规则!
2。在解大型问题时,可能会出现计算时 LINGO 内存不够,这时应该修改 LINGO 选择项
“Option”中的相关选项。
3。象本例中,我们对 EXCEL 的表格中的数据进行处理(关于 11 或 10 补)时,也可以利
用 LINGO 来完成。
4。条件语句:@IF( logical_condition, true_result, false_result),如下面程序:
MIN = COST;
COST = XCOST + YCOST;
XCOST = @IF( X #GT# 0, 100, 0) + 2 * X;
YCOST = @IF( Y #GT# 0, 60, 0) + 3 * Y;
X + Y >= 30;
其中生产产品 X 的成本为分段函数:x=0 时,成本为 0;x>0 时,成本为 100+2x,即生产准
备费为 100.
5.变量取名规则:以英文字母打头,后面可以跟英文字母,数字 0-9,以及下划线_.变量中的字母
大小写不区别,如:XAB 与 Xab,xab 等价.
6. SETS 段: 定义一个同样属性的集合,如同学们,老师们,宿舍群等等,他们在建模过程中往往
表示为同学 1,同学 2,……,同学 n,以下方式等价:
同学们/同学 1,同学 2,同学 3,同学 4,同学 5,同学 6,同学 7,同学 8,同学 9,同学 10/:分数;
同学们/同学 1..同学 10/:分数;
同学们/1..10/:分数;
注:最后一种表示方式必须是从数字 1 开始标,但是中间那个可以是/同学 3..同学 10/