Vensim函数库Word文件下载.docx
《Vensim函数库Word文件下载.docx》由会员分享,可在线阅读,更多相关《Vensim函数库Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。
函数功能
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设置为表达式,运行过程中延迟时间也不会随着表达式的变化而变化。
和DEL