Vensim函数库.docx
- 文档编号:27705269
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:9
- 大小:84.73KB
Vensim函数库.docx
《Vensim函数库.docx》由会员分享,可在线阅读,更多相关《Vensim函数库.docx(9页珍藏版)》请在冰豆网上搜索。
Vensim函数库
Vensim函数库
Vensim函数库是Vensim软件内部集成的函数功能,在Vensim_PLE版本中,函数库中一共包含25个函数。
当这些函数可以直接体现模型变量间关系的时候,建模者可以在设置变量关系的过程中选择使用这些函数。
单击Equation功能键,Vensim就会打开公式编辑器。
在这里,单击Function(函数)功能键,Vensim所提供的所有函数关系就会出现在Function下面的下拉式菜单中。
如图1-1所示。
Vensim函数库中的25个函数主要可以分为以下几类:
数学函数、逻辑函数、随机函数、测试函数和延迟函数。
以下我们对这五类函数一一进行介绍。
1.数学函数
数学函数是Vensim函数库中最简单的一类函数。
它包括SIN、EXP、LN、SQRT、ABS、INTEGER、MODULO七个函数,主要应用于变量间的基本数学关系。
表1-1中总结了这七个数学函数的名称、形式和功能,可以在建立模型过程中参考和使用。
表1-1Vensim数学函数总结
函数名称
函数形式
函数功能
SIN
SIN({x})
取正弦
EXP
EXP({x})
ex
LN
LN({x})
取对数
SQRT
SQRT({x})
取平方根
ABS
ABS({x})
取绝对值
INTEGER
INTEGER({x})
取整数
MODULO
MODULO({x},{base})
取余数
2.逻辑函数
Vensim函数库中另一类重要的函数是逻辑函数。
在建立模型过程中,有时候变量间的关系需要经过一些比数学计算更复杂的处理,比如判断若干变量中的最大或者最小的值,然后将结果赋予另一个变量。
Vensim_PLE版本中的逻辑函数包括最大、最小值判断函数和条件函数。
这三个函数在很多模型中的变量关系判断中使用频率都很高。
下面就对这三个函数进行一一介绍。
1)MAX
基本形式:
MAX({x1},{x2})
函数功能:
MAX后面括号中的x1,x2,……是函数的变量。
在运行过程中,MAX函数对这些变量进行比较,返回其中最大值作为函数值。
使用方法:
将需要判断的对象作为函数对象输入MAX后面的括号内(在Equation编辑器窗口下可以直接点击选择变量)。
2)MIN
基本形式:
MIN({x1},{x2})
函数功能:
MIN后面括号中的x1,x2,……是函数的变量。
在运行过程中,MIN函数对这些变量进行比较,返回其中最小值作为函数值。
使用方法:
和MAX类似,在Equation编辑器中直接选中需要比较的对象名称,对象即会自动变为函数变量,参加逻辑运算。
3)IFTHENELSE
基本形式:
IFTHENELSE({cond},{ontrue},{onfalse})
函数功能:
在模型建立过程中常常遇到这样的情况,变量值在不同的情况(符不符合某条件)有不同的计算方法。
IFTHENELSE函数就是针对这样的情况设计的。
在Vensim中,这个函数实际上具有两种意义。
a)像其他函数一样,IFTHENELSE函数会根据运算结果返回一个函数值。
b)表达式d=IFaTHENbELSEc实际上把变量“IFaTHENbELSEc”赋给了d这个变量。
使用方法:
打开公式编辑器→选择Function图标,并点击IFTHENELSE函数→选择Variable图标→点击函数中的{cond}变量→在Variable中选择要使用的目标变量,设定一个临界条件→同样地选择{ontrue}和{onfalse}变量并分别赋予条件满足和不满足两种情况下对应的不同的函数关系式。
举例:
DHPI=IFTHENELSE(Time>=1920,COE,0)
说明:
这个函数的意思是,如果时间大于或等于1920年(Time是一个表示时间的变量,是模型内置的一个变量,在这里的意思就是当Time变量的值大于或等于1920的时候),逻辑函数返回值为COE,这时DHPI=COE;其他情况下,即时间变量Time<1920年的时候,逻辑函数返回值为0,这时DHPI=0。
3.随机函数
随机函数是另一类很常用的函数类型。
因为我们所建立的模型是模拟现实环境的,而现实的环境中常常存在一些不能确定的情况,即存在随机性。
所以除了模型中确定的变量关系外,我们还需要模拟一种不确定性的发生。
Vensim函数库中的随机函数就是针对这种用途设计的。
1)RANDOMUNIFORM
函数形式:
RANDOMUNIFORM({min},{max},{seed})函数功能:
产生一个介于min值和max值之间的数值,这个数值是随机生成的,但是它的分布依赖于种子(seed)的确定。
每一个不同的种子都可以产生一个不同的基本分布。
当没有制定种子的时候,Vensim会自动使用默认种子及其分布,以产生随机变量。
使用方法:
在函数列表种选择RANDOMUNIFORM,然后用鼠标依次点击{min},{max},{seed}并输入设定值。
2)RANDOMNORMAL
函数形式:
RANDOMNORMAL({min},{max},{mean},{stdev},{seed})
函数功能:
此函数和上一个功能类似,都是产生min和max之间的随机数值,并依赖于种子产生的分布。
其不同之处在于,此函数可以设定种子所产生分布的期望均值和方差。
函数中mean即表示均值,而stdev则表示方差。
使用方法:
在函数列表种选择RANDOMUNIFORM,然后用鼠标依次点击{min},{max},{mean},{stdev},{seed}并输入相应的设定值。
4.测试函数
测试函数是Vensim中另一类非常有特色且常用的函数类型。
这里我们将主要介绍四种测试函数,即
(1)阶跃函数STEP
(2)斜坡函数RAMP(3)单脉冲函数PULSE(4)多脉冲函数PULSETRAIN。
这四种函数都可以产生比较典型和有特色的数值变化规律,因此在建立问题模型过程中经常用到。
1)阶跃函数STEP
基本形式:
STEP({height},{stime})
基本功能:
此函数可以控制对变量启动赋值的时间。
如图所示,在StartTime之前,函数赋予变量的数值为0。
当时间到达StartTime后,函数赋予变量的值为预先设定的Height,并持续下去。
使用方法:
在函数列表中选择STEP,然后用鼠标依次点击{height},{stime}并输入阶跃函数的取值和起始时间。
2)斜坡函数RAMP
函数形式:
RAMP({slope},{start},{finish})
函数功能:
函数从规定的起始时间开始到规定的结束时间终结。
在这个过程中,函数的变化完全取决于预先设定的斜率。
斜坡函数的初值默认为0。
使用方法:
从函数菜单中选择RAMP函数,在{slope}处单击鼠标左键,输入设定的函数斜率,然后用同样地方法设定起始时间{start}和结束时间{finish}。
3)单脉冲函数PULSE
函数形式:
PULSE({start},{duration})
函数功能:
此函数和阶跃函数功能具有共同点,但较阶跃函数不同之处在于两点:
第一,单脉冲函数在起始时间后的脉冲高度只能为1。
这个值是Vensim默认的,而不是自行设置的。
第二,单脉冲函数可以控制脉冲持续的时间,即函数图示中的Width。
在StartTime后经过Width时间长度,函数将重新开始赋予变量0值。
使用方法:
在函数列表种选择PULSE,然后用鼠标依次点击{start},{duration}并输入脉冲起始时间和持续时间长度。
4)多脉冲函数PULSETRAIN
函数形式:
PULSETRAIN({start},{duration},{repeattime},{end})
函数功能:
多脉冲函数较单脉冲函数可以实现更多的功能,即把原本单个连续的赋值阶段切分成若干小阶段,如图7-5所示。
这里的Width指的是分割后每一个阶段的持续时间长度,而
t-between指的是一个阶段开始时刻(终结时刻)和下一个阶段开始时刻(终结时刻)间的时间间隔长度。
这样的阶段反复循环出现,直到时间到达EndTime。
使用方法:
选择PULSETRAIN函数,依次点击{start},{duration},{repeattime},{end}并设置。
需要注意的是,这里的{duration}是图示中的单位持续长度WidthTime,而{repeattime}是图示中的间隔时间t-between。
5.延迟函数
延迟函数是Vensim函数库中非常重要的一类函数,使用范围很广。
因为在建立模型的过程中,我们常常需要模拟物质或信息在模型中不同模块间的流动。
而现实中,由于物质或信息传播渠道的客观限制,这种流动经常会产生一定的延迟。
延迟函数正是为模拟这种延迟效果而设计。
Vensim中的延迟函数包括两类,即模拟物质延迟效果的DELAY函数和模拟信息延迟效果的SMOOTH函数。
1)物质延迟函数
a)DELAY1
函数形式:
DELAY1(In,DelayTime)
函数功能:
此函数根据设定的延迟时间,对输入量作延迟处理。
其运行过程中,内部原理相当于下面的等式:
DELAY1=LV/delaytime
LV=INTEG(In-DELAY1,input*delaytime)这里INTEG函数的功能是对括号内的变量In-DELAY1作积分。
使用方法:
选择DELAY1函数,单击鼠标设定输入值In和延迟时间DelayTime。
b)DELAY1I
函数形式:
DELAY1I(In,DelayTime,InitialValue)
函数功能:
此函数功能和DELAY1功能类似,不同之处在于其可以设定初值。
使用方法:
和DELAY1操作方法相同,但需要设定初值InitialValue。
c)DELAY3
函数形式:
DELAY3(In,DelayTime)
函数功能:
DELAY3函数同样对物质作延迟处理。
但和DELAY1不同,它是针对三阶延迟设计的,即在处理过程中,它根据延迟时间对物质作三次延迟处理,然后再返回函数值。
换句话说,它相当于做了三次DELAY1,但每一次延迟的时间只有原函数中设定延迟时间DelayTime的三分之一。
DELAY3内部原理等同于下面的等式:
DELAY3=LV3/DL
LV3=INTEG(RT2-DELAY3,DL*IN)
RT2=LV2/DL
LV2=INTEG(RT1-RT2,LV3)
RT1=LV1/DL
LV1=INTEG(In-RT1,LV3)
DL=DelayTime/3
使用方法:
和DELAY1使用方法相同。
d)DELAY3I
函数形式:
DELAY3I(In,DelayTime,InitialValue)
函数功能:
此函数功能和DELAY3功能类似,不同之处在于其可以设定初值。
使用方法:
和DELAY1I使用方法相同。
e)DELAYFIXED
函数形式:
DELAYFIXED(In,DelayTime,InitialValue)
函数功能:
DELAYFIXED函数对输入量做延迟处理,但处理过程中DelayTime是一个常量。
即便在设置时将DelayTime设置为表达式,运行过程中延迟时间也不会随着表达式的变化而变化。
使用方法:
和DELAY1I使用方法相同。
f)DELAYMATERIAL
函数形式:
DELAYMATERIAL(Input,DelayTime,InitialValue,Missval)
函数功能:
DELAYMATERIAL的功能和DELAYFIXED功能相似,不同点在于其延迟时间可以变化。
这时候将DelayTime设置为表达式,则运行过程中,系统对于输入的延迟处理时间随着表达式的变化而变化。
在这个变化过程中,如果延迟时间不断变小,则输出值会根据更新的输入值确定;如果延迟时间不断增大,当某一时刻没有输出值可用时,Missval会被当作输出值使用。
使用方法:
和DELAY1I使用方法相同。
2)信息延迟函数
a)SMOOTH
函数形式:
SMOOTH({in},{stime})
函数功能:
此函数模拟信息延迟效果,对输入值作延迟处理,其内部原理相当于以下等式:
SMOOTH=INTEG((input-SMOOTH)/delaytime,input)
使用方法:
在函数菜单中选择SMOOTH函数,然后设定输入值和延迟时间。
b)SMOOTHI
函数形式:
SMOOTHI({in},{stime},{inival})
函数功能:
此函数和SMOOTH函数功能类似,但可以设定初值。
其内部原理相当于以下等式:
SMOOTHI=INTEG((input-SMOOTHI)/delaytime,initialvalue)
使用方法:
和SMOOTH使用方法相同,但需要设定初值{inival}。
c)SMOOTH3I
函数形式:
SMOOTH3I({in},{stime},{inival})
函数功能:
此函数实现的延迟功能和DELAY3相似,即对输入量作三阶延迟,内部原理相当于以下等式:
SMOOTH3=INTEG((LV2-SMOOTH3)/DL,input)
LV2=INTEG((LV1-LV2)/DL,input)
LV1=INTEG((IN-LV1)/DL,input)
DL=delaytime/3
使用方法:
和SMOOTH方法相同,只是这里的延迟时间是三阶延迟时间,因此运行过程中每一阶的延迟时间是它的三分之一。
d)DELAYINFORMATION
函数形式:
DELAYINFORMATION(input,delaytime,initialvalue)
函数功能:
和DELAYFIXED的功能相同,只是delaytime可以是一个变量。
使用方法:
和DELAYFIXED用法相同。
6.其他函数
Vensim_PLE的函数库中还有两个函数,这里做简要介绍。
1)XIDZ
函数形式:
XIDZ({numerator},{denominator},{X})
函数功能:
返回numerator/denominator的数值,如果分母denominator的数值为0,则自动返回X值。
使用方法:
选择XIDZ函数,依次点击{numerator},{denominator},{X}并设置分子、分母和X。
举例:
XIDZ(3,4,1)的返回值是0.75。
XIDZ(3,0,1)的返回值是1.0。
2)ZIDZ
函数形式:
ZIDZ({numerator},{denominator})
函数功能:
ZIDZ函数和XIDZ函数功能基本相同,只是其当分母denominator数值为0时,函数自动返回0。
这个函数等价于XIDZ({numerator},{denominator},{0})
使用方法:
选择函数并设置{numerator}和{denominator}。
举例:
ZIDZ(3,4)的返回值是0.75。
ZIDZ(3,0)的返回值是0。
(注:
文档可能无法思考全面,请浏览后下载,供参考。
可复制、编制,期待你的好评与关注!
)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Vensim 函数库