安阳师范学院数学与统计学院运筹学实验LINGO入门LINGO的菜单用LINGO编程语言建立模型LINGO的运算符和函数LINGO的基本用法安阳师范学院数学与统计学院运筹学实验§1.1LINGO入门第一章LINGO的基本用法1.LINGO的主要功能特色:(1)既能求解线性规划问题,也有较强的求解非线性规划问题的能力;(2)输入模型简练直观;(3)运行速度快,计算能力强;(4)内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型;(6)能方便地与Excel、数据库等其他软件交换数据;安阳师范学院数学与统计学院运筹学实验建模时需要注意的几个基本问题:(1)尽量使用实数优化模型,减少整数约束和整数变量的个数;(2)尽量使用光滑优化模型,减少非光滑约束的个数;如:尽量少地使用绝对值函数、符号函数、多个变量求最大(或最小)值、四舍五入函数、取整函数等.(3)尽量使用线性优化模型,减少非线性约束和非线性变量的个数(如x/y5改为x5y);(4)合理设定变量的上下界,尽可能给出变量的初始值;(5)模型中使用的单位的数量级要适当(如小于103);安阳师范学院数学与统计学院运筹学实验【约束条件】2.LINGO的基本用法.例1.某工厂有两条生产线,分别用来生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M产品需要1个劳动日(1个工人工作8小时为1个劳动日)进行调试、检测等工作,而每个P产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应该如何安排生产计划,才能使获得的利润最大?解:设两种产品的生产量分别为x1和x2,则该数学模型为12max200300zxx1100x2120x122160xx12,0xx【目标函数】再用LINGO处理……安阳师范学院数学与统计学院运筹学实验输入LINGO如下:LINGO处理结果:安阳师范学院数学与统计学院运筹学实验LINGO的语法规定:(1)求目标函数的最大值和最小值分别用MAX=…或MIN=…来表示;(2)每个语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行;(3)变量名称必须以字母(A-Z)开头,由字母、数字(0-9)和下划线“_”组成,长度不超过32个字符,不区分大小写;(4)可以给语句加上标号,例如[OBJ]MAX=…;(5)以“!”开头,以“;”结束的语句是注释语句;(6)如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;(7)LINGO模型以语句“MODEL:”开头,以“END”结束,对于比较简单的模型,这两句可以省略;安阳师范学院数学与统计学院运筹学实验LINGO求解报告:缩减成本系数(相差值)松弛或剩余注:①最优解中变量的缩减成本系数值自动取零.②约束条件中,对于“=”不等式,称之为松弛(Slack).对于“=”不等式,称之为剩余(Surplus).不等式左右两边值相等时,松弛和剩余的值为0;如果约束条件无法满足,则松弛和剩余的值为负.影子(对偶)价格含义:如果该生产线最大生产能力增加1,能使目标函数值增加50.安阳师范学院数学与统计学院运筹学实验§1.2了解LINGO的菜单新建打开保存打印剪切复制粘贴取消重做查找定位匹配括号求解显示答案模型图示选项设置窗口后置关闭所有窗口平铺窗口在线帮助上下文相关帮助文件菜单编辑菜单LINGO菜单窗口菜单帮助菜单安阳师范学院数学与统计学院运筹学实验◆输出特殊格式文件MPS格式文件MPI格式文件IBM开发的数学规划文件标准格式LINDO公司制定的数学规划文件格式◆用户基本信息该命令弹出一个对话框,要求输入用户名和密码(这些信息在用@ODBC函数访问数据库要用到)安阳师范学院数学与统计学院运筹学实验◆选择性粘贴该命令把Window剪贴板中的内容插入到光标所在位置.◆插入新对象◆链接修改模型内插入对象的链接性质.◆对象的性质在模型中选择一个链接或嵌入对象,用本命令可以查看和修改这个对象的属性.安阳师范学院数学与统计学院运筹学实验◆灵敏度分析该命令产生当前模型的灵敏度分析报告:(1)最优解保持不变的情况下,目标函数的系数变化范围;(2)在影子价格和缩减成本系数都不变的前提下,约束条件右边的常数变化范围;例.做下列模型的灵敏度分析MAX=200*X1+300*X2;X1=100;X2=120;X1+2*X2=160;安阳师范学院数学与统计学院运筹学实验(不限)注:灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它【目标函数系数变化范围】【约束条件右边常数的变化范围】安阳师范学院数学与统计学院运筹学实验◆生成模型的展开形式为当前模型生成一个用代数表达式表示的完整形式,即LINGO将所有基于集合的表达式(目标函数和约束条件)扩展成为等价的完全展开的普通数学表达式模型.◆生成图形由模型生成图形,以矩阵形式显示模型的系数.◆调试◆模型统计资料调试结果,找到充分行(SufficientRows)和必要行(NecessaryRows).◆查看(以为本方式显示模型内容)安阳师范学院数学与统计学院运筹学实验◆命令行窗口主要是为用户交互地测试命令脚本而设计.(通常不用)◆状态窗口[变量][约束][非零系数][内存使用量][已运行时间][求解器状态][扩展求解器状态]安阳师范学院数学与统计学院运筹学实验§1.3用LINGO编程语言建立模型一、LINGO模型的基本组成.例2.某公司有6个供货栈,库存货物总数分别为60,55,51,43,41,52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38.各供货栈到8个客户处的单位货物运输价见下表34182255W656275932W517293767W433479125W328583594W295247626W1V8V7V6V5V4V3V2V1客户货栈试确定各货栈到各客户处的货物调运数量,使总的运输费用最小安阳师范学院数学与统计学院运筹学实验解:设xij从第i个货栈到第j个客户的运货量,cij表示从第i个货栈到第j个客户的单位货物运价,ai表示第i个货栈的最大供货量,dj表示第j个客户的订货量模型如下6811min;ijijijzcx81,1,2,,6;ijijxai61,1,2,,8;ijjixdj0,,1,2,,6,1,2,,8;ijxij安阳师范学院数学与统计学院运筹学实验1.集合定义部分集合是一组相关对象构成的组合集合在使用之前需要预先给出定义,初始集合的定义三要素:集合的名称,集合的元素,集合的属性(可视为与该集合有关的变量或常量).集合分为初始(基本\原始)集合和衍生(派生)集合初始集合的定义格式:集合的名称/集合的元素/:集合的属性;例.定义例2的货栈集合ai和djWH/W1..W6/:AI;VD/V1..V8/:DJ;安阳师范学院数学与统计学院运筹学实验衍生集合的定义四要素:集合的名称,对应的初始集合,集合的元素(可以省略),集合的属性(可以没有).例.定义集合,表示例3中从第i个货栈到第j个客户的运货量xij,和第i个货栈到第j个客户的单位货物运价cij.LINKS(WH,VD):C,X;注:如果集合的元素省略不写,则默认衍生集合的元素取它所对应初始集合的所有可能组合.安阳师范学院数学与统计学院运筹学实验2.数据初始化.如何给例2中的集合AI,DJ,C,X赋值?AI=60,55,51,43,41,52;DJ=35,37,22,32,41,32,43,38;C=6,2,6,7,4,2,5,94,9,5,3,8,5,8,25,2,1,9,7,4,3,37,6,7,3,9,2,7,12,3,9,5,7,2,6,55,5,2,2,8,1,4,3;DATA:ENDDATA注:①数据初始化部分以“DATA:”开始,以ENDDATA结束,这两个语句必须单独成一行;②数据之间的逗号和空格可以替换安阳师范学院数学与统计学院运筹学实验3.目标函数和约束条件.例2的目标函数:6811min;ijijijzcx用LINGO语句表示为:MIN=@SUM(LINKS(I,J):C(I,J)*X(I,J));注:①@SUM是LINGO提供的内部函数,其作用是对某个集合的所有成员,求指定表达式的和.@SUM有两个参数:集合名称和表达式②如果表达式中参与运算的属性属于同一个集合,则@SUM的索引可以省略.即MIN=@SUM(LINKS:C*X);安阳师范学院数学与统计学院运筹学实验例2的约束条件:81,1,2,,6;ijijxai用LINGO语句表示为:@FOR(WH(I):@SUM(VD(J):X(I,J))=AI(I));注:①@FOR是LINGO提供的内部函数,其作用是对某个集合的所有成员分别生成一个约束表达式.@FOR有两个参数:集合名和约束表达式这里的集合名表示对该集合所有成员生成对应约束表达式问:语句中的I,J能不能省略?61,1,2,,8;ijjixdj用LINGO语句表示为:@FOR(VD(J):@SUM(WH(I):X(I,J))=DJ(J));安阳师范学院数学与统计学院运筹学实验§1.4LINGO的运算符和函数一、LINGO的常用运算符.1.算术运算符.^*/+-2.逻辑运算符.分类运算符作用运算对象是两个数#EQ#两个运算对象相等时为真,否则为假#NE#两个运算对象不相等时为真,否则为假#GT#左边大于右边时为真,否则为假#GE#左边大于或等于右边时为真,否则为假#LT#左边小于右边时为真,否则为假#LE#左边小于或等于右边时为真,否则为假预算对象是逻辑值或逻辑表达式#NOT#单目运算符,表示对运算对象取反(即真变假,假变真)#AND#两个运算对象都真时为真,否则为假#OR#两个运算对象都假时为假,否则为真逻辑运算符优先级别:#NOT#最高,#AND#和#OR#最低安阳师范学院数学与统计学院运筹学实验3.关系运算符.关系运算符通常用在条件表达式中,用来指定约束条件表达式左边与右边必须满足的关系.有以下三种:===注:①LINGO没有单独的“”和“”关系,如果出现了单个“”和“”,LINGO认为是省略了“=”.②如果需要严格小(大)于关系,如A严格小于B,可以表示成:AB这里是一个小的正数,它的值依赖于模型中A小于B多少才算不等.例.计算2#GT#3#AND#4#GT#2结果为0(FALSE)安阳师范学院数学与统计学院运筹学实验二、数学函数.函数名返回值@ABS(X)返回X的绝对值@SIN(X)返回X的正弦值@COS(X)返回X的余弦值@TAN(X)返回X的正切值@LOG(X)返回X的自然对数值@EXP(X)返回eX的值(e为自然常数,e=2.7182818……)@SIGN(X)返回X的符号值@SMAX(X1,X2,…,Xn)返回这一系列数中的最大值@SMIN(X1,X2,…,Xn)返回这一系列数中的最小值@FLOOR(X)返回X的整数部分(向最靠近0的方向取整)@LGM(X)返回X的gamma函数的自然对数值@MOD(X,Y)返回X除以Y的余数(X和Y都是整数)@POW(X,Y)返回指数XY的值(该函数可用X^Y代替)@SQR(X)返回X的平方值(该函数可用X^2代替)@SQRT(X)返回X的正的平方根(该函数可用X^(1/2)代替)安阳师范学院数学与统计学院运筹学实验三、概率函数.函数名返回值@PSN(X)返回标准正态分布的分布函数@PPS(A,X)返回参数为A的泊松分布函数值当X不是整数时,采用线性插值进行计算@PBN(P,N,X)返回参数为P,N的二项分布的分布函数值@PHG(POP,G,N,X)返回参数为POP,G,N的超几何分布的分布函数值@PFD(N,D,X)返回参数自由度为N和D的F分布的分布函数值@PCX(N,X)返回