gstlearn  1.0.0
CCC
OptimCostBinary Class Reference

#include <OptimCostBinary.hpp>

Inheritance diagram for OptimCostBinary:
IOptimCost OptimCostColored

Public Member Functions

 OptimCostBinary (const CGParam params=CGParam())
 
 OptimCostBinary (const OptimCostBinary &m)
 
OptimCostBinaryoperator= (const OptimCostBinary &m)
 
virtual ~OptimCostBinary ()
 
void reset (PrecisionOp *pmat, const ProjMatrix *projdata, const ProjMatrix *projseis=nullptr, const VectorDouble &propseis=VectorDouble(), const VectorDouble &varseis=VectorDouble())
 
VectorDouble minimize (VectorDouble &indic, bool verbose=false, int maxiter=100, double eps=5.e-4)
 
void calculateGradient (const VectorDouble &indic, const VectorDouble &lambda, double *out)
 
int setMeanProportion (double meanprop)
 
void setParams (const CGParam &params)
 
void setPreCondParams (int chebncmax=10001, double chebtol=5.e-3)
 
int isInitialized ()
 
int getNPoint () const
 
int getNVertex () const
 
void toggleSeismic (bool status)
 
- Public Member Functions inherited from IOptimCost
 IOptimCost ()
 
virtual ~IOptimCost ()
 

Private Member Functions

double _evaluateCost (const VectorDouble &indic, const VectorDouble &lambda)
 
void _evaluateGrad (const VectorDouble &indic, const VectorDouble &lambda, double *normgrad)
 
void _contributeSeismic (const VectorDouble &lambda)
 
void _contributeSeismicDerivative (const VectorDouble &lambda)
 

Private Attributes

bool _isInitialized
 
bool _flagSeismic
 
double _meanPropRaw
 
double _meanPropGaus
 
PrecisionOp_pMat
 
const ProjMatrix_projData
 
const ProjMatrix_projSeis
 
VectorDouble _propSeis
 
VectorDouble _varSeis
 
CGParam _params
 
bool _flagCgPreCond
 
int _chebNcmax
 
double _chebTol
 
VectorDouble _grad
 
VectorDouble _workp
 
VectorDouble _workx
 
VectorDouble _workv
 
VectorDouble _lambdav
 
VectorDouble _works
 

Constructor & Destructor Documentation

◆ OptimCostBinary() [1/2]

OptimCostBinary::OptimCostBinary ( const CGParam  params = CGParam())

◆ OptimCostBinary() [2/2]

OptimCostBinary::OptimCostBinary ( const OptimCostBinary m)

◆ ~OptimCostBinary()

OptimCostBinary::~OptimCostBinary ( )
virtual

Member Function Documentation

◆ _contributeSeismic()

void OptimCostBinary::_contributeSeismic ( const VectorDouble lambda)
private

Internal function to evaluate the seismic contribution to cost function

Parameters
[in]lambdaArray of input values

◆ _contributeSeismicDerivative()

void OptimCostBinary::_contributeSeismicDerivative ( const VectorDouble lambda)
private

Internal function to evaluate the seismic contribution to gradient function

Parameters
[in]lambdaArray of input values

◆ _evaluateCost()

double OptimCostBinary::_evaluateCost ( const VectorDouble indic,
const VectorDouble lambda 
)
private

Internal function to evaluate the Cost

Parameters
[in]indicArray containing the Facies indicators (Dimension: npoint)
[in]lambdaArray of input values

◆ _evaluateGrad()

void OptimCostBinary::_evaluateGrad ( const VectorDouble indic,
const VectorDouble lambda,
double *  normgrad 
)
private

Internal function to evaluate the Gradient

Parameters
[in]indicArray containing the Facies indicators (see remarks) (Dimension: npoint)
[in]lambdaArray of input values
[out]normgradReturnewd normalized gradient value

◆ calculateGradient()

void OptimCostBinary::calculateGradient ( const VectorDouble indic,
const VectorDouble lambda,
double *  out 
)
virtual

Calculate the Gradient

