def getCurves(worker, tasks, runs, prob): #the following two are always fixed cqs = [] #cumulative quality qs = [] #quality aqs = [] #average quality ecqs = [] #estimated by linear regression eqs = [] #estimated by linear regression fqs = [] ###for learning cs = [] ts = [] errs = [] count = 0 for i in range(0, len(tasks)): task = tasks[i] answer = worker.doTask(task) if answer == getAnswer(task, prob): count += 1 cqs.append(worker.getCumulativeQuality(i + 1)) qs.append(worker.getQuality()) aqs.append(float(count) / float(i + 1)) #learn ts.append(i + 1) cs.append(count) learning = learn.learnCurve(cs, ts) fake = Worker(str(uuid.uuid1()), i+1, learning['p'], learning['r'], 1, 1) ecqs.append(fake.getCumulativeQuality(i+1)) eqs.append(fake.getQuality()) errs.append(learning['e']) if i == 0: fqs.append(float(count) / float(i+1)) else: fqs.append(float(i+1)*aqs[i] - float(i)*aqs[i-1]) for j in range(0, runs - 1): worker.reset() count = 0 cs = [] ts = [] for i in range(0, len(tasks)): task = tasks[i] answer = worker.doTask(task) if answer == getAnswer(task, prob): count += 1 aqs[i] += float(count) / float(i + 1) ts.append(i + 1) cs.append(count) learning = learn.learnCurve(cs, ts) fake = Worker(str(uuid.uuid1()), i+1, learning['p'], learning['r'], 1, 1) ecqs[i] += fake.getCumulativeQuality(i+1) eqs[i] += fake.getQuality() errs[i] += learning['e'] if i == 0: fqs[i] += (float(count) / float(i+1)) else: fqs[i] += (float(i+1)*aqs[i] - float(i)*aqs[i-1]) for i in range(0, len(tasks)): aqs[i] = aqs[i] / float(runs) ecqs[i] = ecqs[i] / float(runs) eqs[i] = eqs[i] / float(runs) errs[i] = errs[i] / float(runs) fqs[i] = fqs[i] / float(runs) result = {'cqs': cqs, 'qs': qs, 'aqs': aqs, 'ecqs': ecqs, 'eqs': eqs} return result
aqs = [] #average quality ecqs = [] #estimated by linear regression eqs = [] #estimated by linear regression fqs = [] ###for learning cs = [] ts = [] errs = [] count = 0 for i in range(0, len(tasks)): task = tasks[i] answer = worker.doTask(task) if answer == task: count += 1 cqs.append(worker.getCumulativeQuality(i + 1)) qs.append(worker.getQuality()) aqs.append(float(count) / float(i + 1)) #learn ts.append(i + 1) cs.append(count) learning = learn.learnCurve(cs, ts) fake = Worker(str(uuid.uuid1()), i+1, learning['p'], learning['r'], 1, 1) ecqs.append(fake.getCumulativeQuality(i+1)) eqs.append(fake.getQuality()) errs.append(learning['e']) if i == 0: fqs.append(float(count) / float(i+1)) else: fqs.append(float(i+1)*aqs[i] - float(i)*aqs[i-1]) for j in range(0, total - 1):