




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
B: 股市模拟SWARM JAVA程序1. 交易者类import swarm.objectbase.SwarmObjectImpl;import swarm.Globals;import swarm.defobj.Zone;import swarm.gui.Raster;import swarm.space.Grid2dImpl;/* Title: Agent.java* Description: 定义交易者市场行为规则.* Copyright:YuTongkui (c) 2005* Company:CQU CEBA* author YuTongkui* version 1.0*/public class Agent extends SwarmObjectImpl public int strategy;public byte color;public int x;public int y;public int agentID;public Market market;public Grid2dImpl world;public Agent(Zone aZone,Market market,Grid2dImpl world,int x,int y,int agentID) super(aZone); this.market=market; this.world=world; this.x=x; this.y=y; this.agentID=agentID; market.N+; double temp=Math.random();if(temp0.8&temp=0.9) strategy=1; market.numOptimistic+; setColor(byte)1); else strategy=2; market.numPessimistic+; setColor(byte)2); public void setColor(byte i) color=i;public void decide() if(this.strategy=0) if(market.numFundamental=market.numLimit) return; if(Math.random()=market.pftoo) this.strategy=1; setColor(byte)1); market.numFundamental-; market.numOptimistic+; else if(Math.random()=(market.pftop/(1-market.pftoo) this.strategy=2; setColor(byte)2); market.numFundamental-; market.numPessimistic+; else if(this.strategy=1) if(market.numOptimistic+market.numPessimistic)=market.numLimit) return; if(Math.random()=market.potof) this.strategy=0; setColor(byte)0); market.numFundamental+; market.numOptimistic-; else if(Math.random()=market.potop/(1-market.potof) this.strategy=2; setColor(byte)2); market.numOptimistic-; market.numPessimistic+; else if(market.numOptimistic+market.numPessimistic)=market.numLimit) return; if(Math.random()=market.pptof) this.strategy=0; setColor(byte)0); market.numFundamental+; market.numPessimistic-; else if(Math.random()=market.pptoo/(1-market.pptof) this.strategy=1; setColor(byte)1); market.numOptimistic+; market.numPessimistic-; public void drawSelfOn(Raster r) r.drawPointX$Y$Color(x,y,color);2. 市场类import swarm.Globals;import swarm.objectbase.SwarmObjectImpl;import swarm.defobj.Zone;import swarm.collections.ListImpl;import swarm.objectbase.EmptyProbeMapImpl;import java.io.*;import java.util.*;import java.text.*;/* Title: Market.java* Description: 设置市场环境,保存市场状态,制定交易规则.* Copyright: YuTongkui(c) 2005* Company: CQU CEBA* author YuTongkui* version 1.0*/public class Market extends SwarmObjectImpl public int N=0;public double v1=0.5;public double v2=0.75;public double tc=0.001;public double r=0.001;public double a1=0.25;public double a2=0.15;public double a3=0.8;public double pf=10;public double R=0.1;public double beta=0.5;public double a=0.01;public double b=0.05;public double s=0.8;public int intervals=500;public double dt=0.002;public int numLimit=0;public int numFundamental=0;public int numOptimistic=0;public int numPessimistic=0;public double pftoo;public double pftop;public double potof;public double potop;public double pptof;public double pptoo;public double ppup;public double ppdown;public int currentTime;public double dp;public double price;public PrintWriter out;public Market(Zone aZone,PrintWriter out) super(aZone); this.out=out; currentTime=0;public void calculate() double u1=a1*(double)(numOptimistic-numPessimistic)/(double)(numOptimistic+numPessimistic)+a2*dp/v1; double u21=a3*(R*pf+dp/v2)/price-R-s*Math.abs(pf-price)/price); double u22=a3*(R-(R*pf+dp/v2)/price-s*Math.abs(pf-price)/price); pftoo=(1-a)*v2*(double)numOptimistic/(double)N)*Math.exp(u21)+a*(1-b)*(double)numOptimistic/(double)(numOptimistic+numPessimistic); pftop=(1-a)*v2*(double)numPessimistic/(double)N)*Math.exp(u22)+a*(1-b)*(double)numPessimistic/(double)(numOptimistic+numPessimistic); potof=(1-a)*v2*(double)numFundamental/(double)N*Math.exp(-1*u21)+a*b; potop=(1-a)*v1*(double)(numOptimistic+numPessimistic)/(double)N*Math.exp(-1*u1)+a*(1-b)*(double)numPessimistic/(double)(numOptimistic+numPessimistic); pptof=(1-a)*v2*(double)numFundamental/(double)N*Math.exp(-1*u22)+a*b; pptoo=(1-a)*v1*(double)(numOptimistic+numPessimistic)/(double)N*Math.exp(u1)+a*(1-b)*(double)numOptimistic/(double)(numOptimistic+numPessimistic); pftoo=dt*pftoo; pftop=dt*pftop; potof=dt*potof; potop=dt*potop; pptof=dt*pptof; pptoo=dt*pptoo;public void clear() double ed=(this.numOptimistic-this.numPessimistic)*tc+this.numFundamental*r*(pf-price); price=price+beta*ed*dt; dp=beta*ed; this.currentTime+; if(currentTime%intervals=0) out.println(price + + (double) (numOptimistic - numPessimistic) / (double) (numOptimistic + numPessimistic) + + (1 - (double) (numOptimistic + numPessimistic) / (double) N); if(currentTime%(50000)=0) out.close(); try out= new PrintWriter(new BufferedWriter(new FileWriter(v1 +v1+; v2 +v2+;a1 +a1+; a2 +a2+; a3 +a3+; pf +pf+; R +R+; beta +beta+; a +a+; b +b+; s +s+; intervals +intervals+; limitRatio+(double)numLimit/(double)N+ +DateFormat.getDateTimeInstance().format(new Date().replace(:,-)+ +currentTime/50000+.out); catch(Exception e) 3. 模型SWARM类import swarm.objectbase.SwarmImpl;import swarm.collections.ListImpl;import swarm.space.Grid2dImpl;import swarm.defobj.Zone;import swarm.Globals;import swarm.objectbase.EmptyProbeMapImpl;import swarm.activity.ScheduleImpl;import swarm.activity.ActionGroupImpl;import swarm.activity.Activity;import swarm.Selector;import swarm.objectbase.Swarm;import java.io.*;import java.util.*;import java.text.*;/* Title: ModelSWARM.java* Description: 模型SWARM,管理所有agent并实现程序调度.* Copyright:YuTongkui (c) 2005* Company:CQU CEBA* author YuTongkui* version 1.0*/public class ModelSwarm extends SwarmImpl public int worldX=50;public int worldY=50;public int endTime=2000000;public int periods=4000;public double agentDensity=0.2;public double v1=0.5;public double v2=0.75;public double Tc=5;public double Tf=5;public double a1=1.5;public double a2=0.25;public double a3=1.5;public double pf=10;public double R=0.1;public double beta=0.5;public double a=0.01;public double b=0.05;public double s=0.8;public int intervals=500;public double limitRatio=0.0;public Market market;public ListImpl agentList;public Grid2dImpl world;public ScheduleImpl modelSchedule;public PrintWriter out;public ModelSwarm(Zone aZone) super(aZone); EmptyProbeMapImpl modelProbeMap=new EmptyProbeMapImpl(aZone,this.getClass(); modelProbeMap.addProbe(this.getProbeForVariable(worldX); modelProbeMap.addProbe(this.getProbeForVariable(worldY); modelProbeMap.addProbe(this.getProbeForVariable(agentDensity); modelProbeMap.addProbe(this.getProbeForVariable(periods); modelProbeMap.addProbe(this.getProbeForVariable(v1); modelProbeMap.addProbe(this.getProbeForVariable(v2); modelProbeMap.addProbe(this.getProbeForVariable(a1); modelProbeMap.addProbe(this.getProbeForVariable(a2); modelProbeMap.addProbe(this.getProbeForVariable(a3); modelProbeMap.addProbe(this.getProbeForVariable(pf); modelProbeMap.addProbe(this.getProbeForVariable(R); modelProbeMap.addProbe(this.getProbeForVariable(s); modelProbeMap.addProbe(this.getProbeForVariable(beta); modelProbeMap.addProbe(this.getProbeForVariable(b); modelProbeMap.addProbe(this.getProbeForVariable(a); modelProbeMap.addProbe(this.getProbeForVariable(intervals); modelProbeMap.addProbe(this.getProbeForVariable(limitRatio); GbeLibrary.setProbeMap$For(modelProbeMap,this.getClass();public Object buildObjects() super.buildObjects(); Agent agent; try out= new PrintWriter(new BufferedWriter(new FileWriter(v1 +v1+; v2 +v2+;a1 +a1+; a2 +a2+; a3 +a3+; pf +pf+; R +R+; beta +beta+; a +a+; b +b+; s +s+; intervals +intervals+; limitRatio+limitRatio+ +DateFormat.getDateTimeInstance().format(new Date().replace(:,-)+ +0+.out); catch(Exception e) market=new Market(getZone(),out); world=new Grid2dImpl(getZone(),worldX,worldY); world.fastFillWithObject(null); agentList=new ListImpl(getZone(); for(int i=0;iworld.getSizeX();i+) for(int j=0;jworld.getSizeY();j+) if(Globals.env.uniformDblRand.getDoubleWithMin$withMax(0.0,1.0)=endTime) this.getActivity().terminate(); market.out.close(); public double getPrice() return market.price;public double getX() return (double)(market.numOptimistic-market.numPessimistic)/(double)(market.numOptimistic+market.numPessimistic);public double getY() return (double)market.numFundamental/(double)market.N;public void setMarketParameters() market.v1=v1; market.v2=v2; market.a1=a1; market.a2=a2; market.a3=a3; market.pf=pf; market.R=R; market.beta=beta; market.s=s; market.b=b; market.a=a; ervals=intervals; market.numLimit=(int)(this.limitRatio*market.N); market.dt=1.0/(double)intervals; market.tc=Tc/(double)market.N; market.r=Tf/(double)market.N; market.price=pf;4. 观察SWARM类import swarm.simtoolsgui.GUISwarmImpl;import swarm.space.Object2dDisplay;import swarm.space.Object2dDisplayImpl;import swarm.gui.Raster;import swarm.gui.ZoomRaster;import swarm.gui.ZoomRasterImpl;import swarm.defobj.Zone;import swarm.gui.Colormap;import swarm.gui.ColormapImpl;import swarm.Selector;import swarm.activity.ActionGroupImpl;import swarm.activity.ScheduleImpl;import swarm.activity.Activity;import swarm.objectbase.Swarm;import swarm.Globals;import swarm.analysis.EZGraphImpl;import swarm.analysis.EZDistributionImpl;import swarm.analysis.EZDistributionCImpl;import swarm.analysis.EZDistribution;import swarm.analysis.EZDistributionC;import java.io.*;import swarm.objectbase.EmptyProbeMapImpl;/* Title: ObserverSWARM.java* Description: 观察者SWARM,提供图形用户界面.* Copyright:YuTongkui (c) 2005* Company:CQU CEBA* author YuTongkui* version 1.0*/public class ObserverSwarm extends GUISwarmImpl public int displayFrequency=1;public int zoomFactor=5;public boolean simulationFinished=false;public ModelSwarm modelSwarm;public ZoomRaster worldRaster;public Object2dDisplay agentDisplay;public EZGraphImpl priceGraph;public EZGraphImpl xGraph;public EZGraphImpl yGraph;public ScheduleImpl displaySchedule;public ObserverSwarm(Zone aZone) super(aZone); EmptyProbeMapImpl displayProbeMap=new EmptyProbeMapImpl(aZone,this.getClass(); displayProbeMap.addProbe(this.getProbeForVariable(displayFrequency); displayProbeMap.addProbe(this.getProbeForVariable(zoomFactor); GbeLibrary.setProbeMap$For(displayProbeMap,this.getClass();public Object buildObjects() super.buildObjects(); Selector sel; modelSwarm=new ModelSwarm(getZone(); Globals.env.createArchivedProbeDisplay(this,DisplaySwarm); Globals.env.createArchivedProbeDisplay(modelSwarm,ModelSwarm); this.getControlPanel().setStateStopped(); priceGraph=new EZGraphImpl(getZone(),price,time,price,priceGraph); sel=SwarmUtils.getSelector(modelSwarm,getPrice); priceGraph.createSequence$withFeedFrom$andSelector(price,modelSwarm,sel); xGraph=new EZGraphImpl(getZone(),confidence index,time,confidence index,xGraph); sel=SwarmUtils.getSelector(modelSwarm,getX); xGraph.createSequence$withFeedFrom$andSelector(x,modelSwarm,sel); yGraph=new EZGraphImpl(getZone(),rationality index,time,rationality index,yGraph); sel=SwarmUtils.getSelector(modelSwarm,getY); yGraph.createSequence$withFeedFrom$andSelector(y,modelSwarm,sel); modelSwarm.buildObjects(); Colormap colormap=new ColormapImpl(getZone(); colormap.setColor$ToName(byte)0,red); colormap.setColor$ToName(byte)1,yellow); colormap.setColor$ToName(byte)2,blue); colormap.setColor$ToName(byte)3,black); this.worldRaster=new ZoomRasterImpl(getZone(),worldRaster); sel=SwarmUtils.getSelector(this,_worldRasterDeath_); this.worldRaster.enableDestroyNotification$notificationMethod(this,sel); this.worldRaster.setZoomFactor(this.zoomFactor); this.worldRaster.setColormap(colormap); this.worldRaster.setWidth$Height(modelSwarm.worldX,this.modelSwarm.worldY); this.worldRaster.setWindowTitle(Stock Market); this.worldRaster.pack(); sel=SwarmUtils.getSelector(Agent,drawSelfOn); agentDisplay=new Object2dDisplayImpl(getZone(),this.worldRaster,this.modelSwarm.world,sel); agentDisplay.setObjectCollection(this.modelSwarm.agentList); return this;public Object buildActions() super.buildActions(); modelSwarm.buildActions(); Selector sel; ActionGroupImpl displayActions=new ActionGroupImpl(getZone(); sel=SwarmUtils.getSelector(agentDisplay,display); displayActions.createActionTo$message(agentDisplay,sel); sel=SwarmUtils.getSelector(priceGraph,step); displayActions.createActionTo$message(priceGraph,sel); sel=SwarmUtils.getSelector(xGraph,step); displayActions.createActionTo$message(xGraph,sel); sel=SwarmUtils.getSelector(yGraph,step); displayActions.createActionTo$message(yGraph,sel); sel=SwarmUtils.getSelector(worldRaster,drawSelf); displayActions.createActionTo$message(this.worldRaster,sel); sel=SwarmUtils.getSelector(this.getActionCache(),doTkEvents); displayActions.createActionTo$message(this.getActionCache(),sel); sel=SwarmUtils.getSelector(this,checkForDone); displayActions.createActionTo$message(this,sel); this.displaySchedule=new ScheduleImpl(getZone(),1); this.displaySchedule.at$createAction(0,displayActions); return this;public Activity activateIn(Swarm swarmContext) super.activateIn(swarmContext); this.modelSwarm.activateIn(this); this.displaySchedule.activateIn(this); return this.getActivity();public void checkForDone() if(simulationFinished) System.out.println(I said to QUIT); modelSwarm.getActivity().terminate(); modelSwarm.out.close(); this.modelSwarm.drop(); this.getControlPanel().setStateQuit(); else if(this.modelSwarm.getActivity().getStatus()=Globals.env.Completed) this.simulationFinished=true; System.out.println(The simulation stopped after +Globals.env.getCurrentTime()+ periods.); System.out.println(Press QUIT when ready!); this.getControlPanel().setStateStopped(); public Object _worldRasterDeath_(Object caller) this.worldRaster.drop(); this.worldRaster=null; return this;5. 主运行程序类import swarm.Globals;/* Title: StartASM.java* Description: 主运行程序,程序入口.* Copyright:YuTongkui (c) 2005* Company:CQU CEBA* author YuTongkui* version 1.0*/public class StartASM public StartASM() public static void main(String args) ObserverSwarm displaySwarm; Globals.env.initSwarm(ASM,2.2,yy,args); displaySwarm=new ObserverSwarm(Globals.env.globalZone); displaySwarm.buildObjects(); displaySwarm.buildActions(); displaySwarm.activateIn(n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训质量基础知识总结课件
- 口罩隔离知识培训内容课件
- 2025年度电商企业全渠道运营管理与市场推广顾问服务合同
- 2025年健身中心器材购置及售后服务保障合同
- 2025年子女抚养权判决与豪华轿车所有权变更财产分配协议
- 2025年儿童视力保护与综合托育服务一体化合作协议
- 2025年智能型膜结构屋顶安全防护施工服务协议
- 2025年高品质智能化办公楼装修设计、施工及售后服务合同
- 2025年企业产品包装设计服务合同全方位执行版
- 2025年跨区域房产互换未办理正式产权转移合同
- 锁骨骨折的护理课件
- 《物业管理法规》课件
- 2024华为干部管理资料第7版
- 《复活》(节选)列夫托尔斯泰-精讲课件
- (完整版)投标文件范本(格式)
- 中国风肺胀中医护理方案
- GB/T 10433-2024紧固件电弧螺柱焊用螺柱和瓷环
- 2024年样板注塑机转让合同范本
- 医院耗材供货服务方案
- 丹江口事业单位笔试真题2024
- 云南大学附属中学数学2023-2024学年七年级上学期开学分班考试数学试题
评论
0/150
提交评论