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

Do we want to do a callback to primal heuristics when in PHASE_PRICE1? #127

Open
spoorendonk opened this issue May 5, 2020 · 2 comments

Comments

@spoorendonk
Copy link
Contributor

The user callback to do primal heuristics is called here

m_app->APPheuristics(m_xhat, getOrigObjective(), m_xhatIPFeas);

This also done when m_phase == PHASE_PRICE1 and m_xhat therefore not necessarily is complete, i.e., a valid LP relaxation. The user would expect the m_xhat to feasible LP relaxation I guess?

I suggest to only call APPheuristics when m_phase != PHASE_PRICE1.

Perhaps also have a parameter to control the frequency of calls so not to call in every iteration. For now this is for the user to control manually.

@spoorendonk spoorendonk changed the title Do we want to do a callback to primal heuristics when in PHASE_PRICE1? Do we want to do a callback to primal heuristics when in PHASE_PRICE1? May 5, 2020
@spoorendonk spoorendonk changed the title Do we want to do a callback to primal heuristics when in PHASE_PRICE1? Do we want to do a callback to primal heuristics when in PHASE_PRICE1? May 5, 2020
@tkralphs
Copy link
Member

tkralphs commented May 5, 2020

I guess it does make sense only to do primal heuristics in Phase 2. In branch-and-cut, there are primal heuristics that can take an infeasible point as an input, but I'm not sure it really makes sense here.

And yes, parameter to control the frequency would be good. It can always be set to 1 to get the current behavior.

@spoorendonk
Copy link
Contributor Author

I will do a PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants