Realitycheck-真实性检验

更新时间:2023-07-19 23:15:43 阅读: 评论:0

真实性检验
    证实所建立的模型的合理性和有效性,有好多方法。而Vensim所提供的真实性检验(Reality Check)是一种非常有效的方法和工具。它也是Vensim的一个主要特征。
真实性检验的概念
    模型是对于现实存在的系统的简化和抽象。我们可以由建立的模型方便的得到系统的行为模式。但如何确定这些行为模式正确性?常用的一种方法是对照现实的情况,仔细分析运行得到的各个变量时间序列数据及其相互关系。在系统复杂、变量多情况下,这是很困难的。一种简单有效的方法是首先确定模型的正确性。如果模型不违反基本的常识和规则,模型本身的合理性得到了检验,则系统的行为模式的真实性就有了保证。真实性检验由这一思想出发,提供了一种简便和有效的方法和工具。
    根据要研究的系统的基本情况,我们一般可以提出模型应该遵守的一些基本假定。这些基本假定是保证模型正确的必要条件,构成了对于模型正确性的一系列约束。真实性检验就是在模型建立后,通过标准的约束描述语言,具体地描述这些约束,并通过运行模型,自动的
检验系统的行为模式是否违反这些约束。若违反,说明模型尚不完善,则要调整模型的结构和参数,直到符合这些约束条件。真实性检验的描述部分完全独立于模型本身,不会改变模型结构和行为模式。
模型真实性检验的定义
    1.变量的命名
    检验语句是对于假设的描述,是由实际系统出发对于模型的行为模式的断言。它一般包含的变量是“判断句”。有别于一般的变量用名词命名,它一般用表示判断的短语命名。例如:no worker no production, rain means flooding
    2. 输入测试变量(Test Input)
    用来代替一个等式。它只能用作约束的前提条件,可以使约束变得简单易读。在约束表达式中,在其条件部分出现以一个逻辑变量形式出现。其定义形式为:
    name :TEST INPUT: variable = expression
redleaf    其中,name表示变量名,:TEST INPUT: 是变量类型标识,而后面等式是定义的对象。等式右边可以是允许的任意表达式。等式左右边的构成变量均来自模型。
    例如:best condition :TEST INPUT: temperature = 3*initial temperature
    3. 时间演进函数(Time Transition)
    该函数的自变量是时间,而函数值是随时间变化的变量值。其一般表达式为:
        variable = TIME TRANSITION (X,… Y ,….)
    其中X是时间,而函数值variable按一定的对应规则取相应的Y美食男孩冒险记。在Y的列举中,可以有“-”,表示保持模型的值,而“*”表示采用模型的计算值。实际上,Y是我们对于模型行为模式随时间变化的一种假定的表示。
    主要形式有以下几例:
    profit = TIME TRANSITION (0,30,80,100,20,50,50,15)
    表示profit随时间变化的折线图。时间由03080100profit20斜线上升到quieter50,保持50不变,然后斜线下降到15
    profit = TIME TRANSITION (30,80,100,-,50,*)
    表示profit在时间30以前采用模型正常值A;在时间区间30-80profit采用以(30,A)为起点,以(80,50)为终点直线上的值;在时间区间gasket80-100,将采用模型的计算值。
    profit = TIME TRANSITION (30,80,100,*,50,*)
    表示在时间区间30-80bankofchinaprofit采用模型的计算值,在时间为80时值为50。其余与上相同。
    通过一个变量的时间演进函数与一个表达式的积,可以构造另一个变量的时间演进函数。其一般表达式为:
    variable = TIME TRANSITION (X, ,Y ,)*expression
    例如:big workforce :TEST INPUT: Workforce = TIME TRANSITION(35,50,*,1)*       
                                    MAX WORKFORCE
reen    又如:good profit :TEST INPUT: profit = TIME TRANSITION(0,30,80,100,1,0.7,0.8,0.9)
                                    *(revenue-cost)
    注意,“-”和“*”的使用有以下限制:
