Class Mapqn_qrf_bas_nlp

java.lang.Object
jline.api.mapqn.Mapqn_qrf_bas_nlp

public final class Mapqn_qrf_bas_nlp extends Object
Minimum-mutual-information, maximum-entropy and tree-reweighted (Bethe) bounds on the BAS-blocking polytope, the JAR twin of MATLAB qrf_bas_mmi.m / qrf_bas_mem.m / qrf_bas_bethe.m and of native Python api/mapqn/qrf_bas_nlp.py.

The polytope is NOT re-derived here. It is the one Mapqn_qr_bounds_bas.buildSystem(jline.api.mapqn.Mapqn_qr_bounds_bas_parameters) assembles and that the LP token qrf.bas is validated on against the AMPL model qrboundsbas_skel.mod; only the objective differs. Re-transcribing the fifteen families would duplicate the very index conventions that twice went wrong in the MATLAB twin: the THM30/THM3 population-to-index shift, and a MARGINALS sum whose upper limit was taken on the 1-based index rather than the population.

  • Method Details

    • solveMmi

      public static Mapqn_solution solveMmi(Mapqn_qr_bounds_bas_parameters params)
      Minimise mutual information over the BAS polytope.
      Returns:
      a solution carrying UN_i and QN_i, 1-based
    • solveMem

      public static Mapqn_solution solveMem(Mapqn_qr_bounds_bas_parameters params)
      Minimise negative entropy (maximum entropy) over the BAS polytope.
    • solveBethe

      public static Mapqn_solution solveBethe(Mapqn_qr_bounds_bas_parameters params)
      Minimise the tree-reweighted (Bethe) free entropy over the BAS polytope.

      With lambda = 1/M the objective is lambda*sum_{i!=j} I(n_i;n_j) - sum_i H(n_i), i.e. lambda times the MMI body plus the MEM body, both taken over populations from ZERO. lambda is half the uniform point 2/M of the spanning-tree polytope of K_M, the largest uniform edge weight at which the tree-reweighted entropy is concave and the program therefore convex. This is the objective of qrf.bethe evaluated over the BAS decision vector, so the blocking configurations and the per-station capacities enter through the ranges alone.