@JeroenGar
Follow this conversation JeroenGar/sparrow#124
Currently, StripPackingInstance.solve() always starts the search from scratch with no option to:
provide an initial solution (e.g., a previously found layout),
resume from a partially explored state,
or influence the solver using a known good arrangement as a starting point.
For large item counts (N > 50), this would be extremely useful, because:
most runs converge to similar solutions with the same seed,
improvements become very rare even with long computation times,
a previously found “good but not optimal” solution could guide the solver away from repeatedly exploring the same local minima.
Proposed API Idea (High-Level)
For example:
fn solve_with_initial( &self, initial_solution: &StripPackingSolution, config: &StripPackingConfig, ) -> StripPackingSolution
Or on the Python side (spyrrow):
instance.solve(initial_solution=my_previous_solution, config=cfg)
Alternatively, a resume() function using an exported intermediate state would also work.
It would greatly improve solver diversity and final packing quality.
It would allow iterative refinement loops (reduce strip height → resume → refine).
It would reduce total compute time for users exploring stepwise height decreases.
It aligns with workflows in industrial cutting & nesting applications.
Thank you for your help.
@JeroenGar
Follow this conversation JeroenGar/sparrow#124
Currently,
StripPackingInstance.solve()always starts the search from scratch with no option to:provide an initial solution (e.g., a previously found layout),
resume from a partially explored state,
or influence the solver using a known good arrangement as a starting point.
For large item counts (N > 50), this would be extremely useful, because:
most runs converge to similar solutions with the same seed,
improvements become very rare even with long computation times,
a previously found “good but not optimal” solution could guide the solver away from repeatedly exploring the same local minima.
Proposed API Idea (High-Level)
For example:
fn solve_with_initial( &self, initial_solution: &StripPackingSolution, config: &StripPackingConfig, ) -> StripPackingSolutionOr on the Python side (spyrrow):
instance.solve(initial_solution=my_previous_solution, config=cfg)Alternatively, a resume() function using an exported intermediate state would also work.
It would greatly improve solver diversity and final packing quality.
It would allow iterative refinement loops (reduce strip height → resume → refine).
It would reduce total compute time for users exploring stepwise height decreases.
It aligns with workflows in industrial cutting & nesting applications.
Thank you for your help.