这个公式在lingo中应该怎么word输入公式?请帮忙!

LINGO是Linear Interactive and General Optimizer的缩写,即&交互式的线性和通用优化求解器&,由美国系统公司(Lindo System Inc.)推出的,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。 其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括 0-1 整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。目前LINGO15.0为最新版本。
一般地,使用LINGO 求解运筹学问题可以分为以下两个步骤来完成:1)根据实际问题,建立数学模型,即使用数学的方法建立优化模型;2)根据优化模型,利用LINGO 来求解模型。主要是根据LINGO软件,把数学模型转译成计算机语言,借助于计算机来求解。例题:在线性规划中的应用max Z =5 X1+3 X2+6X3,s.t. X1 +2 X2 + X3 ≤182 X1 + X2 +3 X3 =16X1 + X2 + X3 =10X1,X2 ≥0,X3 为自由变量应用LINGO 来求解该模型,只需要在 lingo窗口中输入以下信息即可:max=5*x1 +3*x2 +6*x3;x1 +2*x2 + x3 &=18 ;2*x1 + x2+3*x3 =16 ;x1 + x2 + x3 =10 ;@free(x3);然后按运行按钮,得到模型最优解,具体如下:Objective value: 46.00000Variable Value Reduced Costx1 14.000x2 0..000000x3 -4 ..000000由此可知,当 x1 =14,x2 =0,x3 =-4 时,模型得到最优值,且最优值为 46。说明:在利用LINGO 求解线性规划时,如自变量都为非负的话,在LINGO 中输入的信息和模型基本相同;如自变量为自由变量,可以使用函数 @free来把系统默认的非负变量定义自由变量,如实例一中的 x3。
LINGO全称是Linear INteractive and General Optimizer的缩写---交互式的线性和通用优化求解器。它是一套设计用来帮助您快速,方便和有效的构建和求解线性,非线性,和整数最优化模型的功能全面的工具。包括功能强大的建模语言,建立和编辑问题的全功能环境,读取和写入Excel和数据库的功能,和一系列完全内置的求解程序.Lingo 是使建立和求解线性、非线性和整数最佳化模型更快更简单更有效率的综合工具。Lingo 提供强大的语言和快速的求解引擎来阐述和求解最佳化模型。1. 简单的模型表示Lingo 可以将线性、非线性和整数问题迅速得予以公式表示,并且容易阅读、了解和修改。LINGO的建模语言允许您使用汇总和下标变量以一种易懂的直观的方式来表达模型,非常类似您在使用纸和笔。模型更加容易构建,更容易理解,因此也更容易维护。2. 方便的数据输入和输出选择Lingo 建立的模型可以直接从数据库或工作表获取资料。同样地,Lingo 可以将求解结果直接输出到数据库或工作表。使得您能够在您选择的应用程序中生成报告.3. 强大的求解器LINGO拥有一整套快速的,内建的求解器用来求解线性的,非线性的(球面&;非球面的),二次的,二次约束的,和整数优化问题。您甚至不需要指定或启动特定的求解器,因为LINGO会读取您的方程式并自动选择合适的求解器。4. 交互式模型或创建Turn-key应用程序您能够在LINGO内创建和求解模型,或您能够从您自己编写的应用程序中直接调用LINGO。对于开发交互式模型,LINGO提供了一整套环境来构建,求解和分析您的模型.对于构建turn-key解决方案,LINGO提供的可调用的DLL和OLE界面能够从用户自己写的程序中被调用。LINGO也能够从Excel宏或数据库应用程序中被直接调用.广泛的文件和 HELP 功能
LINGO13.0包括扩大和加强管理能力优化模型的不确定性,一些求解性能增强,提高制图能力。
All rights reserved Powered by
www.9512.net
copyright &copyright 。好词好句内容来自网络,如有侵犯请联系客服。 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
如何使用LINGO软件
下载积分:10
内容提示:如何使用LINGO软件
文档格式:PPT|
浏览次数:139|
上传日期: 15:11:16|
文档星级:
该用户还上传了这些文档
如何使用LINGO软件
官方公共微信[转载]LINGO使用方法(指南&)
每次来到你空间给我都是一种很开心的感觉!可能这就是朋友的缘故吧!朋友也欢迎您来我家逛逛!11时02分LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。&
&1 LINGO快速入门&
当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:&
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model &
LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。&
例1.1 如何在LINGO中求解如下的LP问题:&
在模型窗口中输入如下代码:&
min=2*x1+3*x2;&
x1+x2&=350;&
2*x1+x2&=600;&
然后点击工具条上的按钮 即可。&
例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。&
产地 B1 B2 B3 B4 B5 B6 B7 B8 产量&
A1 6 2 6 7 4 2 5 9 60&
A2 4 9 5 3 8 5 8 2 55&
A3 5 2 1 9 7 4 3 3 51&
A4 7 6 7 3 9 2 7 1 43&
A5 2 3 9 5 7 2 6 5 41&
A6 5 5 2 2 8 1 4 3 52&
销量 35 37 22 32 41 32 43 38 &
使用LINGO软件,编制程序如下:&
!6发点8收点运输问题;&
& warehouses/wh1..wh6/:&
& vendors/v1..v8/:&
& links(warehouses,vendors): cost,&
!目标函数;&
& min=@sum(links: cost*volume);&
!需求约束;&
& @for(vendors(J):&
& @sum(warehouses(I): volume(I,J))=demand(J));&
!产量约束;&
& @for(warehouses(I):&
& @sum(vendors(J):
volume(I,J))&=capacity(I));&
!这里是数据;&
& capacity=60 55 51 43 41 52;&
& demand=35 37 22 32 41 32 43 38;&
& cost=6 2 6 7 4 2 9 5&
& 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;&
然后点击工具条上的按钮 即可。&
为了能够使用LINGO的强大功能,接着第二节的学习吧。&
&2 LINGO中的集&
对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。&
现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。&
2.1 为什么使用集&
集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。&
2.2 什么是集&
集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。&
LINGO有两种类型的集:原始集(primitive set)和派生集(derived set)。&
一个原始集是由一些最基本的对象组成的。&
一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。&
2.3 模型的集部分&
集部分是LINGO模型的一个可选部分。在LINGO模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们。&
2.3.1 定义原始集&
为了定义一个原始集,必须详细声明:&
?集的名字&
?可选,集的成员&
?可选,集成员的属性&
定义一个原始集,用下面的语法:&
setname[/member_list/][:attribute_list];&
注意:用“[]”表示该部分内容可选。下同,不再赘述。&
Setname是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z)、下划线、阿拉伯数字(0,1,…,9)组成的总长度不超过32个字符的字符串,且不区分大小写。&
注意:该命名规则同样适用于集成员名和属性名等的命名。&
Member_list是集成员列表。如果集成员放在集定义中,那么对它们可采取显式罗列和隐式罗列两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们。&
① 当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号搁开,允许混合使用。&
可以定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和age:&
& students/John Jill, Rose Mike/: sex,&
② 当隐式罗列成员时,不必罗列出每个集成员。可采用如下语法:&
setname/member1..memberN/[: attribute_list];&
这里的member1是集的第一个成员名,memberN是集的最末一个成员名。LINGO将自动产生中间的所有成员名。LINGO也接受一些特定的首成员名和末成员名,用于创建一些特殊的集。列表如下:&
隐式成员列表格式 示例 所产生集成员&
1..n 1..5 1,2,3,4,5&
StringM..StringN Car2..car14 Car2,Car3,Car4,…,Car14&
DayM..DayN Mon..Fri Mon,Tue,Wed,Thu,Fri&
MonthM..MonthN Oct..Jan Oct,Nov,Dec,Jan&
MonthYearM..MonthYearN Oct2001..Jan2002
Oct2001,Nov2001,Dec2001,Jan2002&
③ 集成员不放在集定义中,而在随后的数据部分来定义。&
& students:sex,&
!数据部分;&
& students,sex,age= John 1 16&
& Jill 0 14&
& Rose 0 17&
& Mike 1 13;&
注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行。&
在集部分只定义了一个集students,并未指定成员。在数据部分罗列了集成员John、Jill、Rose和Mike,并对属性sex和age分别给出了值。&
集成员无论用何种字符标记,它的索引都是从1开始连续计数。在attribute_
list可以指定一个或多个集成员的属性,属性之间必须用逗号隔开。&
可以把集、集成员和集属性同C语言中的结构体作个类比。如下图:&
集 ←→ 结构体&
集成员 ←→ 结构体的域&
集属性 ←→ 结构体实例&
LINGO内置的建模语言是一种描述性语言,用它可以描述现实世界中的一些问题,然后再借助于LINGO求解器求解。因此,集属性的值一旦在模型中被确定,就不可能再更改。在LINGO中,只有在初始部分中给出的集属性值在以后的求解中可更改。这与前面并不矛盾,初始部分是LINGO求解器的需要,并不是描述问题所必须的。&
2.3.2 定义派生集&
为了定义一个派生集,必须详细声明:&
?集的名字&
?父集的名字&
?可选,集成员&
?可选,集成员的属性&
可用下面的语法定义一个派生集:&
setname(parent_set_list)[/member_list/][:attribute_list];&
setname是集的名字。parent_set_list是已定义的集的列表,多个时必须用逗号隔开。如果没有指定成员列表,那么LINGO会自动创建父集成员的所有组合作为派生集的成员。派生集的父集既可以是原始集,也可以是其它的派生集。&
& product/A B/;&
& machine/M N/;&
& week/1..2/;&
& allowed(product,machine,week):x;&
LINGO生成了三个父集的所有组合共八组作为allowed集的成员。列表如下:&
编号 成员&
1 (A,M,1)&
2 2 (A,M,2)&
3 3 (A,N,1)&
4 4 (A,N,2)&
5 5 (B,M,1)&
6 6 (B,M,2)&
7 7 (B,N,1)&
8 8 (B,N,2)&
成员列表被忽略时,派生集成员由父集成员所有的组合构成,这样的派生集成为稠密集。如果限制派生集的成员,使它成为父集成员所有组合构成的集合的一个子集,这样的派生集成为稀疏集。同原始集一样,派生集成员的声明也可以放在数据部分。一个派生集的成员列表有两种方式生成:①显式罗列;②设置成员资格过滤器。当采用方式①时,必须显式罗列出所有要包含在派生集中的成员,并且罗列的每个成员必须属于稠密集。使用前面的例子,显式罗列派生集的成员:&
allowed(product,machine,week)/A M 1,A N 2,B N 1/;&
如果需要生成一个大的、稀疏的集,那么显式罗列就很讨厌。幸运地是许多稀疏集的成员都满足一些条件以和非成员相区分。我们可以把这些逻辑条件看作过滤器,在LINGO生成派生集的成员时把使逻辑条件为假的成员从稠密集中过滤掉。&
& !学生集:性别属性sex,1表示男性,0表示女性;年龄属性age. ;&
& students/John,Jill,Rose,Mike/:sex,&
& !男学生和女学生的联系集:友好程度属性friend,[0,1]之间的数。 ;&
& linkmf(students,students)|sex(&1) #eq# 1
#and# sex(&2) #eq# 0:&
& !男学生和女学生的友好程度大于0.5的集;&
& linkmf2(linkmf) |
friend(&1,&2) #ge# 0.5 :
& sex,age = 1 16&
& friend = 0.3 0.5 0.6;&
用竖线(|)来标记一个成员资格过滤器的开始。#eq#是逻辑运算符,用来判断是否“相等”,可参考&4.
&1可看作派生集的第1个原始父集的索引,它取遍该原始父集的所有成员;&2可看作派生集的第2
个原始父集的索引,它取遍该原始父集的所有成员;&3,&4,……,以此类推。注意如果派生集B的父集是另外的派生集A,那么上面所说的原始父集是集A向前回溯到最终的原始集,其顺序保持不变,并且派生集A的过滤器对派生集B仍然有效。因此,派生集的索引个数是最终原始父集的个数,索引的取值是从原始父集到当前派生集所作限制的总和。&
总的来说,LINGO可识别的集只有两种类型:原始集和派生集。&
在一个模型中,原始集是基本的对象,不能再被拆分成更小的组分。原始集可以由显式罗列和隐式罗列两种方式来定义。当用显式罗列方式时,需在集成员列表中逐个输入每个成员。当用隐式罗列方式时,只需在集成员列表中输入首成员和末成员,而中间的成员由LINGO产生。&
另一方面,派生集是由其它的集来创建。这些集被称为该派生集的父集(原始集或其它的派生集)。一个派生集既可以是稀疏的,也可以是稠密的。稠密集包含了父集成员的所有组合(有时也称为父集的笛卡尔乘积)。稀疏集仅包含了父集的笛卡尔乘积的一个子集,可通过显式罗列和成员资格过滤器这两种方式来定义。显式罗列方法就是逐个罗列稀疏集的成员。成员资格过滤器方法通过使用稀疏集成员必须满足的逻辑条件从稠密集成员中过滤出稀疏集的成员。不同集类型的关系见下图。&
&3 模型的数据部分和初始部分&
在处理模型的数据时,需要为集指派一些成员并且在LINGO求解模型之前为集的某些属性指定值。为此,LINGO为用户提供了两个可选部分:输入集成员和数据的数据部分(Data
Section)和为决策变量设置初始值的初始部分(Init Section)。&
& 3.1 模型的数据部分&
& 3.1.1 数据部分入门&
数据部分提供了模型相对静止部分和数据分离的可能性。显然,这对模型的维护和维数的缩放非常便利。&
数据部分以关键字“data:”开始,以关键字“enddata”结束。在这里,可以指定集成员、集的属性。其语法如下:&
object_list = value_&
对象列(object_list)包含要指定值的属性名、要设置集成员的集名,用逗号或空格隔开。一个对象列中至多有一个集名,而属性名可以有任意多。如果对象列中有多个属性名,那么它们的类型必须一致。如果对象列中有一个集名,那么对象列中所有的属性的类型就是这个集。&
数值列(value_list)包含要分配给对象列中的对象的值,用逗号或空格隔开。注意属性值的个数必须等于集成员的个数。看下面的例子。&
& set1/A,B,C/: X,Y;&
& X=1,2,3;&
& Y=4,5,6;&
在集set1中定义了两个属性X和Y。X的三个值是1、2和3,Y的三个值是4、5和6。也可采用如下例子中的复合数据声明(data
statement)实现同样的功能。&
& set1/A,B,C/: X,Y;&
& X,Y=1 4&
看到这个例子,可能会认为X被指定了1、4和2三个值,因为它们是数值列中前三个,而正确的答案是1、2和3。假设对象列有n个对象,LINGO在为对象指定值时,首先在n个对象的第1个索引处依次分配数值列中的前n个对象,然后在n个对象的第2个索引处依次分配数值列中紧接着的n个对象,……,以此类推。&
模型的所有数据——属性值和集成员——被单独放在数据部分,这可能是最规范的数据输入方式。&
3.1.2 参数&
在数据部分也可以指定一些标量变量(scalar
variables)。当一个标量变量在数据部分确定时,称之为参数。看一例,假设模型中用利率8.5%作为一个参数,就可以象下面一样输入一个利率作为参数。&
& interest_rate = .085;&
也可以同时指定多个参数。&
& interest_rate,inflation_rate = .085 .03;&
3.1.3 实时数据处理&
在某些情况,对于模型中的某些数据并不是定值。譬如模型中有一个通货膨胀率的参数,我们想在2%至6%范围内,对不同的值求解模型,来观察模型的结果对通货膨胀的依赖有多么敏感。我们把这种情况称为实时数据处理(what
if analysis)。LINGO有一个特征可方便地做到这件事。&
在本该放数的地方输入一个问号(?)。&
& interest_rate,inflation_rate = .085 ?;&
每一次求解模型时,LINGO都会提示为参数inflation_rate输入一个值。在WINDOWS操作系统下,将会接收到一个类似下面的对话框:&
直接输入一个值再点击OK按钮,LINGO就会把输入的值指定给inflation_rate,然后继续求解模型。&
& 除了参数之外,也可以实时输入集的属性值,但不允许实时输入集成员名。&
& 3.1.4 指定属性为一个值&
可以在数据声明的右边输入一个值来把所有的成员的该属性指定为一个值。看下面的例子。&
& days /MO,TU,WE,TH,FR,SA,SU/:&
& needs = 20;&
LINGO将用20指定days集的所有成员的needs属性。对于多个属性的情形,见下例。&
& days /MO,TU,WE,TH,FR,SA,SU/:needs,&
& needs cost = 20 100;&
& 3.1.5 数据部分的未知数值&
有时只想为一个集的部分成员的某个属性指定值,而让其余成员的该属性保持未知,以便让LINGO去求出它们的最优值。在数据声明中输入两个相连的逗号表示该位置对应的集成员的属性值未知。两个逗号间可以有空格。&
& years/1..5/:&
& capacity = ,34,20,,;&
属性capacity的第2个和第3个值分别为34和20,其余的未知。&
& X, Y = 0, .1;&
Y=@log(X);&
X^2+Y^2&=1;&
好的初始点会减少模型的求解时间。&
在这一节中,我们仅带大家接触了一些基本的数据输入和初始化概念,不过现在你应该可以轻松的为自己的模型加入原始数据和初始部分啦。&
4.1.1 算术运算符&
算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符:&
LINGO唯一的一元算术运算符是取反函数“﹣”。&
这些运算符的优先级由高到底为:&
高 ﹣(取反)&
    ﹡/&
  低 ﹢﹣&
运算符的运算次序为从左到右按优先级高低来执行。运算的次序可以用圆括号“()”来改变。&
例4.1 算术运算符示例。&
2﹣5/3,(2﹢4)/5等等。&
4.1.2 逻辑运算符&
LINGO具有9种逻辑运算符:&
#not#  否定该操作数的逻辑值,#not#是一个一元运算符&
#eq#  若两个运算数相等,则为true;否则为flase&
#ne# 若两个运算符不相等,则为true;否则为flase&
#gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flase&
#ge#  若左边的运算符大于或等于右边的运算符,则为true;否则为flase&
#lt#  若左边的运算符严格小于右边的运算符,则为true;否则为flase&
#le#  若左边的运算符小于或等于右边的运算符,则为true;否则为flase&
#and#  仅当两个参数都为true时,结果为true;否则为flase&
#or# 仅当两个参数都为false时,结果为false;否则为true&
这些运算符的优先级由高到低为:&
& #eq# #ne# #gt# #ge# #lt# #le#&
低 #and# #or#&
例4.2 逻辑运算符示例&
2 #gt# 3 #and# 4 #gt# 2,其结果为假(0)。&
& 4.1.3 关系运算符&
LINGO有三种关系运算符:“=”、“&=”和“&=”。LINGO中还能用“&”表示小于等于关系,“&”表示大于等于关系。LINGO并不支持严格小于和严格大于关系运算符。然而,如果需要严格小于和严格大于关系,比如让A严格小于B:A&
下面给出以上三类操作符的优先级:&
高 #not# ﹣(取反)   ^ ﹡ / ﹢﹣&
#eq# #ne# #gt# #ge# #lt# #le#&
#and# #or#&
低 &= = &=&
& 4.2 数学函数&
LINGO提供了大量的标准数学函数:&
@abs(x) 返回x的绝对值&
@sin(x) 返回x的正弦值,x采用弧度制&
@cos(x) 返回x的余弦值&
@tan(x) 返回x的正切值&
@exp(x) 返回常数e的x次方&
@log(x) 返回x的自然对数&
@lgm(x) 返回x的gamma函数的自然对数&
@sign(x) 如果x&0返回-1;否则,返回1&
返回x的整数部分。当x&=0时,返回不超过x的最大整数;当x&0时,返回不低于x的最大整数。&
@smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值&
@smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值&
& 例4.3 给定一个直角三角形,求包含该三角形的最小正方形。&
& 解:如图所示。&
求最小的正方形就相当于求如下的最优化问题:&
LINGO代码如下:&
& object/1..3/:&
& a, b = 3, 4; !两个直角边长,修改很方便;&
& f(1) = a * @sin(x);&
& f(2) = b * @cos(x);&
& f(3) = a * @cos(x) + b * @sin(x);&
& min = @smax(f(1),f(2),f(3));&
& @bnd(0,x,1.57);&
& 在上面的代码中用到了函数@bnd,详情请见4.5节。&
4.3 金融函数&
目前LINGO提供了两个金融函数。&
1.@fpa(I,n)&
返回如下情形的净现值:单位时段利率为I,连续n个时段支付,每个时段支付单位费用。若每个时段支付x单位的费用,则净现值可用x乘以@fpa(I,n)算得。@fpa的计算公式为&
净现值就是在一定时期内为了获得一定收益在该时期初所支付的实际费用。&
例4.4 贷款买房问题
贷款金额50000元,贷款年利率5.31%,采取分期付款方式(每年年末还固定金额,直至还清)。问拟贷款10年,每年需偿还多少元?&
LINGO代码如下:&
50000 = x * @fpa(.0531,10);&
答案是x=元。&
2.@fpl(I,n)&
返回如下情形的净现值:单位时段利率为I,第n个时段支付单位费用。@fpl(I,n)的计算公式为&
细心的读者可以发现这两个函数间的关系:&
& 4.4 概率函数&
1.@pbn(p,n,x)&
二项分布的累积分布函数。当n和(或)x不是整数时,用线性插值法进行计算。&
2.@pcx(n,x)&
自由度为n的χ2分布的累积分布函数。&
3.@peb(a,x)&
当到达负荷为a,服务系统有x个服务器且允许无穷排队时的Erlang繁忙概率。&
4.@pel(a,x)&
当到达负荷为a,服务系统有x个服务器且不允许排队时的Erlang繁忙概率。&
5.@pfd(n,d,x)&
自由度为n和d的F分布的累积分布函数。&
6.@pfs(a,x,c)&
当负荷上限为a,顾客数为c,平行服务器数量为x时,有限源的Poisson服务系统的等待或返修顾客数的期望值。a是顾客数乘以平均服务时间,再除以平均返修时间。当c和(或)x不是整数时,采用线性插值进行计算。&
7.@phg(pop,g,n,x)&
超几何(Hypergeometric)分布的累积分布函数。pop表示产品总数,g是正品数。从所有产品中任意取出n(n≤pop)件。pop,g,n和x都可以是非整数,这时采用线性插值进行计算。&
8.@ppl(a,x)&
Poisson分布的线性损失函数,即返回max(0,z-x)的期望值,其中随机变量z服从均值为a的Poisson分布。&
9.@pps(a,x)&
均值为a的Poisson分布的累积分布函数。当x不是整数时,采用线性插值进行计算。&
10.@psl(x)&
单位正态线性损失函数,即返回max(0,z-x)的期望值,其中随机变量z服从标准正态分布。&
11.@psn(x)&
标准正态分布的累积分布函数。&
12.@ptd(n,x)&
自由度为n的t分布的累积分布函数。&
13.@qrand(seed)&
产生服从(0,1)区间的拟随机数。@qrand只允许在模型的数据部分使用,它将用拟随机数填满集属性。通常,声明一个m&n的二维表,m表示运行实验的次数,n表示每次实验所需的随机数的个数。在行内,随机数是独立分布的;在行间,随机数是非常均匀的。这些随机数是用“分层取样”的方法产生的。&
& M=4; N=2; seed=1234567;&
& rows/1..M/;&
& cols/1..N/;&
& table(rows,cols):&
& X=@qrand(seed);&
如果没有为函数指定种子,那么LINGO将用系统时间构造种子。&
14.@rand(seed)&
返回0和1间的伪随机数,依赖于指定的种子。典型用法是U(I+1)=@rand(U(I))。注意如果seed不变,那么产生的随机数也不变。&
例4.6 利用@rand产生15个标准正态分布的随机数和自由度为2的t分布的随机数。&
!产生一列正态分布和t分布的随机数;&
& series/1..15/: u, znorm,&
& !第一个均匀分布随机数是任意的;&
& u( 1) = @rand( .1234);&
& !产生其余的均匀分布的随机数;&
& @for(series( I)| I #GT# 1:&
& u( I) = @rand( u( I - 1))&
& @for( series( I):&
& !正态分布随机数;&
& @psn( znorm( I)) = u( I);&
& !和自由度为2的t分布随机数;&
& @ptd( 2, zt( I)) = u( I);&
& !ZNORM 和 ZT 可以是负数;&
& @free( znorm( I)); @free( zt( I));&
4.5 变量界定函数&
变量界定函数实现对变量取值范围的附加限制,共4种:&
@bin(x) 限制x为0或1&
@bnd(L,x,U) 限制L≤x≤U&
@free(x) 取消对变量x的默认下界为0的限制,即x可以取任意实数&
@gin(x) 限制x为整数&
在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。@free取消了默认的下界为0的限制,使变量也可以取负值。@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。&
4.6 集操作函数&
LINGO提供了几个函数帮助处理集。&
1.@in(set_name,primitive_index_1
[,primitive_index_2,…])&
如果元素在指定集中,返回1;否则返回0。&
例4.7 全集为I,B是I的一个子集,C是B的补集。&
& I/x1..x4/;&
& B(I)/x2/;&
& C(I)|#not#@in(B,&1):;&
2.@index([set_name,] primitive_set_element)&
该函数返回在集set_name中原始集成员primitive_set_element的索引。如果set_name被忽略,那么LINGO将返回与primitive_set_element匹配的第一个原始集成员的索引。如果找不到,则产生一个错误。&
& 例4.8 如何确定集成员(B,Y)属于派生集S3。&
& S1/A B C/;&
& S2/X Y Z/;&
& S3(S1,S2)/A X, A Z, B Y, C X/;&
X=@in(S3,@index(S1,B),@index(S2,Y));&
看下面的例子,表明有时为@index指定集是必要的。&
& girls/debble,sue,alice/;&
& boys/bob,joe,sue,fred/;&
I1=@index(sue);&
I2=@index(boys,sue);&
I1的值是2,I2的值是3。我们建议在使用@index函数时最好指定集。&
3.@wrap(index,limit)&
该函数返回j=index-k*limit,其中k是一个整数,取适当值保证j落在区间[1,limit]内。该函数相当于index模limit再加1。该函数在循环、多阶段计划编制中特别有用
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 word输入公式 的文章

 

随机推荐