max/min cTx It is the objective function (o.f.)bound to
Ax (≤,=,≥) b l ≤ x ≤ u or xᵢ=0 xᵢ∈ ℤ ∀i ∈ I xᵢ∈ {0,1} ∀i ∈ B xᵢ∈ ℝ ∀i∉ (I ∪ B);where
x ∈ ℝn it is the vector of variables A ∈ ℚmxn it is the matrix of coefficients c ∈ ℚn it is the vector of coefficients of the o.f. b ∈ ℚm it is the vector of the coefficients RHS l ∈ ℚn it is the vector of the lower bound u ∈ ℚn it is the vector of the upper bound I ∈ {1,...,n} it is a subset of the indices B ∈ {1,...,n} : (I ∩ B) = ∅
In SSC when a variable is defined as an integer variable or binary, the procedure uses the algorithm of Branch and Bound for optimization. The Branch and Bound resolves a succession of relaxed problems (deprived of integer constraints); to solve these problems is used the Simplex algorithm.
On the contrary, the Branch and Bound method is not very efficient; there are methods in the literature that are certainly much more efficient from the point of view of computational complexity and in the use of memory (for example Branch and Cut and Price). Consequently the size of the MILP problems it must be limited.
In SSC you can solve problems with free variables, integer, binary and semi-continuous. This subclass of problems are usually named with the initials MILP (Mixed Integer Linear Programming). For MILP problems, which have all or part of integer or binary or semi-continuous variables, SSC uses the algorithm of Branch and Bound (B&B) for their resolution.
Starting from version 2.1. it is possible to perform an implementation of the parallel simplex. This option (see example 1.14) makes it possible to exploit multiple threads for the simulation of the simplex and is of significant advantage in the case of architectures with at least 4 or more physical cores. Starting from this version it is also possible to perform an implementation of the parallel Branch and Bound (see example 2.13). In this case, the duration advantages are also obtained starting from two physical cores.