def run(self,prog,gp=None): """ prog est un ProgramGenetic gp est un GeneratePercept optionnel crée l'aspirateur Aspirateur_PG ajoute l'information panne à l'aspirateur met un compteur a 0 détermine quels environnements seront utilisables 0, 1, 2 pour chaque environnement s'il n'est pas utilisable : continue creer m = MondeSimulation(aspirateur,1,nbCol) pour chaque position a tester compteur = compteur + m.simulation(nbIter,table,position) renvoyer compteur renvoie le score total obtenu pour chaque simulation, on aurait pu prendre non pas le score de la simulation mais celui de la performance de l'agent ou une combinaison des deux exemple: alpha perfGlobale + beta getEvaluation() total_sim = 0 ; total_agent = 0 alpha = .5 ; beta = 1 - alpha .... for p in _lpos: total_sim += m.simulation( .... ) total_agent += m.agent.getEvaluation() ... return alpha * total_sim + beta * total_agent """ aspi = Aspirateur_PG(prog,gp,self.__lcap) aspi.panne = self.panne _total = 0 # détermination de l'ensemble des typ_ admis en fonction de __lcap _ltyp = [0,1,2] if aspi.capteurs == []: _ltyp.remove(1) else: _ltyp.remove(0) for e in self.__envt.values(): _typ,_nbCol,_table,_lpos = e if _typ not in _ltyp: continue m = MondeSimulation(aspi,1,_nbCol) for p in _lpos: _total += m.simulation(self.__nbMaxIter,_table,p) return _total
# if capteurs != []: # _ok = "oO0Yy" # _rep = input("L'aspirateur peut etre en panne [oui in {}] ? ".format(_ok)) # panne = _rep in _ok actions = "Aspirer Gauche Droite Repos".split() aspirateurs = {} # aspirateurs['genetique'] = Aspirateur_PG(prog, gp, capteurs) # assert aspirateurs['genetique'].program.program == chrom, "something odd is happening" aspirateurs['aleatoire'] = Aspirateur_KBE(0, capteurs, actions ) aspirateurs['apprenant'] = Aspirateur_KBE(.75, capteurs, actions, True) aspirateurs['genetique_kapt_panne'] = Aspirateur_PG(prog, gp, capteurs) aspirateurs['genetique_kapt_npanne'] = Aspirateur_PG(prog, gp, capteurs) aspirateurs['genetique_nkapt'] = Aspirateur_PG(prog, gp) aspirateurs['genetique_kapt_panne'].panne = True aspirateurs['genetique_kapt_npanne'].panne = False # for k in aspirateurs: # aspirateurs[k].panne = panne stocker_eval = dict() stocker_perf = dict() # création des mondes et récupérations des résultats # on manipule une copie de l'environnement pour éviter les pbs resultats = {} #===============# # taille monde # #===============#