REFINER

Built-in layer for arbitrary precision linear programming

In YALMIP

REFINER is invoked by using 'refiner' as solver flag in sdpsettings

Comments

Refiner is a built-in meta solver developed by J-D. Bancal. The module can be used to increase the precision provided by an external linear programming solver.

A = rand(15,5);
x = sdpvar(5,1);
b = rand(15,1);
ops = sdpsettings('solver', 'refiner', 'verbose', 1);
ops = sdpsettings(ops,'refiner.precdigits', 14, 'refiner.internalsolver', 'sedumi');
ops = sdpsettings(ops,'sedumi.eps', 1e-5);
optimize([A*x>=b], sum(x), ops)    

In order to reach precisions of more than ~15 digits, refiner requires the GEM high precision matrix library. As an example, the following code provides the solution to a linear program with 200 digits of precision:

gem.workingPrecision(220);
A = gem.rand(15,5);
x = sdpvar(5,1);
b = gem.rand(15,1);
ops = sdpsettings('solver', 'refiner', 'verbose', 1);
ops = sdpsettings(ops,'refiner.precdigits', 200);
optimize([A*x>=b], sum(x), ops)    

Note