Skip to content

Releases: blubin/JOpt

Release v1.4.3

13 Dec 10:14
e4109e4
Compare
Choose a tag to compare

FIX

  • Bumped version for Log4j due to security vulnerabilities of this dependency. Please update as soon as possible to this JOpt version.

Release v1.4.1

20 Jul 12:18
ebe63de
Compare
Choose a tag to compare

Improvements:

  • Lowered the level of logging in case the MIP fails from WARN to INFO
    (there will be an exception thrown or a warning logged anyway shortly after, and with the new change one can actually catch an exception himself and handle it without being overwhelmed by the logs it generates.)

Release v1.4.0

20 Jul 12:11
ebe63de
Compare
Choose a tag to compare

Improvements:

  • PARALLEL_MODE set by default to 1 to avoid indeterminism if thread count is larger than 1

Bugfixes

  • Better DISPLAY_OUTPUT logic: It is now purely based on the MIP SolveParams whether or not the CPLEX output is displayed. Previously, it was possible that subsequent runs were not showing an output, even if the DISPLAY_OUTPUT parameter was specified.
  • Better handling of SolveParam input: Previously, if you'd pass an integer to a double SolveParam, it would just ignore this value (e.g. for TIME_LIMIT of 600, it would have been ignored, since it expected a double like 600.0). Now, JOpt attempts to translate an input into the corresponding format, and if it can't, it will throw an Exception.

Release v1.3.6

20 Jul 12:11
ebe63de
Compare
Choose a tag to compare

Improvements:

  • Added support for deterministic time limits for CPLEX.
    • To change it, use the DETERMINISTIC_TIME_LIMIT and SOLUTION_POOL_MODE_4_DETERMINISTIC_TIME_LIMIT SolveParams.

Release v1.3.5

09 Jun 07:33
ebe63de
Compare
Choose a tag to compare

Improvements:

  • Bumped CPLEX dependency to 12.10

Release v1.3.4

13 Sep 05:25
00d4b6f
Compare
Choose a tag to compare

Improvements:

  • Enabled usage of CPLEX OptimalityTarget and QToLin parameters as SolveParam
  • Added information about pool gaps - how far is a pool solution from the best solution?
  • Logging & Documentation improvements
  • Minor adjustments to take advantage of CPLEX 12.9

Release v1.3.3

06 Mar 16:50
3a66760
Compare
Choose a tag to compare

Improvements:

  • MIPResults now have getters to find the absolute and the relative gap compared to the best relaxed solution. If, e.g., the solver runs into a user-defined timeout and gives back the so-far-best solution, this can help to estimate the quality of this solution.
  • Solution Pool Mode 4:
    • The user can now define a time limit for finding even better solutions for the solution pool
    • The user can now define tolerances for accepting the solutions in the solution pool
      • A relative tolerance means that the user is fine with the solution pool if the objective value of worst solution in the pool is within X% of the objective value of the optimal solution
      • An absolute tolerance means that the user is fine with the solution pool if the objective value of worst solution in the pool is not further than X from the objective value of the optimal solution. This is especially useful if the objective value of the optimal solution goes towards zero, because the relative tolerance has very little or no effect in this case.
      • See the documentation for more details and examples
    • The user can now define the variables of interest in a more detailed way, if necessary. Check the documentation for more details.

Release v1.3.2

19 Jan 08:16
Compare
Choose a tag to compare

Improvements:

Added new modes to use the CPLEX solution pool to find k-best solutions:

  • Mode 3: Given a set of variables of interest (e.g., allocation variables in an Auction), CPLEX sequentially looks for a new solution by excluding the old one via constraints. Currently, this works only with binary variables of interest and is inefficient because CPLEX throws away the knowledge of the previous rounds and resolves the whole problem. However, it is a straight-forward way to be sure to get the k best solutions.
  • Mode 4: Implements an algorithm that has been developed together with Daniel Junglas from the CPLEX team to use the power of CPLEX to efficiently find the k-best solutions in a solution pool (this feature does not exist natively in CPLEX). This is the recommended way to find the k-best solutions of a problem, and also supports setting variables of interest of any type.

Release v1.3.1

19 Jan 07:59
Compare
Choose a tag to compare

Improvements:

  • Removed log4j2 config from released version such that it does not conflict with projects that depend on JOpt

Release v1.3.0

29 Oct 21:13
f212969
Compare
Choose a tag to compare

Improvements:

  • Updated lpsolve interface and handled default solver logic (#3 and #4)
  • Added flag for whether or not a user accepts a suboptimal solution after timeout (#2)
  • Consistently implemented logging (#8)
  • Added a testing framework and first tests
  • Released JOpt on Maven Central (#6)

Main changes for the user:

  • When requesting a solver via SolverClient client = new SolverClient() and there is no cplex.jar found, JOpt will automatically fall back to LPSolve and try to solve the MIP.
  • The solvers' outputs are now disabled by default to prevent flooding the output in a project that uses JOpt. To enable the solvers' outputs, set the SolveParam.DISPLAY_OUTPUT of a MIP to true.