⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bankmodelswarm.m

📁 仿真人工金融市场Jackson代码
💻 M
字号:
//#import <stdlib.h>//#import <simtools.h>#import "BankModelSwarm.h"@implementation BankModelSwarm+createBegin: (id) aZone {  BankModelSwarm * obj;  id <ProbeMap> probeMap;  obj = [super createBegin: aZone];  obj->population = 100;     // ***  obj->averageIncome = 100 ;  obj->probIOP = 0.7 ;  obj->probIOPSuccess = 0.8 ;  obj->IOPmultiplier = 1.1 ;  obj->probEncounter = 1.0 ;  obj->TranCostBas = 5 ; // ***  probeMap = [EmptyProbeMap createBegin: aZone];  [probeMap setProbedClass: [self class]];  probeMap = [probeMap createEnd];  [probeMap addProbe: [probeLibrary getProbeForVariable: "population"				    inClass: [self class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "averageIncome"				    inClass: [self class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "probIOP"				    inClass: [self class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "probIOPSuccess"				    inClass: [self class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "IOPmultiplier"				    inClass: [self class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "probEncounter"				    inClass: [self class]]]; [probeMap addProbe: [probeLibrary getProbeForVariable: "TranCostBas"                                     inClass: [self class]]]; // ***    [probeMap addProbe: [[probeLibrary getProbeForMessage: "Randomize"			     inClass: [self class]]			setHideResult: 1]];  [probeLibrary setProbeMap: probeMap For: [self class]];  probeMap = [EmptyProbeMap createBegin: aZone];  [probeMap setProbedClass: [FEntity class]];  probeMap = [probeMap createEnd];  [probeMap addProbe: [probeLibrary getProbeForVariable: "borrowLink"				    inClass: [FEntity class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "investLink"				    inClass: [FEntity class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "prevCapital"				    inClass: [FEntity class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "prevROI"				    inClass: [FEntity class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "Income"                                    inClass: [FEntity class]]]; // ***  [probeMap addProbe: [probeLibrary getProbeForVariable: "capital"                                    inClass: [FEntity class]]]; // ***  [probeMap addProbe: [probeLibrary getProbeForVariable: "TranCost"                                    inClass: [FEntity class]]]; // ***  [probeMap addProbe: [probeLibrary getProbeForVariable: "Esperienza"                                    inClass: [FEntity class]]]; // ***  [probeMap addProbe: [probeLibrary getProbeForMessage: "countBorrowers"			     inClass: [FEntity class]]];   [probeLibrary setProbeMap: probeMap For: [FEntity class]];  probeMap = [EmptyProbeMap createBegin: aZone];  [probeMap setProbedClass: [DiGraphLink class]];  probeMap = [probeMap createEnd];  [probeMap addProbe: [probeLibrary getProbeForVariable: "from"				    inClass: [DiGraphLink class]]];  [probeMap addProbe: [probeLibrary getProbeForVariable: "to"				    inClass: [DiGraphLink class]]];  [probeLibrary setProbeMap: probeMap For: [DiGraphLink class]];    return obj;}-createEnd {  return [super createEnd];}-getTheFNet {  return theFNet ;}-getEntityList {  return entityList ;}-(double) getProbEncounter {  return probEncounter ;}-(double) getProbIOP {  return probIOP ;}-(double) getProbIOPSuccess {  return probIOPSuccess ;}	-(double) getIOPmultiplier {  return IOPmultiplier ;}-getRandomFEntity {  return [entityList atOffset: [uniformIntRand getIntegerWithMin: 0                      withMax: ([entityList getCount] - 1)]  ] ;}- setGraphCanvas: aCanvas{  graphCanvas = aCanvas ;  if (theFNet)    [theFNet setCanvas: aCanvas];  return self ;}-buildObjects {  int i;  char *aName ;  [super buildObjects];  theFNet = [FNet createBegin: [self getZone]] ;  [theFNet setCanvas: graphCanvas] ;  [theFNet createEnd] ;  for(i = 0 ; i < population ; i++){    aName = malloc(10) ;    sprintf(aName,"FE%d",i) ;    [theFNet addNode: [[[[[[[FEntity createBegin: self]                       setModel: self]                       setIncome: [uniformDblRand getDoubleWithMin: 0.0                                         withMax: averageIncome]                                         andAv: averageIncome] // ***                       setTranCostBas: TranCostBas] // ***                         setTotalAgentNum: population]                       setEntityName: aName]                       createEnd]] ;  }  entityList = [theFNet getNodeList] ;    return self;}-buildActions {  [super buildActions];  modelActions = [ActionGroup create: [self getZone]];  [modelActions createActionForEach: entityList message: M(attrIncome)]; // ***  [modelActions createActionForEach: entityList message: M(attrTranCostBas)] ;// ***   [modelActions createActionForEach: entityList message: M(encounter)];  [modelActions createActionForEach: entityList message: M(invest)];  [modelActions createActionForEach: entityList message: M(generateIOP)];  [modelActions createActionForEach: entityList message: M(lend)];    modelSchedule = [Schedule createBegin: [self getZone]];  [modelSchedule setRepeatInterval: 1];  modelSchedule = [modelSchedule createEnd];  [modelSchedule at: 0 createAction: modelActions];  return self;}-activateIn: (id) swarmContext {  [super activateIn: swarmContext];  [modelSchedule activateIn: self];  return [self getActivity];}-Randomize {    int list_length ;  id index, entity ;  list_length = [entityList getCount] ;  index = [entityList begin: [self getZone]] ;  while( (entity = [index next]) ){    [entity transferInvestLinkTo:        [entityList atOffset: [uniformIntRand getIntegerWithMin: 0                                                       withMax: list_length-1]]    ] ;    [entity transferBorrowLinkTo:        [entityList atOffset: [uniformIntRand getIntegerWithMin: 0                                                       withMax: list_length-1]]    ] ;  }  [index drop] ;  return self ;}@end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -