In the case of formulating an LP problem without constraints (but with the definition of the objective function and upper or lower bounds),
a statement has been added to handle and solve a problem with these characteristics. The location of the directory for creating temporary work
directories for SSC has been changed (from "user.dir" to "java.io.tmpdir").
A missing error message has been added. In case of a specific, incorrect formulation of the problem the error message
was not displayed when the LOCAL language was English.
When saving a solution in JSON format, either in an external file or in a string, it is possible to format it,
that is, to have indentations and line breaks.
From this version it is possible to declare, in text format, Special Ordered Sets (SOS) variables of type 1 and 2
(see example 2.19 or the documentation).
Implementation of the resolve() method with an Object parameter for both LP and MILP, to allow chaining
(see example 2.16).
Fixed issue with the getType of Variable when constructing the JSON. Resolved issue related to the solution of the
linear relaxation in the case of semi-continuous variables.
It is possible to save the obtained solution and the processing information in JSON format,
either as a JSON String or as an external JSON file (see example 1.18).
The classes in the org.ssclab.log package have been updated with the introduction of the error(),info(),fine() etc.
methods in the SscLogger class. The SscLevel class has the new ERROR level.
The class org.ssclab.pl.milp.MILP has been corrected as the constructor that accepted a ListConstraints
object as a parameter was missing. The class org.ssclab.pl.milp.Constraint has also been corrected as the
constructor that accepted a string indicating the constraint label was missing.
Now it is possible to declare, in a MILP problem in text format, all variables as belonging to a specific type
using the "ALL" statement (for example, if all variables are wanted to be integers "INT ALL").
It is also possible, still in text format, to declare in a MILP problem a subset of variables as belonging to a
specific type using the wildcard statement "*" (see example 2.9).
In text format, it is now possible to explicitly specify constraints by placing variables on both the left-hand side (LHS) and right-hand side (RHS).
Furthermore, in text format, it is not necessary to include all variables in the objective function, but only those with coefficients different from zero.
It is possible to provide a problem in text format by inserting it into a string (see example 1.5 ).
Finally, in problems with text format stored in external files, it is no longer possible to pass a simple path as a string to the constructor,
but rather as an instance of the Path class (see example 1.11 ).
Warning ! The library now has prefixes related to the package names that have been changed from it.ssc to org.ssclab
to ensure uniqueness by aligning these names with the domain name made available on the internet. Nevertheless, the class
names and their functionalities remain the same as in previous versions.
Additionally, this version introduces several improvements in memory usage.
Warning ! If you download this version, please note that to run the updated examples or use the API documentation,
you will need to adapt the package names (the prefix will change from 'it.ssc' to 'org.ssclab' in the next version).
For example, if an example code contains a statement like 'import org.ssclab.pl.milp.LP', you will need to change it
to 'import it.ssc.pl.milp.LP' to use it with this version of the library.
From this version it is possible to interrupt the simplex or the B&B to obtain a
feasible solution that is not necessarily optimal (see examples 1.10
and 2.14).
Starting from version 3, in the problems with matrix format, the "Double" wrapper is no longer used
to store the coefficients of the matrix A and the rhs values, but the "double" primitive is used.
As a result, the null values cannot be stored in these variables, but will be represented
with the NaN notation (see example 1.4). Furthermore, the inequalities format has been
modified to be more flexible (see example 1.6). Finally, in the use of the sparse format it
is necessary to pass to the LP (or MILP) constructor the constant FormatType.SPARSE
(see example 1.7).
SSC4.1.0r1.jar.zip
SSC4.1.0r1.src.zip
Optimization of cleaning the final table Phase 1 of the simplex.
SSC4.1.0r0.jar.zip
SSC4.1.0r0.src.zip
In text format, it is now possible to explicitly specify constraints by placing variables on both the left-hand side (LHS) and right-hand side (RHS). Furthermore, in text format, it is not necessary to include all variables in the objective function, but only those with coefficients different from zero. It is possible to provide a problem in text format by inserting it into a string (see example 1.5 ). Finally, in problems with text format stored in external files, it is no longer possible to pass a simple path as a string to the constructor, but rather as an instance of the Path class (see example 1.11 ).
SSC4.0.0r0.jar.zip
SSC4.0.0r0.src.zip
Warning ! The library now has prefixes related to the package names that have been changed from it.ssc to org.ssclab to ensure uniqueness by aligning these names with the domain name made available on the internet. Nevertheless, the class names and their functionalities remain the same as in previous versions. Additionally, this version introduces several improvements in memory usage.
SSC3.0.1r3.jar.zip
SSC3.0.1r3.src.zip
Warning ! If you download this version, please note that to run the updated examples or use the API documentation, you will need to adapt the package names (the prefix will change from 'it.ssc' to 'org.ssclab' in the next version). For example, if an example code contains a statement like 'import org.ssclab.pl.milp.LP', you will need to change it to 'import it.ssc.pl.milp.LP' to use it with this version of the library.
SSC3.0.1r0.jar.zip
SSC3.0.1r0.src.zip
From this version it is possible to interrupt the simplex or the B&B to obtain a feasible solution that is not necessarily optimal (see examples 1.10 and 2.14).
SSC3.0.0r2.jar.zip
Starting from version 3, in the problems with matrix format, the "Double" wrapper is no longer used to store the coefficients of the matrix A and the rhs values, but the "double" primitive is used. As a result, the null values cannot be stored in these variables, but will be represented with the NaN notation (see example 1.4). Furthermore, the inequalities format has been modified to be more flexible (see example 1.6). Finally, in the use of the sparse format it is necessary to pass to the LP (or MILP) constructor the constant FormatType.SPARSE (see example 1.7).