Closed Colelyman closed 4 years ago
Hi @Colelyman,
warm starting is on my roadmap and it might be a low-hanging fruit. Assigning values according to warm-start annotations is easy but additional work and experimentation will be necessary to keep simulated annealing from immediately scrambling the initial assignment.
Currently, however, I am working on improving Yuck's performance on vehicle routing problems and it will keep me busy for some time. So if you are interested in warm starting and have some time to contribute to Yuck, I will be happy to support your work on this feature.
Some pointers and suggestions:
RandomInitializer
.RandomInitializer
is used from FlatZincSolverGenerator
.RandomInitializer
but either evaluate the warm-start annotations before or after running it. (RandomInitializer
will not overwrite existing assignments.) This new piece of code could end up as a method in FlatZincSolverGenerator
. Alternatively, it could take the form of an additional compilation phase executed from FlatZincCompiler
.FlatZincSolverGenerator
with DefaultStartTemperature
. Hence, in case there is a warm-start annotation, we should use a much lower temperature.I hope this helps you to get started. If you need more information, don't hesitate to contact me.
Michael
Excellent!! This is very helpful, thank you very much. I hope to be able to work on it soon (realistically within the next few months).
Hi @informarte,
Thank you for the excellent solver! I have been experimenting with it and it seems to perform well. I deal with models that have especially large numbers of parameters (> 75k), and I was thinking that a warm start procedure could be a useful feature for
yuck
.I'm not sure if this feature is on the roadmap, but I may be able to help implement it. I assume that currently the variables are randomly assigned. Any pointers of where this is done in the code would be very helpful! As well as any thoughts on the feasibility of implementing this.
Thanks, Cole