LINGO的基本用法综述_第1页
LINGO的基本用法综述_第2页
LINGO的基本用法综述_第3页
LINGO的基本用法综述_第4页
LINGO的基本用法综述_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LINGO入门LINGO的菜单用LINGO编程语言建立模型LINGO的运算符和函数LINGO的基本用法§1.1

LINGO入门第一章LINGO的基本用法1.LINGO的主要功能特色:(1)既能求解线性规划问题,也有较强的求解非线性规划

问题的能力;(2)输入模型简练直观;(3)运行速度快,计算能力强;(4)内置建模语言,提供几十个内部函数,从而能以较少

语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换

为LINGO模型;(6)能方便地与Excel、数据库等其他软件交换数据;建模时需要注意的几个基本问题:(1)尽量使用实数优化模型,减少整数约束和整数变量的个数;(2)尽量使用光滑优化模型,减少非光滑约束的个数;如:尽量少地使用绝对值函数、符号函数、多个变量求最大(或最小)值、四舍五入函数、取整函数等.(3)尽量使用线性优化模型,减少非线性约束和非线性变量的个数(如x/y<5改为x<5y);(4)合理设定变量的上下界,尽可能给出变量的初始值;(5)模型中使用的单位的数量级要适当(如小于103);【约束条件】2.LINGO的基本用法.例1.某工厂有两条生产线,分别用来生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M产品需要1个劳动日(1个工人工作8小时为1个劳动日)进行调试、检测等工作,而每个P产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应该如何安排生产计划,才能使获得的利润最大?解:设两种产品的生产量分别为x1和x2,则该数学模型为【目标函数】再用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个客户的订货量模型如下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,9

4,9,5,3,8,5,8,2

5,2,1,9,7,4,3,3

7,6,7,3,9,2,7,1

2,3,9,5,7,2,6,5

5,5,2,2,8,1,4,3;

DATA:ENDDATA注:①数据初始化部分以“DATA:”开始,以ENDDATA结束,这两个语句必须单独成一行;②数据之间的逗号和空格可以替换3.目标函数和约束条件.例2的目标函数:用LINGO语句表示为:MIN=@SUM(LINKS(I,J):C(I,J)*X(I,J));注:①@SUM是LINGO提供的内部函数,其作用是对某个集合的所有成员,求指定表达式的和.@SUM有两个参数:集合名称和表达式②如果表达式中参与运算的属性属于同一个集合,则

@SUM的索引可以省略.即MIN=@SUM(LINKS:C*X);例2的约束条件:用LINGO语句表示为:@FOR(WH(I):@SUM(VD(J):X(I,J))<=AI(I));注:①@FOR是LINGO提供的内部函数,其作用是对某个集合的所有成员分别生成一个约束表达式.@FOR有两个参数:集合名和约束表达式这里的集合名表示对该集合所有成员生成对应约束表达式问:语句中的I,J能不能省略?用LINGO语句表示为:@FOR(VD(J):@SUM(WH(I):X(I,J))=DJ(J));§1.4

