Move cell-based weights (i.e. distance weighting) inside regularization.

Fix gamma parameter update
TO DO: Check inversion print screen -> values don't match reality.
This commit is contained in:
D Fournier
2016-03-11 11:40:47 -08:00
parent 838035adae
commit 38b4079f0b
2 changed files with 48 additions and 20 deletions
+5 -3
View File
@@ -298,6 +298,7 @@ class update_IRLS(InversionDirective):
phim_new = self.reg.eval(self.invProb.curModel)
self.gamma = self.phi_m_last / phim_new
self.reg.curModel = self.invProb.curModel
self.reg.gamma = self.gamma
def endIter(self):
@@ -315,13 +316,14 @@ class update_IRLS(InversionDirective):
self.reg.curModel = self.invProb.curModel
# Update the pre-conditioner
diagA = np.sum(self.prob.G**2.,axis=0) + self.invProb.beta*(self.reg.W.T*self.reg.W).diagonal() * (self.reg.mapping * np.ones(self.reg.m.size))**2.
diagA = np.sum(self.prob.G**2.,axis=0) + self.invProb.beta*(self.reg.W.T*self.reg.W).diagonal() * (self.reg.mapping * np.ones(self.reg.curModel.size))**2.
PC = Utils.sdiag(diagA**-1.)
self.opt.approxHinv = PC
self.reg.gamma = 1.
phim_new = self.reg.eval(self.invProb.curModel)
self.reg.gamma = self.reg.gamma * self.invProb.phi_m_last / phim_new
self.reg.gamma = self.invProb.phi_m_last / phim_new
#==============================================================================
# import pylab as plt