def pom3_csvmaker(names, rows, verbose=True): header = names[:] objectives = ['-cost', '+completion', '-idle'] p3 = pom3.pom3() bigrows = [] #clean rows for _r, r in enumerate(rows): for _i, i in enumerate(r): rows[_r][_i] = round(float(i), 2) #simulate pom for r in rows: vals = p3.simulate(r) bigrow = r + [round(i, 2) for i in vals] bigrows.append(bigrow) header += objectives if verbose: s = '' for i in header: s += str(i) + ',' print s[:len(s) - 1] for r in bigrows: s = '' for i in r: s += str(i) + ',' print s[:len(s) - 1] return header, bigrows
def pom3_csvmaker(names,rows,verbose=True): header = names[:] objectives = ['-cost','+completion','-idle'] p3 = pom3.pom3() bigrows = [] #clean rows for _r,r in enumerate(rows): for _i,i in enumerate(r): rows[_r][_i] = round(float(i),2) #simulate pom3 for r in rows: vals = p3.simulate(r) bigrow = r+[round(i,2) for i in vals] bigrows.append(bigrow) header += objectives if verbose: s = '' for i in header: s += str(i)+',' print s[:len(s)-1] for r in bigrows: s = '' for i in r: s +=str(i) + ',' print s[:len(s)-1] return header,bigrows
def POM3(Class='a'): "POM3" p3 = pom3.pom3() headers = [ 'Culture', 'criticality', 'criticality_modifier', 'initial_known', 'interdependency', 'dynamism', 'size', 'plan', 'team_size' ] def bounds(Class): if Class == 'a': return { 'Culture': [0.1, 0.9], 'criticality': [0.82, 1.26], 'criticality_modifier': [0.02, 0.1], 'initial_known': [0.4, 0.7], 'interdependency': [0.0, 1.0], 'dynamism': [1.0, 50.0], 'size': [0, 4], 'plan': [0, 4], 'team_size': [1.0, 44.0], } elif Class == 'b': return { 'Culture': [0.1, 0.9], 'criticality': [0.82, 1.26], 'criticality_modifier': [0.8, 0.95], 'initial_known': [0.4, 0.70], 'interdependency': [0.0, 1.0], 'dynamism': [1.0, 50], 'size': [0, 2], 'plan': [0, 4], 'team_size': [1.0, 44.0], } elif Class == 'c': return { 'Culture': [0.5, 0.9], 'criticality': [0.82, 1.26], 'criticality_modifier': [0.02, 0.08], 'initial_known': [0.2, 0.5], 'interdependency': [0.0, 50.0], 'dynamism': [40.0, 50.0], 'size': [3, 4], 'plan': [0, 4], 'team_size': [20.0, 44.0], } cost = lambda x: p3.simulate([round(float(k), 2) for k in x[1:-3]])[0] completion = lambda x: p3.simulate([round(float(k), 2) for k in x[1:-3]])[1] idle = lambda x: p3.simulate([round(float(k), 2) for k in x[1:-3]])[2] return Cols(POM3, [ N(least=bounds(Class)[h][0], most=bounds(Class)[h][1]) for h in headers ] + [O(f=cost), O(f=idle), O(f=completion, love=True)])
def evaluate(prob, input = None): if input: for i,decision in enumerate(prob.decisions): decision.value = input[i] else: input = [decision.value for decision in prob.decisions] p3 = pom3.pom3() output = p3.simulate(input) for i,objective in enumerate(prob.objectives): objective.value = output[i] return [objective.value for objective in prob.objectives]
def evaluate(prob, input=None): if input: for i, decision in enumerate(prob.decisions): decision.value = input[i] else: input = [decision.value for decision in prob.decisions] p3 = pom3.pom3() output = p3.simulate(input) for i, objective in enumerate(prob.objectives): objective.value = output[i] return [objective.value for objective in prob.objectives]
def POM3(Class='a'): "POM3" p3 = pom3.pom3() headers = ['Culture', 'criticality', 'criticality_modifier' , 'initial_known', 'interdependency', 'dynamism' , 'size', 'plan', 'team_size'] def bounds(Class): if Class=='a': return {'Culture': [0.1, 0.9], 'criticality': [0.82, 1.26], 'criticality_modifier': [0.02, 0.1], 'initial_known': [0.4, 0.7], 'interdependency': [0.0, 1.0], 'dynamism': [1.0, 50.0], 'size': [0, 4], 'plan': [0, 4], 'team_size': [1.0, 44.0], } elif Class=='b': return {'Culture': [0.1, 0.9], 'criticality': [0.82, 1.26], 'criticality_modifier': [0.8, 0.95], 'initial_known': [0.4, 0.70], 'interdependency': [0.0, 1.0], 'dynamism': [1.0, 50], 'size': [0, 2], 'plan': [0, 4], 'team_size': [1.0, 44.0], } elif Class=='c': return {'Culture': [0.5, 0.9], 'criticality': [0.82, 1.26], 'criticality_modifier': [0.02, 0.08], 'initial_known': [0.2, 0.5], 'interdependency': [0.0, 50.0], 'dynamism': [40.0, 50.0], 'size': [3,4], 'plan': [0, 4], 'team_size': [20.0, 44.0], } cost = lambda x: p3.simulate([round(float(k),2) for k in x[1:-3]])[0] completion = lambda x: p3.simulate([round(float(k),2) for k in x[1:-3]])[1] idle = lambda x: p3.simulate([round(float(k),2) for k in x[1:-3]])[2] return Cols(POM3, [N(least=bounds(Class)[h][0], most=bounds(Class)[h][1]) for h in headers] + [O(f=cost), O(f=idle), O(f=completion, love=True)])