Repast下载地址:http://www.10pig.cn/index/repast.aspx

Repast J的编程使用详细内容可以参考安装目录下的how-to目录中各文件说明,api目录,demo目录的例子,简要介绍参考:http://l-eme.gdcc.edu.cn/ztzs/fzxt/4-3.htm

安装了Repast J后,在其安装目录下有如下几个文件夹:

api:给出了Repast主要包中类及方法的API,供编程时候查阅

how-to:介绍了如何建立agent模型,如何调用库进行画图、画表、设置输入参数、多次运行、图、空间等

demo:给出了十多种不同的agent模型的案例源码供参考和学习。有哪些不会用的就可以到这里来参考。

需要注意的地方:

将lib中的所有包导入,但不要忘记导入repast.jar包,uchicago在此包中。

以下内容来源于:http://l-eme.gdcc.edu.cn/ztzs/fzxt/4-3.htm

尽管不一定必须应用SimModel接口,但应用这个接口可将底层和表层的建立过程分到不同的方法组中,使得模型的结构与设计过程清晰明了。

用 SimModel和 Template类建模的典型的模型结构包括以下三个方法:

(l)private void buildModel()

buildModel负责创建代表模型的底层结构部分。主体对象、环境对象,还有一些可选的数据收集对象常在此创建。如,在糖域模型中,SugarModel在 buildModel()里构建了 SugarAgents和 Sug-arSpace

(2)private void buildDisplay()

bllildDi8PIPy建立了那些用于处理向用户显示模拟的表层结构部分,所以那些只以批处理方式运行的模型很可能不需要实现这个方法。SugarModel通过它建立了显示主体和图的类。实际创建 Dis-playsurface对象则通常放在一个预定义的 setup()方法中,稍后再说明这个方法。

(3)private voidbuildschedule()

buildschedule建立负责改变模型状态的时间表——何时运用什么方法调用什么对象的时间表。

SimpleModel作为模型类的基类,可根据需要继承扩展(特定化)。具体实现如下:

Import uchicago.sre.sim.engine.SimpleModel;

Public class MyModle extends SimpleModel{…

}

第一行导人了SimpleMOdel,第二行继承了SimpleModel。下面按建模过程的两步法建立完整的模型类:

第一步:设t模型

SimPleModel提供了两个方法作为实现这一步方便填充的框架:setuP()和 buildModel()。他们可以按如下方式使用(以 IPD为例):

Import uchicago.src.sin.engine.SimpleModel;;

Public class MyModle extends SimpleModel{

Public static final int TIT_FOR_TA=0;

Public static final int ALWAYS_DEFECT=1;

Private p1Strategy=TIT_FOR_TAT;

Private p2Strategy= ALWAYS_DEFECT;

??? Public voide setup () {

????? Super.setup();

????? P1Strategy=TIT_FOR_TAT;

????? Private p2Strategy= ALWAYS_DEFECT;

???? }

Public voide buildModel () {

????? Player1 p1=new Player(p1Strategy,p2) ;

????? Player2 p1=new Player(p2Strategy,p1) ;

????? agentList.dss(p1) ;

????? agentList.dss(p2) ;

??? }

}

在 setuP()中,首先调用 super.setup()使 SimpleModel实现自身的创建,然后设定了行为者的策略。这里假设行为者的策略可以通过用户的干预,或者可能在先前的模型运行过程中从缺省值改变。setup()让模型的变量值重新回到缺省值。setup()在模型启动时或单击控制条中“setup”键时被调用。当setup()启动一个模型时,调用 buildModel()来创建模型所需的对象,所以应在这里创建主体对象,并将其加人对象的列表 agentList中。agentList是由 SimPleModel为此提供的一个ArrayList。在Setup时所有的参数都恢复到缺省值,所以在这里不能构造基于参数值的对象。在上面的例子中,两个参与者中一个根据其初始策略决策,另一个根据对手的策略决策。

模型的执行顺序是:setup()调用在先,buildModel()调用在后。如上所述setup()在模型一被启动就被调用,当点击“set-up”键时也会被调用。buildMOdel()在模型运行时(即“ run”或“step”键按下时)被调用,这就为用户通过图形界面接口改变变量提供了机会。

