Hello UQWorld!
I would like to ask the following question: is it possible to set variable-dependent constrain on parameters?
I’m using the UQLab inversion module for model calibration of the Bouc-Wen-Baber-Noori SDF system’s parameters. The prior distribution of the parameters has been modelled with uniform distributions setting as Marginals Parameters the parameters’ range variation:
% PRIOR DISTRIBUTION OF THE MODEL PARAMETERS :
PriorOpts.Marginals(1).Name ='ki';
PriorOpts.Marginals(1).Type = 'Uniform';
PriorOpts.Marginals(1).Parameters = [0.5e3 5e3];
PriorOpts.Marginals(2).Name = 'beta';
PriorOpts.Marginals(2).Type = 'Uniform';
PriorOpts.Marginals(2).Parameters = [0 40];
PriorOpts.Marginals(3).Name = 'gamma';
PriorOpts.Marginals(3).Type = 'Uniform';
PriorOpts.Marginals(3).Parameters = [-40 40];
PriorOpts.Marginals(4).Name = 'N';
PriorOpts.Marginals(4).Type = 'Uniform';
PriorOpts.Marginals(4).Parameters = [1 4];
myPriorDist = uq_createInput (PriorOpts);
In order to guarantee the BIBO stability of the model, must be: -beta < gamma < beta. This equation should always be met, otherwise the differential equation governing the problem may diverge. So I need to specify this constrain in each realization of the parameters beta and gamma (something like "PriorOpts.Marginals(3).Parameters = [-abs(beta(step_i)) abs(beta(step_i))] ") when the solver runs (I’m using AIES sampler).
I’ve tried to bypass this issue modifying my forward model generating a fictitious model response completely different from my observation data in order to ''indirectly assign", for those sets of parameters irrespective of the BIBO constrain, a probability next to zero.
function u = uq_BoucWen(X,BoucWen)
if X(3) > abs(X(2)) || X(3) < - abs(X(2))
u = zeros(1,length(BoucWen.Earthquake.time));
for i = 1 : length(u)
u(i) = 10e3 + 500 * randn;
end
else
[~,x] = ode45(@(t,x)uq_solveODE(t,x,X,BoucWen),BoucWen.Earthquake.time,[0 , 0 , 0 , 0]);
u = x(:,1)';
end
end
But this “dirty-issue-bypass” affects the analysis results and I think it is not efficient computationally.
Is there a way to model this dependency between these parameters?
Thanks,
Alessio