6.3.1.1 LINGO快速入门
LINGO是一种专门用于求解数学规划问题的软件包.由于LINGO执行速度快,易于方便地输入、求解和分析数学规划问题,因此在教学、科研和工业界得到广泛应用.LINGO主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可以用于求解一些线性和非线性方程组及代数方程求根等.
1.窗口界面
当你在windows系统下开始运行LINGO时,会得到类似于下面的一个窗口(图6-7).外层是主框架窗口,包含了所有菜单命令和工具条,其他所有的窗口将被包含在主窗口之下.在主窗口内的标题为LINGO Model-LINGO1的窗口是LINGO的默认模型窗口,建立的模型都要在该窗口内编码实现.
图6-7 窗口界面
例1 求解线性规划问题:
解 minz=2x1+3x2.
求解这个模型的相应LINGO程序代码如下:
然后点击工具条上的按钮即可.可得如下结果(图6-8):
图6-8 运行结果
注意 在LINGO中输入的各种符号一定要是英文状态下输入,不能是中文输入状态下的符号.LINGO中不区分字母大小写.
2.变量、常量定义
在LINGO中变量在使用前是无需定义也可以使用的.在描述类似xi,aij带有下标的变量时,我们可以输入x1,x2,x3,…,x8,但这样很麻烦.LINGO中可以使用SETS(集合)来预先定义这些变量.
(1)SETS的使用:
若要定义xi,aij,首先要确定下标i,j的取值范围,LINGO中用SETS来表示.
其中,Xb1,Xb2分别为下标1..8,1..6的名字SETS_NAME(集合名),对于集合名一般将它命名为有意义的名称,集合名必须以字母或下划线_开始.
二维下标是在两个一维下标定义的基础上给定的,定义aij下标的代码如下:
现已经定义完成下标,定义数组变量时则需在下标后加上冒号再写上变量名,代码如下:
(2)DATA的使用(常量定义):
在LINGO中把常量理解为已经被给定某常数的变量,在DATA中对一些变量赋值,使之成为常量.
(3)变量类型:
LINGO中变量被默认为大于等于0的浮点型变量,在解决某些问题对变量有特殊的要求,需要重新定义其变量类型.下面介绍几个常用的:
①变量不受大于等于的限制,即也可以取到负值:
用@Free(x);语句.
②变量为整型:
用@Gin(x);语句.
(4)Loop语句:
LINGO提供的FOR,SUM,MAX,MIN(小写表示也可,LINGO函数不区分大小写)语句会使我们更轻松地表达多种约束表达式,同时也避免了大量的输入工作.
(5)FOR语句:
假定我们要定义xi为整型变量,一般我们需要写下如下代码:
显然这太麻烦了,使用FOR语句
就可以替代上面的输入工作.
FOR语句格式:
(www.xing528.com)
(6)SUM语句:
在约束条件表达式中经常用到提供的SUM语句能方便地表达,但必须要以SETS为基础.
SUM语句格式和FOR语句类似:
SUM语句不可以像FOR语句那样作为单独的一句话出现,一般将它和另一个常量或表达式比较大小,例:
(7)MAX语句:
MAX语句的功能是从一组取值与下标有关的表达式中返回它们的最大值,格式如下:
例2 请表达MAX(bi*ci)>=33,i=1..8.
解 其中的一组取值是b1*c1,b2*c2,b3*c3,….再从中挑选出最大值作为MAX语句的值.相应LINGO代码如下:
(8)MIN语句:
MIN语句的功能是从一组取值与下标有关的表达式中返回它们的最小值.用法与MAX的相同.
当我们求解一个模型时,或许会有大量的数据要整合到代码中,而这些数据大部分时候会被保存在Excel中.LINGO提供了一些命令方便我们将数据直接从Excel中导入到LINGO中.即与Excel链接的命令——@OLE.
例3 导入数据:
此前,我们在E盘已建立了一个名为DATA.XLS的Excel文件.需要指出的是DA,DB,DC是Excel中对一系列单元格的命名,即先选中某个一维或多维单元格区域,然后再在显示单元格行列坐标的文本框中写入这个区域的命名,再回车确认.这样就可以通过这个命名来控制访问EXCLE的数据了.
6.3.1.2 LINGO函数
1.算术运算符
算术运算符是针对数值进行操作的.LINGO提供了5种二元运算符:^乘方、*乘、/除、+加、-减.这些运算符的优先级由高到底为:
例4 算术运算符示例
2.逻辑运算符
在LINGO中,逻辑运算符主要用于集循环函数的条件表达式,来控制在函数中哪些集成员被包含,哪些被排斥.
LINGO具有9种逻辑运算符:
这些运算符的优先级由高到低为:
3.关系运算符
在LINGO中,关系运算符主要是被用在模型中,来指定一个表达式的左边是否等于、小于等于或者大于等于右边,形成模型的一个约束条件.关系运算符与逻辑运算符#eq#、#le#、#ge#截然不同,前者是模型中该关系运算符所指定关系的为真描述,而后者仅仅判断一个该关系是否被满足:满足为真,不满足为假.
LINGO有三种关系运算符:“=”、“<=”和“>=”.LINGO中还能用“<”表示小于等于关系,“>”表示大于等于关系.LINGO不支持严格小于和严格大于关系运算符.下面给出以上三类操作符的优先级:
4.数学函数
LINGO提供了大量的标准数学函数:
例6 求满足如下条件的最小值.
解 在代码窗口中编写
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。