第二步:实际运行模型的动作规定

完成模型的设置后,第二步考虑的就是要如何限定模型在每一个时间步上的行为。SimpleModel为完成这一步提供了三种方法:prestep()、step()和 poststep()。在每一个“标记”(tick)上他们依照次序被执行:首先是PresteP(),然后是step(),最后是postStep()。要特别注意的是,区分steP()中的核心行为与必要的之前和之后的过程。由于下面的例子并不需要之前和之后的过程,所以只实现step()一个方法。

Import uchicago.src.sim.engine.SimpleModel;

Pulic class MyModel extends SimpleModel {

Public static final int TIT_FOR_TAT=0;

Public static final int ALWAYSZ_DEFECT=1;

Private p1Strategy= TIT_FOR_TAT;

Private p1Strategy= ALWAYSZ_DEFECT;

Public voide setup () {

????? Super.setup();

????? P1Strategy=TIT_FOR_TAT;

????? Private p2Strategy= ALWAYS_DEFECT;

???? }

Public voide buildModel () {

????? Player1 p1=new Player(p1Strategy,p2) ;

????? Player2 p1=new Player(p2Strategy,p1) ;

????? P1.set()therPlayer(p2)

????? P2.set()therPlayer(p1)

????? agentList.dss(p1) ;

????? agentList.dss(p2) ;

??? }

Public void step() {

??? Int size=agentList.size();

??? for(int i=0;I<size;i++) {

????? Player p=(Player)agentlist.get(i) ;

???? p.play();

??? }

}

}

?? 此处的steP()方法中,首先将每个参与者从对象列表agentList中调出,然后逐个调用play()。此时的假设是,当调用play()时,一个参与者与另一个参与者博弈。在 step()方法中,常常需要遍历所有的主体,并且调用任何有关它们之间交互的方法。当模型运行的时候,step()方法将会在每个时间步(标记)中被执行。

一个不同的决策可能需要一个 PresetP()或者 PoststeP()方法。例如,在一个有许多参与者的合作决策中,在每个参与者与它的邻居进行博弈并产生结果后,每个参与者选出邻居中最好的策略,并将自己的策略相应地进行调整。在这种情况下,实际的决策将在steP()方法中决定,对邻居的选择和策略调整将在PoststeP()方法中发生。

Repast还可实现更为复杂的主体行为、模型事件等时间序列安排,甚至可实现动态的时间序列,而使用SimpleModel的目的是为了简化时间序列的设计。时间序列机制的相关内容,包括具体的使用方式,将在后文“典型内部机制”部分做更详细的介绍。

