Skip to content

Conversation

@sgatto
Copy link
Contributor

@sgatto sgatto commented Oct 27, 2023

We have been working on several improvements of the Xpress interface at RTE.
These include

  • the possibility to lazily load the Xpress library (like Gurobi) without the need of the header files during the compilation of Ortools
  • a first implementation to make use of callbacks in C++
  • implementation of OR-Tool's SetHint method into the XPRESS interface to suggest a feasible solution to Xpress
  • update to Xpress 9.0
  • allow for a better control on the log level of Xpress
  • implement the Write method, a specific exception is raised in case of failure
  • Xpress now looks for the standard environment variables that are set during the Xpress installation
  • Add new extraction and set method for LP basis for Xpress:
    - MPSolver::GetFinalLpBasisInt,
    - MPSolver::SetStartingLpBasisInt
  • add xpress specific tests that can be activated using the CMake flag BUILD_XPRESS_TEST_AND_EXAMPLES
    - these tests can be run using the community licence of Xpress (bundled with the python installation)

sgatto and others added 3 commits November 16, 2023 14:17
…axim (#114)

* use XPRSmipoptimize and XPRSlpoptimize instead of XPRSminim and XPRSmaxim

* clean xpress/environment files

* accept changes: empty char* parameter for XPRS*optimize
flomnes and others added 2 commits November 20, 2023 12:43
* remove python script

* remove RTE actions

* fix test_xpress_interface.cc

* remove callback_xpress.py

* revert writing colnames and rownames

* accept suggestion from Mizux

* clean

* change cmake/README.md

* try fix build bazel

* try fix build bazel add MPSWriteError.h

* xpress tests gracefully exit if Xpress not found

* add integer and linear programming test for dotnet python and java

* remove MPSWriteError

* try fix Window build

* remove useless line from CMakeLists.txt

* try fix test under windows

* reformat

* use XPRESS_LP instead of XPRESS for linear programming examples

* tools: add --platform arg when possible

make script more resilient/cross-platform

* [CP-SAT] convert to PEP8 convention

* use XPRSmipoptimize and XPRSlpoptimize instead of XPRSminim and XPRSmaxim (#114)

* use XPRSmipoptimize and XPRSlpoptimize instead of XPRSminim and XPRSmaxim

* clean xpress/environment files

* accept changes: empty char* parameter for XPRS*optimize

* Add test on number iterations with LP basis

* fix gtests flags

* refactor

* suggestions by @flomnes

* remove unwanted files

---------

Co-authored-by: Andrea Sgattoni <[email protected]>
Co-authored-by: Laurent Perron <[email protected]>
Co-authored-by: Corentin Le Molgat <[email protected]>
Co-authored-by: Andrea Sgattoni <[email protected]>
@flomnes flomnes force-pushed the feature/xpress_only branch from e663e05 to 2f543db Compare November 20, 2023 11:50
@lperron lperron marked this pull request as ready for review November 21, 2023 10:43
@lperron
Copy link
Collaborator

lperron commented Nov 21, 2023

I know the basis status is not optimal.
I would still push for merging now.

@sgatto
Copy link
Contributor Author

sgatto commented Nov 21, 2023

I know the basis status is not optimal. I would still push for merging now.

Thanks @lperron ,
After checking the differences we realized that we changed the dynamic_library.h file in order to have a graceful exit if some Xpress functions are not found. This change would not be compatible with your implementation of the Gurobi interface and we are unable to propose a different solution for Gurobi (we have no way to test it).
We are checking internally (at RTE) for a different solution or in case mimic what you have done for Gurobi (having a fatal_error if any function is not_found).
We will correct this issue and push a final commit to remove the draft tag this week.
Would it be ok for you ?

@lperron
Copy link
Collaborator

lperron commented Nov 21, 2023 via email

@sgatto
Copy link
Contributor Author

sgatto commented Nov 22, 2023

@lperron I consider this work finalized. We are ready for a merge/further review.

Copy link
Contributor

@flomnes flomnes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sgatto Could you please remove all references to names ? This is not fully integrated yet because of performance issues

@lperron
Copy link
Collaborator

lperron commented Dec 11, 2023

Should I merge ?

@sgatto
Copy link
Contributor Author

sgatto commented Dec 11, 2023

Should I merge ?

It's good for me

@lperron lperron merged commit 0bb7d0c into google:main Dec 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature Request Missing Feature/Wrapper Lang: C++ Native implementation issue Solver: XPRESS XPRESS Solver related issue

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants