Opened 13 years ago
Closed 10 years ago
#422 closed defect (fixed)
CPLEX LP slow problem build-up
Reported by: | Alpar Juttner | Owned by: | Peter Kovacs |
---|---|---|---|
Priority: | major | Milestone: | LEMON 1.4 release |
Component: | core | Version: | hg main |
Keywords: | Cc: | ||
Revision id: |
Description
In an internal project we came across a situation when building-up an LP program was very slow compared to using CPLEX's native interface. The problem occurs on some special problems, only. The reasons are still unknown.
Attachments (3)
Change History (10)
comment:1 Changed 13 years ago by
comment:2 follow-up: 3 Changed 13 years ago by
I would greatly appreciate if someone could show me an example of this phenomenon. I believe it should not really depend on the actual LP but only on its size and probably on its density. And it doesn't even need to be a meaningful LP. Two pieces of code building up the same matrix
- firstly using LEMON's interface
- secondly using CPLEX's native interface
and showing significant build-up time would be a great help in identifying where LEMON is suboptimal.
Athos reported similar issue with COIN-OR, thus I consider it a major issue. (A similar example for COIN-OR would be welcome, too)
So, could anyone give some more info, please?
comment:3 Changed 13 years ago by
Replying to alpar:
and showing significant build-up time [...]
I mean significant build-up time difference.
comment:4 Changed 12 years ago by
Milestone: | LEMON 1.3 release → LEMON 1.4 release |
---|
Changed 10 years ago by
Attachment: | 1ad592289f93.patch added |
---|
comment:5 Changed 10 years ago by
The [1ad592289f93] chgset in the attached patch probably solves the problem. It directly adds the row with CPXaddrows()
(supplemented by CPXchgrngval()
if need be). This approach is apparently much faster than the current implementation, which is comprised of a CPXnewrows()
call followed by a CPXchgcoeflist()
.
Could anyone review and test this changeset?
comment:6 Changed 10 years ago by
I checked this patch on the particular LP problems for which we first noticed this issue. The results show that this patch perfectly solves the problem:
Instance | Time before | Time after |
---|---|---|
planar30-1 | 3.7s | 0.20s |
planar50-1 | 107s | 0.96s |
planar50-2 | 60s | 0.65s |
planar50-3 | 255s | 1.17s |
More detailed results file are also attached.
Changed 10 years ago by
Attachment: | results_before_patch.txt added |
---|
Changed 10 years ago by
Attachment: | results_after_patch.txt added |
---|
comment:7 Changed 10 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Thanks for the evaluation. The patch is now in main branch, see [1ad592289f93].
It would be really helpful to see a reproducible example for this