def simulate(self): for job in self.design: self.setJobParameters(job) job_outputs = collections.OrderedDict( ) # a dictionary accessed by output variable name # initialize empty lists to track repetition outputs for each output variable for output in self.output_getters: job_outputs[output] = [] for i in range(self.job_repetitions): self.initiateSim() while not self.stopSim(): self.stepSim() outputs = self.getOutputs() for output in outputs: job_outputs[output].append(outputs[output]) self.outputFile.write("\n %d" % job["job_id"]) self.fileWriteJobParameters(job) self.fileWriteOutputs(outputs) # write statistics to file averages = collections.OrderedDict() stddevs = collections.OrderedDict() for variable in job_outputs: averages[variable] = U.mean(job_outputs[variable]) stddevs[variable] = U.popStdDev(job_outputs[variable]) self.summary_avgs[job["job_id"]] = averages self.summary_stds[job["job_id"]] = stddevs self.output("\naverages: ") self.fileWriteJobParameters(job) self.fileWriteOutputs(averages) self.output("\nstandard deviations: ") self.fileWriteJobParameters(job) self.fileWriteOutputs(stddevs)
def simulate(self): for job in self.design: self.setJobParameters(job) job_outputs = collections.OrderedDict() # a dictionary accessed by output variable name # initialize empty lists to track repetition outputs for each output variable for output in self.output_getters: job_outputs[output] = [] for i in range(self.job_repetitions): self.datetime = U.getTimeStampString() self.initiateSim() while not self.stopSim(): self.stepSim() outputs = self.getOutputs() for output in outputs: job_outputs[output].append(outputs[output]) self.outputFile.write("\n %s, %d"%(self.datetime, job["job_id"])) self.fileWriteJobParameters(job) self.fileWriteOutputs(outputs) # write statistics to file averages = collections.OrderedDict() stddevs = collections.OrderedDict() for variable in job_outputs: averages[variable] = U.mean(job_outputs[variable]) stddevs[variable] = U.popStdDev(job_outputs[variable]) self.summary_avgs[job["job_id"]] = averages self.summary_stds[job["job_id"]] = stddevs self.output("\naverages: ") self.fileWriteJobParameters(job) self.fileWriteOutputs(averages) self.output("\nstandard deviations: ") self.fileWriteJobParameters(job) self.fileWriteOutputs(stddevs)
def computeMetrics(self): scores = [agent.score for agent in self.agent_set] self.mean = u.mean(scores) self.std = u.popStdDev(scores) self.minscore = min(scores) self.medscore = u.median(scores) self.maxscore =max(scores) agents_sorted = sorted(self.agent_set, key=lambda agent:agent.score) self.minscoreHfraction = agents_sorted[0].getHFraction() self.maxscoreHfraction = agents_sorted[-1].getHFraction() self.medscoreHfraction = agents_sorted[int(len(self.agent_set)/2)].getHFraction() hfractions = [agent.getHFraction() for agent in self.agent_set] self.medHfraction = u.median(hfractions) self.avgHfraction = u.mean(hfractions) self.minHfraction = min(hfractions) self.maxHfraction = max(hfractions) self.sumHfractions = sum(hfractions) dhfractions = [abs(hfractions[i] - self.oldHfractions[i]) for i in range(len(hfractions))] self.sumdH = sum(dhfractions)