一个简单的Lingo程序
实例 用LINGO求解如下二次规划问题:
M
a
x
98
x
1
+
277
x
2
−
x
1
2
−
0.3
x
1
x
2
−
2
x
2
2
s
.
t
.
x
1
+
x
2
≤
100
,
x
1
≤
2
x
2
,
x
1
,
x
2
≥
0
,
且为整数
.
\begin{align} Max &\quad 98x_1 +277x_2 -x_1^2-0.3x_1x_2-2x_2^2\tag{1} \\ s.t. & \quad x_1+x_2\leq100, \tag{2}\\ & \quad x_1\leq2x_2,\tag{3}\\ & \quad x_1,x_2\geq0,且为整数.\tag{4}\\ \end{align}
Maxs.t.98x1+277x2−x12−0.3x1x2−2x22x1+x2≤100,x1≤2x2,x1,x2≥0,且为整数.(1)(2)(3)(4)
Model:
title二次规划;
max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;
x1+x2<=100;
x1<=2*x2;
@gin(x1);
@gin(x2);
End
- 一个完整的Lingo程序通常以“MODEL:”’开头,END结尾(这对词语也可以省略不写)。
- LINGO总是根据“MAX=”或“MIN=”寻找目标函数,除注释语句和TITLE语句外的其它语句都是约束条件,因此语句的顺序并不重要。
- 前面实例中限定变量取整数值的语句为“@GIN(X1)”和“@GIN(X2)”。
- LINGO中函数需要以“@”开头,常用函数有整型变量函数(@GIN)、0/1变量函数(@BIN)和上下界限定函数(@FREE、@BND)。
输出结果:运行莱单命令“LINGO|Solve或点击快捷工具分别得到求解状态窗口和求解报告窗口如下:
-
求解状态窗口主要包含模型类型和求解算法等信息。
-
求解报告窗口主要包含最优目标值和最优解等信息。
Lingo基本用法的几点注意事项
- LINGO中不区分大小写字母。
- 变量和行名不能超过32个字符,且必须以字母开头。
- 用LINGO求解优化模型时默认所有变量非负(除非用限定变量取值范围的函数@free等另行说明)。
- 为了提高LINGO求解效率,应尽可能采用线性表达式定义目标和约束。
- 语句是组成LINGO模型的基本单位,每个语句都以分号结尾。
- 以感吸号开始的是说明语句,说明语句也需要以分号结尾。
- 编写程序时应注意模型的可读性。例如:一行只写一个语句,按照语句之间的嵌套关系对语句安排适当的缩进,增加层次感。