def improve(self,design,improvement_steps): # from multiprocessing import Pool j=0 # threads=8 while j<improvement_steps: # need to add a condition to be already initiated totals=np.zeros((design.n_test,3)) self.condition() # multicore processing, does not work, try PATHOS instead of MULTIP # def emulated(index): # self.emulate(design.test_pars[index]) # return(cf.rmse(self.result,design.test_data[index])) # magazine=np.zeros(threads) # mag_idx=0 # i=0 # while i<design.n_test: # if mag_idx<threads: # magazine[mag_idx]=i # mag_idx+=1 # else: # p=Pool(threads) # output_parallel_session=p.map(emulated,magazine.tolist()) # totals[magazine.tolist()]=output_parallel_session # mag_idx=0 # p.close() # i+=1 i=0 while i<design.n_test: self.emulate(design.test_pars[i]) totals[i,0]=cf.rmse(self.result,design.test_data[i]) totals[i,1]=cf.sharpness(self.result,design.test_data[i]) i+=1 max_0=max(totals[:,0]) max_1=max(totals[:,1]) print(max_0) print(max_1) totals[:,0]=totals[:,0]/max_0 totals[:,1]=totals[:,1]/max_1 totals[:,2]=totals[:,1]+totals[:,0] worst=np.argmax(totals[:,2]) current0=np.mean(totals[:,0]) current1=np.mean(totals[:,1]) current2=np.mean(totals[:,2]) print(max(totals[:,2])) print(current0) print(current1) print(current2) print("--------") j+=1 design.extend(design.test_data[worst],design.test_pars[worst]) design.remove_test_set(worst) self.dp=design.pars self.dd=design.data
def objective_rmse(self,new_cor_len,design,n_test_sample): totals=np.zeros(n_test_sample) self.cor_len=new_cor_len self.condition() i=0 while i<n_test_sample: self.emulate(design.test_pars[i]) totals[i]=cf.rmse(self.result,design.test_data[i]) i+=1 current=np.mean(totals) # print(current) # print(self.cor_len) return(current)