Conversation
|
@DominikPeters @tkralphs could we get this merged and released? This is a critical bug affecting my workflow. I'd chip in but I don't have the necessary rights. |
|
If by "released", you mean released on Pypi, then I can't currently do that. I'm trying to get access to the project on Pypi from the previous maintainers. |
|
Ok, much appreciated! Any way I could help you with that? |
|
I now got access to Pypi. It would be great is if we could get all of the tests passing. There are a lot of failures happening that are related to issues with the HiGHs interface that have been fixed but not merged. I am hoping @rschwarz will make a PR (see this comment). It would also be great if we could have a Github action that uploads to Pypi automatically upon tagging a release, as is done in, e.g., CyLP. |
|
OK, I'll try to prepare the PR tomorrow. UPDATE: see here: #418 |
|
Is there an chance of this getting merged any time soon? There have been multiple releases now, so it would be great to have this fixed. |
|
Thank you for finding and documenting this bug, and for adding the first tests. I confirmed that the problem is still present in the current master branch. I opened a suggested fix in #429. Instead of patching only the Var operator methods, it fixes the root cause in the LinExpr constructor. This also handles direct constructions such as LinExpr([x, x, x], [2, -1, -1]), where repeated coefficients were being lost. The normal case keeps the fast dictionary path, so the performance impact should be small. The added tests pass: 68 passed, 1 skipped. Could you please check whether these cases fix the problem you reported? If so, this approach should cover both your original case and the broader direct-constructor case. |
|
Yes, your PR resolved this, thanks. |
Attempting to fix #396. If we have two identical objects in the
Varoverrides, the previous code would allow theLinExprconstructor to void anything but the last coefficient.I also added the relevant tests, which now pass. The last constraint would fail, because I only modified the
Varfunctions, not the constructor itself.Alternative:
However, this would tank a performance slightly if users create the
LinExprmanually. For this benchmark, theusing_listsmethod runs in 0.71s vs 0.33s forn=2000. Considering the last change was made due to performance reasons, I did not want to revert this right away, but feel free to approve this.