我是个新手,不知道如何为AnyLogic敏感度分析创建可视化。以下是摘要:
我有一个数据集,它在模拟运行结束时捕获因变量和自变量(只在最后捕获一对变量)。尝试改变自变量,看看对因变量的影响。生成的数据集是正确的(当我在Excel中复制和粘贴时),但图表看起来是空白的。
此外,输出表明它完成了5次迭代,但我指定了10次,数据显示实际上有10次迭代。
图表数据没有参数(见截图),但我猜它是根据代码(也复制在下面)在模拟结束时自动填充的。否则,我无法弄清楚图表数据中的内容(试图手动输入变量/数据集,但无济于事)。
这是每次模拟运行后的代码:
Color color = lerpColor( (getCurrentIteration() - 1) / (double) (getMaximumIterations() - 1), blue, red );
chart0.addDataSet( root.died_friend, format( root.SocFriendBrave ), color, true, `Chart.INTERPOLATION_LINEAR, 1, Chart.POINT_NONE );`我意识到这是一个非常基本的问题,但我迷失了方向,基于我找到的帮助,我无法走上正确的道路。谢谢。



发布于 2020-06-03 08:11:10
假设你有两个实验:模拟(正常的)和灵敏度分析(新的)
图表显示为空的唯一方法是如果数据集died_friend为空。发生这种情况的原因有很多,但我怀疑发生这种情况的原因是,您在模拟运行结束时用信息填充了此数据集,这意味着您可能正在使用模拟实验的java操作。
敏感性实验不会读取您在模拟实验的java操作上编写的内容,因此这可能是问题所在。
如果不是这样,则需要检查运行敏感度分析时数据集为空的其他可能原因。
记住:你的数据集在你的模拟实验中有数据,并不一定意味着数据集在灵敏度实验中不会是空的。
发布于 2020-06-08 23:11:09
由于敏感度分析实验是通过向导设置的,所以最好向我们展示如何设置它,而不是生成AnyLogic生成的代码。
从您在这里所说的,看起来您可能错误地尝试使用数据集而不是标量值。如果有一个“因变量”(感兴趣的模型输出),那么“自变量”需要是一个模型参数(顶级代理的参数,通常是Main,实验将会改变)。
因此,您应该指定:
改变相关参数(看起来你希望它是0,0.25,0.5,0.75,1,所以最小的0,最大的1,步长为0.25)
outputValue的变量,则在向导中设置图表时应使用expression root.outputValue。)此外,如果参数变化条件设置不正确,您应该只会得到5次以上的迭代。
(实验图表中的数据集输出通常用于您的模型产生时间序列作为输出的地方-即模拟时间与值的数据集-并且您希望灵敏度分析实验将每次运行的时间序列显示为单独的线(即,X轴上的时间)。标量图用于表示X轴是变化参数,Y轴是感兴趣的输出。)
https://stackoverflow.com/questions/62162563
复制相似问题