Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

heuristics for randomized cutting plane method for LP #30

Closed

Conversation

panagiotisrep
Copy link
Contributor

Heuristics and different implementation of the randomized cutting plane method for linear programming, from "F. Dabbene, P. S. Shcherbakov, and B. T. Polyak. 2010. A Randomized Cutting Plane Method with Probabilistic Geometric Convergence. SIAM J. on Optimization 20, 6 (October 2010), 3185-3207. DOI=http://dx.doi.org/10.1137/080742506".

  • A different approach to the randomized cutting plane method as described in the paper, is to sample only one point per phase, and based on that, decide where to cut the polytope.
  • The precision of this method depends on the random walk getting stuck. After cutting the polytope a number of times, it is no longer in isotropic position and the random walk can't escape from a corner, so we can't come closer to the optimal solution. We tried two heuristics as escape steps: i) try to move towards the center of the Chebyshev ball ii) try to escape with the billiard walk.

You can find test results and further information here.

…std::vector. Made required code updates in polytopes.h, rounding.h,ballintersectconvex.h and updated CMakeLists.txt to include the directory with Eigen.
…plane method, in file "cutting_plane.h". I also added the new test "opt_cutting_plane.cpp"
…n interior_point.h, created lp_generator.h and generate_lp.cpp to create tests. In eigen unsupported changed Macros.h so instead of assert it throws exceptions.
Most of the code is refactored. Remove from external libraries unwanted dependencies and make necessary changes so that efficiency is maximized and avoid duplicate operations. In particular:

- minimal inclusion for Eigen Unsupported: keep only what is required for square root of matrix

- /include/generators/lp_generator.h creates lp tests

- /include/optimization/lp_problem.h is the class that handles linear problems

- /include/optimization/cutting_plane.h holds the two randomized cutting plane algorithms (with and without implicit isotropization)

- /include/samplers/samplers.h deleted some functions

- /test/opt_cutting_plane.cpp make appropriate changes when calling new functions
- /include/convex_bodies/polytopes.h add a new function that does ray shooting and also returns the facets the ray hits

- /include/optimization/cutting_plane.h implemented the following heuristics: at each phase sample 1 point and cut the polytope, as an escape step try to move to the center of the Chebyshev ball or use the billiard walk
@vissarion vissarion requested review from TolisChal and vissarion and removed request for TolisChal July 18, 2019 11:08
@vissarion vissarion changed the title Optimization heuristics heuristics for randomized cutting plane method for LP Feb 19, 2020
@vissarion vissarion force-pushed the develop branch 11 times, most recently from e4ac563 to ca784f5 Compare February 27, 2020 15:08
@vissarion
Copy link
Member

A more efficient algorithm is implemented here #42 making this PR redundant.

@vissarion vissarion closed this Sep 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants