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.
Conversely, the Branch and Bound method is not efficient, and the one implemented in this library, used to solve integer linear programming problems, is not highly optimized. Additionally, there are methods in the literature that are certainly much more efficient in terms of computational complexity and memory usage. Consequently, the size of solvable MILP problems is necessarily 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.0 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.