Replies: 3 comments 1 reply
-
This "branch search - merge - branch search" approach has been considered before by Maros and Mitra, but I don't think that it's worth trying in the context of the code complexity required. The bound on speed-up is the reduction in the number of iterations relative to vanilla dual simplex: not much given the overheads of merging and branching. A much simpler concurrency approach - as taken by Gurobi (at least) - is to run different LP solution techniques concurrently until one has finished. This way you capture the few occasions when simplex out-performs barrier, and when primal simplex out-performs dual. I've got a prototype implementation of this for HiGHS. It's relatively easy to implement using by choosing the first to finish, but that's non-deterministic. LP solvers must be deterministic, and that requires a model of computation time to be used to decide which has finished first.
I'm curious
|
Beta Was this translation helpful? Give feedback.
-
The classical data parallel PriceByColumn may be useful for problems where the What do you mean by "in practice, priceByRow seems to take more time"? When
I see, rather than create a new Do I think what you're doing is valuable? I can't say that it's going to make much difference to performance, as the HiGHS duial simplex solver is already very efficient, but ever little helps! I can credit you with trying and doing something sensible, that's for sure! If you're looking at improving the performance of the dual simplex solver when solving MIPs, you're right in saying that trying to exploit parallelism is (even) less valuable than when solving an LP from scratch, since dual simplex in the MIP solver solves nodes in relatively few iterations, so the "start-up" overhead for parallelism is relatively high. Indeed, multiple threads when solving a MIP are better used in parallelising the MIP tree search. |
Beta Was this translation helpful? Give feedback.
-
The explanation in "price" and "rebuild" is completely consistent with my thoughts and test results! My job is to optimize the dual simplex algorithm and not directly optimize the MIP tree search. Pray that I can make some improvements on the dual simplex method. |
Beta Was this translation helpful? Give feedback.
-
Hello professor, I am an optimization solver researcher in a company, and my current responsibility is to optimize the serial dual simplex algorithm in HIGHS to achieve better performance in real-world applications. I have read some of Dr. huangfu's papers and yours.
At present, I have optimized the calculation process of PriceByColumn and some memory requests in "rebuild".
Dual simplex algorithm is a locally optimal iterative search between vertices in high dimensional space. Next, I want to implement multiple path search in the iterative process of dual simplex to extend the scope of the local optimal value
, and merge these search path results at appropriate time. The whole process is: branch search - merge - branch search and so on.
My idea above is obviously simple. But during my actual code changes, I found that the underlying data changes involved in this work were quite large.
If possible, I would be grateful if professor could give me some advice on my idea or other dual simplex optimization ideas before I proceed to the actual code implementation.
Beta Was this translation helpful? Give feedback.
All reactions