def train_candidate_model(model: CandidateModel, process: ElectionConstructor, population: NDPopulation, max_steps: int): timings = Timings() stats = ModelStats() first = True while model.global_step < max_steps: winner, candidates, balance = run_sample_election( model, process, population, True) for i in range(len(candidates)): model.add_sample_from_candidates(candidates[i], candidates[0:i], winner) if model.ready(): if first: print("starting to train") first = False stats.update(winner, candidates, balance) for i in range(5): with timings.time_block("model.train"): model.train(128) if model.global_step % 1000 == 0: stats.print(process.name, model.global_step) if model.global_step < max_steps: stats.reset() timings.print()
def check_stats(stats: ModelStats, model: CandidateAgent, process: ElectionConstructor, population: NDPopulation): results = [] timings = Timings() for i in range(1000): winner, candidates, balance = run_sample_election(model, process, population, train=False) stats.update(winner, candidates, balance)