∙%1 时间值必须是递增的。
∙%1 -”不能在数字和另一个“-”后面出现。它只能在第一个Y的位置出现,但“*”可以在其后面出现。
∙%1 若一个数值后面有“*”,则“*”后不能再跟随其它的数值,但可以再跟随一个“*”。
5. 约束的结构
    一般的结构是:
    name(名字) :THE CONDITION: condition(条件) :IMPLIES: conquence(结果)
    其中“:THE CONDITION:”和“:IMPLIES:”是约束语句的关键词。而condition是约束语句的条件表达式部分,conquence是结果表达式部分,它们都是逻辑表达式。
    逻辑表达式
    逻辑表达式可以由“=,><:AND::OR::NOT:”等构成。在其condition部分,应该尽量采用TEST INPUT变量,这样便于理解。若不采用,尽量避免使用复杂的逻辑关系。例如:
    no capital no production :THE CONDITION: Capital = 0 :IMPLIES: Production = 0
    big problem :THE CONDITION: Population > 8E9 :AND: (food ratio < 0.75 :OR:                                Pollution > CRITICAL POLLUTION) :IMPLIES: Food <=                        TIME TRANSITION(50,100,-,1)
    但是,在逻辑表达式中,一般除等式外,不允许出现代数运算。如下式是错误的。
    pop lt cc :THE CONDITION: Population < Carrying Capacity *1.1 :IMPLIES: deaths                            from crowding <1000
    可用下式来代替以上:
    pop lt cc :THE CONDITION: PopulationCarrying Capacity *1.1 :IMPLIES: deaths                            from crowding <1000
    或先定义输入测试变量:
    pop at cc plus 10 :TEST INPUT: PopulationCarrying Capacity *1.1
    然后再定义约束:
    pop lt cc :THE CONDITION: pop at cc plus 10 :IMPLIES: deaths from crowding <1000
    无条件约束edge网络是什么
    有时,约束的条件部分是空的。例如:
    debt bounded : THE CONDITION: :IMPLIES: debt<4E6
    它表示在任何条件下debt的最大值是4E6。在进行该约束时,Vensim将通过模型模拟检验debt的值是否大于4E6trumpf。若大于,则报违反信息。
    在结果表达式中的时间演进函数
    例如:no birth no pop :THE CONDITION: births = TIME    TRANSITION(50,60,*,0) :IMPLIES: Population < TIME TRANSITION(150,160,*,0)
    它表示,在停止出生100年后,人口将会为零。
    在结果表达式中使用通配符
    有时为了检验是否所有变量都满足同一条件,可在结果表达式中使用通配符“*”以代替所有变量。例如:
    all peaceful :THE CONDITION: FINAL TIME = 101 :IMPLIES: *<1E9 :AND: *>-1E3
    用于测试是否所有变量在-1E31E9之间。FINAL TIME=101对于检验进行限制,因为若使用无条件表达式,这一检验是很费时间的。
将真实性检验键入模型
    Vensim标准版中,有三种方法将真实性检验加入模型。一种是利用Equation Editor,一种是利用Text Editor,一种是在流图上直接定义变量建立。但Vensim PLEbubblegumEquation Editor似乎不提供这一功能。虽然Vensim PLE未提供Text Editor,但我们可以利用其它的文本编辑器实现真实性检验的建立。流图法在Vensim PLE中可以实现。
crashes        1.流图法
    在模型建立后,可以先利用模型建立工具定义真实性检验的变量,然后用因果关系箭头建立这些变量之间的联系(它们之间联系并不是真实的因果关系),最后在Equation Editor中写入与每个变量有关的表达式。其缺点是从外观上改变了模型的结构。容易造成混乱。例如:图示是建立的inven1.vmf模型。读者可以通过Equation Editor观察变量的定义。
         
====================================================================

RC COMPARE('runname',var,mult[,start[,duration]])
RC COMPARE CHECK('runname',var,grace,mult[,start[,duration]])
RC DECAY(basis,decaytime[,start[,duration]])
RC DECAY CHECK(grace,basis,decaytime[,start[,duration]])
RC GROW(basis,growrate[,start[,duration]])
RC GROW CHECK(grace,basis,growrate[,start[,duration]])
RC RAMP(basis,mult,ramptime[,start[,duration]])
RC RAMP CHECK(grace,basis,mult,ramptime[,start[,duration]])
RC STEP(basis,mult[,start[,duration]])
RC STEP CHECK(grace,basis,mult[,start[,duration]])
The RC and RC CHECK functions all work in the same manner. Each keeps a variable at its normally generated model value until a specified time, and then defines a new trajectory. The RC functions are ud in test inputs (in :THE CONDITION: part of a Reality Check) and the RC CHECK functions are ud in the conquence (:IMPLIES:) portion of a Reality Check . Each of the functions allows you to specify the time at which the change to a new trajectory should occur, or u the value of the model variable RC START TIME to begin the test. Normally RC START TIME is a constant that is t to a time shortly after the beginning of the simulation. If RC START TIME is not prent in the
model the trajectory changes are made at time INITIAL TIME + TIME STEP. Chapter 9 of the Vensim Modeling Guide contains more information on Reality Check.

本文发布于:2023-07-19 23:15:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/182642.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   变量   检验   真实性
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图