[关闭]
@stepbystep88 2019-05-21T03:04:15.000000Z 字数 2130 阅读 1053

Seis-WZDOM

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.

Examples

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

Basical function

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:

  1. inputObjFcnPkgs = {@f1, f1_struct, c1; @f2, f2_struct, c2; @f3, f3_struct, c3};
  2. [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.

Some initial results

The change of objective function value during iteration process.
basical_example_5.gif-843kB

The change of parameter during iteration process.
basical_example_6.gif-1672.7kB

Total variation (TV) regularization
Seis_TV_Reg.gif-750.8kB

Picewise linear (PL) regularization
Seis_PL_Reg.gif-754.1kB

Picewise smooth (PS) regularization
Seis_PS_Reg.gif-767.9kB

Comparisons of inversion results
poststack_inversion_comparison.png-693.2kB

Acknowledgment

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).

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注