-
Notifications
You must be signed in to change notification settings - Fork 83
Description
from - https://forums.developer.nvidia.com/t/numerical-stability-issues/344048
I am running a small scheduling problem using cuopt. It has got large penalty values and some Big M kind of variables as well. It’s running into the below error. While the same instance is getting solved easily on coin-or CBC and other solvers. Any special care or normalization we need to take care for cuopt?
super().set_constraint_bounds(b)
Setting parameter infeasibility_detection to true
Setting parameter log_to_console to true
Solving a problem with 356 constraints 233 variables (104 integers) and 902 nonzeros
Objective offset 0.000000 scaling_factor 1.000000
After trivial presolve updated 356 constraints 233 variables. Objective offset 0.000000
Running presolve!
Solving LP root relaxation
Scaling matrix. Maximum column norm 1.423784e+00
Dual Simplex Phase 1
Dual feasible solution found.
Dual Simplex Phase 2
Iter Objective Num Inf. Sum Inf. Perturb Time
1 +0.0000000000000000e+00 56 1.25780041e+08 1.00e-07 0.00
Removed perturbation of 1.02e-05.
Root relaxation solution found in 163 iterations and 0.00s
Root relaxation objective +2.71420000e+04
Strong branching using 4 threads and 58 fractional variables
| Explored | Unexplored | Objective | Bound | Depth | Iter/Node | Gap | Time
0 1 +inf +2.714200e+04 1 0.0e+00 - 0.02
Numerical issue node 442. Resolving from scratch.
Numerical issue node 487. Resolving from scratch.
Numerical issue node 509. Resolving from scratch.
Numerical issue node 708. Resolving from scratch.
python: /tmp/conda-bld-output/bld/rattler-build_libmps-parser/work/cpp/src/dual_simplex/basis_solves.cpp:352: i_t cuopt::linear_programming::dual_simplex::factorize_basis(const csc_matrix_t<i_t, f_t>&, const simplex_solver_settings_t<i_t, f_t>&, const std::vector<i_t>&, csc_matrix_t<i_t, f_t>&, csc_matrix_t<i_t, f_t>&, std::vector<i_t>&, std::vector<i_t>&, std::vector<i_t>&, std::vector<i_t>&, std::vector<i_t>&) [with i_t = int; f_t = double]: Assertion `Snz <= Snz_max && (Sdim > 0 && Snz > 0)’ failed.
Aborted
CBC solver:
Probing was tried 250 times and created 1890 cuts of which 0 were active after adding rounds of cuts (0.056 seconds)
Gomory was tried 243 times and created 525 cuts of which 0 were active after adding rounds of cuts (0.029 seconds)
Knapsack was tried 37 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.002 seconds)
Clique was tried 37 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.001 seconds)
MixedIntegerRounding2 was tried 243 times and created 412 cuts of which 0 were active after adding rounds of cuts (0.034 seconds)
FlowCover was tried 37 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.006 seconds)
TwoMirCuts was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
ZeroHalf was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Result - Optimal solution found
Objective value: 31966.00000000
Enumerated nodes: 767
Total iterations: 18177
Time (CPU seconds): 1.96
Time (Wallclock seconds): 1.98
Option for printingOptions changed from normal to all
Total time (CPU seconds): 1.97 (Wallclock seconds): 1.98