【问题标题】:How to generate different 2D displays in Repast Simphony (gui or style code?)?如何在 Repast Simphony 中生成不同的 2D 显示(gui 或样式代码?)?
【发布时间】:2018-09-19 17:11:23
【问题描述】:

我已经在 repast simphony 中构建了一个 3D 模型,它运行良好(相当)。然而,由于模型的性质,代理往往会形成密集的团块。我想知道是否有一种方法可以通过生成一个不断更新的 2D 显示或一个最终状态视图来生成一个穿过簇中间的 2D 切片或横截面,以查看代理在簇内所做的事情。

我已经探索了 gui 中的显示选项并尝试了代理的不同分层,但由于密度的原因,这些都不起作用。有没有办法稍微改变 gui 的这一方面,以在 50x50x50 网格中提供 x=25 处 yz 平面的 2D 视图(例如)。

提前感谢您的帮助!

【问题讨论】:

    标签: agent-based-modeling repast-simphony


    【解决方案1】:

    您可以通过根据代理的可见性属性更改样式类中的透明度属性来更改 3D 显示中形状的透明度。例如,您的代理可以检查其在 3D 空间中的当前位置,并且仅当代理位于您想要可视化的空间平面中时才返回 isVisible() true。这将仅在 3D 显示中显示存在于您定义的平面上的代理,该平面可以是穿过空间的任何 x、y、z 方向。在您的样式类中,您需要更新 getAppearance(...) 方法中的透明度,如下所示:

    public TaggedAppearance getAppearance(MyAgent agent, TaggedAppearance taggedAppearance, Object shapeID) {
        if (taggedAppearance == null) {
            taggedAppearance = new TaggedAppearance();
    
        // Customize your agent style here...           
    
         AppearanceFactory.setMaterialAppearance(taggedAppearance.getAppearance(), Color.white);
        }
    
    
        if (trans == null) { 
            trans = new TransparencyAttributes();
            trans.setCapability(TransparencyAttributes.ALLOW_VALUE_READ);
            trans.setCapability(TransparencyAttributes.ALLOW_VALUE_WRITE);
            trans.setCapability(TransparencyAttributes.ALLOW_MODE_READ);
            trans.setCapability(TransparencyAttributes.ALLOW_MODE_WRITE);
            trans.setTransparencyMode(TransparencyAttributes.FASTEST);
            taggedAppearance.getAppearance().setTransparencyAttributes(trans);
        }
    
        if (agent.isVisible())
            trans.setTransparency(0.0f);
        else 
            trans.setTransparency(1.0f);
    
        return taggedAppearance;
    }
    

    您还可以将透明度值从 0 调整为 1 以提供不同级别的透明度,以便感兴趣的代理完全不透明 (0.0f) 而外围的代理非常透明 (0.8f)。

    【讨论】:

    • 谢谢!快速跟进问题 - 我如何编辑样式类?我相信我找到了正确的位置(Repast Simphony Development Libraries/repast.simpony.bin_and_src.jar/visualization3D.style/TaggedAppearance.class),但我无法编辑它。另外,isVisible() 是否需要作为对象的参数,还是只是 step 函数中的返回值?
    • 请查看包含 3D 显示的 Repast 演示模型之一,例如 Predator Prey 模型,了解如何包含和编辑样式类。样式类需要在您的模型源文件夹中。
    • 嗨,Catherine,您最近是否也问过一个关于在 Repast 中建模内皮的问题?如果是这样,您可以重新发布该问题,因为它似乎已被删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多