5. Solving new inversion problems
To solve an inversion problem, you first need a forward algorithm. A so-called misfit function must be built which returns a misfit value (also called "cost"). The misfit value (or simply "misfit") is attached to any model inside the parameter space. A model is, in this case, a particular realisation of the parameter set. The misfit quantifies the difference between the calculated response obtained with the forward algorithm and a target response. The target is usually an observable that we want to reproduce with a theoretical model.
The misfit function receives from the inversion core a set of parameters. After computations that are problem dependent, it must return a floating point value (the misfit value). Optionally, it can set a flag to false in case of error during compution. It tells the inversion core that no response can be calculated for the input parameter set.
Before starting the inversion itself and the repeated calls to the misfit function, the parameter space must be defined: number of parameters (dimension), ranges for each parameter, and conditions between them (innovation of the Conditional Neighbourhood Algorithm). The conditions between parameters and the conditional misfit function allow searching solutions inside a parameter space the boundary of which is not a simple box (with n dimensions), but rather a complex multi-dimensional surface. The definition of the parameter space can be either achieved directly by the user in the graphical interface or inside the initialisation function of the newly built plugin.
In this chapter, various plugins for common programming languages are presented: