wordVensim函数库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-1 Vensim 数学函数总结函数名称函数形式函数功能SINSIN( {x} )取正弦EXPEXP( {x} )exLNLN( {x} )取对数SQRTSQRT( {x} )取平方根ABSABS( {x} )取绝对值INTEGERINTEGER( {x} )取整数MODULOMODULO({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) IF THEN ELSE根本形式:IF THEN ELSE ({cond}, {ontrue}, {onfalse})函数功能:在模型建立过程中常常遇到这样的情况,变量值在不同的情况〔符不符合某条件〕有不同的计算方法。
IF THEN ELSE 函数就是针对这样的情况设计的在Vensim 中,这个函数实际上具有两种意义a) 像其他函数一样,IF THEN ELSE 函数会根据运算结果返回一个函数值b) 表达式 d = IF a THEN b ELSE c 实际上把变量“IF a THEN b ELSE c〞赋给了d 这个变量使用方法:打开公式编辑器→选择Function 图标,并点击IF THEN ELSE 函数→选择Variable 图标→点击函数中的{cond}变量→在Variable 中选择要使用的目标变量,设定一个临界条件→同样地选择{ontrue}和{onfalse}变量并分别赋予条件满足和不满足两种情况下对应的不同的函数关系式举例:DHPI = IF THEN ELSE( Time>=1920, COE, 0 )说明:这个函数的意思是,如果时间大于或等于1920 年〔Time 是一个表示时间的变量,是模型置的一个变量,在这里的意思就是当Time 变量的值大于或等于1920 的时候〕,逻辑函数返回值为COE,这时DHPI = COE;其他情况下,即时间变量Time < 1920 年的时候,逻辑函数返回值为0,这时DHPI = 0。
3. 随机函数随机函数是另一类很常用的函数类型因为我们所建立的模型是模拟现实环境的,而现实的环境中常常存在一些不能确定的情况,即存在随机性所以除了模型中确定的变量关系外,我们还需要模拟一种不确定性的发生Vensim 函数库中的随机函数就是针对这种用途设计的1) RANDOM UNIFORM函数形式:RANDOM UNIFORM ( {min} , {max} , {seed} )函数功能:产生一个介于min 值和max 值之间的数值,这个数值是随机生成的,但是它的分布依赖于种子〔seed〕确实定每一个不同的种子都可以产生一个不同的根本分布当没有制定种子的时候,Vensim 会自动使用默认种子与其分布,以产生随机变量使用方法:在函数列表种选择RANDOM UNIFORM,然后用鼠标依次点击{min} , {max} , {seed}并输入设定值2) RANDOM NORMAL函数形式:RANDOM NORMAL( {min} , {max} , {mean} , {stdev} , {seed} )函数功能:此函数和上一个功能类似,都是产生min 和max 之间的随机数值,并依赖于种子产生的分布。
其不同之处在于,此函数可以设定种子所产生分布的期望均值和方差函数中mean 即表示均值,而stdev 如此表示方差使用方法:在函数列表种选择RANDOM UNIFORM,然后用鼠标依次点击{min} , {max} , {mean} , {stdev} , {seed}并输入相应的设定值4. 测试函数测试函数是Vensim 中另一类非常有特色且常用的函数类型这里我们将主要介绍四种测试函数,即〔1〕阶跃函数STEP 〔2〕斜坡函数RAMP〔3〕单脉冲函数PULSE〔4〕多脉冲函数PULSE TRAIN这四种函数都可以产生比拟典型和有特色的数值变化规律,因此在建立问题模型过程中经常用到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〕多脉冲函数PULSE TRAIN函数形式:PULSE TRAIN ( {start} , {duration} , {repeattime} , {end} )函数功能:多脉冲函数较单脉冲函数可以实现更多的功能,即把原本单个连续的赋值阶段切分成假如干小阶段,如图7-5 所示。
这里的Width 指的是分割后每一个阶段的持续时间长度,而t-between 指的是一个阶段开始时刻〔终结时刻〕和下一个阶段开始时刻〔终结时刻〕间的时间间隔长度这样的阶段反复循环出现,直到时间到达End Time使用方法:选择 PULSE TRAIN 函数,依次点击{start} , {duration} ,{repeattime} , {end}并设置需要注意的是,这里的{duration}是图示中的单位持续长度Width Time , 而{repeattime}是图示中的间隔时间t-between5. 延迟函数延迟函数是 Vensim 函数库中非常重要的一类函数,使用围很广因为在建立模型的过程中,我们常常需要模拟物质或信息在模型中不同模块间的流动而现实中,由于物质或信息传播渠道的客观限制,这种流动经常会产生一定的延迟延迟函数正是为模拟这种延迟效果而设计Vensim 中的延迟函数包括两类,即模拟物质延迟效果的DELAY 函数和模拟信息延迟效果的SMOOTH 函数1) 物质延迟函数a) DELAY1函数形式:DELAY1 (In, Delay Time)函数功能:此函数根据设定的延迟时间,对输入量作延迟处理。
其运行过程中,部原理相当于下面的等式:DELAY1=LV/delay timeLV=INTEG (In-DELAY1, input*delay time)这里INTEG 函数的功能是对括号的变量In-DELAY1 作积分使用方法:选择 DELAY1 函数,单击鼠标设定输入值In 和延迟时间DelayTimeb) DELAY1I函数形式:DELAY1I (In, Delay Time, Initial Value)函数功能:此函数功能和DELAY1 功能类似,不同之处在于其可以设定初值使用方法:和 DELAY1 操作方法一样,但需要设定初值Initial Valuec) DELAY3函数形式:DELAY3 (In, Delay Time)函数功能:DELAY3 函数同样对物质作延迟处理但和DELAY1 不同,它是针对三阶延迟设计的,即在处理过程中,它根据延迟时间对物质作三次延迟处理,然后再返回函数值换句话说,它相当于做了三次DELAY1,但每一次延迟的时间只有原函数中设定延迟时间Delay Time 的三分之一DELAY3 部原理等同于下面的等式:DELAY3=LV3/DL LV3=INTEG(RT2-DELAY3,DL*IN) RT2=LV2/DLLV2=INTEG(RT1-RT2,LV3)RT1=LV1/DLLV1=INTEG(In-RT1,LV3)DL=Delay Time/3使用方法:和DELAY1 使用方法一样。
d) DELAY3I函数形式:DELAY3I (In, Delay Time, Initial Value)函数功能:此函数功能和DELAY3 功能类似,不同之处在于其可以设定初值使用方法:和 DELAY1I 使用方法一样e) DELAY FIXED函数形式:DELAY FIXED (In, Delay Time, Initial Value)函数功能:DELAY FIXED 函数对输入量做延迟处理,但处理过程中Delay Time 是一个常量即便在设置时将Delay Time 设置为表达式,运行过程中延迟时间也不会随着表达式的变化而变化使用方法:和 DELAY1I 使用。