# 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:

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

## Note

- Refiner relies on an iterative refinement technique first described in A. M. Gleixner, D. E. Steffy, K. Wolter, INFORMS Journal on Computing 28, 449 (2016).

## Leave a Comment