Agent建模之Repast建模编程介绍相关推荐

  1. 传统企业建模原理及建模体系介绍

    传统企业建模方法是企业经营管理人员对企业的抽象及企业本身元素的具体概括和归纳,它的构造遵循一定行业.一定经营方式.一定建模分析方法,这种模板在同一类行业的企业建模过程中保留一定的参考.指导乃至直接应用 ...

  2. 数学建模python实现基础编程练习4

    数学建模python实现基础编程练习4 1.使用networkx实现最短路和最短距离 import networkx as nx list1 = [(1,2,7),(1,3,3),(1,4,12),( ...

  3. erdas空间建模_ERDAS空间建模工具介绍.ppt

    ERDAS空间建模工具介绍 ERDAS空间建模分析 空间建模是通过作用于原始数据和派生数据的一组顺序的.交互的空间分析操作命令,对一个空间决策过程进行的模拟.ERDAS IMAGINE空间建模的实现可 ...

  4. 数学建模中的常用编程软件

    从本科阶段第一次参加全国大学生数学建模竞赛,到去年9月参加第十五届中国研究生数学建模竞赛,数学建模在我本硕不到六年的时间里占据了近五年的时间.在数学建模中用过的编程软件,粗略的总结一下,大致有如下几种 ...

  5. UML建模之数据建模

    一.数据库模简介 二.数据建模元素 1.表(Table) 2.表索引(Table Index) 3.表触发器(Table Trigger) 4.表约束(Table Constraint) 5.视图(V ...

  6. 【转载】面向对象建模与数据库建模两种分析设计方法的比较

    [转载]面向对象建模与数据库建模两种分析设计方法的比较 板桥里人 http://www.jdon.com 2007/9/23(转载请保留) 我们知道:一个软件从无到有需要经过如下几个阶段:分析.设计. ...

  7. 数据仓库建模方法/范式建模法/维度建模法/事实表/维度表/优缺点/建模流程/概念建模/逻辑建模/物理建模

    常见的有 范式建模法.维度建模法.实体建模法等,每种方法从本质上将是从不同的角度看待业务中的问题,不管是从技术层面还是从业务层面,都代表了哲学上的一种世界观. 1 范式建模法(Third Normal ...

  8. 游戏模型提取工具ninjaripper_【游戏角色建模】ZBrush建模的15个小技巧,建模新手都用得上的干货...

    今天给大家带来了3D建模常用应用软件ZBrush的干货 ZBrush的应用范围特别广泛,如果你忘了它还是一种3D有机雕刻解决方案也是情有可原的,很多艺术家都使用ZBrush制作纹理.创建硬表面模型.三 ...

  9. 数据仓库系列(一)什么是维度建模以及维度建模的基本要素

    文章目录 一.前言 二.什么是维度建模 三.维度建模的基本要素 3.1 事实表 3.2 维度表 一.前言 学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权 ...

  10. 通俗易懂数仓建模:范式建模与维度建模

    一.两种建模思想 对于 Inmon 和 Kimball 两种建模方式可以长篇大论叙述,但理论是很枯燥的,尤其是晦涩难懂的文字,大家读完估计也不会收获太多,所以笔者根据自己的理解用通俗的语言提炼出最核心 ...

最新文章

  1. ftp 信息服务器日常维护,Web Ftp Mail服务器的日常管理与维护
  2. vue $emit $on 非父子非兄弟组件传值
  3. foreach循环怎么获取全部返回值_jmeter基础逻辑控制器之ForEach控制器
  4. 深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别 | 第1天
  5. mysql 杀存储过程进程_SQL SERVER 杀死锁进程存储过程
  6. 历届试题_历届国际物理奥林匹克竞赛试题与解答,解锁竞赛难题,高效提分
  7. java:蓝桥杯 矩阵乘法
  8. Date对象 IOS踩坑
  9. 【BZOJ1001】狼抓兔子,平面图转对偶图(从最小割到最短路)
  10. linux proc大量文件夹,简析Linux中 /proc/[pid] 目录的各文件
  11. oracle 序列赋值变量,Oracle变量的定义、赋值及使用
  12. Node.js之图片上传
  13. IAST安全扫描原理
  14. pythonpost请求json_将JSON字符串作为post请求发送
  15. 层次分析法在matlab上的实现
  16. 互联网毒瘤——内容农场
  17. Beyond Part Models: Person Retrieval with Refined Part Pooling 阅读笔记
  18. 第50篇 Android Studio实现生命数字游戏(五)计算星座数
  19. 用 Java 实现拦截器 Interceptor 的拦截功能
  20. 软件兼容性问题引起电脑蓝屏

热门文章

  1. mid制作乐谱_作品1:MIDI彩虹钢琴(将简谱或五线谱制作成mid)
  2. 大气海洋数值模式经验总结
  3. 使用linux批量引物设计,【分享】超实用的引物设计操作,一看就学会
  4. C语言小案例_OA大典故障案例摘录【第1390篇】夏普mxm2608n 黑白复印机漏粉
  5. C语言小案例_OA大典案例摘录【第1374篇】| 异常色块 规则 合集 | 爱普生喷墨打印机...
  6. 小米路由器r3d 安装vsftp 记事
  7. Merge PDF - Split PDF(PDF合成)
  8. STM32基础知识及环境搭建
  9. 分享几款PR常用插件
  10. topjui中datagrid增删改查