This topic is sharing an experience, probably a noob has not seen before (me included).
Put it simply, I’m solving a disjointed bilinear programming using RLT, and wasn’t realizing that the number of constraints will be (almost) prohibitive.
I used JuMP to model the problem, I guess it probably takes more than 1 hour to add the whole set of constraints. This is the first time I witness the barrier method in the context of an LP.
julia> lpr
lpr_lMD
├ solver: Gurobi
├ objective_sense: MAX_SENSE
│ └ objective_function_type: JuMP.AffExpr
├ num_variables: 17169
├ num_constraints: 1492050
│ └ JuMP.AffExpr in MOI.GreaterThan{Float64}: 1492050
└ Names registered in the model
  └ :cross_multrix, :g_x_DJ, :g_x_Dv, :lpr_DI, :lpr_DJ, :lpr_Dv, :lpr_g
julia> solve_to_normality(lpr);
Gurobi Optimizer version 12.0.1 build v12.0.1rc0 (win64 - Windows 11.0 (26100.2))
CPU model: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz, instruction set [SSE2|AVX|AVX2|AVX512]        
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 1492050 rows, 17169 columns and 13609742 nonzeros
Model fingerprint: 0x7d117878
Coefficient statistics:
  Matrix range     [3e-01, 1e+02]
  Objective range  [5e-02, 9e-01]
  Bounds range     [0e+00, 0e+00]
  RHS range        [3e-01, 5e+03]
Presolve removed 17338 rows and 0 columns
Presolve time: 11.55s
Presolved: 17169 rows, 1474881 columns, 13592573 nonzeros
Concurrent LP optimizer: primal simplex and barrier
Showing barrier log only...
Ordering time: 4.36s
Barrier statistics:
 AA' NZ     : 6.388e+07
 Factor NZ  : 1.474e+08 (roughly 1.8 GB of memory)
 Factor Ops : 1.687e+12 (roughly 10 seconds per iteration)
 Threads    : 3
                  Objective                Residual
Iter       Primal          Dual         Primal    Dual     Compl     Time
   0   5.71120126e+05  0.00000000e+00  6.05e+02 0.00e+00  3.95e+00    28s
   1   4.37893245e+05 -3.45183484e+02  4.47e+02 1.30e+01  2.71e+00    28s
   2   2.67897039e+05 -4.37239984e+02  2.42e+02 1.25e+01  1.67e+00    29s
   3   1.46906844e+05 -3.67646021e+02  1.24e+02 9.69e+00  9.33e-01    29s
   4   8.86396264e+04 -1.69332027e+02  7.03e+01 6.12e+00  5.43e-01    30s
   5   4.22819423e+04  8.78804336e+01  3.07e+01 2.29e+00  2.40e-01    40s
   6   2.02877786e+04  1.68938661e+02  1.15e+01 1.08e+00  9.31e-02    50s
   7   1.22500334e+04  2.35499963e+02  6.03e+00 3.12e-01  4.86e-02    60s
   8   5.81647899e+03  3.56104339e+02  2.32e+00 4.26e-13  2.00e-02    71s
   9   2.64678975e+03  7.30204234e+02  6.48e-01 3.13e-13  6.08e-03    81s
  10   2.34347636e+03  8.45237120e+02  4.75e-01 3.13e-13  4.55e-03    92s
  11   2.57521485e+03  1.28886597e+03  3.42e-01 3.98e-13  3.51e-03   112s
  12   2.83304679e+03  1.76408230e+03  2.55e-01 3.13e-13  2.77e-03   140s
  13   2.81240430e+03  2.07655283e+03  2.22e-01 3.98e-13  2.33e-03   175s
  14   2.88608928e+03  2.21103174e+03  2.10e-01 3.41e-13  2.21e-03   206s
  15   2.96672730e+03  2.48805003e+03  1.82e-01 3.13e-13  1.88e-03   233s
  16   3.04588895e+03  2.78311597e+03  1.56e-01 3.13e-13  1.55e-03   261s
  17   3.15331798e+03  3.06080233e+03  1.31e-01 2.77e-13  1.23e-03   290s
  18   3.18703776e+03  3.09122050e+03  1.23e-01 3.20e-13  1.17e-03   316s
  19   3.25205976e+03  3.27818355e+03  1.10e-01 3.06e-13  9.81e-04   337s
  20   3.34053747e+03  3.35671306e+03  9.11e-02 2.77e-13  8.24e-04   358s
  21   3.39744592e+03  3.49154561e+03  7.98e-02 3.77e-13  6.76e-04   381s
  22   3.48352309e+03  3.59061737e+03  6.00e-02 3.06e-13  4.86e-04   408s
  23   3.53725932e+03  3.66655784e+03  4.87e-02 3.48e-13  3.68e-04   438s
  24   3.57674623e+03  3.67790503e+03  4.11e-02 3.84e-13  3.16e-04   470s
  25   3.61864454e+03  3.71529940e+03  3.29e-02 3.93e-13  2.43e-04   506s
  26   3.64873013e+03  3.73499349e+03  2.71e-02 3.29e-13  1.96e-04   539s
  27   3.68860535e+03  3.75640763e+03  1.98e-02 3.28e-13  1.39e-04   578s
  28   3.74475396e+03  3.77121455e+03  1.01e-02 3.67e-13  7.64e-05   623s
  29   3.76230460e+03  3.78202237e+03  7.06e-03 3.47e-13  5.27e-05   661s
  30   3.79956188e+03  3.79464092e+03  1.00e-03 4.19e-13  1.27e-05   689s
  31   3.80517002e+03  3.80253731e+03  1.20e-05 3.71e-13  1.88e-06   718s
  32   3.80496948e+03  3.80487918e+03  5.52e-08 4.14e-13  6.11e-08   746s
  33   3.80494594e+03  3.80494560e+03  9.26e-10 4.74e-13  2.33e-10   774s
  34   3.80494581e+03  3.80494581e+03  3.71e-09 4.12e-13  2.33e-13   808s
