@stepbystep88
2019-05-21T03:04:15.000000Z
字数 2130
阅读 1080
Author: Bin She
Email: bin.stepbystep@gmail.com
Github: https://github.com/stepbystep88/Seis-WZDOM
Click here to download from ResearchGate.
The WZDOM toolbox is designed for solving seismic inversion problem based on gradient descent (CG, LBFGS, etc...) method. WZDOM aims to implement different regularization methods, including total variation (high-order-, TV, HTV), Tikhonov (TK), piecewise linear (PL), piecewise smooth (PS), minimum gradient support (MGS) and so on.
please run the test codes under Seis-WZDOM/test_code/test_basical_function_of_WZDOM.
testBasicalFunction.m
tests the basical optimization function of WZDOM
testPostSeisSelectRegParameter.m
tests the selection of parameters for seismic inverion
testPostSeisDifferentRegsUsingDaufault.m
tests different regularization methods for seismic inverion, this routine just uses the default parameters.
testPostSeisShowDifferentRegs.m
tests different regularization methods for seismic inverion, this script uses some advanced function of WZDOM
WZDOM is basically designed for solving the following problem:
where and are lower bound and upper bound, respectively.
The example of using the optimization tool is simply as follows:
inputObjFcnPkgs = {@f1, f1_struct, c1; @f2, f2_struct, c2; @f3, f3_struct, c3};
[x, fval, exitFlag, output] = bsGBSolver(inputObjFcnPkgs, initX, Lb, Ub);
where @f1, @f2, and @f3 are function handles. f1_struct, f1_struct and f1_struct are the struct data which will be used in @f1, @f2 and @f3, respectively. c1, c2 and c3 are the corresponding coeficients.
The change of objective function value during iteration process.
The change of parameter during iteration process.
Total variation (TV) regularization
Picewise linear (PL) regularization
Picewise smooth (PS) regularization
Comparisons of inversion results
I used the Marmousi model to test my method.
I used the cvsrch.m and cvstep.m developed by Dianne O'Leary (July 1991) to obtain the step size for gradient descent based optimization algorithm.
I used the cprintf.m to print the message in different color.
I used some seismic tools to synthesis the seismic data and plot the seismic traces (they haven't been used in the first version).
I learned the design pattern (input and output of API functions) from fmincon (MATLAB optimization toolbox).