标签: repast-simphony

使用Repast Simphony的意外结果

我需要使用Repast Simphony作为模拟器开发Java版本的Iterated Prisoner Dilemma.

这些想法是每个人Player都是一个代理人,我们有一个无法移动的n x n网格Player.每个人Player必须与4个邻居(北部,南部,西部和东部)进行比赛,根据每轮比赛的4个不同比赛的结果找到最佳策略.

由于没有内置系统在Repast Simphony中的代理之间交换消息,我必须实施某种解决方法来处理代理的同步(A vs B和B vs A应该算作同一轮,这就是他们需要的原因要同步).

这是通过将每一轮视为:

  • Player 为4个敌人中的每一个选择了下一步行动
  • Player 向4个敌人中的每一个发送正确的动作
  • Player 等待4个敌人中的每一个回复

根据我对Repast Simphony的理解,预定的方法是顺序的(没有代理级并行),这意味着我被迫以与发送方式不同的方式进行等待(以较低的pritority安排以确保完成所有发送)在开始等待之前).

这里的问题是,尽管收到了所有4条预期的消息(至少这是打印的内容),一旦等待方法启动它报告的接收元素少于4个.

这是从Player课程中获取的代码:

// myPoint is the location inside the grid (unique, agents can't move and only one per cell is allowed)
public int hashCode() {
    final int prime = 31;
    int result = …
Run Code Online (Sandbox Code Playgroud)

java repast-simphony

8
推荐指数
1
解决办法
159
查看次数

Repast模型启动的问题

在Windows 10系统上全新安装Repast Symphony 2.5.0(Win 64bit)和JDK 9.0.1后,导入JZombies_Demo示例时,无法使用默认配置启动模型.

错误说:

    An internal error occurred during: "Launching JZombies_Demo Model".
    org.codehaus.groovy.eclipse.core.builder.GroovyClasspathContainer.<init>(Lorg/eclipse/core/resources/IProject;)V
Run Code Online (Sandbox Code Playgroud)

当我编辑默认运行配置时,在Dependencies选项卡中,我只看到JRE系统库而没有其他内容.在同一选项卡中,启用了恢复默认条目 - 当我按下它时,将添加Repast Symphony中的所有依赖项,并且之前的错误消失.但是,在这种情况下,当尝试启动另一个错误时:

     saf.core.runtime.Boot - null
     java.lang.NullPointerException
     at saf.core.runtime.Boot.init(Boot.java:79)
     at saf.core.runtime.Boot.main(Boot.java:246)
     at repast.simphony.runtime.RepastMain.main(RepastMain.java:43)
Run Code Online (Sandbox Code Playgroud)

我还在Repast Mailing List上看到了这个问题,看到有人在谈论boot.properties文件X\eclipse\plugins\repast.simphony.runtime_2.5.0夹中丢失的文件.但是,该文件在那里很好.因此,我尝试将此链接与上一个错误相关联,并看到(RepastMain.java:43)pathInfo值实际上是X\eclipse\plugins\repast.simphony.bin_and_src_2.5.0.因此,我尝试boot.properties将运行时目录复制到bin_and_src - 这删除了以前的错误,但带来了一些与UI初始化和错误相关的警告:

     repast.simphony.ui.RSUIPlugin - Fatal error starting Repast
     java.lang.NoSuchMethodError: com.jgoodies.forms.layout.ColumnSpec.createGap(Lcom/jgoodies/forms/layout/ConstantSize;)Lcom/jgoodies/forms/layout/ColumnSpec;
at com.jgoodies.forms.layout.FormSpecs.<clinit>(FormSpecs.java:115)
at repast.simphony.ui.RunOptionsPanel.initComponents(RunOptionsPanel.java:114)
at repast.simphony.ui.RunOptionsPanel.<init>(RunOptionsPanel.java:39)
at repast.simphony.ui.RSGui.addRunOptionsView(RSGui.java:558)
at repast.simphony.ui.RSApplication.initGui(RSApplication.java:655)
at repast.simphony.ui.RSAppConfigurator.fillBars(RSAppConfigurator.java:52)
at saf.core.ui.GUICreatorDelegate.createDisplay(GUICreatorDelegate.java:160)
at saf.core.ui.GUICreator.createDisplay(GUICreator.java:12)
at repast.simphony.ui.RSUIPlugin$1.run(RSUIPlugin.java:102)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at …
Run Code Online (Sandbox Code Playgroud)

java windows launch repast-simphony java-9

2
推荐指数
1
解决办法
320
查看次数

基于代理的仿真:为什么Netlogo的运行速度比基于Java的Repast快得多

大家都说Jave是用于大型系统和工程项目的语言,它的运行速度比大多数其他语言都要快得多。我只是将其与另一种基于Agent的建模语言-Netlogo进行了比较,发现Netlog在经典的狼羊模拟模型中比基于Jave的Repast快四倍。两种模型都使用相同的参数进行仿真,并实时运行5秒钟。Netlogo可以模拟8000多个时间步长,而Jave Repast只能执行2600多个时间步长。为什么?

在此处输入图片说明

agent-based-modeling netlogo repast-simphony

2
推荐指数
1
解决办法
93
查看次数