Parameters
[in]indicArray containing the Facies indicators (see remarks) (Dimension: npoint)
[in]lambdaArray of input values
[out]outArray of output gradients

Implements IOptimCost.

◆ getNPoint()

int OptimCostBinary::getNPoint ( ) const

Returns the Number of Data Points

◆ getNVertex()

int OptimCostBinary::getNVertex ( ) const

Returns the Number of Meshing Vertices

◆ isInitialized()

int OptimCostBinary::isInitialized ( )
inline

◆ minimize()

VectorDouble OptimCostBinary::minimize ( VectorDouble indic,
bool  verbose = false,
int  maxiter = 100,
double  eps = 5.e-4 
)

Perform the minimization

Returns
The array of facies proportions (Dimension: nvertex)
Parameters
[in]indicArray containing the Facies indicators (see remarks) (Dimension: npoint)
[in]verboseVerbose flag
[in]maxiterMaximum number of iterations for Optimization algo.
[in]epsTolerance for Optimization algorithm
Remarks
The argument 'indic' should contain 0 or 1 for active constraints
The inactive constraints should be set to TEST.

◆ operator=()

OptimCostBinary & OptimCostBinary::operator= ( const OptimCostBinary m)

◆ reset()

void OptimCostBinary::reset ( PrecisionOp pmat,
const ProjMatrix projdata,
const ProjMatrix projseis = nullptr,
const VectorDouble propseis = VectorDouble(),
const VectorDouble varseis = VectorDouble() 
)

Initialize the Binary Cost Operator

Parameters
[in]pmatThe precision matrix to be optimized
[in]projdataThe Projection operator between Data and Meshing
[in]projseisThe Projection operator between Seismic and Meshing
[in]propseisArray of facies proportions
[in]varseisArray of variance attached to the seismic

◆ setMeanProportion()

int OptimCostBinary::setMeanProportion ( double  meanprop)

Set the Mean proportion for the indicator

Parameters
[in]meanpropValue of the mean proportion (raw scale)

◆ setParams()

void OptimCostBinary::setParams ( const CGParam params)
inline

◆ setPreCondParams()

void OptimCostBinary::setPreCondParams ( int  chebncmax = 10001,
double  chebtol = 5.e-3 
)
inline

Set the constant parameters for internal Pre-Conditioner

◆ toggleSeismic()

void OptimCostBinary::toggleSeismic ( bool  status)

Toggle the use of the Seismic constraint

Parameters
[in]statusStatus assigned to the Seismic Constraints
Remarks
When the Seismic is not defined (i.e. 'projSeis not defined)
this function is useless

Member Data Documentation

◆ _chebNcmax

int OptimCostBinary::_chebNcmax
private

◆ _chebTol

double OptimCostBinary::_chebTol
private

◆ _flagCgPreCond

bool OptimCostBinary::_flagCgPreCond
private

◆ _flagSeismic

bool OptimCostBinary::_flagSeismic
private

◆ _grad

VectorDouble OptimCostBinary::_grad
mutableprivate

◆ _isInitialized

bool OptimCostBinary::_isInitialized
private

◆ _lambdav

VectorDouble OptimCostBinary::_lambdav
mutableprivate

◆ _meanPropGaus

double OptimCostBinary::_meanPropGaus
private

◆ _meanPropRaw

double OptimCostBinary::_meanPropRaw
private

◆ _params

CGParam OptimCostBinary::_params
private

◆ _pMat

PrecisionOp* OptimCostBinary::_pMat
private

◆ _projData

const ProjMatrix* OptimCostBinary::_projData
private

◆ _projSeis

const ProjMatrix* OptimCostBinary::_projSeis
private

◆ _propSeis

VectorDouble OptimCostBinary::_propSeis
private

◆ _varSeis

VectorDouble OptimCostBinary::_varSeis
private

◆ _workp

VectorDouble OptimCostBinary::_workp
mutableprivate

◆ _works

VectorDouble OptimCostBinary::_works
mutableprivate

◆ _workv

VectorDouble OptimCostBinary::_workv
mutableprivate

◆ _workx

VectorDouble OptimCostBinary::_workx
mutableprivate

The documentation for this class was generated from the following files: