首页 理论教育 LINGO软件使用简介

LINGO软件使用简介

时间:2023-11-19 理论教育 版权反馈
【摘要】:6.3.1.1 LINGO快速入门LINGO是一种专门用于求解数学规划问题的软件包.由于LINGO执行速度快,易于方便地输入、求解和分析数学规划问题,因此在教学、科研和工业界得到广泛应用.LINGO主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可以用于求解一些线性和非线性方程组及代数方程求根等.1.窗口界面当你在windows系统下开始运行LINGO时,会得到类似于下面的一个窗口(

LINGO软件使用简介

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的相同.

3.Excel电子表格接口

当我们求解一个模型时,或许会有大量的数据要整合到代码中,而这些数据大部分时候会被保存在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 求满足如下条件的最小值.

解 在代码窗口中编写

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