def runOneExperiment(modelConfig, inferenceArgs, metricSpecs, sourceSpec, sinkSpec=None): client = Client(modelConfig, inferenceArgs, metricSpecs, sourceSpec, sinkSpec) return client.run().metrics
def run(self): self.initM(modelData) while not self.kill_received: jobaux = self.work_queue.get() command = jobaux[0] if command == 'predict': self.index = self.index + 1 self.updateModelStats() self.result_queue.put([ (self.Scores[m], self.predictionStreams[m][-1], self.truth[self.index], m) for m in list(self.M.keys()) ]) if command == 'getPredictionStreams': self.result_queue.put( dict([(m, self.predictionStreams[m][:-windowSize]) for m in list(self.predictionStreams.keys())])) if command == 'delete': delList = jobaux[1] for d in delList: if (d in self.M): del self.M[d] del self.Scores[d] del self.predictionStreams[d] print('deleted Model' + str(d) + " in process " + str(self.iden)) print("number of models remaining in " + str(self.iden) + ": " + str(len(self.M))) self.result_queue.put(self.iden) if command == 'getAAEs': self.result_queue.put([ (m, computeAAE(self.truth, self.predictionStreams[m], r), self.getModelState(self.M[m]), self.M[m]['modelDescription']) for m in list(self.M.keys()) ]) if command == 'addPSOVariants': for t in jobaux[1]: if (t[0] == self.iden): name = t[2] modelDescription = t[1][0] x = t[1][1] v = t[1][2] self.M[name] = {} self.M[name]['modelDescription'] = modelDescription self.M[name]['client'] = Client(**modelDescription) self.M[name]['alive'] = True self.M[name]['start'] = 0 self.M[name]['end'] = None self.M[name]['x'] = x self.M[name]['v'] = v self.Scores[name] = 10000 self.predictionStreams[name] = [ 0, ] print("added new model " + str(name) + " to process" + str(self.iden))
def initM(self, modelDatList): for modelData in modelDatList: name = modelData[0] self.M[name] = {} self.M[name]['modelDescription'] = modelData[1] self.M[name]['client'] = Client(**modelData[1]) alpha = modelData[1]['modelConfig']['modelParams']['clParams'][ 'alpha'] n = 0 for encoder in modelData[1]['modelConfig']['modelParams'][ 'sensorParams']['encoders']: if encoder['name'] == predictedField: n = encoder['n'] synPermInactiveDec = modelData[1]['modelConfig']['modelParams'][ 'spParams']['synPermInactiveDec'] activationThreshold = modelData[1]['modelConfig']['modelParams'][ 'tmParams']['activationThreshold'] pamLength = modelData[1]['modelConfig']['modelParams']['tmParams'][ 'pamLength'] self.M[name]['x'] = np.array( [alpha, n, synPermInactiveDec, activationThreshold, pamLength]) vAlpha = uniform(0.01, 0.15) vN = randrange(30, 200, 5) vSynPermInactiveDec = uniform(0.01, 0.15) vActivationThreshold = randrange(12, 17, 1) vPamLength = randrange(1, 6, 1) self.M[name]['v'] = np.array([ vAlpha, vN, vSynPermInactiveDec, vActivationThreshold, vPamLength ]) self.M[name]['alive'] = True self.M[name]['start'] = 0 self.M[name]['end'] = None self.Scores[name] = 10000 self.predictionStreams[name] = [ 0, ]