TimefoldAI / TimefoldAI/timefold-solver

Allow SubListSwapMoveSelector to swap 1..n elements with 1..n unassigned elements

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

Nobody has claimed this yet.

process/needs triage
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..n and then assigning 1..n randomly 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

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.