LINGO的运算符和函数一、LINGO的常用运算符.1.算术运算符.^*/+-2.逻辑运算符.分类运算符作用运算对象是两个数#EQ#两个运算对象相等时为真,否则为假#NE#两个运算对象不相等时为真,否则为假#GT#左边大于右边时为真,否则为假#GE#左边大于或等于右边时为真,否则为假#LT#左边小于右边时为真,否则为假#LE#左边小于或等于右边时为真,否则为假预算对象是逻辑值或逻辑表达式#NOT#单目运算符,表示对运算对象取反(即真变假,假变真)#AND#两个运算对象都真时为真,否则为假#OR#两个运算对象都假时为假,否则为真逻辑运算符优先级别:#NOT#最高,#AND#和#OR#最低3.关系运算符.关系运算符通常用在条件表达式中,用来指定约束条件表达式左边与右边必须满足的关系.有以下三种:=<=>=注:①LINGO没有单独的“<”和“>”关系,如果出现了单个“<”和“>”,LINGO认为是省略了“=”.②如果需要严格小(大)于关系,如A严格小于B,可以表示成:这里是一个小的正数,它的值依赖于模型中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)返回自由度为N的x2分布分布函数值@PTD(N,X)返回自由度为N的t分布的分布函数值@RAND(SEED)返回0-1之间的伪随机数SEED为种子@QRAND(SEED)返回0-1之间的多个拟均匀随机数(只能用在数据段)@PEB(A,X)略@PEL(A,X)@PPL(A,X)@PFS(A,X,C)@PSL(X)四、集合操作函数.函数名返回值@FOR(s:e)该函数常用在约束条件中,表示对集合s中的每个成员生成一个约束条件表达式e@SUM(s:e)对集合s中的每个成员,分别得到表达式e的值,然后返回所有这些值的和@MAX(s:e)然后返回所有这些值中的最大值@MIN(s:e)然后返回所有这些值中的最小值@PROD(s:e)然后返回所有这些值的乘积@IN(s:e1)如果成员e1在集合s中,则返返回1,否则返回0@SIZE(s)返回集合s中的成员个数@INDEX(s:ek)返回成员ek在集合中的顺序号(索引值),该值在1和集合s的成员个数之间,如果集合s中没有该元素,则给出出错信息@WRAP(I,N)若I∈[1,N],返回I;否则,返回J=I-N*K(K为整数,J∈[1,N],)上表中,前五个函数的表示形式为:@函数名(集合名|条件:表达式)例.“@FOR(VD(J)|J#NE#5:表达式e);”表示什么含义?五、变量定界函数.函数名返回值@BIN(X)限制X为0或1.【该函数在0-1规划中特别有用】@BND(L,X,U)限制L≤X≤U.【可用作约束条件】@GIN(X)限制X为整数.【该函数在整数规划中特别有用】@FREE(X)取消对变量X的限制(即X可取任意实数值)注:①@BND函数可以用约束条件代替,但使用@BND函数表达变量的取值范围比使用约束条件的求解速度快,且不计入约束条件的数目中.②@FREE(X)的作用是取消对变量X的默认非负设置.例.求函数z=(x+2)2+

(y-2)2的最小值.min=(x+2)^2+(y-2)^2;@free(x);【请大家上机验证一下有@FREE和没有的差别】五、其他函数.函数名说明@WARN(‘文字信息’,逻辑表达式)如果逻辑表达式的值为真,则显示指导文字信息(用于提示)@IF(逻辑表达式,表达式为真时的值,表达式为假时的值)该函数根据逻辑表达式的结果是真还是假,决定返回值,常用来表示分段函数@USER()该函数允许用户用C语言活FORTRAN语言编写并编译自己的函数,返回用户函数的计算结果例.用@IF表示下列函数.f=@IF(x#LE#500,4*x,500+3*x);或f=@IF(x#GT#500,500+3*x,4*x);【思考:】此外还有:文件输入输出函数,金融函数,结果报告函数补充一、稠密集合与稀疏集合.SETS:WH/W1..W6/:AI;VD/V1..V8/:DJ;LINKS(WH,VD):C,X;ENDSETS省略了成员列表,只是指出它基于两个初始集合的衍生集合称为稠密集合.如果衍生集合的成员只是稠密集合中的一部分(子集),则称为稀疏集合.稀疏集合的定义方法有两种:(1)直接列表法;(2)元素过滤法.例.有如下工作流程.ABCEFGHIJKDSETS:TASK/ABCDEFGHIJK/;PRED(TASK,TASK)/A,BB,CC,FC,GF,JG,JJ,KD,EE,HE,IH,JI,J/;ENDSETS(1)直接列表法;(2)元素过滤法.例.某公司8个职员两两相容度如下表.S1S2S3S4S5S6S7S8S1-9342156S2--173521S3---44292S4----1552S5-----876S6------23S7-------4S8--------SETS:REN/1..8/;LINKS(REN,REN)|&2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论