BruteForceRedundancyChecker

class BruteForceRedundancyChecker(val tolerance: Double = HalfSpace.defaultTolerance, val maxRows: Int = DEFAULT_MAX_ROWS) : RedundantConstraintChecker(source)

An exact, dependency-free redundancy checker for a continuous polytope based on Fourier–Motzkin elimination. A half-space a · x <= b is redundant with respect to others when the system others ∧ (a · x > b) is infeasible. Strict violation is approximated by the closed system others ∧ (-a · x <= -b - tolerance); if that system has no real solution, the target adds nothing and is redundant.

Fourier–Motzkin elimination is exact for the continuous relaxation but can grow the number of constraints combinatorially as variables are eliminated. To keep the check bounded, maxRows caps the intermediate constraint count: if the cap is exceeded the checker fails open — it reports the target as not redundant (conservative: keep the constraint). This never removes a constraint that might bind; at worst the RMD sampler carries a few extra inactive half-spaces.

Parameters

tolerance

the slack used both to detect a strict violation and to declare an eliminated row infeasible; defaults to HalfSpace.defaultTolerance

maxRows

the maximum number of intermediate rows tolerated during elimination before the check fails open; defaults to DEFAULT_MAX_ROWS

Constructors

Link copied to clipboard
constructor(tolerance: Double = HalfSpace.defaultTolerance, maxRows: Int = DEFAULT_MAX_ROWS)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open override fun isRedundant(target: HalfSpace, others: List<HalfSpace>): Boolean

Returns true if target is redundant given others, i.e. the half-space defined by target is implied by the intersection of the others.