Skip to content

Releases: jump-dev/Xpress.jl

v0.18.0

23 Apr 04:06
643815d

Choose a tag to compare

Xpress v0.18.0

Diff since v0.17.2

This is a large breaking release. The purpose of this release was to clean up a
lot of the wrapper by removing the intermediate API between MathOptInterface and
C.

These changes are motivated by our experience maintaining other solver wrappers:
the fewer layers of indirection between MOI and the solver the better, even if
the code is more verbose. In particular, macros seem like they make things
easier to read, but they distract from the code that actually runs. And helper
functions that automate some of the handling of C arguments like Ref{Cint}
obscure the underlying C calls.

Breaking

  • Support for Xpress v8 and earlier has been removed. There are no work-arounds.
    The only supported versions are minor and patch releases in the Xpress v9
    series.

  • Droped support for Julia@1.6 and make minimum v1.10 (#297)

    This change is technically not breaking because users on v1.6 will not be able
    to upgrade to this version, but it is worth advertising.

  • [breaking] simplify the wrapper by removing the intermediate API (#298)

    This PR is breaking for any code that touched the Xpress.Lib submodule, any
    code in src/api.jl, or any code that used @_invoke or @checked.

    There are no simple work-arounds. Instead, you must rewrite your code to use
    the underlying C API directly.

    As an example, instead of

    using Xpress
    prob = Xpress.XpressProblem()
    value = Xpress.getintcontrol(prob, Xpress.XPRS_OUTPUTFLAG)

    do

    using Xpress
    prob = Xpress.XpressProblem()
    pInt = Ref{Cint}(0)
    ret = XPRSgetintcontrol(prob, XPRS_OUTPUTFLAG, pInt)
    @assert ret == 0  # Check error code
    value = pInt[]

    If you need help updating your code, please open a GitHub isssue and tag
    @odow.

  • [breaking] remove kwargs from Optimizer constructor (#300)

    This PR removed the ability to set options via Xpress.Optimizer(; kwargs...).
    Use JuMP.set_attribute or MOI.RawOptimizerAttribute instead. We made this
    change to align with the rest of the JuMP ecosystem.

  • [breaking] remove incorrect set_callback_preintsol (#309)

    This PR removed Xpress.set_callback_preintsol. You can still set this
    callback manually using XPRSaddcbpreintsol. We removed this function because
    it wasn't used by the MOI wrapper, and it did not expose the full capabilities
    of the underlying callback.

  • [breaking] remove set_callback_optnode! (#310)

    This PR removed Xpress.set_callback_optnode!. You can still set this
    callback manually using XPRSaddcboptnode, or by setting the
    Xpress.CallbackFunction attribute. We removed this function because
    it could equivalently be called by CallbackFunction, and it did not expose
    the full capabilities of the underlying callback.

  • [breaking] move logfile field from XpressProblem to Optimizer (#312)

    The XpressProblem(; logfile) keyword argument has been removed. If you are
    using the C API, call XPRSsetlogfile instead. If you are using the MOI
    wrapper, set the "logfile" attribute.

Added

  • Add support for CTRL+C during the solve (#307)

    This PR adds support for interrupting the solver during optimize!. It
    applies only to MIP models.

  • Add support for ScalarQuadraticFunction-in-EqualTo (#319)

Previously this was supported by a bridge adding two constraints: f(x) <= a and f(x) >= a.

Fixed

  • Switch to XPRSoptimize and remove lp/mip/nlp switches (#299)

    As a result of this PR, Xpress will now automatically detect the problem type
    and use the appropriate solver. This fixes a bug in which non-convex quadratic
    programs were not supported by the MOI wrapper.

Other

  • Update versions in GitHub actions (#296)
  • Add a CI job to test local installation (#301)
  • Remove unnecessary XPRSloadlp (#303)
  • Write the filename of libxprs to deps.jl instead of the directory (#302)
  • Remove kwargs from Optimizer in tests (#304)
  • Test Xpress_jll@9.8.1 in CI (#306)
  • Clean up and tidy the test/test_MOI_wrapper.jl file (#305)
  • Move message callback into MOI wrapper (#308)
  • Remove the separate helper.jl and license.jl files (#311)
  • Set XPRS_CALLBACKFROMMAINTHREAD when adding a callback (#314)
  • Remove unused solve_relaxation (#315)
  • Remove setting MPSNAMELENGTH by default (#316)
  • Minor formatting changes for the MOI wrapper (#318)

Merged pull requests:

  • Update versions in GitHub actions (#296) (@odow)
  • Drop support for Julia@1.6 and make minimum v1.10 (#297) (@odow)
  • [breaking] simplify the wrapper by removing the intermediate API (#298) (@odow)
  • Switch to XPRSoptimize and remove lp/mip/nlp switches (#299) (@odow)
  • [breaking] remove kwargs from Optimizer constructor (#300) (@odow)
  • Add a CI job to test local installation (#301) (@odow)
  • Write the filename of libxprs to deps.jl instead of the directory (#302) (@odow)
  • Remove unnecessary XPRSloadlp (#303) (@odow)
  • Remove kwargs from Optimizer in tests (#304) (@odow)
  • Clean up and tidy the test/test_MOI_wrapper.jl file (#305) (@odow)
  • Test Xpress_jll@9.8.1 in CI (#306) (@odow)
  • Add support for CTRL+C during the solve (#307) (@odow)
  • Move message callback into MOI wrapper (#308) (@odow)
  • [breaking] remove incorrect set_callback_preintsol (#309) (@odow)
  • [breaking] remove set_callback_optnode! (#310) (@odow)
  • Remove the seprate helper.jl and license.jl files (#311) (@odow)
  • Move logfile field from XpressProblem to Optimizer (#312) (@odow)
  • Prep for v0.18.0 (#313) (@odow)
  • Set XPRS_CALLBACKFROMMAINTHREAD when adding a callback (#314) (@odow)
  • Remove unused solve_relaxation (#315) (@odow)
  • Remove setting MPSNAMELENGTH by default (#316) (@odow)
  • Bump julia-actions/setup-julia from 2 to 3 (#317) (@dependabot[bot])
  • Minor formatting changes for the MOI wrapper (#318) (@odow)
  • Add support for ScalarQuadraticFunction-in-EqualTo (#319) (@odow)

Closed issues:

  • Second Order Cone Constraints in Briged Optimizer (#56)
  • Use MIP solution pool to save suboptimal MIP results (#80)
  • Detection of non-linear/non-convex problem (#274)
  • SIGINT handling (#294)

v0.17.2

05 Nov 20:11
6ed55b9

Choose a tag to compare

Xpress v0.17.2

Diff since v0.17.1

Merged pull requests:

Closed issues:

  • README and presolve (#279)
  • Can't retrieve dual unbounded ray for trivial problem (#287)
  • Quadratic objective function (#290)

v0.17.1

20 Sep 08:53
ba45b1c

Choose a tag to compare

Xpress v0.17.1

Diff since v0.17.0

Merged pull requests:

Closed issues:

  • Problems finding license on Windows (#275)

v0.17.0

22 Aug 22:52
c885d03

Choose a tag to compare

Xpress v0.17.0

Diff since v0.16.2

Merged pull requests:

  • Add license headers (#219) (@odow)
  • Use Xpress_jll for binaries (#220) (@odow)
  • Use conda binaries on CI (#221) (@odow)
  • Basic tidying of code (#222) (@odow)
  • Move Lib module to subdirectory (#223) (@odow)
  • Add support for MOI.RelativeGapTolerance and MOI.AbsoluteGapTolerance (#224) (@odow)
  • Disable MIPDUALREDUCTIONS when callbacks are added (#225) (@odow)
  • Refactor setting VariablePrimalStart in MOI_wrapper.jl (#226) (@odow)
  • Remove /docs directory (#227) (@odow)
  • Remove unused test file semicontint.jl (#228) (@odow)
  • Refactor test directory (#229) (@odow)
  • Document custom attributes in the MOI wrapper (#230) (@odow)
  • Add JuliaFormatter (#231) (@odow)
  • Tidy src/MOI/MOI_wrapper.jl (#232) (@odow)
  • Fix duplicated function in test/test_MOI_wrapper.jl (#234) (@odow)
  • Ignore src/Lib from .codecov (#235) (@odow)
  • Remove calls to src/api.jl (#236) (@odow)
  • Refactor and simplify src/helper.jl (#237) (@odow)
  • Refactor and simplify src/utils.jl (#238) (@odow)
  • Move XPRS_ATTRIBUTES to src/api.jl (#239) (@odow)
  • Fix MOI.supports(::Optimizer, ::MOI.RawOptimizerAttribute) (#241) (@odow)
  • Change CRLF to LF line endings (#242) (@odow)
  • Refactor and simplify src/xprs_callbacks.jl (#243) (@odow)
  • Refactor and simplify src/MOI/MOI_callbacks.jl (#244) (@odow)
  • Simplify _indices_and_coefficients to return 0-indexed cols (#245) (@odow)
  • Add more tests to test/test_MOI_wrapper.jl (#246) (@odow)
  • Remove ConstraintName for VariableIndex constraints (#247) (@odow)
  • Add more tests to test/test_MOI_wrapper.jl (#248) (@odow)
  • Simplify _cache_primal_status to use XPRS_SOLSTATUS (#249) (@odow)
  • Remove allocations (#250) (@joaquimg)
  • Refactor src/license.jl (#251) (@odow)
  • Remove LinearAlgebra dependency (#252) (@odow)
  • Remove SparseArrays dependency (#253) (@odow)
  • Remove Random dependency (#254) (@odow)
  • Support MOI.ScalarNonlinearFunction (#255) (@odow)
  • Update wrapper of xprs.h (#257) (@odow)
  • Fix uses of code that are not supported by Xpress v8 (#258) (@odow)
  • Fix xprs.jl to use Clong instead of Cint (#259) (@odow)
  • Fix getter of MOI.ListOfConstraintIndices (#261) (@odow)
  • Fix setting Nothing for MOI.TimeLimitSec (#262) (@odow)
  • Tidy pass_names_to_solver and add tests (#263) (@odow)
  • Prep for v0.17.0 (#264) (@odow)
  • Update versions in GitHub actions (#265) (@odow)
  • Add Getting help section to README (#266) (@odow)
  • Update Xpress_jll support (#267) (@odow)
  • Remove mention of community license in README (#268) (@odow)
  • Fix XPAUTH_PATH search for license (#269) (@odow)
  • Add callback example to README (#271) (@odow)
  • update attribute controls for xpress-9.4 (#273) (@mbataillou)

Closed issues:

  • Use dispatch in add single variable constraint (#70)
  • Xpress ignore LP warm starts (#127)
  • Memory leaks (#131)
  • Document MOI-specific parameters (#168)
  • Possible bug in lazy constraints (#191)
  • Missing MOI setter for RelativeGapTolerance (#209)
  • Solver and JuMP returns not the same (#212)
  • Add JuliaFormatter (#214)
  • Consider removing src/api.jl (#215)
  • Add license headers (#216)
  • Renew CI license (#217)
  • Add support for ScalarNonlinearFunction (#233)
  • Add callback example to README (#270)
  • Unrecognized control parameter. (#272)

v0.16.2

30 Nov 11:47
3373773

Choose a tag to compare

Xpress v0.16.2

Diff since v0.16.1

Merged pull requests:

Closed issues:

  • Performance bottlenecks in MOI_wrapper (#188)
  • There is no method in MOI_wrapper that calls Lib.XPRSaddnames (#192)

v0.16.1

08 Apr 15:20
bee4112

Choose a tag to compare

Xpress v0.16.1

Diff since v0.16.0

Merged pull requests:

v0.16.0

07 Apr 22:38
9b19b2b

Choose a tag to compare

Xpress v0.16.0

Diff since v0.15.6

Merged pull requests:

v0.15.6

26 Feb 15:37
09acd14

Choose a tag to compare

Xpress v0.15.6

Diff since v0.15.5

Closed issues:

  • Setting license file separately from Xpress installation? (#182)

Merged pull requests:

v0.15.5

24 Sep 18:19
be5e6f3

Choose a tag to compare

Xpress v0.15.5

Diff since v0.15.4

Merged pull requests:

v0.15.4

20 Sep 05:46
0f2052c

Choose a tag to compare

Xpress v0.15.4

Diff since v0.15.3

Closed issues:

  • _info type-stability (#179)

Merged pull requests: