def naive_eq(file_sol, nbAgents): copy_lines=copy.deepcopy(file_sol.lines) # nan ! trop de comprehension ist tue la comprehensio n ^^ (en fait # potentiel err car non exclusif) clauses = [line for line in copy_lines if isinstance(line, futils.Clause)] pf = [line for line in copy_lines if 'pf(' in line.data] comments = [line for line in copy_lines if line.data.startswith('%')] clauses.sort(cmp=futils.comp_index) sizeAgent = len(clauses) / nbAgents agent_clauses = [] for indexAgent, c in enumerate(futils.chunks(clauses, sizeAgent)): if not indexAgent >= nbAgents: # on rajoute un agent que si c'est légal new_agent_line = futils.IndexedLine( 0, '\nagent(' + str(indexAgent) + ').\n') agent_clauses.append(new_agent_line) for line in c: agent_clauses.append(line) # on doit réindexer tout cela dcf_lines = [] for index, line in enumerate(comments + agent_clauses + pf): line.index = index dcf_lines.append(line) return dcf_lines
def naive_eq(file_sol, nbAgents): copy_lines = copy.deepcopy(file_sol.lines) # nan ! trop de comprehension ist tue la comprehensio n ^^ (en fait # potentiel err car non exclusif) clauses = [line for line in copy_lines if isinstance(line, futils.Clause)] pf = [line for line in copy_lines if 'pf(' in line.data] comments = [line for line in copy_lines if line.data.startswith('%')] clauses.sort(cmp=futils.comp_index) sizeAgent = len(clauses) / nbAgents agent_clauses = [] for indexAgent, c in enumerate(futils.chunks(clauses, sizeAgent)): if not indexAgent >= nbAgents: # on rajoute un agent que si c'est légal new_agent_line = futils.IndexedLine( 0, '\nagent(' + str(indexAgent) + ').\n') agent_clauses.append(new_agent_line) for line in c: agent_clauses.append(line) # on doit réindexer tout cela dcf_lines = [] for index, line in enumerate(comments + agent_clauses + pf): line.index = index dcf_lines.append(line) return dcf_lines
def divEquNaive(infilename, outfilename, nbAgents): ''' 1ere naive : divides the clauses equally between the agents and writes the output in a .gro.part.N file ''' f = open(infilename, 'r') lines, nbClauses = annotateLines(f) f.close() lines = filterClauses(lines) sizeAgent = nbClauses / nbAgents outfilename = outfilename + '.gra.part.' + str(nbAgents) outfile = open(outfilename, 'w') i = 0 for c in futils.chunks(lines, sizeAgent): print c for line in c: print line, i outfile.write(str(i) + '\n') if i != nbAgents - 1: i += 1 outfile.close() return