Adding conventional IPR for testing

This commit is contained in:
ext-colombo_a committed 2024-11-05 12:01:06 +01:00
1 parent 9e77533acf
commit fa3d73b2bb
2 files changed
+132 -3

No files matched your search

+22 -1
View File
@@ -140,7 +140,28 @@ class AlgManager:
def get_sequence_ipr(self, gen_it, area = None, update_support=True):
stab_seq = self.get_stabilization_sequence(gen_it)
main_seq = self.get_main_sequence(gen_it)
eval_seq = self.get_evaluation_sequence(gen_it)
full_seq = stab_seq + main_seq
if update_support:
sw_seq = self.get_support_sequence(gen_it)
else:
sw_seq = []
alg_sequence = []
for irep in range(self.repetitions):
alg_sequence += full_seq + sw_seq
alg_sequence += eval_seq
return alg_sequence
+110 -2
View File
@@ -351,8 +351,6 @@ class MPR:
if (save_every>0 and self.generation%save_every==0) or self.generation==self.settings['global']['generations']:
self.result.save(self.settings['global']['workdir'], self.tag)
#if self.verbose: print("Timing (s) --> Print: {:.2f}s , CrossPrep: {:.2f}s , Cross: {:.2f}s , SuppPix: {:.2f}s , IPR: {:.2f}s , Repl: {:.2f}s , total: {:.2f}s ({:.2f}s)".format(tprint, tcrossprep, tcross, tsuppix, tipr, trepl, ttot, (tprint+tcrossprep+tcross+tsuppix+tipr+trepl)))
if self.checkstop():
raise StopRec
@@ -435,6 +433,116 @@ class MPR:
#############################################d
def runIPR(self, save_every: int =-1):
try:
self.stats = Stats()
self.SelectGPUs()
##############################d
self.print("### Running conventional IPR.")
self.print("Initializing solver... ", end='', flush=True)
self.InitSolver()
self.print("Done.")
self.print("Initializing algorithms... ", end='', flush=True)
self.InitIA()
self.print("Done.")
self.print("Initializing population... ", end='', flush=True)
self.InitPop()
self.print("Done.")
##############################d
self.print("... Running main loop ...")
self.solver.Evaluate(self.reconstructions)
self.sortedargs = np.argsort([rec.get_error() for rec in self.reconstructions])
self.solver.set_sequence(self.algman.get_sequence_ipr(0, update_support = not self.refine))
self.reconstructions = self.solver.Sequence(self.reconstructions)
self.generation = 0
self.replcount=0
self.sort()
self.get_best()
self.get_average()
self.save_result()
while self.generation<self.settings['global']['generations']:
ttot = time.time()
self.generation+=1
##########################
if not self.refine:
swparams = self.algman.get_support_params(self.generation)
if self.verbose: print("Algorithms sequence: ", *swparams, sep="\n\t")
self.reconstructions= self.solver.SW(self.reconstructions, *swparams)
self.sort()
self.get_best()
self.get_average()
###### IPR ##########
tipr=time.time()
algsequence = self.algman.get_sequence_ipr(self.generation, update_support = not self.refine)
if self.verbose: print("Algorithms sequence: ", *algsequence, sep="\n\t")
self.solver.set_sequence(algsequence)
self.reconstructions = self.solver.Sequence(self.reconstructions)
tipr=time.time()-tipr
#############################d
self.replcount=0
self.save_result()
if (save_every>0 and self.generation%save_every==0) or self.generation==self.settings['global']['generations']:
self.result.save(self.settings['global']['workdir'], self.tag)
if self.checkstop():
raise StopRec
self.print("Reconstruction completed")
self.setdone()
return self.result
except StopRec:
self.print("Reconstruction interrupted.")
self.print("Saving reconstruction... ", end='')
self.result.save(self.settings['global']['workdir'], self.tag)
self.print('Done')
self.print("Empyting the communication queue... ", end='')
try:
while 1:
self.queue.get(timeout=0.5)
except queue.Empty:
pass
self.print('Done')
self.setdone()
return self.result
except KeyboardInterrupt:
pass
#############################################d
#############################################d