diff --git a/SimPEG/Directives.py b/SimPEG/Directives.py index 4fc1ffc5..af882ffe 100644 --- a/SimPEG/Directives.py +++ b/SimPEG/Directives.py @@ -271,7 +271,8 @@ class Update_IRLS(InversionDirective): self.reg.curModel = self.invProb.curModel self.reg.gamma = self.gamma - + + self.reg._W = None if getattr(self, 'phi_d_last', None) is None: self.phi_d_last = self.invProb.phi_d @@ -287,7 +288,8 @@ class Update_IRLS(InversionDirective): # Get phi_m at the end of current iteration self.phi_m_last = self.invProb.phi_m_last - + + self.reg._W = None # Update the model used for the IRLS weights self.reg.curModel = self.invProb.curModel @@ -296,10 +298,10 @@ class Update_IRLS(InversionDirective): # Compute new model objective function value phim_new = self.reg.eval(self.invProb.curModel) - + # Update gamma to scale the regularization between IRLS iterations self.reg.gamma = self.phi_m_last / phim_new - + # Set the weighting matrix to None so that it is recomputed next time # it is called in the inversion self.reg._W = None diff --git a/SimPEG/Regularization.py b/SimPEG/Regularization.py index 1b0d180f..223de615 100644 --- a/SimPEG/Regularization.py +++ b/SimPEG/Regularization.py @@ -665,7 +665,6 @@ class Sparse(Simple): else: f_m = self.mapping * (self.curModel - self.reg.mref) self.rs = self.R(f_m , self.eps_p, self.norms[0]) - #print "Min rs: " + str(np.max(self.rs)) + "Max rs: " + str(np.min(self.rs)) self.Rs = Utils.sdiag( self.rs ) return Utils.sdiag((self.regmesh.vol*self.alpha_s*self.gamma*self.wght)**0.5)*self.Rs @@ -729,6 +728,7 @@ class Sparse(Simple): def W(self): """Full regularization matrix W""" if getattr(self, '_W', None) is None: + wlist = (self.Wsmall, self.Wsmooth) self._W = sp.vstack(wlist) return self._W