Barrier solved model in 34 iterations and 807.94 seconds (421.92 work units)
Optimal objective 3.80494581e+03
Crossover log...
    7121 DPushes remaining with DInf 1.9624121e-05               809s
    3512 DPushes remaining with DInf 0.0000000e+00               810s
     505 DPushes remaining with DInf 0.0000000e+00               816s
     285 DPushes remaining with DInf 0.0000000e+00               821s
       0 DPushes remaining with DInf 0.0000000e+00               825s
  708357 PPushes remaining with PInf 1.0329409e-03               826s
  637301 PPushes remaining with PInf 0.0000000e+00               830s
  558277 PPushes remaining with PInf 0.0000000e+00               836s
  474805 PPushes remaining with PInf 0.0000000e+00               840s
  322196 PPushes remaining with PInf 0.0000000e+00               845s
  185897 PPushes remaining with PInf 0.0000000e+00               850s
   44324 PPushes remaining with PInf 0.0000000e+00               855s
    1108 PPushes remaining with PInf 0.0000000e+00               862s
       0 PPushes remaining with PInf 0.0000000e+00               862s
  Push phase complete: Pinf 0.0000000e+00, Dinf 1.0490706e-10    862s
Solved with barrier
Iteration    Objective       Primal Inf.    Dual Inf.      Time
  715481    3.8049458e+03   0.000000e+00   0.000000e+00    865s
Solved in 715481 iterations and 864.92 seconds (470.05 work units)
Optimal objective  3.804945806e+03
User-callback calls 718074, time in user-callback 0.45 sec
julia> JuMP.solution_summary(lpr)
solution_summary(; result = 1, verbose = false)
├ solver_name          : Gurobi
├ Termination
│ ├ termination_status : OPTIMAL
│ ├ result_count       : 1
│ ├ raw_status         : Model was solved to optimality (subject to tolerances), and an optimal solution is available.
│ └ objective_bound    : 3.80495e+03
├ Solution (result = 1)
│ ├ primal_status        : FEASIBLE_POINT
│ ├ dual_status          : FEASIBLE_POINT
│ ├ objective_value      : 3.80495e+03
│ └ dual_objective_value : 3.80495e+03
└ Work counters
  ├ solve_time (sec)   : 8.64936e+02
  ├ simplex_iterations : 715481
  ├ barrier_iterations : 34
  └ node_count         : 0
And a question for me now is:
is there a way that I can add the 1 Million constraints in a lazy fashion? (note that this is an LP)
