📄 bankmodelswarm.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 + -