Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #import "GraphSlide.h"
00011
00012 @interface GraphSlide()
00013
00014 -(void)initBars;
00015 -(void)updateEpisodeTimeGraph;
00016 -(void)updateActionsGraph;
00017 -(void)updateAgentsSavedGraph;
00018
00019 @end
00020
00021 @implementation GraphSlide
00022
00023 @synthesize type;
00024
00025 #pragma mark -
00026 #pragma mark Memory Allocation
00027
00031 -(void)dealloc
00032 {
00033 [super dealloc];
00034 }
00035
00036 #pragma mark -
00037 #pragma mark Initialisation
00038
00043 -(id)initWithImage:(NSString*)_imageName type:(GraphType)_type
00044 {
00045 self = [super initWithImage:_imageName];
00046
00047 if (self != nil)
00048 {
00049 type = _type;
00050 [self initBars];
00051 }
00052 return self;
00053 }
00054
00055 #pragma mark -
00056
00060 -(void)initBars
00061 {
00062 NSString* barImage = @"GraphBar.png";
00063
00064
00065 ccColor3B beforeColour = ccc3(120, 171, 211);
00066 ccColor3B afterColour = ccc3(91, 131, 163);
00067
00068 float yPos = 44.6;
00069 float startScale = 0.02;
00070
00071
00072
00073 reinforcementBefore = [CCSprite spriteWithFile:barImage];
00074 reinforcementAfter = [CCSprite spriteWithFile:barImage];
00075
00076 reinforcementBefore.position = ccp(87, yPos);
00077 reinforcementAfter.position = ccp(94, yPos);
00078
00079 [reinforcementBefore setAnchorPoint:ccp(0.5, 0)];
00080 [reinforcementAfter setAnchorPoint:ccp(0.5, 0)];
00081
00082 [reinforcementBefore setColor:(type != kGraphAgentsSaved) ? beforeColour : afterColour];
00083 [reinforcementAfter setColor:afterColour];
00084
00085 reinforcementBefore.scaleY = startScale;
00086 reinforcementAfter.scaleY = startScale;
00087
00088 [background addChild:reinforcementBefore];
00089 [background addChild:reinforcementAfter];
00090
00091
00092
00093 decisionTreeBefore = [CCSprite spriteWithFile:barImage];
00094 decisionTreeAfter = [CCSprite spriteWithFile:barImage];
00095
00096 decisionTreeBefore.position = ccp(157, yPos);
00097 decisionTreeAfter.position = ccp(164, yPos);
00098
00099 [decisionTreeBefore setAnchorPoint:ccp(0.5, 0)];
00100 [decisionTreeAfter setAnchorPoint:ccp(0.5, 0)];
00101
00102 [decisionTreeBefore setColor:(type != kGraphAgentsSaved) ? beforeColour : afterColour];
00103 [decisionTreeAfter setColor:afterColour];
00104
00105 decisionTreeBefore.scaleY = startScale;
00106 decisionTreeAfter.scaleY = startScale;
00107
00108 [background addChild:decisionTreeBefore];
00109 [background addChild:decisionTreeAfter];
00110
00111
00112
00113 shortestRouteBefore = [CCSprite spriteWithFile:barImage];
00114 shortestRouteAfter = [CCSprite spriteWithFile:barImage];
00115
00116 shortestRouteBefore.position = ccp(227, yPos);
00117 shortestRouteAfter.position = ccp(234.9, yPos);
00118
00119 [shortestRouteBefore setAnchorPoint:ccp(0.5, 0)];
00120 [shortestRouteAfter setAnchorPoint:ccp(0.5, 0)];
00121
00122 [shortestRouteBefore setColor:(type != kGraphAgentsSaved) ? beforeColour : afterColour];
00123 [shortestRouteAfter setColor:afterColour];
00124
00125 shortestRouteBefore.scaleY = startScale;
00126 shortestRouteAfter.scaleY = startScale;
00127
00128 [background addChild:shortestRouteBefore];
00129 [background addChild:shortestRouteAfter];
00130
00131
00132
00133 noneBefore = [CCSprite spriteWithFile:barImage];
00134 noneAfter = [CCSprite spriteWithFile:barImage];
00135
00136 noneBefore.position = ccp(293, yPos);
00137 noneAfter.position = ccp(300.8, yPos);
00138
00139 [noneBefore setAnchorPoint:ccp(0.5, 0)];
00140 [noneAfter setAnchorPoint:ccp(0.5, 0)];
00141
00142 [noneBefore setColor:(type != kGraphAgentsSaved) ? beforeColour : afterColour];
00143 [noneAfter setColor:afterColour];
00144
00145 noneBefore.scaleY = startScale;
00146 noneAfter.scaleY = startScale;
00147
00148 [background addChild:noneBefore];
00149 [background addChild:noneAfter];
00150 }
00151
00155 -(void)update
00156 {
00157 switch(type)
00158 {
00159 case kGraphEpisodeTime:
00160 [self updateEpisodeTimeGraph];
00161 break;
00162
00163 case kGraphActions:
00164 [self updateActionsGraph];
00165 break;
00166
00167 case kGraphAgentsSaved:
00168 [self updateAgentsSavedGraph];
00169 break;
00170
00171 default:
00172 break;
00173 }
00174 }
00175
00179 -(void)updateEpisodeTimeGraph
00180 {
00181 DataManager* dm = [DataManager sharedDataManager];
00182 float maxTime = 60.0f;
00183
00184
00185
00186 reinforcementBefore.scaleY = (float)[dm averageEpisodeTimeLearning:kLearningReinforcement]/(float)maxTime;
00187 reinforcementAfter.scaleY = (float)[dm averageEpisodeTimeNonLearning:kLearningReinforcement]/(float)maxTime;
00188
00189
00190
00191 decisionTreeBefore.scaleY = (float)[dm averageEpisodeTimeLearning:kLearningTree]/maxTime;
00192 decisionTreeAfter.scaleY = (float)[dm averageEpisodeTimeNonLearning:kLearningTree]/maxTime;
00193
00194
00195
00196 shortestRouteBefore.scaleY = (float)[dm averageEpisodeTimeLearning:kLearningShortestRoute]/maxTime;
00197 shortestRouteAfter.scaleY = (float)[dm averageEpisodeTimeNonLearning:kLearningShortestRoute]/maxTime;
00198
00199
00200
00201 noneBefore.scaleY = (float)[dm averageEpisodeTimeLearning:kLearningNone]/maxTime;
00202 noneAfter.scaleY = (float)[dm averageEpisodeTimeNonLearning:kLearningNone]/maxTime;
00203 }
00204
00208 -(void)updateActionsGraph
00209 {
00210 DataManager* dm = [DataManager sharedDataManager];
00211 float maxActions = 5.0f;
00212
00213
00214
00215 reinforcementBefore.scaleY = (float)[dm averageActionsLearning:kLearningReinforcement]/maxActions;
00216 reinforcementAfter.scaleY = (float)[dm averageActionsNonLearning:kLearningReinforcement]/maxActions;
00217
00218
00219
00220 decisionTreeBefore.scaleY = (float)[dm averageActionsLearning:kLearningTree]/maxActions;
00221 decisionTreeAfter.scaleY = (float)[dm averageActionsNonLearning:kLearningTree]/maxActions;
00222
00223
00224
00225 shortestRouteBefore.scaleY = (float)[dm averageActionsLearning:kLearningShortestRoute]/maxActions;
00226 shortestRouteAfter.scaleY = (float)[dm averageActionsNonLearning:kLearningShortestRoute]/maxActions;
00227
00228
00229
00230 noneBefore.scaleY = (float)[dm averageActionsLearning:kLearningNone]/maxActions;
00231 noneAfter.scaleY = (float)[dm averageActionsNonLearning:kLearningNone]/maxActions;
00232 }
00233
00238 -(void)updateAgentsSavedGraph
00239 {
00240 DataManager* dm = [DataManager sharedDataManager];
00241
00242 reinforcementAfter.scaleY = [dm averageAgentsSaved:kLearningReinforcement];
00243 reinforcementAfter.position = ccp(reinforcementAfter.position.x-3, reinforcementAfter.position.y);
00244 reinforcementBefore.scaleY = 0;
00245
00246 decisionTreeAfter.scaleY = [dm averageAgentsSaved:kLearningTree];
00247 decisionTreeAfter.position = ccp(decisionTreeAfter.position.x-3, decisionTreeAfter.position.y);
00248 decisionTreeBefore.scaleY = 0;
00249
00250 shortestRouteAfter.scaleY = [dm averageAgentsSaved:kLearningShortestRoute];
00251 shortestRouteAfter.position = ccp(shortestRouteAfter.position.x-4, shortestRouteAfter.position.y);
00252 shortestRouteBefore.scaleY = 0;
00253
00254 noneAfter.scaleY = [dm averageAgentsSaved:kLearningNone];
00255 noneAfter.position = ccp(noneAfter.position.x-4, noneAfter.position.y);
00256 noneBefore.scaleY = 0;
00257 }
00258
00259
00260 @end