passing vector of different precisions to defaultsolver

Dr Gilles,

 

I tried passing a vector or precision in the following way to defaultsolver but it doesn't work. I presume that defaultsolver only assume one precision for every variable.

 

double _prec[ ] =  {1e-03,1e-08};
Vector prec(2, _prec);
solver (system, prec);

The second thing I tried is to build a solver by composing/ simply using FwdBwd contractors.

CtcFwdBwd solver(sys.f);
CtcNewton newton(sys.f);
CtcCompo compo(fwdBwd,newton);

double _prec[]={1, 1e-08};
Vector prec(2,_prec);
RoundRobin pr(prec);

CellStack buff;
Solver s (compo,pr,buff);

It returns me error saying the strategy has not been implemented yet. whereas the following never comes back.

CtcFwdBwd solver(sys.f);

double _prec[]={1, 1e-08};
Vector prec(2,_prec);
RoundRobin pr(prec);

CellStack buff;
Solver s(solver,pr,buff);

Is there any way I can change ibex_DefaultSolver.h or cpp or I can pass vector of precision to the composed solver?
 

 

I tried passing a vector or precision in the following way to defaultsolver but it doesn't work. I presume that defaultsolver only assume one precision for every variable.

Yes, for the moment the default solver only accepts a uniform precision. But we will add  multiple-precision  in the next release (2.1.6) that will be issued very soon.

 

The second thing I tried is to build a solver by composing/ simply using FwdBwd contractors.

[...]

It returns me error saying the strategy has not been implemented yet.

Can you give me the precise message?

whereas the following never comes back.

If the precision for the first variable is really large (like 1.0) as compare to the one of the second variable (1e-08), the dependecy effect (pessimism) related to the first variable may prevent the solver from efficiently contracting the domain of the second variable which, then, may result in a computational blow-up.

Different precisions should be given to variables only in concordance with the "sensibility" of variables in the constraints, as the example I give in the documentation with Coulomb's law. Is that the case for your example ?

Best regards,

Gilles