TimefoldAI / TimefoldAI/timefold-solver
Neighborhoods: Support for non-exhausting iteration
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 1.8k
- Forks
- 228
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 46
Description
An exhausting iteration is very expensive. For every bi join, we need to keep track of the not-yet-exhausted iterators on both sides; therefore for even mid-sized joins, the memory overhead of that grows beyond what's reasonable.
We want to have iterators which can possibly repeat the value they return. We do not want for the user to have to enable this feature. We think it may have to be enabled automatically in the following situations:
- When we see that the join sizes are getting out of hand.
- When the LS performs a lot of moves per step, because that means the joins would otherwise be building more and more of these expensive iterators.
- For tri-picks and higher, as there we can automatically assume that the joins would be massive.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no files, tests, or entry points. Start by locating the neighborhood join and iterator implementation, then trace how exhaustion and join size are handled. Done means non-exhausting iterators are supported and the issue's listed situations can enable them automatically without requiring user configuration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100