TimefoldAI / TimefoldAI/timefold-solver
Allow SubListSwapMoveSelector to swap 1..n elements with 1..n unassigned elements
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 1.8k
- Forks
- 228
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 46
Description
Is your feature request related to a problem? Please describe.
For over-constrained datasets, bulk swapping assigned entities with unassigned entities might be beneficial to escape local optima.
Describe the solution you'd like
Allow SubListSwapMove to exchange a sub list of 1..n elements with 1..n unassigned elements.
Describe alternatives you've considered
This could also implemented as separate move and not become part of SubListSwapMove.
Further considerations
- This is also somewhat related to ruin and recreate, but if I understand the documentation correctly, ruin and recreate first unassigns multiple entities and then reassigns those same entities. The proposed move would allow unassigning
1..nand then assigning1..nrandomly selected unassigned entities. - When multiple unassigned entities are assigned at once, some sort of construction heuristic might be required to determine the order of those entities as optimally as possible (which makes this also similar to ruin & recreated). Not sure if utilizing nearby selection for this is feasible (as e.g. ruin & recreate doesn't do this), but it would most probably be beneficial for routing models.
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
Start with the SubListSwapMoveSelector and SubListSwapMove entry points, then read the documentation on ruin and recreate and nearby selection to compare the proposed behavior. Define how 1..n assigned entities exchange with 1..n randomly selected unassigned entities, including whether construction ordering is required; done means the selected move is supported with its intended behavior verified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- ai
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100