# 15.1 Problem Analyzer¶

The problem analyzer prints a detailed survey of the

- linear constraints and objective
- quadratic constraints
- conic constraints
- variables

of the model.

In the initial stages of model formulation the problem analyzer may be used as a quick way of verifying that the model has been built or imported correctly. In later stages it can help revealing special structures within the model that may be used to tune the optimizer’s performance or to identify the causes of numerical difficulties.

The problem analyzer is run using `Task.analyzeproblem`

. It produces output similar to the one below (this is the problem survey of the `aflow30a`

problem from the MIPLIB 2003 collection).

```
Analyzing the problem
Constraints Bounds Variables
upper bd: 421 ranged : all cont: 421
fixed : 58 bin : 421
-------------------------------------------------------------------------------
Objective, min cx
range: min |c|: 0.00000 min |c|>0: 11.0000 max |c|: 500.000
distrib: |c| vars
0 421
[11, 100) 150
[100, 500] 271
-------------------------------------------------------------------------------
Constraint matrix A has
479 rows (constraints)
842 columns (variables)
2091 (0.518449%) nonzero entries (coefficients)
Row nonzeros, A_i
range: min A_i: 2 (0.23753%) max A_i: 34 (4.038%)
distrib: A_i rows rows% acc%
2 421 87.89 87.89
[8, 15] 20 4.18 92.07
[16, 31] 30 6.26 98.33
[32, 34] 8 1.67 100.00
Column nonzeros, A|j
range: min A|j: 2 (0.417537%) max A|j: 3 (0.626305%)
distrib: A|j cols cols% acc%
2 435 51.66 51.66
3 407 48.34 100.00
A nonzeros, A(ij)
range: min |A(ij)|: 1.00000 max |A(ij)|: 100.000
distrib: A(ij) coeffs
[1, 10) 1670
[10, 100] 421
-------------------------------------------------------------------------------
Constraint bounds, lb <= Ax <= ub
distrib: |b| lbs ubs
0 421
[1, 10] 58 58
Variable bounds, lb <= x <= ub
distrib: |b| lbs ubs
0 842
[1, 10) 421
[10, 100] 421
-------------------------------------------------------------------------------
```

The survey is divided into six different sections, each described below. To keep the presentation short with focus on key elements. The analyzer generally attempts to display information on issues relevant for the current model only: e.g., if the model does not have any conic constraints (this is the case in the example above) or any integer variables, those parts of the analysis will not appear.

General Characteristics

The first part of the survey consists of a brief summary of the model’s linear and quadratic constraints (indexed by \(i\)) and variables (indexed by \(j\)). The summary is divided into three subsections:

`Constraints`

`upper bd`

The number of upper bounded constraints, \(\sum_{j=0}^{n-1} a_{ij} x_j\leq u_i^c\)`lower bd`

The number of lower bounded constraints, \(l_i^c\leq \sum_{j=0}^{n-1} a_{ij} x_j\)`ranged`

The number of ranged constraints, \(l_i^c\leq \sum_{j=0}^{n-1} a_{ij} x_j\leq u_i^c\)`fixed`

The number of fixed constraints, \(l_i^c = \sum_{j=0}^{n-1} a_{ij} x_j= u_i^c\)`free`

The number of free constraints

`Bounds`

`upper bd`

The number of upper bounded variables, \(x_j \leq u_j^x\)`lower bd`

The number of lower bounded variables, \(l_k^x\leq x_j\)`ranged`

The number of ranged variables, \(l_k^x\leq x_j\leq u_j^x\)`fixed`

The number of fixed variables, \(l_k^x = x_j = u_j^x\)`free`

The number of free variables

`Variables`

`cont`

The number of continuous variables, \(x_j\in \real\)`bin`

The number of binary variables, \(x_j\in \{0,1\}\)`int`

The number of general integer variables, \(x_j\in \integral\)

Only constraints, bounds and domains actually in the model will be reported on; if all entities in a section turn out to be of the same kind, the number will be replaced by `all`

for brevity.

Objective

The second part of the survey focuses on (the linear part of) the objective, summarizing the optimization sense and the coefficients’ absolute value range and distribution. The number of 0 (zero) coefficients is singled out (if any such variables are in the problem).

The range is displayed using three terms:

`min |c|`

The minimum absolute value among all coeffecients`min |c|>0`

The minimum absolute value among the nonzero coefficients`max |c|`

The maximum absolute value among the coefficients

If some of these extrema turn out to be equal, the display is shortened accordingly:

- If
`min |c|`

is greater than zero, the`min |c|>0`

term is obsolete and will not be displayed - If only one or two different coefficients occur this will be displayed using
`all`

and an explicit listing of the coefficients

The absolute value distribution is displayed as a table summarizing the numbers by orders of magnitude (with a ratio of 10). Again, the number of variables with a coefficient of 0 (if any) is singled out. Each line of the table is headed by an interval (half-open intervals including their lower bounds), and is followed by the number of variables with their objective coefficient in this interval. Intervals with no elements are skipped.

Linear Constraints

The third part of the survey displays information on the nonzero coefficients of the linear constraint matrix.

Following a brief summary of the matrix dimensions and the number of nonzero coefficients in total, three sections provide further details on how the nonzero coefficients are distributed by row-wise count (`A_i`

), by column-wise count (`A|j`

), and by absolute value (`|A(ij)|`

). Each section is headed by a brief display of the distribution’s range (`min`

and `max`

), and for the row/column-wise counts the corresponding densities are displayed too (in parentheses).

The distribution tables single out three particularly interesting counts: zero, one, and two nonzeros per row/column; the remaining row/column nonzeros are displayed by orders of magnitude (ratio 2). For each interval the relative and accumulated relative counts are also displayed.

Note that constraints may have both linear and quadratic terms, but the empty rows and columns reported in this part of the survey relate to the linear terms only. If empty rows and/or columns are found in the linear constraint matrix, the problem is analyzed further in order to determine if the corresponding constraints have any quadratic terms or the corresponding variables are used in conic or quadratic constraints.

The distribution of the absolute values, `|A(ij)|`

, is displayed just as for the objective coefficients described above.

Constraint and Variable Bounds

The fourth part of the survey displays distributions for the absolute values of the finite lower and upper bounds for both constraints and variables. The number of bounds at 0 is singled out and, otherwise, displayed by orders of magnitude (with a ratio of 10).

Quadratic Constraints

The fifth part of the survey displays distributions for the nonzero elements in the gradient of the quadratic constraints, i.e. the nonzero row counts for the column vectors \(Qx\) . The table is similar to the tables for the linear constraints’ nonzero row and column counts described in the survey’s third part.

Quadratic constraints may also have a linear part, but that will be included in the linear constraints survey; this means that if a problem has one or more pure quadratic constraints, part three of the survey will report the number of linear constraint rows with 0 (zero) nonzeros. Likewise, variables that appear in quadratic terms only will be reported as empty columns (0 nonzeros) in the linear constraint report.

Conic Constraints

The last part of the survey summarizes the model’s conic constraints. For each of the two types of cones, quadratic and rotated quadratic, the total number of cones are reported, and the distribution of the cones’ dimensions are displayed using intervals. Cones dimensions of 2, 3, and 4 are singled out.