Barrierround

fullification(o)[source]

Convert a rounded equality-form polytope into full-dimensional inequality form

Converts a polytope described by {Ax = b, lb <= x <= ub} into an equivalent full-dimensional polytope {Ax <= b} together with the affine map needed to recover samples in the original space

USAGE:

fullP = fullification (o)

INPUT:

o – Structure with fields:

  • .P - polytope struct {Ax = b, lb <= x <= ub} with fields .A, .b, .lb, .ub, .x

  • .T - affine-transformation struct with fields .x0, .idx, .scale, mapping back to the original space by x0(idx) + scale .* samples

OUTPUT:

fullP – Structure describing {Ax <= b}, with fields:

  • .A - inequality constraint matrix

  • .b - inequality right-hand side

  • .x - feasible interior point

  • .N - null-space basis used to return to the original space

  • .p_shift - shift used to return to the original space

  • .x0 - offset of the original-space affine map

  • .idx - indices of the recovered variables

logBarrierRound(problem)[source]

Round a polytope in log-barrier coordinates for sampling

Normalizes and rounds the polytope {Aeq x = beq, lb <= x <= ub} using a log-barrier linear program and returns the rounded polytope together with the affine transformation needed to recover samples in the original space

USAGE:

o = logBarrierRound (problem)

INPUT:

problem – Structure describing the polytope {Aeq x = beq, lb <= x <= ub}, with fields:

  • .Aeq - equality constraint matrix

  • .beq - equality right-hand side

  • .lb - lower bounds

  • .ub - upper bounds

OUTPUT:

o – Problem structure with fields:

  • .P - rounded polytope struct with feasible point (fields .A, .b, .lb, .ub, .x)

  • .T - affine transformation used to recover samples in the original space (fields .x0, .idx, .scale)

sanity_check[source]

Sanity-check script: draw samples from a rounded polytope and map them back to the original space to check the bounds and equality constraints

seed = 1; rng(seed);