TimefoldAI / TimefoldAI/timefold-solver

Neighborhoods: Support for non-exhausting iteration

Open
#2,034 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

component/neighborhoods
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.