ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:110.67KB ,
资源ID:18763490      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18763490.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LINGO使用说明比较简单Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LINGO使用说明比较简单Word下载.docx

1、+ 5 x88274 x1+ 7 x2+ 2 x3+ 5 x4+ 8 x5+ 8 x6+ 7 x7+ 6 x84445 x1+ 4 x3+ 4 x4+ 4 x5+ 5 x6+ x7 +7 x8 +6156 x1+ 8 x3+ 7 x4+ 6 x6+ 2 x7+ 8 x826求解这个模型的相应LINGO程序代码如下:程序一:max= x1+x2+x3+x4+x5+x6+x7+x8;x1 + 7*x2 + 4*x3 + 5*x4 + 5*x5 + 6*x6 + 9*x7 + 3*x8 + 4 15;2*x1 + 8*x2 + 5*x3 + 6*x4 + 7*x5 + 2*x6 + 5*x7 + 4

2、*x8 + 9 38 ;3*x1 + 5*x2 + 6*x3 + 9*x4 + 5*x5 + 4*x6 + 4*x7 + 5*x8 + 8 27;4*x1 + 7*x2 + 2*x3 + 5*x4 + 8*x5 + 8*x6 + 7*x7 + 6*x8 + 4 44;5*x1 + 5*x2 + 4*x3 + 4*x4 + 4*x5 + 5*x6 + x7 + 7*x8 + 6 15;6*x1 + 8*x2 + 8*x3 + 7*x4 + 5*x5 + 6*x6 + 2*x7 + 8*x8 + 9 26;注:然后点击工具条上的按钮 即可。本模型的最优解为2.636364 程序二:SETS:xb1

3、 /1.8/:x;xb2 /1.6/ :b,c;xb3 (xb2,xb1):a;ENDSETSDATA:a= 1 7 4 5 5 6 9 328 5 6 7 2 5 435 6 9 5 4 4 547 2 5 8 8 7 655 4 4 4 5 1 768 8 7 5 6 2 8;b= 15 38 27 44 15 26;c= 4 9 8 4 6 9;ENDDATAMAX =sum( xb1(i) :x(i);for( xb2(i): sum( xb1(j) : a(i,j)*x(j) ) +c(i)= b(i););然后点击工具条上的按钮|自即可。本模型的最优解为2.636364注意:(1)

4、在lingo中输入的各种符号一定要是英文状态下输入,不能是中文输入状态下的 符号。例如正确输入 xb3 (xb2,xb1): 错误输入 xb3 (xb2,xb1): a;(2)Lingo中不区分字母大小写一.变量、常量定义在lingo中变量在使用前是无需定义也可以使用的。 在描述类似xi ,aij带有下标的变量时,我们可以在使用时一一例举,即,x1,x2,x3.x8,但这样显然很麻烦(刚接触 LINGO的时候 大部分是这样使用的)。Lin go中可以使用sets来预先定义这些变量,然后就可以在 loop语句方便地访问这一组变量,也可以用小 x(2), a(2,3)的形式访问个别变量,这和 C语

5、言中的数组是类似的。1. SETS的使用:为了定义xi,aij,那么首先要确定下标i和j的取值范围。在lingo中用 sets来表示。代码:SETS :Xb1 /1.8/ ;Xb2 /1.6/ ;其中xb1、xb2分别为下标1.8 , 1.6的名字(sets_name,这些名字在loop语句中 要使用。对于sets_name般将它命名为有意义的名称,这个 sets_name必须以字母或下 划线(_)开始。二维下标是在两个一维下标定义的基础上给定的,定义a (i,j)下标的代码如下:Xb1 /1.8/;Xb3 (xb2,xb1);(关于下标的定义还有其他的方法,请参考 LINGO的help文件,

6、自行学习)现在下标已经定义完成了,定义数组变量时则需在下标后加上 冒号 再写上变量名,代码如下:Xb1 /1.8/:x,c,b ;Xb3 (xb2,xb1):2 DATA 的使用(常量定义) :在 lingo 中把常量理解为已经被给定某常数的变量, 在 DATA 中对一些变量赋值, 使之成 为常量。代码如下:请尝试着在 lingo 中输入以上代码后点击 solve 按钮,查看执行结果。 这些变量的值在规划求解中始终不变,也即为常量。3变量类型:Lingo 中变量被默认为大于等于 0 的浮点型变量,在解决某些问题对变量有特殊的要求,需 要重新定义其变量类型。 下面介绍几个常用的:1变量不受大于等

7、于的限制,即也可以取到负值:用 Free( x ); 语句。2变量为整型 :用 Gin( x );3变量为二进制数,即取值非 0即1:用 Bin( x ); 其中 x 是要改变类型的变量。 更多请见 lingo 的 help 文件。Loop语句Lingo提供的FOR、SUM、MAX、MIN语句会使我们更轻松地表达多种约束表达式, 同时也避免了大量的输入工作。l.for语句:a)假定我们要定义xi为整型变量,一般我们需要写下如下代码:显然这太麻烦了。使用GIN(X(1); GIN(X(2); GIN(X(3);GIN(X(4);GIN(X(5); GIN(X(6); GIN(X(7);GIN(X

8、(8); for语句for( xb1( i ) : GIN( x( i );就可以替代上面的输入工作。其中 xb1在上述代码中已经定义过,变量i是索引变量FOR语句格式:FOR( SETS_NAME (索引变量):循环部分表达式)下面我们用C语言来帮助理解,以便我们更好地理解。For( i=1;i=8;i+) g in( x(i);for语句中冒号前面的部分 xb1( i )说明索引变量i将从1递增到到8 ;冒号后 面是循环的内容,可以是一个语句,也可以是多个语句用分号隔开。b)上面介绍的是一维的循环,二维循环也与之类似,例如:for( xb3(i , j) : gin( a(i,j);用C语

9、言解释为:For(i=;For(j=1;j=6;j+) gi n( a(i,j); 2.SUM语句:在约束条件表达式中经常用到刀,lingo提供的SUM语句能方便地表达,但必须要以 SETS为基础。SUM语句格式和FOR语句类似:SUM( SETS_NAME (索引变量):被累加部分表达式)其中累加部分表达式只能是一条语句。SUM语句不可以像FOR语句那样作为单独的一句话出现,一般将它和另一个常量或 表达式比较大小,例:SUM(SETS_NAME (索引变量):被累加部分表达式 )=常量(表达式); 有时为了程序看上去更简洁,可以这样写:VName=SUM(SETS_NAME (索引变量):被

10、累加部分表达式 ); VName= 33 , i=1.8其中的一组取值是b1*c1,b2*c2,b3*c3.,再从中挑选出最大值作为 MAX语句的值。相应 Lingo 代码如下:max( xb1( i ) : b( i )*c( i ) ) =33 ;同样 MAX 语句也可以用于多维变量。4.MIN 语句:MIN 语句的功能是从一组取值与下标有关的表达式中返回它们的最小值。 用法与 MAX 的 相同。三 EXCEL 电子表格接口在你解决一个模型的时候, 或许会有大量的数据要整合到你的代码中去, 而这些数据 大部分时候会被保存在电子表格中。而且 EXCEL 也是用来处理你所得到的数据较好的一 个

11、选择。出于上述原因, LINGO 提供了一些命令方便你将数据直接从电子表格中导入到 模型中。在这里我将只介绍一个与 EXCLE 链接的命令 OLE。1导入数据: 我们先看一个例程:xb1 /1.8/ : x ;c , b;DATA :a,b,c= OLE (E:DATA , DA , DB , DC MAX=sum( xb1(i) : x(i) );sum( xb1(j) : a(i,j)*x(j) +c(i)同时我们在E盘新建了一个名为DATA.XLS的EXCLE文件;关于EXCLE的使用,这里 不更多说明。需要指出的是 DA 是 EXCLE 中对一系列单元格的命名,即先 选中某个一维或多维

12、单元格区域,然后再在显示单元格行列坐标的文本框中写入对这个区域 的命名,再回车确认。这样就可以通过这个命名来控制访问 EXCLE 的数据了。至于另一种 操作方法请查找相关的 help 文件。以上只是介绍了 LINGO 基本的知识,上面的程序未经调试,可能存在一些问题!还有希 望大家能尽可能使用help文件,在其中有着详细的解答!四 LINGO 函数LINGO 有 9 种类型的函数:1 1 基本运算符:包括算术运算符、逻辑运算符和关系运算符22 数学函数:三角函数和常规的数学函数33 金融函数: LINGO 提供的两种金融函数44 概率函数: LINGO 提供了大量概率相关的函数55 变量界定函

13、数:这类函数用来定义变量的取值范围66 集操作函数:这类函数为对集的操作提供帮助77 集循环函数:遍历集的元素,执行一定的操作的函数88 数据输入输出函数:这类函数允许模型和外部数据源相联系,进行数据的输入输出99 辅助函数:各种杂类函数4.1基本运算符 这些运算符是非常基本的,甚至可以不认为它们是一类函数。事实上,在 LINGO 中它们 是非常重要的。4.1.1算术运算符 算术运算符是针对数值进行操作的。 LINGO 提供了 5 种二元运算符: 人乘方 *乘 /除 +加 -减LINGO唯一的一元算术运算符是取反函数这些运算符的优先级由高到底为:高-(取反)人*/低 H 运算符的运算次序为从左

14、到右按优先级高低来执行。运算的次序可以用圆括号“ ()”来改变。 例 4.1 算术运算符示例。2-5/3, (2 + 4)/5 等等。4.1.2逻辑运算符在 LINGO 中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集 成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。LINGO具有9种逻辑运算符:#not# 否定该操作数的逻辑值,# n ot#是一个一元运算符#eq# 若两个运算数相等,则为true;否则为flase#ne# 若两个运算符不相等,则为true;#gt# 若左边的运算符严格大于右边的运算符,则为 true;#ge# 若左边的运算符大于或等于右边的运

15、算符,则为 true;#lt# 若左边的运算符严格小于右边的运算符,则为 true;#le# 若左边的运算符小于或等于右边的运算符,则为 true;#and# 仅当两个参数都为true时,结果为true;#or# 仅当两个参数都为false时,结果为false;否则为true这些运算符的优先级由高到低为:高 #not#eq# #ne# #gt# #ge# #lt# #le#低 #and# #or#例 4.2 逻辑运算符示例2 #gt# 3 #and# 4 #gt# 2,其结果为假( 0)。4.1.3关系运算符在 LINGO 中,关系运算符主要是被用在模型中,来指定一个表达式的左边是否等于、小

16、于等于、或者大于等于右边, 形成模型的一个约束条件。 关系运算符与逻辑运算符 #eq#、#le#、 #ge#截然不同,前者是模型中该关系运算符所指定关系的为真描述,而后者仅仅判断一个该关系是否被满足:满足为真,不满足为假。LINGO有三种关系运算符:“=。LINGO中还能用“ 表示小于等于关系,“”表示大于等于关系。LINGO并不支持严格小于和严格大于关系运算符。然而,如果需 要严格小于和严格大于关系,比如让 A严格小于B:AB ,那么可以把它变成如下的小于等于表达式:A+ =B这里&是一个小的正数,它的值依赖于模型中 A小于B多少才算不等。下面给出以上三类操作符的优先级:高 #no t# -

17、(取反)A#eq# #ne# #gt# #ge# #lt# #le# #and# #or#低 =4.2数学函数LINGO提供了大量的标准数学函数:abs(x) s in(x) cos(x) ta n(x) exp(x) log(x) lgm(x) sig n(x) floor(x)返回x的绝对值返回x的正弦值,x采用弧度制返回x的余弦值返回x的正切值返回常数e的x次方返回x的自然对数返回x的gamma函数的自然对数如果x=0时,返回不超过x的最大整数;当x0 时,返回不低于x的最大整数max(x1,x2,xn)返回x1,x2,xn中的最大值min(x1,x2,xn)返回x1,x2,xn中的最小

18、值4.3金融函数目前LINGO提供了两个金融函数。4.4概率函数1.pbn(p,n,x)二项分布的累积分布函数。当n和(或)x不是整数时,用线性插值法进行计算。2pcx(n,x)自由度为n的分布的累积分布函数。3peb(a,x)当到达负荷为a,服务系统有x个服务器且允许无穷排队时的Erlang繁忙概率。4pel(a,x)当到达负荷为a,服务系统有x个服务器且不允许排队时的Erlang繁忙概率。5pfd(n,d,x)自由度为 n 和 d 的 F 分布的累积分布函数。6pfs(a,x,c)当负荷上限为a,顾客数为c,平行服务器数量为x时,有限源的Poisson服务系统的等 待或返修顾客数的期望值。

19、a是顾客数乘以平均服务时间,再除以平均返修时间。当c和(或) x 不是整数时,采用线性插值进行计算。7phg(pop,g,n,x)超几何(Hypergeometric)分布的累积分布函数。pop表示产品总数,g是正品数。从所 有产品中任意取出n (nWpop件。pop,g,n和x都可以是非整数,这时采用线性插值进行 计算。8ppl(a,x)Poisson分布的线性损失函数,即返回max(0,z-x)的期望值,其中随机变量z服从均值为a 的Poisson分布。9pps(a,x)均值为a的Poisson分布的累积分布函数。当x不是整数时,采用线性插值进行计算。10psl(x)单位正态线性损失函数,

20、即返回max(0,z-x)的期望值,其中随机变量z服从标准正态分布。11psn(x)标准正态分布的累积分布函数。12ptd(n,x)自由度为 n 的 t 分布的累积分布函数。13qrand(seed)产生服从(0,1)区间的拟随机数。qrand只允许在模型的数据部分使用,它将用拟随机数 填满集属性。通常,声明一个 mxn的二维表,m表示运行实验的次数,n表示每次实验所需 的随机数的个数。在行内,随机数是独立分布的;在行间,随机数是非常均匀的。这些随机 数是用 “分层取样 ”的方法产生的。14rand(seed)返回 0和1 间的伪随机数,依赖于指定的种子。典型用法是 U(I+1)=rand(U

21、(I) 。注意如 果seed不变,那么产生的随机数也不变。4.5变量界定函数变量界定函数实现对变量取值范围的附加限制,共 4 种:bin(x) 限制 x 为 0 或 1bnd(L,x,U) 限制 LWxWUfree(x) 取消对变量x的默认下界为0的限制,即x可以取任意实数gin(x) 限制 x 为整数在默认情况下,LINGO规定变量是非负的,也就是说下界为 0, 上界为+x。free取消 了默认的下界为0的限制,使变量也可以取负值。bnd用于设定一个变量的上下界,它也可 以取消默认下界为 0的约束。4.6集操作函数LINGO 提供了几个函数帮助处理集。1. in(set_name,primi

22、tive_index_1 primitivendex_2, )如果元素在指定集中,返回 1 ;否则返回 0。2.index(set_name, primitive_set_element)该函数返回在集 set_name中原始集成员 primitive_set_element的索引。如果set_name被忽略, 那么LINGO将返回与primitive_set_element匹配的第一个原始集成员的索引。如果找不到, 则产生一个错误。3.wrap(index,limit)该函数返回j=index-k*limit,其中k是一个整数,取适当值保证j落在区间1, limit内。 该函数相当于inde

23、x模limit再加1。该函数在循环、多阶段计划编制中特别有用。4.size(set_name)该函数返回集一 set_name的成员个数。在模型中明确给出集大小时最好使用该函数。它的 使用使模型更加数据中立,集大小改变时也更易维护。4.7集循环函数集循环函数遍历整个集进行操作。其语法为 function(setname(set_index_list)|conditional_qualifier: expression_list);fun ction相应于下面罗列的四个集循环函数之一;set name是要遍历的集;set_ i ndexist 是集索引列表; conditional_qualif

24、ier 是用来限制集循环函数的范围, 当集循环函数遍历集的每 个成员时, LINGO 都要对 conditional_qualifier 进行评价,若结果为真,则对该成员执行 function 操作,否则跳过,继续执行下一次循环。 expression_list 是被应用到每个集成员的 表达式列表,当用的是 for函数时,expression_list可以包含多个表达式,其间用逗号隔开。 这些表达式将被作为约束加到模型中。当使用其余的三个集循环函数时, expression_list只能 有一个表达式。如果省略set_indexist,那么在expression_list中引用的所有属性的类型都是 set name 集。1 . for该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入每个约束, 不过for

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1